From de2db130f5f0e2c9d7e8ad2d29fa8f9a2692f4fa Mon Sep 17 00:00:00 2001 From: nin-jin Date: Thu, 15 Dec 2016 17:18:49 +0300 Subject: [PATCH 01/53] Added $mol implementation. --- examples/mol/-/web.css | 440 +++++ examples/mol/-/web.css.map | 28 + examples/mol/-/web.js | 2675 +++++++++++++++++++++++++++++ examples/mol/-/web.js.map | 1 + examples/mol/-/web.locale=en.json | 10 + examples/mol/.gitignore | 5 + examples/mol/index.html | 294 ++++ examples/mol/package.json | 6 + examples/mol/todomvc.css | 147 ++ examples/mol/todomvc.view.tree | 57 + examples/mol/todomvc.view.ts | 152 ++ learn.json | 10 + 12 files changed, 3825 insertions(+) create mode 100644 examples/mol/-/web.css create mode 100644 examples/mol/-/web.css.map create mode 100644 examples/mol/-/web.js create mode 100644 examples/mol/-/web.js.map create mode 100644 examples/mol/-/web.locale=en.json create mode 100644 examples/mol/.gitignore create mode 100644 examples/mol/index.html create mode 100644 examples/mol/package.json create mode 100644 examples/mol/todomvc.css create mode 100644 examples/mol/todomvc.view.tree create mode 100644 examples/mol/todomvc.view.ts diff --git a/examples/mol/-/web.css b/examples/mol/-/web.css new file mode 100644 index 0000000000..379ac9c1c5 --- /dev/null +++ b/examples/mol/-/web.css @@ -0,0 +1,440 @@ +[mol_viewer_root] { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + font: 12pt/1.25 "-apple-system", BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif +} +/*body[mol_viewer_root] {*/ +/*position: fixed;*/ +/*}*/ +[mol_viewer_error] { + background-image: -webkit-repeating-linear-gradient( + 315deg, + rgba(255, 220, 220, 1), + rgba(255, 220, 220, 1) 11px, + rgba(255, 255, 220, 1) 10px, + rgba(255, 255, 220, 1) 20px + ) !important; + background-image: repeating-linear-gradient( + 135deg, + rgba(255, 220, 220, 1), + rgba(255, 220, 220, 1) 11px, + rgba(255, 255, 220, 1) 10px, + rgba(255, 255, 220, 1) 20px + ) !important; + background-size: 28px 28px !important +} +[mol_viewer_error] * { + background: none !important +} +@-webkit-keyframes mol_viewer_wait_show { + from { + background: none + } +} +@keyframes mol_viewer_wait_show { + from { + background: none + } +} +@-webkit-keyframes mol_viewer_wait_move { + from { + background-position: 0 0 + } + to { + background-position: 28px 0 + } +} +@keyframes mol_viewer_wait_move { + from { + background-position: 0 0 + } + to { + background-position: 28px 0 + } +} +[mol_viewer_error="$mol_atom_wait"] , +[mol_viewer_error="$mol_atom_wait"] * { + background-image: -webkit-repeating-linear-gradient( + 45deg, + rgba(0, 0, 0, .01), + rgba(0, 0, 0, .01) 9px, + rgba(255, 255, 255, .01) 10px, + rgba(255, 255, 255, .01) 20px + ) !important; + background-image: repeating-linear-gradient( + 45deg, + rgba(0, 0, 0, .01), + rgba(0, 0, 0, .01) 9px, + rgba(255, 255, 255, .01) 10px, + rgba(255, 255, 255, .01) 20px + ) !important; + background-size: 28px 28px !important; + -webkit-animation: mol_viewer_wait_show .5s ease-in , mol_viewer_wait_move .25s steps(6) infinite !important; + animation: mol_viewer_wait_show .5s ease-in , mol_viewer_wait_move .25s steps(6) infinite !important +} +[mol_stringer] { + box-sizing: border-box; + box-shadow: 0 0 0 1px rgba(220, 220, 220, 1); + outline-offset: 0; + border: none; + border-radius: 2px; + white-space: nowrap; + overflow: hidden; + padding: 8px; + padding: .5rem; + text-align: left; + position: relative; + z-index: 0; + font: inherit; + -webkit-box-flex: 1000; + -ms-flex: 1000 1 auto; + flex: 1000 1 auto; + width: 8em; + background: #eee; + color: gray +} +[mol_stringer]:enabled { + background: white; + color: rgba(0, 0, 0, .9) +} +[mol_stringer]:enabled:hover , +[mol_stringer]:focus { + outline: none; + box-shadow: 0 0 0 1px rgb(211, 80, 91); + z-index: 1 +} +[mol_stringer]::-ms-clear { + display: none +} +[mol_clicker] { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: none; + font: inherit; + background: none; + box-shadow: 0 0 0 1px rgba(220, 220, 220, 1); + border-radius: 2px; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-line-pack: center; + align-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + vertical-align: middle; + text-align: center; + padding: 8px; + padding: .5rem; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + text-decoration: inherit; + color: inherit; + cursor: default; + opacity: .9; + position: relative +} +[mol_clicker_button][disabled] { + background: #eee; + color: gray +} +[mol_clicker_major]:not([disabled]) { + background: rgb(211, 80, 91); + color: rgb(251, 254, 254); + box-shadow: 0 0 0 1px rgba(220, 220, 220, 1) +} +[mol_clicker_danger]:not([disabled]) { + background: rgba(255, 0, 0, .51); + color: white +} +[mol_clicker]:not([disabled]):hover , +[mol_clicker]:focus { + outline: none; + z-index: 2; + cursor: pointer; + opacity: 1; + box-shadow: 0 0 0 1px rgb(211, 80, 91) +} +[mol_linker] { + text-decoration: none; + color: hsl(215, 50%, 57%); + cursor: pointer; + border-radius: 2px; + display: inline-block; + padding: 8px; + padding: .5rem; + box-sizing: border-box +} +[mol_linker_current] { + color: inherit; + cursor: default +} +[mol_linker]:focus , +[mol_linker]:not([mol_linker_current]):hover { + outline: none; + box-shadow: 0 0 0 1px rgb(211, 80, 91) +} +[mol_checker] { + -webkit-box-flex: 0; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-line-pack: center; + align-content: center; + border: none; + font-weight: normal; + box-shadow: none +} +[mol_checker_icon] { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + vertical-align: -10% +} +[mol_checker_labeler] { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex +} +[mol_scroller] { + overflow: auto; + overflow-y: scroll; + -webkit-box-flex: 0; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + box-sizing: border-box; + will-change: scroll-position; + -webkit-transform: translateZ(0); + transform: translateZ(0); + box-shadow: 0 0 0 1px rgba(220, 220, 220, 1); + max-height: 100%; + -webkit-overflow-scrolling: touch +} +@media print { + [mol_scroller] { + overflow: visible + } +} +[mol_lister] { + will-change: contents +} +[mol_barer] { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + box-shadow: 0 0 0 1px rgba(220, 220, 220, 1); + border-radius: 2px +} +[mol_barer] > *:first-child { + border-radius: 2px 0 0 2px +} +[mol_barer] > *:not(:first-child):not(:last-child) { + border-radius: 0 +} +[mol_barer] > *:not(:first-child) { + margin-left: 1px +} +[mol_barer] > *:last-child { + border-radius: 0 2px 2px 0 +} +[mol_app_todomvc] { + -ms-flex-item-align: stretch; + -ms-grid-row-align: stretch; + align-self: stretch; + width: 100%; + height: 100% +} +[mol_app_todomvc] [mol_stringer] , +[mol_app_todomvc] [mol_stringer]:focus , +[mol_app_todomvc] [mol_stringer]:hover , +[mol_app_todomvc] [mol_clicker] , +[mol_app_todomvc] [mol_clicker]:focus , +[mol_app_todomvc] [mol_clicker]:hover , +[mol_app_todomvc] [mol_linker] , +[mol_app_todomvc] [mol_linker]:focus , +[mol_app_todomvc] [mol_linker]:hover { + box-shadow: none +} +[mol_app_todomvc] [mol_stringer] , +[mol_app_todomvc] [mol_linker] { + background: transparent +} +[mol_app_todomvc] [mol_linker]:not([mol_linker_current]):hover , +[mol_app_todomvc] [mol_linker]:not([mol_linker_current]):focus { + text-decoration: underline +} +[mol_app_todomvc_allCompleter] { + -webkit-box-flex: 0; + -ms-flex: 0 0 64px; + flex: 0 0 64px; + -ms-flex: 0 0 4rem; + flex: 0 0 4rem; + -webkit-transform: rotate( 90deg ); + transform: rotate( 90deg ); + opacity: .5; + padding: 0; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center +} +[mol_app_todomvc_allCompleter]:disabled { + visibility: hidden +} +[mol_app_todomvc_allCompleter][mol_checker_checked] { + opacity: 1 +} +[mol_app_todomvc_adder] { + padding: 0 +} +[mol_app_todomvc_lister] { + font-size: 24px; + font-size: 1.5rem +} +[mol_app_todomvc_paneler] { + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .2), 0 25px 50px 0 rgba(0, 0, 0, .1); + max-width: 608px; + max-width: 38rem; + background: white; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + margin: 0 auto 32px; + margin: 0 auto 2rem +} +[mol_app_todomvc_header] { + font-size: 24px; + font-size: 1.5rem; + padding: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + height: 64px; + height: 4rem +} +[mol_app_todomvc_titler] { + padding: 4px; + padding: .25rem; + font-size: 112px; + font-size: 7rem; + font-weight: 100; + text-align: center; + color: rgba(175, 47, 47, .15); + text-rendering: optimizeLegibility +} +[mol_app_todomvc_tasker] { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + background: white; + box-shadow: 0 -1px 0 0 #ededed; + height: 64px; + height: 4rem +} +[mol_app_todomvc_tasker_completer] { + -webkit-box-flex: 0; + -ms-flex: 0 0 64px; + flex: 0 0 64px; + -ms-flex: 0 0 4rem; + flex: 0 0 4rem; + background: no-repeat center center url('data:image/svg+xml;utf8,') +} +[mol_app_todomvc_tasker_completer][mol_checker_checked] { + background: no-repeat center center url('data:image/svg+xml;utf8,') +} +[mol_app_todomvc_tasker_titler] { + padding: 0; + -webkit-transition: all 0.4s; + transition: all 0.4s +} +[mol_app_todomvc_tasker_completed] [mol_app_todomvc_tasker_titler] { + color: #d9d9d9; + text-decoration: line-through +} +[mol_app_todomvc_tasker_dropper] { + font-size: 20px; + font-size: 1.25rem; + -webkit-box-flex: 0; + -ms-flex: 0 64px; + flex: 0 64px; + -ms-flex: 0 04rem; + flex: 0 04rem +} +[mol_app_todomvc_tasker]:not(:hover) [mol_app_todomvc_tasker_dropper]:not(:focus) { + opacity: 0; + color: #cc9a9a; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out +} +[mol_app_todomvc_footer] { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-align: baseline; + -ms-flex-align: baseline; + align-items: baseline; + padding: 8px 16px; + padding: .5rem 1rem; + color: #777; + font-size: 13.6px; + font-size: .85rem; + border-top: 1px solid #ededed; + box-shadow: 0 1px 1px rgba(0, 0, 0, .2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, .2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, .2) +} +[mol_app_todomvc_pendinger] { + padding: 4px; + padding: .25rem; + -webkit-box-flex: 0; + -ms-flex: 0 1 96px; + flex: 0 1 96px; + -ms-flex: 0 1 6rem; + flex: 0 1 6rem +} +[mol_app_todomvc_filter] { + -webkit-box-flex: 1; + -ms-flex: 1 100 auto; + flex: 1 100 auto; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + margin: 4px; + margin: .25rem; + box-shadow: none +} +[mol_app_todomvc_sanitizer] { + -webkit-box-flex: 0; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + padding: 4px; + padding: .25rem +} +[mol_app_todomvc_sanitizer]:disabled { + visibility: hidden +} +[mol_app_todomvc_sanitizer]:hover , +[mol_app_todomvc_sanitizer]:focus { + text-decoration: underline +} + +/*# sourceMappingURL=web.css.map */ \ No newline at end of file diff --git a/examples/mol/-/web.css.map b/examples/mol/-/web.css.map new file mode 100644 index 0000000000..df7243e9f7 --- /dev/null +++ b/examples/mol/-/web.css.map @@ -0,0 +1,28 @@ +{ + "version": 3, + "sources": [ + "../../../viewer/viewer.css", + "../../../stringer/stringer.css", + "../../../clicker/clicker.css", + "../../../linker/linker.view.css", + "../../../checker/checker.css", + "../../../scroller/scroller.view.css", + "../../../lister/lister.view.css", + "../../../barer/barer.css", + "../todomvc.css" + ], + "names": [], + "mappings": "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", + "file": "web.css", + "sourcesContent": [ + "[mol_viewer_root] {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\theight: 100%;\n\tfont: var(--mol_skin_font);\n}\n\n/*body[mol_viewer_root] {*/\n\t/*position: fixed;*/\n/*}*/\n\n\n[mol_viewer_error] {\n\tbackground-image: repeating-linear-gradient(\n\t\t135deg,\n\t\trgba(255,220,220,1),\n\t\trgba(255,220,220,1) 11px,\n\t\trgba(255,255,220,1) 10px,\n\t\trgba(255,255,220,1) 20px\n\t) !important;\n\tbackground-size: 28px 28px !important;\n}\n[mol_viewer_error] * {\n\tbackground: none !important;\n}\n\n@keyframes mol_viewer_wait_show {\n\tfrom {\n\t\tbackground: none;\n\t}\n}\n\n@keyframes mol_viewer_wait_move {\n\tfrom {\n\t\tbackground-position: 0 0;\n\t}\n\tto {\n\t\tbackground-position: 28px 0;\n\t}\n}\n\n[mol_viewer_error=\"$mol_atom_wait\"] ,\n[mol_viewer_error=\"$mol_atom_wait\"] * {\n\tbackground-image: repeating-linear-gradient(\n\t\t45deg,\n\t\trgba(0,0,0,.01),\n\t\trgba(0,0,0,.01) 9px,\n\t\trgba(255,255,255,.01) 10px,\n\t\trgba(255,255,255,.01) 20px\n\t) !important;\n\tbackground-size: 28px 28px !important;\n\tanimation: mol_viewer_wait_show .5s ease-in , mol_viewer_wait_move .25s steps(6) infinite !important;\n}\n", + "[mol_stringer] {\n\tbox-sizing: border-box;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n\toutline-offset: 0;\n\tborder: none;\n\tborder-radius: var(--mol_skin_round);\n\twhite-space: nowrap;\n\toverflow: hidden;\n\tpadding: .5rem;\n\ttext-align: left;\n\tposition: relative;\n\tz-index: 0;\n\tfont: inherit;\n\tflex: 1000 1 auto;\n\twidth: 8em;\n\tbackground: var(--mol_skin_passive);\n\tcolor: var(--mol_skin_passive_text);\n}\n\n[mol_stringer]:enabled {\n\tbackground: var(--mol_skin_card);\n\tcolor: var(--mol_skin_light_text);\n}\n\n[mol_stringer]:enabled:hover ,\n[mol_stringer]:focus {\n\toutline: none;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_focus);\n\tz-index: 1;\n}\n\n[mol_stringer]::-ms-clear {\n\tdisplay: none;\n}\n", + "[mol_clicker] {\n\tuser-select: none;\n\tborder: none;\n\tfont: inherit;\n\tbackground: none;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n\tborder-radius: var(--mol_skin_round);\n\tflex: 1 1 auto;\n\tjustify-content: center;\n\talign-content: center;\n\talign-items: center;\n\tvertical-align: middle;\n\ttext-align: center;\n\tpadding: .5rem;\n\tdisplay: flex;\n\ttext-decoration: inherit;\n\tcolor: inherit;\n\tcursor: default;\n\topacity: .9;\n\tposition: relative;\n}\n\n[mol_clicker_button][disabled] {\n\tbackground: var(--mol_skin_passive);\n\tcolor: var(--mol_skin_passive_text);\n}\n\n[mol_clicker_major]:not([disabled]) {\n\tbackground: var(--mol_skin_accent);\n\tcolor: var(--mol_skin_accent_text);\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n}\n\n[mol_clicker_danger]:not([disabled]) {\n\tbackground: var(--mol_skin_warn);\n\tcolor: var(--mol_skin_warn_text);\n}\n\n[mol_clicker]:not([disabled]):hover ,\n[mol_clicker]:focus {\n\toutline: none;\n\tz-index: 2;\n\tcursor: pointer;\n\topacity: 1;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_focus);\n}\n", + "[mol_linker] {\n\ttext-decoration: none;\n\tcolor: var(--mol_skin_base);\n\tcursor: pointer;\n\tborder-radius: var(--mol_skin_round);\n\tdisplay: inline-block;\n\tpadding: .5rem;\n\tbox-sizing: border-box;\n}\n\n[mol_linker_current] {\n\tcolor: inherit;\n\tcursor: default;\n}\n\n[mol_linker]:focus ,\n[mol_linker]:not([mol_linker_current]):hover {\n\toutline: none;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_focus);\n}\n", + "[mol_checker] {\n\tflex: 0 1 auto;\n\tjustify-content: flex-start;\n\talign-items: center;\n\talign-content: center;\n\tborder: none;\n\tfont-weight: normal;\n\tbox-shadow: none;\n}\n\n[mol_checker_icon] {\n\tdisplay: inline-flex;\n\tvertical-align: -10%;\n}\n\n[mol_checker_labeler] {\n\tdisplay: inline-flex;\n}\n", + "[mol_scroller] {\n\toverflow: auto;\n\toverflow-y: scroll;\n\tflex: 0 1 auto;\n\tbox-sizing: border-box;\n\twill-change: scroll-position;\n\ttransform: translateZ(0);\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n\tmax-height: 100%;\n\t-webkit-overflow-scrolling: touch;\n}\n\n@media print {\n\t[mol_scroller] {\n\t\toverflow: visible;\n\t}\n}\n", + "[mol_lister] {\n\twill-change: contents;\n}\n", + "[mol_barer] {\n\tdisplay: flex;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n\tborder-radius: var(--mol_skin_round);\n}\n\n[mol_barer] > *:first-child {\n\tborder-radius: var(--mol_skin_round) 0 0 var(--mol_skin_round);\n}\n\n[mol_barer] > *:not(:first-child):not(:last-child) {\n\tborder-radius: 0;\n}\n\n[mol_barer] > *:not(:first-child) {\n\tmargin-left: 1px;\n}\n\n[mol_barer] > *:last-child {\n\tborder-radius: 0 var(--mol_skin_round) var(--mol_skin_round) 0;\n}\n", + "[mol_app_todomvc] {\n\talign-self: stretch;\n\twidth: 100%;\n\theight: 100%;\n}\n\n[mol_app_todomvc] [mol_stringer] ,\n[mol_app_todomvc] [mol_stringer]:focus ,\n[mol_app_todomvc] [mol_stringer]:hover ,\n[mol_app_todomvc] [mol_clicker] ,\n[mol_app_todomvc] [mol_clicker]:focus ,\n[mol_app_todomvc] [mol_clicker]:hover ,\n[mol_app_todomvc] [mol_linker] ,\n[mol_app_todomvc] [mol_linker]:focus ,\n[mol_app_todomvc] [mol_linker]:hover {\n\tbox-shadow: none;\n}\n\n[mol_app_todomvc] [mol_stringer] ,\n[mol_app_todomvc] [mol_linker] {\n\tbackground: transparent;\n}\n\n[mol_app_todomvc] [mol_linker]:not([mol_linker_current]):hover ,\n[mol_app_todomvc] [mol_linker]:not([mol_linker_current]):focus {\n\ttext-decoration: underline;\n}\n\n[mol_app_todomvc_allCompleter] {\n\tflex: 0 0 4rem;\n\ttransform: rotate( 90deg );\n\topacity: .5;\n\tpadding: 0;\n\tjustify-content: center;\n}\n[mol_app_todomvc_allCompleter]:disabled {\n\tvisibility: hidden;\n}\n[mol_app_todomvc_allCompleter][mol_checker_checked] {\n\topacity: 1;\n}\n\n[mol_app_todomvc_adder] {\n\tpadding: 0;\n}\n\n[mol_app_todomvc_lister] {\n\tfont-size: 1.5rem;\n}\n\n[mol_app_todomvc_paneler] {\n\tbox-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1);\n\tmax-width: 38rem;\n\tbackground: white;\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 0 auto 2rem;\n}\n\n[mol_app_todomvc_header] {\n\tfont-size: 1.5rem;\n\tpadding: 0;\n\tdisplay: flex;\n\theight: 4rem;\n}\n\n[mol_app_todomvc_titler] {\n\tpadding: .25rem;\n\tfont-size: 7rem;\n\tfont-weight: 100;\n\ttext-align: center;\n\tcolor: rgba(175, 47, 47, 0.15);\n\ttext-rendering: optimizeLegibility;\n}\n\n[mol_app_todomvc_tasker] {\n\tdisplay: flex;\n\tbackground: white;\n\tbox-shadow: 0 -1px 0 0 #ededed;\n\theight: 4rem;\n}\n\n[mol_app_todomvc_tasker_completer] {\n\tflex: 0 0 4rem;\n\tbackground: no-repeat center center url('data:image/svg+xml;utf8,');\n}\n[mol_app_todomvc_tasker_completer][mol_checker_checked] {\n\tbackground: no-repeat center center url('data:image/svg+xml;utf8,')\n}\n\n[mol_app_todomvc_tasker_titler] {\n\tpadding: 0;\n\ttransition: all 0.4s;\n}\n\n[mol_app_todomvc_tasker_completed] [mol_app_todomvc_tasker_titler] {\n\tcolor: #d9d9d9;\n\ttext-decoration: line-through;\n}\n\n[mol_app_todomvc_tasker_dropper] {\n\tfont-size: 1.25rem;\n\tflex: 0 04rem;\n}\n[mol_app_todomvc_tasker]:not(:hover) [mol_app_todomvc_tasker_dropper]:not(:focus) {\n\topacity: 0;\n\tcolor: #cc9a9a;\n\ttransition: all 0.2s ease-out;\n}\n\n[mol_app_todomvc_footer] {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: baseline;\n\tpadding: .5rem 1rem;\n\tcolor: #777;\n\tfont-size: .85rem;\n\tborder-top: 1px solid #ededed;\n\tbox-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2);\n}\n\n[mol_app_todomvc_pendinger] {\n\tpadding: .25rem;\n\tflex: 0 1 6rem;\n}\n\n[mol_app_todomvc_filter] {\n\tflex: 1 100 auto;\n\tdisplay: flex;\n\tjustify-content: center;\n\tmargin: .25rem;\n\tbox-shadow: none;\n}\n\n[mol_app_todomvc_sanitizer] {\n\tflex: 0 1 auto;\n\tpadding: .25rem;\n}\n[mol_app_todomvc_sanitizer]:disabled {\n\tvisibility: hidden;\n}\n\n[mol_app_todomvc_sanitizer]:hover ,\n[mol_app_todomvc_sanitizer]:focus {\n\ttext-decoration: underline;\n}\n\n" + ] +} \ No newline at end of file diff --git a/examples/mol/-/web.js b/examples/mol/-/web.js new file mode 100644 index 0000000000..c5ac89481c --- /dev/null +++ b/examples/mol/-/web.js @@ -0,0 +1,2675 @@ +/// Fake namespace for optional overrides +/// +/// namespace $ { export var x = 1 , y = 1 } // defaults +/// namespace $.$mol { export var x = 2 } // overrides +/// namespace $.$mol { console.log( x , y ) } // usage +/// +this.$ = this.$ || this +var $ = this.$ +$.$mol = $ + +; +var $; +(function ($) { + function $mol_log(path, values) { + var filter = $mol_log.filter(); + if (filter == null) + return; + if (path.indexOf(filter) === -1) + return; + var time = new Date().toLocaleTimeString(); + console.log(time, path, values); + } + $.$mol_log = $mol_log; + (function ($mol_log) { + var _filter; + function filter(next) { + if (next !== void 0) { + if (next == null) { + sessionStorage.removeItem('$mol_log.filter()'); + } + else { + sessionStorage.setItem('$mol_log.filter()', next); + } + _filter = next; + } + if (_filter !== void 0) + return _filter; + return _filter = sessionStorage.getItem('$mol_log.filter()'); + } + $mol_log.filter = filter; + })($mol_log = $.$mol_log || ($.$mol_log = {})); +})($ || ($ = {})); +//log.web.js.map +; +var $; +(function ($) { + var $mol_object = (function () { + function $mol_object() { + this['destroyed()'] = false; + } + $mol_object.prototype.Class = function () { + return this.constructor; + }; + $mol_object.toString = function () { + var self = this; + return self['name'] + || self['displayName'] + || (self['displayName'] = Function.prototype.toString.call(self) + .match(/^function ([a-z0-9_$]*)/)[1]); + }; + $mol_object.prototype.objectClassNames = function () { + if (this.hasOwnProperty('objectClassNames()')) + return this['objectClassNames()']; + var names = []; + var current = this; + while (current) { + var name = current.constructor.toString(); + if (!name) + continue; + names.push(name); + current = Object.getPrototypeOf(current); + } + return this['objectClassNames()'] = names; + }; + $mol_object.prototype.objectOwner = function (next) { + if (this['objectOwner()']) + return this['objectOwner()']; + return this['objectOwner()'] = next; + }; + $mol_object.prototype.objectField = function (next) { + if (this['objectField()']) + return this['objectField()'] || ''; + return this['objectField()'] = next; + }; + $mol_object.prototype.toString = function () { + var path = ''; + var owner = this.objectOwner(); + if (owner) + path = owner.toString(); + var field = this.objectField(); + if (field) + path += '.' + field; + return path; + }; + $mol_object.prototype.setup = function (script) { + script(this); + return this; + }; + $mol_object.prototype.destroyed = function (next) { + if (next === void 0) + return this['destroyed()']; + this['destroyed()'] = next; + this.log(['.destroyed()', next]); + return next; + }; + $mol_object.prototype.log = function (values) { + if ($.$mol_log.filter() == null) + return; + $.$mol_log(this.toString(), values); + }; + return $mol_object; + }()); + $.$mol_object = $mol_object; +})($ || ($ = {})); +//object.js.map +; +var $; +(function ($) { + var $mol_set_shim = (function () { + function $mol_set_shim() { + this._index = {}; + this.size = 0; + } + $mol_set_shim.prototype.add = function (value) { + var key = String(value); + var list = this._index[key]; + if (list) { + if (list.indexOf(value) !== -1) + return this; + list.push(value); + } + else { + list = this._index[key] = [value]; + } + ++this.size; + return this; + }; + $mol_set_shim.prototype.has = function (value) { + var key = String(value); + var list = this._index[key]; + if (!list) + return false; + return list.indexOf(value) !== -1; + }; + $mol_set_shim.prototype.delete = function (value) { + var key = String(value); + var list = this._index[key]; + if (!list) + return; + var index = list.indexOf(value); + if (index === -1) + return; + list.splice(index, 1); + --this.size; + }; + $mol_set_shim.prototype.forEach = function (handle) { + for (var key in this._index) { + if (!this._index.hasOwnProperty(key)) + continue; + this._index[key].forEach(function (val, index) { return handle(val, val); }); + } + }; + $mol_set_shim.prototype.keys = function () { + var keys = []; + this.forEach(function (val, key) { + keys.push(key); + }); + return keys; + }; + $mol_set_shim.prototype.values = function () { + var values = []; + this.forEach(function (val, key) { + values.push(val); + }); + return values; + }; + $mol_set_shim.prototype.entries = function () { + var entries = []; + this.forEach(function (val, key) { + entries.push([val, key]); + }); + return entries; + }; + $mol_set_shim.prototype.clear = function () { + this._index = {}; + this.size = 0; + }; + return $mol_set_shim; + }()); + $.$mol_set_shim = $mol_set_shim; +})($ || ($ = {})); +//set.js.map +; +$.$mol_set = ( typeof Set === 'function' ) ? Set : $.$mol_set_shim + +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var $; +(function ($) { + var $mol_defer = (function (_super) { + __extends($mol_defer, _super); + function $mol_defer(run) { + var _this = _super.call(this) || this; + _this.run = run; + $mol_defer.add(_this); + return _this; + } + $mol_defer.prototype.destroyed = function (next) { + if (next) + $mol_defer.drop(this); + return _super.prototype.destroyed.call(this, next); + }; + $mol_defer.schedule = function () { + var _this = this; + if (this.timer) + return; + this.timer = this.scheduleNative(function () { + _this.timer = 0; + _this.run(); + }); + }; + $mol_defer.unschedule = function () { + if (!this.timer) + return; + cancelAnimationFrame(this.timer); + this.timer = 0; + }; + $mol_defer.add = function (defer) { + this.all.push(defer); + this.schedule(); + }; + $mol_defer.drop = function (defer) { + var index = this.all.indexOf(defer); + if (index >= 0) + this.all.splice(index, 1); + }; + $mol_defer.run = function () { + if (this.all.length === 0) + return; + this.schedule(); + for (var defer; defer = this.all.pop();) + defer.run(); + }; + return $mol_defer; + }($.$mol_object)); + $mol_defer.all = []; + $mol_defer.timer = 0; + $mol_defer.scheduleNative = (typeof requestAnimationFrame == 'function') + ? function (handler) { return requestAnimationFrame(handler); } + : function (handler) { return setTimeout(handler, 16); }; + $.$mol_defer = $mol_defer; +})($ || ($ = {})); +//defer.js.map +; +var $; +(function ($) { + var $mol_dict_shim = (function () { + function $mol_dict_shim() { + this._keys = {}; + this._values = {}; + this.size = 0; + } + $mol_dict_shim.prototype.set = function (key, value) { + var keyStr = String(key); + var keys = this._keys[keyStr]; + if (keys) { + var index = keys.indexOf(key); + if (index === -1) { + index = keys.length; + keys.push(key); + ++this.size; + } + this._values[keyStr][index] = value; + } + else { + this._keys[keyStr] = [key]; + this._values[keyStr] = [value]; + ++this.size; + } + return this; + }; + $mol_dict_shim.prototype.get = function (key) { + var keyStr = String(key); + var list = this._keys[keyStr]; + if (!list) + return void 0; + var index = list.indexOf(key); + if (index === -1) + return void 0; + return this._values[keyStr][index]; + }; + $mol_dict_shim.prototype.has = function (key) { + var keyStr = String(key); + var list = this._keys[keyStr]; + if (!list) + return false; + return list.indexOf(key) !== -1; + }; + $mol_dict_shim.prototype.delete = function (key) { + var keyStr = String(key); + var keys = this._keys[keyStr]; + if (!keys) + return; + var index = keys.indexOf(key); + if (index === -1) + return; + keys.splice(index, 1); + this._values[keyStr].splice(index, 1); + --this.size; + }; + $mol_dict_shim.prototype.forEach = function (handle) { + for (var keyStr in this._keys) { + if (!this._keys.hasOwnProperty(keyStr)) + continue; + var values = this._values[keyStr]; + this._keys[keyStr].forEach(function (key, index) { + handle(values[index], key); + }); + } + }; + $mol_dict_shim.prototype.keys = function () { + var keys = []; + this.forEach(function (val, key) { + keys.push(key); + }); + return keys; + }; + $mol_dict_shim.prototype.values = function () { + var values = []; + this.forEach(function (val, key) { + values.push(val); + }); + return values; + }; + $mol_dict_shim.prototype.entries = function () { + var entries = []; + this.forEach(function (val, key) { + entries.push([key, val]); + }); + return entries; + }; + $mol_dict_shim.prototype.clear = function () { + this._keys = {}; + this._values = {}; + this.size = 0; + }; + return $mol_dict_shim; + }()); + $.$mol_dict_shim = $mol_dict_shim; +})($ || ($ = {})); +//dict.js.map +; +$.$mol_dict = ( typeof Map === 'function' ) ? Map : $.$mol_dict_shim + +; +var $; +(function ($) { + $.$mol_state_stack = new $.$mol_dict(); +})($ || ($ = {})); +//stack.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var $; +(function ($) { + var $mol_atom_status; + (function ($mol_atom_status) { + $mol_atom_status[$mol_atom_status["obsolete"] = 'obsolete'] = "obsolete"; + $mol_atom_status[$mol_atom_status["checking"] = 'checking'] = "checking"; + $mol_atom_status[$mol_atom_status["pulling"] = 'pulling'] = "pulling"; + $mol_atom_status[$mol_atom_status["actual"] = 'actual'] = "actual"; + })($mol_atom_status = $.$mol_atom_status || ($.$mol_atom_status = {})); + var $mol_atom = (function (_super) { + __extends($mol_atom, _super); + function $mol_atom(host, handler, field) { + if (field === void 0) { field = 'value()'; } + var _this = _super.call(this) || this; + _this.masters = null; + _this.slaves = null; + _this.status = $mol_atom_status.obsolete; + _this.autoFresh = true; + _this.handler = handler; + _this.host = Object(host); + _this.field = field || 'value()'; + return _this; + } + $mol_atom.prototype.destroyed = function (next) { + if (next) { + this.unlink(); + var host = this.host; + var value = host[this.field]; + if (value instanceof $.$mol_object) { + if ((value.objectOwner() === host) && (value.objectField() === this.field)) { + value.destroyed(true); + } + } + host[this.field] = void null; + host[this.field + '@'] = void null; + this['destroyed()'] = true; + this.log(['.destroyed()', true, 'atom']); + this.status = $mol_atom_status.obsolete; + return true; + } + else { + return this['destroyed()']; + } + }; + $mol_atom.prototype.unlink = function () { + this.disobeyAll(); + this.checkSlaves(); + }; + $mol_atom.prototype.toString = function () { + return this.host + "." + this.field; + }; + $mol_atom.prototype.get = function (force) { + if (this.status === $mol_atom_status.pulling) { + throw new Error("Cyclic atom dependency of " + this); + } + this.actualize(force); + var slave = $mol_atom.stack[0]; + if (slave) + this.lead(slave); + if (slave) + slave.obey(this); + var value = this.host[this.field]; + if (value instanceof Error) { + if (typeof Proxy !== 'function') + throw value; + } + return value; + }; + $mol_atom.prototype.actualize = function (force) { + var _this = this; + if (!force && this.status === $mol_atom_status.actual) + return; + var slave = $mol_atom.stack[0]; + $mol_atom.stack[0] = this; + if (!force && this.status === $mol_atom_status.checking) { + this.masters.forEach(function (master) { + if (_this.status !== $mol_atom_status.checking) + return; + master.actualize(); + }); + if (this.status === $mol_atom_status.checking) { + this.status = $mol_atom_status.actual; + } + } + if (force || this.status !== $mol_atom_status.actual) { + var oldMasters = this.masters; + this.masters = null; + if (oldMasters) + oldMasters.forEach(function (master) { + master.dislead(_this); + }); + this.status = $mol_atom_status.pulling; + var next = this.pull(force); + this.push(next); + } + $mol_atom.stack[0] = slave; + }; + $mol_atom.prototype.pull = function (force) { + try { + return this.handler(this._next, force); + } + catch (error) { + if (error['$mol_atom_catched']) + return error; + if (error instanceof $mol_atom_wait) + return error; + console.error(error.stack || error); + if (!(error instanceof Error)) { + error = new Error(error.stack || error); + } + error['$mol_atom_catched'] = true; + return error; + } + }; + $mol_atom.prototype.set = function (next) { + this._next = next; + this.obsolete(); + return this.get(); + }; + $mol_atom.prototype.push = function (next) { + var host = this.host; + var prev = host[this.field]; + if (next === void null) + next = prev; + comparing: if ((next !== prev) && (next instanceof Array) && (prev instanceof Array) && (next.length === prev.length)) { + for (var i = 0; i < next['length']; ++i) { + if (next[i] !== prev[i]) + break comparing; + } + next = prev; + } + if (prev !== next) { + if (next instanceof $.$mol_object) { + next['objectField'](this.field); + next['objectOwner'](host); + } + if ((typeof Proxy === 'function') && (next instanceof Error)) { + next = new Proxy(next, { + get: function (target) { + throw target.valueOf(); + }, + ownKeys: function (target) { + throw target.valueOf(); + }, + }); + } + host[this.field] = next; + this.log(['push', next, prev]); + this.obsoleteSlaves(); + } + this.status = $mol_atom_status.actual; + this._next = void null; + return next; + }; + $mol_atom.prototype.obsoleteSlaves = function () { + if (!this.slaves) + return; + this.slaves.forEach(function (slave) { return slave.obsolete(); }); + }; + $mol_atom.prototype.checkSlaves = function () { + if (this.slaves) { + this.slaves.forEach(function (slave) { return slave.check(); }); + } + else { + if (this.autoFresh) + $mol_atom.actualize(this); + } + }; + $mol_atom.prototype.check = function () { + if (this.status === $mol_atom_status.actual) { + this.status = $mol_atom_status.checking; + this.checkSlaves(); + } + }; + $mol_atom.prototype.obsolete = function () { + if (this.status === $mol_atom_status.obsolete) + return; + this.log(['obsolete']); + this.status = $mol_atom_status.obsolete; + this.checkSlaves(); + return void null; + }; + $mol_atom.prototype.lead = function (slave) { + if (!this.slaves) { + this.slaves = new $.$mol_set(); + $mol_atom.unreap(this); + } + this.slaves.add(slave); + }; + $mol_atom.prototype.dislead = function (slave) { + if (!this.slaves) + return; + if (this.slaves.size === 1) { + this.slaves = null; + $mol_atom.reap(this); + } + else { + this.slaves.delete(slave); + } + }; + $mol_atom.prototype.obey = function (master) { + if (!this.masters) + this.masters = new $.$mol_set(); + this.masters.add(master); + }; + $mol_atom.prototype.disobey = function (master) { + if (!this.masters) + return; + this.masters.delete(master); + }; + $mol_atom.prototype.disobeyAll = function () { + var _this = this; + if (!this.masters) + return; + this.masters.forEach(function (master) { return master.dislead(_this); }); + this.masters = null; + }; + $mol_atom.prototype.value = function (next, force) { + if (next === void null) { + return this.get(force); + } + else { + if (force) { + return this.push(next); + } + else { + return this.set(next); + } + } + }; + $mol_atom.actualize = function (atom) { + $mol_atom.updating.push(atom); + $mol_atom.schedule(); + }; + $mol_atom.reap = function (atom) { + $mol_atom.reaping.add(atom); + $mol_atom.schedule(); + }; + $mol_atom.unreap = function (atom) { + $mol_atom.reaping.delete(atom); + }; + $mol_atom.schedule = function () { + var _this = this; + if (this.scheduled) + return; + new $.$mol_defer(function () { + if (!_this.scheduled) + return; + _this.scheduled = false; + _this.sync(); + }); + this.scheduled = true; + }; + $mol_atom.sync = function () { + var _this = this; + $.$mol_log('$mol_atom.sync', []); + this.schedule(); + while (this.updating.length) { + var atom = this.updating.shift(); + if (this.reaping.has(atom)) + continue; + if (!atom.destroyed()) + atom.get(); + } + while (this.reaping.size) { + this.reaping.forEach(function (atom) { + _this.reaping.delete(atom); + if (!atom.slaves) + atom.destroyed(true); + }); + } + this.scheduled = false; + }; + return $mol_atom; + }($.$mol_object)); + $mol_atom.stack = [null]; + $mol_atom.updating = []; + $mol_atom.reaping = new $.$mol_set(); + $mol_atom.scheduled = false; + $.$mol_atom = $mol_atom; + $.$mol_state_stack.set('$mol_atom.stack', $mol_atom.stack); + var $mol_atom_wait = (function (_super) { + __extends($mol_atom_wait, _super); + function $mol_atom_wait(message) { + if (message === void 0) { message = 'Wait...'; } + var _this = _super.call(this, message) || this; + _this.message = message; + _this.name = '$mol_atom_wait'; + var error = new Error(message); + error.name = _this.name; + error['__proto__'] = $mol_atom_wait.prototype; + return error; + } + return $mol_atom_wait; + }(Error)); + $.$mol_atom_wait = $mol_atom_wait; + var $mol_atom_force = (function (_super) { + __extends($mol_atom_force, _super); + function $mol_atom_force() { + return _super.apply(this, arguments) || this; + } + return $mol_atom_force; + }(Object)); + $.$mol_atom_force = $mol_atom_force; + function $mol_atom_task(host, handler) { + var atom = new $mol_atom(host, function () { + try { + handler(); + } + catch (error) { + if (!(error instanceof $mol_atom_wait)) + atom.destroyed(true); + throw error; + } + atom.destroyed(true); + }); + $mol_atom.actualize(atom); + return atom; + } + $.$mol_atom_task = $mol_atom_task; +})($ || ($ = {})); +//atom.js.map +; +var $; +(function ($) { + function $mol_mem(config) { + return function (obj, name, descr) { + var value = descr.value; + descr.value = function (next, force) { + var host = this; + var field = name + "()"; + var fieldA = field + '@'; + var atom = host[fieldA]; + if (!atom) { + host[fieldA] = atom = new $.$mol_atom(host, value.bind(host), field); + if (config) + atom.autoFresh = !config.lazy; + } + return atom.value(next, force); + }; + void (descr.value['value'] = value); + }; + } + $.$mol_mem = $mol_mem; + function $mol_mem_key(config) { + return function (obj, name, descr) { + var value = descr.value; + descr.value = function (key, next, force) { + var host = this; + var field = name + "(" + JSON.stringify(key) + ")"; + var fieldA = field + '@'; + var atom = host[fieldA]; + if (!atom) { + host[fieldA] = atom = new $.$mol_atom(host, value.bind(host, key), field); + if (config) + atom.autoFresh = !config.lazy; + } + return atom.value(next, force); + }; + void (descr.value['value'] = value); + }; + } + $.$mol_mem_key = $mol_mem_key; +})($ || ($ = {})); +//mem.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var $; +(function ($) { + var $mol_window = (function (_super) { + __extends($mol_window, _super); + function $mol_window() { + return _super.apply(this, arguments) || this; + } + $mol_window.size = function (next) { + return next || { + width: window.innerWidth, + height: window.innerHeight, + }; + }; + return $mol_window; + }($.$mol_object)); + __decorate([ + $.$mol_mem() + ], $mol_window, "size", null); + $.$mol_window = $mol_window; + window.addEventListener('resize', function () { + $mol_window.size(null); + }); +})($ || ($ = {})); +//window.web.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var $; +(function ($) { + $.$mol_viewer_context = {}; + $.$mol_viewer_context.$mol_viewer_heightLimit = function () { return $.$mol_window.size().height; }; + var $mol_viewer = (function (_super) { + __extends($mol_viewer, _super); + function $mol_viewer() { + return _super.apply(this, arguments) || this; + } + $mol_viewer.root = function (id) { + return new this; + }; + $mol_viewer.prototype.title = function () { + return this.Class().toString(); + }; + $mol_viewer.statePrefix = function () { + return ''; + }; + $mol_viewer.prototype.statePrefix = function () { + var owner = this.objectOwner(); + return owner ? owner.statePrefix() : ''; + }; + $mol_viewer.prototype.stateKey = function (postfix) { + return this.statePrefix() + postfix; + }; + $mol_viewer.prototype.context = function (next) { + return next || $.$mol_viewer_context; + }; + $mol_viewer.prototype.contextSub = function () { + return this.context(); + }; + $mol_viewer.prototype.tagName = function () { return 'div'; }; + $mol_viewer.prototype.nameSpace = function () { return 'http://www.w3.org/1999/xhtml'; }; + $mol_viewer.prototype.childs = function () { + return null; + }; + $mol_viewer.prototype.childsVisible = function () { + var childs = this.childs(); + if (!childs) + return childs; + var context = this.contextSub(); + childs.forEach(function (child) { + if (child instanceof $mol_viewer) { + child.context(context); + } + }); + return childs; + }; + $mol_viewer.prototype.heightMinimal = function () { + return 0; + }; + $mol_viewer.prototype.DOMNode = function (next) { + var _this = this; + var path = this.toString(); + var next2 = next; + if (!next2) { + next2 = this['DOMNode()']; + if (next2) + return next2; + next2 = document.getElementById(path); + if (next2) { + if (next2['$mol_viewer']) { + return this['DOMNode()'] = next2; + } + } + else { + next2 = document.createElementNS(this.nameSpace(), this.tagName()); + } + } + next2.id = path; + void (next2['$mol_viewer'] = this); + this['DOMNode()'] = next2; + var ownerProto = this.objectOwner() && Object.getPrototypeOf(this.objectOwner()); + if (ownerProto && ownerProto['objectClassNames']) { + var suffix = '_' + this.objectField().replace(/\(.*/, ''); + for (var _i = 0, _a = ownerProto['objectClassNames'](); _i < _a.length; _i++) { + var className = _a[_i]; + var attrName = className.replace(/\$/g, '') + suffix; + next2.setAttribute(attrName, ''); + if (className === '$mol_viewer') + break; + } + } + var proto = Object.getPrototypeOf(this); + for (var _b = 0, _c = proto['objectClassNames'](); _b < _c.length; _b++) { + var className = _c[_b]; + next2.setAttribute(className.replace(/\$/g, ''), ''); + if (className === '$mol_viewer') + break; + } + var events = this.event(); + var _loop_1 = function (name_1) { + var handle = events[name_1]; + next2.addEventListener(name_1, function (event) { + $.$mol_atom_task(_this + ".event()['" + name_1 + "']", function () { + handle(event); + }).get(); + }); + }; + for (var name_1 in events) { + _loop_1(name_1); + } + return next2; + }; + $mol_viewer.renderChilds = function (node, childs) { + if (childs == null) + return; + var nextNode = node.firstChild; + for (var _i = 0, childs_1 = childs; _i < childs_1.length; _i++) { + var view = childs_1[_i]; + if (view == null) { + } + else if (typeof view === 'object') { + var existsNode = ((view instanceof $mol_viewer) ? view.DOMNode() : view.valueOf()); + while (true) { + if (!nextNode) { + node.appendChild(existsNode); + break; + } + if (nextNode == existsNode) { + nextNode = nextNode.nextSibling; + break; + } + else { + node.insertBefore(existsNode, nextNode); + break; + } + } + } + else { + if (nextNode && nextNode.nodeName === '#text') { + nextNode.nodeValue = String(view); + nextNode = nextNode.nextSibling; + } + else { + var textNode = document.createTextNode(String(view)); + node.insertBefore(textNode, nextNode); + } + } + } + while (nextNode) { + var currNode = nextNode; + nextNode = currNode.nextSibling; + node.removeChild(currNode); + } + for (var _a = 0, childs_2 = childs; _a < childs_2.length; _a++) { + var view = childs_2[_a]; + if (view instanceof $mol_viewer) + view.DOMTree(); + } + }; + $mol_viewer.renderAttrs = function (node, attrs) { + for (var name_2 in attrs) { + var val = attrs[name_2](); + if ((val == null) || (val === false)) { + node.removeAttribute(name_2); + } + else if (val === true) { + node.setAttribute(name_2, 'true'); + } + else { + node.setAttribute(name_2, String(val)); + } + } + }; + $mol_viewer.renderFields = function (node, fields) { + var _loop_2 = function (path) { + var names = path.split('.'); + var obj = node; + for (var i = 0; i < names.length - 1; ++i) { + if (names[i]) + obj = obj[names[i]]; + } + var field = names[names.length - 1]; + var val = fields[path](); + if (obj[field] !== val) { + obj[field] = val; + if (obj[field] !== val) { + new $.$mol_defer(function () { return fields[path](obj[field]); }); + } + } + }; + for (var path in fields) { + _loop_2(path); + } + }; + $mol_viewer.prototype.DOMTree = function () { + var node = this.DOMNode(); + try { + $mol_viewer.renderChilds(node, this.childsVisible()); + $mol_viewer.renderAttrs(node, this.attr()); + $mol_viewer.renderFields(node, this.field()); + return node; + } + catch (error) { + if (!error['$mol_viewer_catched']) { + node.setAttribute('mol_viewer_error', error.name); + error['$mol_viewer_catched'] = true; + } + throw error; + } + }; + $mol_viewer.prototype.attr = function () { + return { + 'mol_viewer_error': function () { return false; } + }; + }; + $mol_viewer.prototype.field = function () { + return {}; + }; + $mol_viewer.prototype.event = function () { return {}; }; + $mol_viewer.prototype.localizationContexts = function () { + return Object.getPrototypeOf(this).objectClassNames(); + }; + return $mol_viewer; + }($.$mol_object)); + __decorate([ + $.$mol_mem() + ], $mol_viewer.prototype, "context", null); + __decorate([ + $.$mol_mem() + ], $mol_viewer.prototype, "DOMTree", null); + __decorate([ + $.$mol_mem_key() + ], $mol_viewer, "root", null); + $.$mol_viewer = $mol_viewer; +})($ || ($ = {})); +//viewer.js.map +; +var $; +(function ($) { + document.addEventListener(window.cordova ? 'deviceready' : 'DOMContentLoaded', function (event) { + var nodes = document.querySelectorAll('[mol_viewer_root]'); + var _loop_1 = function (i) { + var view = $[nodes.item(i).getAttribute('mol_viewer_root')].root(i); + view.DOMNode(nodes.item(i)); + var win = new $.$mol_atom("$mol_viewer.root(" + i + ")", function () { + view.DOMTree(); + document.title = view.title(); + return null; + }); + new $.$mol_defer(function () { return win.get(); }); + }; + for (var i = nodes.length - 1; i >= 0; --i) { + _loop_1(i); + } + $.$mol_defer.run(); + }); +})($ || ($ = {})); +//viewer.web.js.map +; +var $; +(function ($) { + function $mol_merge_dict(target, source) { + var result = {}; + for (var key in target) + result[key] = target[key]; + for (var key in source) + result[key] = source[key]; + return result; + } + $.$mol_merge_dict = $mol_merge_dict; +})($ || ($ = {})); +//dict.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var $; +(function ($) { + var $mol_stringer = (function (_super) { + __extends($mol_stringer, _super); + function $mol_stringer() { + return _super.apply(this, arguments) || this; + } + $mol_stringer.prototype.tagName = function () { + return "input"; + }; + $mol_stringer.prototype.enabled = function () { + return true; + }; + $mol_stringer.prototype.hint = function () { + return ""; + }; + $mol_stringer.prototype.type = function () { + return "text"; + }; + $mol_stringer.prototype.attr = function () { + var _this = this; + return $.$mol_merge_dict(_super.prototype.attr.call(this), { + "placeholder": function () { return _this.hint(); }, + "type": function () { return _this.type(); }, + }); + }; + $mol_stringer.prototype.disabled = function () { + return false; + }; + $mol_stringer.prototype.value = function (next) { + return (next !== void 0) ? next : ""; + }; + $mol_stringer.prototype.valueChanged = function (next) { + return this.value(next); + }; + $mol_stringer.prototype.field = function () { + var _this = this; + return $.$mol_merge_dict(_super.prototype.field.call(this), { + "disabled": function () { return _this.disabled(); }, + "value": function () { return _this.valueChanged(); }, + }); + }; + $mol_stringer.prototype.eventChange = function (next) { + return (next !== void 0) ? next : null; + }; + $mol_stringer.prototype.event = function () { + var _this = this; + return $.$mol_merge_dict(_super.prototype.event.call(this), { + "input": function (next) { return _this.eventChange(next); }, + }); + }; + return $mol_stringer; + }($.$mol_viewer)); + __decorate([ + $.$mol_mem() + ], $mol_stringer.prototype, "value", null); + __decorate([ + $.$mol_mem() + ], $mol_stringer.prototype, "eventChange", null); + $.$mol_stringer = $mol_stringer; +})($ || ($ = {})); +//stringer.view.tree.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var $; +(function ($) { + var $mol; + (function ($mol) { + var $mol_stringer = (function (_super) { + __extends($mol_stringer, _super); + function $mol_stringer() { + return _super.apply(this, arguments) || this; + } + $mol_stringer.prototype.eventChange = function (next) { + this.value(this.DOMNode().value.trim()); + }; + $mol_stringer.prototype.disabled = function () { + return !this.enabled(); + }; + return $mol_stringer; + }($.$mol_stringer)); + $mol.$mol_stringer = $mol_stringer; + })($mol = $.$mol || ($.$mol = {})); +})($ || ($ = {})); +//stringer.view.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var $; +(function ($) { + var $mol_clicker = (function (_super) { + __extends($mol_clicker, _super); + function $mol_clicker() { + return _super.apply(this, arguments) || this; + } + $mol_clicker.prototype.tagName = function () { + return "button"; + }; + $mol_clicker.prototype.enabled = function () { + return true; + }; + $mol_clicker.prototype.eventClick = function (next) { + return (next !== void 0) ? next : null; + }; + $mol_clicker.prototype.eventActivate = function (next) { + return this.eventClick(next); + }; + $mol_clicker.prototype.event = function () { + var _this = this; + return $.$mol_merge_dict(_super.prototype.event.call(this), { + "click": function (next) { return _this.eventActivate(next); }, + }); + }; + $mol_clicker.prototype.disabled = function () { + return false; + }; + $mol_clicker.prototype.attr = function () { + var _this = this; + return $.$mol_merge_dict(_super.prototype.attr.call(this), { + "disabled": function () { return _this.disabled(); }, + "tabindex": function () { return "0"; }, + }); + }; + return $mol_clicker; + }($.$mol_viewer)); + __decorate([ + $.$mol_mem() + ], $mol_clicker.prototype, "eventClick", null); + __decorate([ + $.$mol_mem() + ], $mol_clicker.prototype, "eventActivate", null); + $.$mol_clicker = $mol_clicker; +})($ || ($ = {})); +//clicker.view.tree.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var $; +(function ($) { + var $mol; + (function ($mol) { + var $mol_clicker = (function (_super) { + __extends($mol_clicker, _super); + function $mol_clicker() { + return _super.apply(this, arguments) || this; + } + $mol_clicker.prototype.disabled = function () { + return !this.enabled(); + }; + $mol_clicker.prototype.eventActivate = function (next) { + if (!this.enabled()) + return; + this.eventClick(next); + }; + return $mol_clicker; + }($.$mol_clicker)); + $mol.$mol_clicker = $mol_clicker; + })($mol = $.$mol || ($.$mol = {})); +})($ || ($ = {})); +//clicker.view.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var $; +(function ($) { + var $mol_clicker_button = (function (_super) { + __extends($mol_clicker_button, _super); + function $mol_clicker_button() { + return _super.apply(this, arguments) || this; + } + return $mol_clicker_button; + }($.$mol_clicker)); + $.$mol_clicker_button = $mol_clicker_button; +})($ || ($ = {})); +(function ($) { + var $mol_clicker_major = (function (_super) { + __extends($mol_clicker_major, _super); + function $mol_clicker_major() { + return _super.apply(this, arguments) || this; + } + return $mol_clicker_major; + }($.$mol_clicker_button)); + $.$mol_clicker_major = $mol_clicker_major; +})($ || ($ = {})); +(function ($) { + var $mol_clicker_minor = (function (_super) { + __extends($mol_clicker_minor, _super); + function $mol_clicker_minor() { + return _super.apply(this, arguments) || this; + } + return $mol_clicker_minor; + }($.$mol_clicker_button)); + $.$mol_clicker_minor = $mol_clicker_minor; +})($ || ($ = {})); +(function ($) { + var $mol_clicker_danger = (function (_super) { + __extends($mol_clicker_danger, _super); + function $mol_clicker_danger() { + return _super.apply(this, arguments) || this; + } + return $mol_clicker_danger; + }($.$mol_clicker_button)); + $.$mol_clicker_danger = $mol_clicker_danger; +})($ || ($ = {})); +//clicker_types.view.tree.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var $; +(function ($) { + var $mol_state_arg = (function (_super) { + __extends($mol_state_arg, _super); + function $mol_state_arg(prefix) { + if (prefix === void 0) { prefix = ''; } + var _this = _super.call(this) || this; + _this.prefix = prefix; + return _this; + } + $mol_state_arg.href = function (next) { + if (next) + history.replaceState(history.state, document.title, "" + next); + return window.location.search + window.location.hash; + }; + $mol_state_arg.dict = function (next) { + var href = this.href(next && this.make(next)); + var chunks = href.split(/[\/\?#!&;]/g); + var params = {}; + chunks.forEach(function (chunk) { + if (!chunk) + return; + var vals = chunk.split('=').map(decodeURIComponent); + params[vals.shift()] = vals.join('='); + }); + return params; + }; + $mol_state_arg.value = function (key, next) { + var nextDict = (next === void 0) ? void 0 : $.$mol_merge_dict(this.dict(), (_a = {}, _a[key] = next, _a)); + return this.dict(nextDict)[key] || null; + var _a; + }; + $mol_state_arg.link = function (next) { + return this.make($.$mol_merge_dict(this.dict(), next)); + }; + $mol_state_arg.make = function (next) { + var chunks = []; + for (var key in next) { + if (null == next[key]) + continue; + chunks.push([key].concat(next[key]).map(encodeURIComponent).join('=')); + } + var hash = chunks.join('#'); + return hash ? '#' + hash + '#' : '#'; + }; + $mol_state_arg.prototype.value = function (key, next) { + return $mol_state_arg.value(this.prefix + key, next); + }; + $mol_state_arg.prototype.sub = function (postfix) { + return new $mol_state_arg(this.prefix + postfix + '.'); + }; + $mol_state_arg.prototype.link = function (next) { + var prefix = this.prefix; + var dict = {}; + for (var key in next) { + dict[prefix + key] = next[key]; + } + return $mol_state_arg.link(dict); + }; + return $mol_state_arg; + }($.$mol_object)); + __decorate([ + $.$mol_mem() + ], $mol_state_arg, "href", null); + __decorate([ + $.$mol_mem() + ], $mol_state_arg, "dict", null); + __decorate([ + $.$mol_mem_key() + ], $mol_state_arg, "value", null); + $.$mol_state_arg = $mol_state_arg; + window.addEventListener('hashchange', function (event) { return $mol_state_arg.href(null); }); +})($ || ($ = {})); +//arg.web.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var $; +(function ($) { + var $mol_linker = (function (_super) { + __extends($mol_linker, _super); + function $mol_linker() { + return _super.apply(this, arguments) || this; + } + $mol_linker.prototype.heightMinimal = function () { + return 36; + }; + $mol_linker.prototype.tagName = function () { + return "a"; + }; + $mol_linker.prototype.uri = function () { + return ""; + }; + $mol_linker.prototype.current = function () { + return false; + }; + $mol_linker.prototype.attr = function () { + var _this = this; + return $.$mol_merge_dict(_super.prototype.attr.call(this), { + "href": function () { return _this.uri(); }, + "mol_linker_current": function () { return _this.current(); }, + }); + }; + $mol_linker.prototype.arg = function () { + return ({}); + }; + return $mol_linker; + }($.$mol_viewer)); + $.$mol_linker = $mol_linker; +})($ || ($ = {})); +//linker.view.tree.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var $; +(function ($) { + var $mol; + (function ($mol) { + var $mol_linker = (function (_super) { + __extends($mol_linker, _super); + function $mol_linker() { + return _super.apply(this, arguments) || this; + } + $mol_linker.prototype.uri = function () { + var patch = {}; + var arg = this.arg(); + for (var key in arg) + patch[key] = arg[key](); + return new $.$mol_state_arg(this.statePrefix()).link(patch); + }; + $mol_linker.prototype.current = function () { + return this.uri() === $.$mol_state_arg.link({}); + }; + return $mol_linker; + }($.$mol_linker)); + __decorate([ + $.$mol_mem() + ], $mol_linker.prototype, "uri", null); + $mol.$mol_linker = $mol_linker; + })($mol = $.$mol || ($.$mol = {})); +})($ || ($ = {})); +//linker.view.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var $; +(function ($) { + var $mol_checker = (function (_super) { + __extends($mol_checker, _super); + function $mol_checker() { + return _super.apply(this, arguments) || this; + } + $mol_checker.prototype.checked = function (next) { + return (next !== void 0) ? next : false; + }; + $mol_checker.prototype.attr = function () { + var _this = this; + return $.$mol_merge_dict(_super.prototype.attr.call(this), { + "mol_checker_checked": function (next) { return _this.checked(next); }, + }); + }; + $mol_checker.prototype.icon = function () { + return null; + }; + $mol_checker.prototype.label = function () { + return []; + }; + $mol_checker.prototype.labeler = function (next) { + var _this = this; + return new $.$mol_viewer().setup(function (obj) { + obj.childs = function () { return [].concat(_this.label()); }; + }); + }; + $mol_checker.prototype.childs = function () { + return [].concat(this.icon(), this.labeler()); + }; + return $mol_checker; + }($.$mol_clicker)); + __decorate([ + $.$mol_mem() + ], $mol_checker.prototype, "checked", null); + __decorate([ + $.$mol_mem() + ], $mol_checker.prototype, "labeler", null); + $.$mol_checker = $mol_checker; +})($ || ($ = {})); +//checker.view.tree.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var $; +(function ($) { + var $mol; + (function ($mol) { + var $mol_checker = (function (_super) { + __extends($mol_checker, _super); + function $mol_checker() { + return _super.apply(this, arguments) || this; + } + $mol_checker.prototype.eventClick = function (next) { + this.checked(!this.checked()); + next.preventDefault(); + }; + return $mol_checker; + }($.$mol_checker)); + $mol.$mol_checker = $mol_checker; + })($mol = $.$mol || ($.$mol = {})); +})($ || ($ = {})); +//checker.view.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var $; +(function ($) { + var $mol_state_session = (function (_super) { + __extends($mol_state_session, _super); + function $mol_state_session() { + return _super.apply(this, arguments) || this; + } + $mol_state_session.value = function (key, next) { + if (next === void 0) + return JSON.parse(sessionStorage.getItem(key) || 'null'); + if (next === null) + sessionStorage.removeItem(key); + else + sessionStorage.setItem(key, JSON.stringify(next)); + return next; + }; + $mol_state_session.prototype.prefix = function () { return ''; }; + $mol_state_session.prototype.value = function (key, next) { + return $mol_state_session.value(this.prefix() + '.' + key, next); + }; + return $mol_state_session; + }($.$mol_object)); + __decorate([ + $.$mol_mem_key() + ], $mol_state_session, "value", null); + $.$mol_state_session = $mol_state_session; +})($ || ($ = {})); +//session.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var $; +(function ($) { + var $mol_scroller = (function (_super) { + __extends($mol_scroller, _super); + function $mol_scroller() { + return _super.apply(this, arguments) || this; + } + $mol_scroller.prototype.heightMinimal = function () { + return 0; + }; + $mol_scroller.prototype.scrollTop = function (next) { + return (next !== void 0) ? next : 0; + }; + $mol_scroller.prototype.scrollLeft = function (next) { + return (next !== void 0) ? next : 0; + }; + $mol_scroller.prototype.field = function () { + var _this = this; + return $.$mol_merge_dict(_super.prototype.field.call(this), { + "scrollTop": function (next) { return _this.scrollTop(next); }, + "scrollLeft": function (next) { return _this.scrollLeft(next); }, + }); + }; + $mol_scroller.prototype.eventScroll = function (next) { + return (next !== void 0) ? next : null; + }; + $mol_scroller.prototype.event = function () { + var _this = this; + return $.$mol_merge_dict(_super.prototype.event.call(this), { + "scroll": function (next) { return _this.eventScroll(next); }, + "overflow": function (next) { return _this.eventScroll(next); }, + "underflow": function (next) { return _this.eventScroll(next); }, + }); + }; + return $mol_scroller; + }($.$mol_viewer)); + __decorate([ + $.$mol_mem() + ], $mol_scroller.prototype, "scrollTop", null); + __decorate([ + $.$mol_mem() + ], $mol_scroller.prototype, "scrollLeft", null); + __decorate([ + $.$mol_mem() + ], $mol_scroller.prototype, "eventScroll", null); + $.$mol_scroller = $mol_scroller; +})($ || ($ = {})); +//scroller.view.tree.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var $; +(function ($) { + $.$mol_viewer_context.$mol_scroller_scrollTop = function () { return 0; }; + $.$mol_viewer_context.$mol_scroller_moving = function () { return false; }; +})($ || ($ = {})); +(function ($) { + var $mol; + (function ($mol) { + var $mol_scroller = (function (_super) { + __extends($mol_scroller, _super); + function $mol_scroller() { + return _super.apply(this, arguments) || this; + } + $mol_scroller.prototype.scrollTop = function (next) { + return $.$mol_state_session.value(this + ".scrollTop()", next) || 0; + }; + $mol_scroller.prototype.scrollLeft = function (next) { + return $.$mol_state_session.value(this + ".scrollLeft()", next) || 0; + }; + $mol_scroller.prototype.scrollBottom = function (next) { + return next || 0; + }; + $mol_scroller.prototype.scrollRight = function (next) { + return next || 0; + }; + $mol_scroller.prototype.eventScroll = function (next) { + var _this = this; + this.moving(true); + new $.$mol_defer(function () { + var el = _this.DOMNode(); + _this.scrollTop(Math.max(0, el.scrollTop)); + _this.scrollLeft(Math.max(0, el.scrollLeft)); + _this.scrollBottom(Math.max(0, el.scrollHeight - el.scrollTop - el.offsetHeight)); + _this.scrollRight(Math.max(0, el.scrollWidth - el.scrollLeft - el.offsetWidth)); + }); + }; + $mol_scroller.prototype.moving = function (next) { + var _this = this; + if (next) { + setTimeout(function () { + _this.moving(false); + }); + } + return next || false; + }; + $mol_scroller.prototype.contextSub = function () { + var _this = this; + var subContext = Object.create(this.context()); + subContext.$mol_viewer_heightLimit = function () { return _this.context().$mol_viewer_heightLimit() + _this.scrollTop(); }; + subContext.$mol_scroller_scrollTop = function () { return _this.scrollTop(); }; + subContext.$mol_scroller_moving = function () { return _this.moving(); }; + return subContext; + }; + $mol_scroller.prototype.shadowStyle = function () { + var shadows = []; + if (this.scrollTop() > 0) + shadows.push('inset 0 6px 6px -6px rgba( 0 , 0 , 0 , .25 )'); + if (this.scrollLeft() > 0) + shadows.push('inset 6px 0 6px -6px rgba( 0 , 0 , 0 , .25 )'); + if (this.scrollBottom() > 0) + shadows.push('inset 0 -6px 6px -6px rgba( 0 , 0 , 0 , .25 )'); + if (this.scrollRight() > 0) + shadows.push('inset -6px 0 6px -6px rgba( 0 , 0 , 0 , .25 )'); + return shadows.join(' , '); + }; + return $mol_scroller; + }($.$mol_scroller)); + __decorate([ + $.$mol_mem() + ], $mol_scroller.prototype, "scrollBottom", null); + __decorate([ + $.$mol_mem() + ], $mol_scroller.prototype, "scrollRight", null); + __decorate([ + $.$mol_mem() + ], $mol_scroller.prototype, "moving", null); + __decorate([ + $.$mol_mem() + ], $mol_scroller.prototype, "contextSub", null); + __decorate([ + $.$mol_mem() + ], $mol_scroller.prototype, "shadowStyle", null); + $mol.$mol_scroller = $mol_scroller; + })($mol = $.$mol || ($.$mol = {})); +})($ || ($ = {})); +//scroller.view.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var localStorage = localStorage || { + getItem: function (key) { + return this[':' + key]; + }, + setItem: function (key, value) { + this[':' + key] = value; + }, + removeItem: function (key) { + this[':' + key] = void 0; + } +}; +var $; +(function ($) { + var $mol_state_local = (function (_super) { + __extends($mol_state_local, _super); + function $mol_state_local() { + return _super.apply(this, arguments) || this; + } + $mol_state_local.value = function (key, next, force) { + if (next === void 0) + return JSON.parse(localStorage.getItem(key) || 'null'); + if (next === null) + localStorage.removeItem(key); + else + localStorage.setItem(key, JSON.stringify(next)); + return next; + }; + $mol_state_local.prototype.prefix = function () { return ''; }; + $mol_state_local.prototype.value = function (key, next) { + return $mol_state_local.value(this.prefix() + '.' + key, next); + }; + return $mol_state_local; + }($.$mol_object)); + __decorate([ + $.$mol_mem_key() + ], $mol_state_local, "value", null); + $.$mol_state_local = $mol_state_local; +})($ || ($ = {})); +//local.js.map +; +var $; +(function ($) { + window.addEventListener('storage', function (event) { + $.$mol_state_local.value(event.key, void 0, $.$mol_atom_force); + }); +})($ || ($ = {})); +//local.web.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var $; +(function ($) { + var $mol_http_request = (function (_super) { + __extends($mol_http_request, _super); + function $mol_http_request() { + return _super.apply(this, arguments) || this; + } + $mol_http_request.prototype.uri = function () { return ''; }; + $mol_http_request.prototype.method = function () { return 'Get'; }; + $mol_http_request.prototype.credentials = function () { + return null; + }; + $mol_http_request.prototype.body = function () { return null; }; + $mol_http_request.prototype.native = function () { + var _this = this; + if (this['native()']) + return this['native()']; + var next = this['native()'] = $.$mol_http_request_native(); + next.withCredentials = Boolean(this.credentials()); + next.onload = function (event) { + if (Math.floor(next.status / 100) === 2) { + _this.response(next.responseText, $.$mol_atom_force); + } + else { + _this.response(new Error(next.responseText), $.$mol_atom_force); + } + }; + next.onerror = function (event) { + _this.response(event.error || new Error('Unknown HTTP error'), $.$mol_atom_force); + }; + return next; + }; + $mol_http_request.prototype.destroyed = function (next) { + if (next) { + var native = this['native()']; + if (native) + native.abort(); + } + return _super.prototype.destroyed.call(this, next); + }; + $mol_http_request.prototype.response = function (next, force) { + var creds = this.credentials(); + var native = this.native(); + var method = (next === void 0) ? 'Get' : this.method(); + var uri = this.uri(); + native.open(method, uri, true, creds && creds.login, creds && creds.password); + native.send(next); + throw new $.$mol_atom_wait(method + " " + uri); + }; + $mol_http_request.prototype.text = function (next, force) { + return this.response(next, force); + }; + return $mol_http_request; + }($.$mol_object)); + __decorate([ + $.$mol_mem() + ], $mol_http_request.prototype, "response", null); + $.$mol_http_request = $mol_http_request; +})($ || ($ = {})); +//request.js.map +; +var $; +(function ($) { + $.$mol_http_request_native = function () { return new XMLHttpRequest; }; +})($ || ($ = {})); +//request.web.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var $; +(function ($) { + var $mol_http_resource = (function (_super) { + __extends($mol_http_resource, _super); + function $mol_http_resource() { + return _super.apply(this, arguments) || this; + } + $mol_http_resource.item = function (uri) { + return new $mol_http_resource().setup(function (obj) { + obj.uri = function () { return uri; }; + }); + }; + $mol_http_resource.prototype.uri = function () { return ''; }; + $mol_http_resource.prototype.credentials = function () { + return null; + }; + $mol_http_resource.prototype.request = function () { + var _this = this; + var request = new $.$mol_http_request(); + request.method = function () { return 'Put'; }; + request.uri = function () { return _this.uri(); }; + request.credentials = function () { return _this.credentials(); }; + return request; + }; + $mol_http_resource.prototype.text = function (next, force) { + return this.request().text(next, force); + }; + return $mol_http_resource; + }($.$mol_object)); + __decorate([ + $.$mol_mem() + ], $mol_http_resource.prototype, "request", null); + __decorate([ + $.$mol_mem() + ], $mol_http_resource.prototype, "text", null); + __decorate([ + $.$mol_mem_key() + ], $mol_http_resource, "item", null); + $.$mol_http_resource = $mol_http_resource; + var $mol_http_resource_json = (function (_super) { + __extends($mol_http_resource_json, _super); + function $mol_http_resource_json() { + return _super.apply(this, arguments) || this; + } + $mol_http_resource_json.item = function (uri) { + return new $mol_http_resource_json().setup(function (obj) { + obj.uri = function () { return uri; }; + }); + }; + $mol_http_resource_json.prototype.json = function (next, force) { + return JSON.parse(this.text(next && JSON.stringify(next, null, '\t'), force)); + }; + return $mol_http_resource_json; + }($mol_http_resource)); + __decorate([ + $.$mol_mem_key() + ], $mol_http_resource_json, "item", null); + $.$mol_http_resource_json = $mol_http_resource_json; +})($ || ($ = {})); +//resource.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var $; +(function ($) { + var $mol_locale = (function (_super) { + __extends($mol_locale, _super); + function $mol_locale() { + return _super.apply(this, arguments) || this; + } + $mol_locale.lang = function (next) { + return $.$mol_state_local.value('locale', next) || $.$mol_state_arg.value('locale') || 'en'; + }; + $mol_locale.texts = function () { + var uri = "-/web.locale=" + this.lang() + ".json"; + var resource = $.$mol_http_resource_json.item(uri); + return resource.json(); + }; + $mol_locale.text = function (contexts, key) { + var texts = this.texts(); + for (var i = 0; i < contexts.length; ++i) { + var text = texts[contexts[i] + "_" + key]; + if (text) + return text; + } + console.warn('Locale tet not found: ', contexts, key); + return "<" + key + ">"; + }; + return $mol_locale; + }($.$mol_object)); + __decorate([ + $.$mol_mem() + ], $mol_locale, "lang", null); + __decorate([ + $.$mol_mem() + ], $mol_locale, "texts", null); + $.$mol_locale = $mol_locale; +})($ || ($ = {})); +//locale.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var $; +(function ($) { + var $mol_lister = (function (_super) { + __extends($mol_lister, _super); + function $mol_lister() { + return _super.apply(this, arguments) || this; + } + $mol_lister.prototype.minHeightStyle = function () { + return ""; + }; + $mol_lister.prototype.field = function () { + var _this = this; + return $.$mol_merge_dict(_super.prototype.field.call(this), { + "style.minHeight": function () { return _this.minHeightStyle(); }, + }); + }; + $mol_lister.prototype.rows = function () { + return []; + }; + $mol_lister.prototype.childs = function () { + return this.rows(); + }; + return $mol_lister; + }($.$mol_viewer)); + $.$mol_lister = $mol_lister; +})($ || ($ = {})); +//lister.view.tree.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var $; +(function ($) { + var $mol; + (function ($mol) { + var $mol_lister = (function (_super) { + __extends($mol_lister, _super); + function $mol_lister() { + return _super.apply(this, arguments) || this; + } + $mol_lister.prototype.rowOffsets = function () { + var childs = this.childs(); + if (!childs) + return null; + var heightLimit = this.contextSub().$mol_viewer_heightLimit(); + var offset = 0; + var next = []; + for (var _i = 0, childs_1 = childs; _i < childs_1.length; _i++) { + var child = childs_1[_i]; + next.push(offset); + if (child instanceof $.$mol_viewer) { + offset += child.heightMinimal(); + } + if (offset > heightLimit) + break; + } + return next; + }; + $mol_lister.prototype.rowContext = function (index) { + var _this = this; + var context = this.contextSub(); + var next = Object.create(context); + next.$mol_viewer_heightLimit = function () { return context.$mol_viewer_heightLimit() - _this.rowOffsets()[index]; }; + return next; + }; + $mol_lister.prototype.childsVisible = function () { + var childs = this.childs(); + if (!childs) + return childs; + var limit = this.rowOffsets().length; + var next = []; + for (var i = 0; i < limit; ++i) { + var child = childs[i]; + if (child == null) + continue; + if (child instanceof $.$mol_viewer) { + child.context(this.rowContext(i)); + } + next.push(child); + } + return next; + }; + $mol_lister.prototype.heightMinimal = function () { + var height = 0; + var childs = this.childs(); + if (childs) + childs.forEach(function (child) { + if (child instanceof $.$mol_viewer) { + height += child.heightMinimal(); + } + }); + return height; + }; + $mol_lister.prototype.minHeightStyle = function () { + return this.heightMinimal() + 'px'; + }; + return $mol_lister; + }($.$mol_lister)); + __decorate([ + $.$mol_mem() + ], $mol_lister.prototype, "rowOffsets", null); + __decorate([ + $.$mol_mem_key() + ], $mol_lister.prototype, "rowContext", null); + __decorate([ + $.$mol_mem() + ], $mol_lister.prototype, "childsVisible", null); + $mol.$mol_lister = $mol_lister; + })($mol = $.$mol || ($.$mol = {})); +})($ || ($ = {})); +//lister.view.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var $; +(function ($) { + var $mol_barer = (function (_super) { + __extends($mol_barer, _super); + function $mol_barer() { + return _super.apply(this, arguments) || this; + } + return $mol_barer; + }($.$mol_viewer)); + $.$mol_barer = $mol_barer; +})($ || ($ = {})); +//barer.view.tree.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var $; +(function ($) { + var $mol_app_todomvc = (function (_super) { + __extends($mol_app_todomvc, _super); + function $mol_app_todomvc() { + return _super.apply(this, arguments) || this; + } + $mol_app_todomvc.prototype.title = function () { + return $.$mol_locale.text(this.localizationContexts(), "title"); + }; + $mol_app_todomvc.prototype.titler = function (next) { + var _this = this; + return new $.$mol_viewer().setup(function (obj) { + obj.heightMinimal = function () { return 142; }; + obj.childs = function () { return [].concat(_this.title()); }; + }); + }; + $mol_app_todomvc.prototype.allCompleterEnabled = function () { + return false; + }; + $mol_app_todomvc.prototype.allCompleted = function (next) { + return (next !== void 0) ? next : false; + }; + $mol_app_todomvc.prototype.allCompleter = function (next) { + var _this = this; + return new $.$mol_checker().setup(function (obj) { + obj.enabled = function () { return _this.allCompleterEnabled(); }; + obj.checked = function (next) { return _this.allCompleted(next); }; + obj.childs = function () { return [].concat("❯"); }; + }); + }; + $mol_app_todomvc.prototype.taskNewTitle = function (next) { + return (next !== void 0) ? next : ""; + }; + $mol_app_todomvc.prototype.eventAdd = function (next) { + return (next !== void 0) ? next : null; + }; + $mol_app_todomvc.prototype.adder = function (next) { + var _this = this; + return new $.$mol_app_todomvc_adder().setup(function (obj) { + obj.value = function (next) { return _this.taskNewTitle(next); }; + obj.eventDone = function (next) { return _this.eventAdd(next); }; + }); + }; + $mol_app_todomvc.prototype.headerContent = function () { + return [].concat(this.allCompleter(), this.adder()); + }; + $mol_app_todomvc.prototype.header = function (next) { + var _this = this; + return new $.$mol_viewer().setup(function (obj) { + obj.heightMinimal = function () { return 64; }; + obj.childs = function () { return _this.headerContent(); }; + }); + }; + $mol_app_todomvc.prototype.taskers = function () { + return []; + }; + $mol_app_todomvc.prototype.lister = function (next) { + var _this = this; + return new $.$mol_lister().setup(function (obj) { + obj.rows = function () { return _this.taskers(); }; + }); + }; + $mol_app_todomvc.prototype.pendingMessage = function () { + return $.$mol_locale.text(this.localizationContexts(), "pendingMessage"); + }; + $mol_app_todomvc.prototype.pendinger = function (next) { + var _this = this; + return new $.$mol_viewer().setup(function (obj) { + obj.childs = function () { return [].concat(_this.pendingMessage()); }; + }); + }; + $mol_app_todomvc.prototype.filterAllLabel = function () { + return $.$mol_locale.text(this.localizationContexts(), "filterAllLabel"); + }; + $mol_app_todomvc.prototype.filterAll = function (next) { + var _this = this; + return new $.$mol_linker().setup(function (obj) { + obj.childs = function () { return [].concat(_this.filterAllLabel()); }; + obj.arg = function () { return ({ + "completed": function () { return null; }, + }); }; + }); + }; + $mol_app_todomvc.prototype.filterActiveLabel = function () { + return $.$mol_locale.text(this.localizationContexts(), "filterActiveLabel"); + }; + $mol_app_todomvc.prototype.filterActive = function (next) { + var _this = this; + return new $.$mol_linker().setup(function (obj) { + obj.childs = function () { return [].concat(_this.filterActiveLabel()); }; + obj.arg = function () { return ({ + "completed": function () { return false; }, + }); }; + }); + }; + $mol_app_todomvc.prototype.filterCompletedLabel = function () { + return $.$mol_locale.text(this.localizationContexts(), "filterCompletedLabel"); + }; + $mol_app_todomvc.prototype.filterCompleted = function (next) { + var _this = this; + return new $.$mol_linker().setup(function (obj) { + obj.childs = function () { return [].concat(_this.filterCompletedLabel()); }; + obj.arg = function () { return ({ + "completed": function () { return true; }, + }); }; + }); + }; + $mol_app_todomvc.prototype.filterOptions = function () { + return [].concat(this.filterAll(), this.filterActive(), this.filterCompleted()); + }; + $mol_app_todomvc.prototype.filter = function (next) { + var _this = this; + return new $.$mol_barer().setup(function (obj) { + obj.childs = function () { return _this.filterOptions(); }; + }); + }; + $mol_app_todomvc.prototype.sanitizerEnabled = function () { + return true; + }; + $mol_app_todomvc.prototype.eventSanitize = function () { + return null; + }; + $mol_app_todomvc.prototype.sanitizerLabel = function () { + return $.$mol_locale.text(this.localizationContexts(), "sanitizerLabel"); + }; + $mol_app_todomvc.prototype.sanitizer = function (next) { + var _this = this; + return new $.$mol_clicker_minor().setup(function (obj) { + obj.enabled = function () { return _this.sanitizerEnabled(); }; + obj.eventClick = function () { return _this.eventSanitize(); }; + obj.childs = function () { return [].concat(_this.sanitizerLabel()); }; + }); + }; + $mol_app_todomvc.prototype.footerContent = function () { + return [].concat(this.pendinger(), this.filter(), this.sanitizer()); + }; + $mol_app_todomvc.prototype.footer = function (next) { + var _this = this; + return new $.$mol_viewer().setup(function (obj) { + obj.childs = function () { return _this.footerContent(); }; + }); + }; + $mol_app_todomvc.prototype.panels = function () { + return [].concat(this.header(), this.lister(), this.footer()); + }; + $mol_app_todomvc.prototype.paneler = function (next) { + var _this = this; + return new $.$mol_lister().setup(function (obj) { + obj.rows = function () { return _this.panels(); }; + }); + }; + $mol_app_todomvc.prototype.pager = function (next) { + var _this = this; + return new $.$mol_lister().setup(function (obj) { + obj.childs = function () { return [].concat(_this.titler(), _this.paneler()); }; + }); + }; + $mol_app_todomvc.prototype.childs = function () { + return [].concat(this.pager()); + }; + $mol_app_todomvc.prototype.taskCompleted = function (key, next) { + return (next !== void 0) ? next : false; + }; + $mol_app_todomvc.prototype.taskTitle = function (key, next) { + return (next !== void 0) ? next : ""; + }; + $mol_app_todomvc.prototype.eventTaskDrop = function (key, next) { + return (next !== void 0) ? next : null; + }; + $mol_app_todomvc.prototype.tasker = function (key, next) { + var _this = this; + return new $.$mol_app_todomvc_tasker().setup(function (obj) { + obj.completed = function (next) { return _this.taskCompleted(key, next); }; + obj.title = function (next) { return _this.taskTitle(key, next); }; + obj.eventDrop = function (next) { return _this.eventTaskDrop(key, next); }; + }); + }; + return $mol_app_todomvc; + }($.$mol_scroller)); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "titler", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "allCompleted", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "allCompleter", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "taskNewTitle", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "eventAdd", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "adder", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "header", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "lister", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "pendinger", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "filterAll", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "filterActive", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "filterCompleted", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "filter", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "sanitizer", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "footer", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "paneler", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "pager", null); + __decorate([ + $.$mol_mem_key() + ], $mol_app_todomvc.prototype, "taskCompleted", null); + __decorate([ + $.$mol_mem_key() + ], $mol_app_todomvc.prototype, "taskTitle", null); + __decorate([ + $.$mol_mem_key() + ], $mol_app_todomvc.prototype, "eventTaskDrop", null); + __decorate([ + $.$mol_mem_key() + ], $mol_app_todomvc.prototype, "tasker", null); + $.$mol_app_todomvc = $mol_app_todomvc; +})($ || ($ = {})); +(function ($) { + var $mol_app_todomvc_adder = (function (_super) { + __extends($mol_app_todomvc_adder, _super); + function $mol_app_todomvc_adder() { + return _super.apply(this, arguments) || this; + } + $mol_app_todomvc_adder.prototype.hint = function () { + return $.$mol_locale.text(this.localizationContexts(), "hint"); + }; + $mol_app_todomvc_adder.prototype.eventPress = function (next) { + return (next !== void 0) ? next : null; + }; + $mol_app_todomvc_adder.prototype.event = function () { + var _this = this; + return $.$mol_merge_dict(_super.prototype.event.call(this), { + "keyup": function (next) { return _this.eventPress(next); }, + }); + }; + $mol_app_todomvc_adder.prototype.eventDone = function (next) { + return (next !== void 0) ? next : null; + }; + return $mol_app_todomvc_adder; + }($.$mol_stringer)); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc_adder.prototype, "eventPress", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc_adder.prototype, "eventDone", null); + $.$mol_app_todomvc_adder = $mol_app_todomvc_adder; +})($ || ($ = {})); +(function ($) { + var $mol_app_todomvc_tasker = (function (_super) { + __extends($mol_app_todomvc_tasker, _super); + function $mol_app_todomvc_tasker() { + return _super.apply(this, arguments) || this; + } + $mol_app_todomvc_tasker.prototype.heightMinimal = function () { + return 64; + }; + $mol_app_todomvc_tasker.prototype.completed = function (next) { + return (next !== void 0) ? next : false; + }; + $mol_app_todomvc_tasker.prototype.completer = function (next) { + var _this = this; + return new $.$mol_checker().setup(function (obj) { + obj.checked = function (next) { return _this.completed(next); }; + obj.childs = function () { return []; }; + }); + }; + $mol_app_todomvc_tasker.prototype.titleHint = function () { + return $.$mol_locale.text(this.localizationContexts(), "titleHint"); + }; + $mol_app_todomvc_tasker.prototype.title = function (next) { + return (next !== void 0) ? next : ""; + }; + $mol_app_todomvc_tasker.prototype.titler = function (next) { + var _this = this; + return new $.$mol_stringer().setup(function (obj) { + obj.hint = function () { return _this.titleHint(); }; + obj.value = function (next) { return _this.title(next); }; + }); + }; + $mol_app_todomvc_tasker.prototype.eventDrop = function (next) { + return (next !== void 0) ? next : null; + }; + $mol_app_todomvc_tasker.prototype.dropper = function (next) { + var _this = this; + return new $.$mol_clicker().setup(function (obj) { + obj.childs = function () { return [].concat("✖"); }; + obj.eventClick = function (next) { return _this.eventDrop(next); }; + }); + }; + $mol_app_todomvc_tasker.prototype.childs = function () { + return [].concat(this.completer(), this.titler(), this.dropper()); + }; + $mol_app_todomvc_tasker.prototype.attr = function () { + var _this = this; + return $.$mol_merge_dict(_super.prototype.attr.call(this), { + "mol_app_todomvc_tasker_completed": function () { return _this.completed(); }, + }); + }; + return $mol_app_todomvc_tasker; + }($.$mol_viewer)); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc_tasker.prototype, "completed", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc_tasker.prototype, "completer", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc_tasker.prototype, "title", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc_tasker.prototype, "titler", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc_tasker.prototype, "eventDrop", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc_tasker.prototype, "dropper", null); + $.$mol_app_todomvc_tasker = $mol_app_todomvc_tasker; +})($ || ($ = {})); +//todomvc.view.tree.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var $; +(function ($) { + var $mol; + (function ($mol) { + var $mol_app_todomvc_adder = (function (_super) { + __extends($mol_app_todomvc_adder, _super); + function $mol_app_todomvc_adder() { + return _super.apply(this, arguments) || this; + } + $mol_app_todomvc_adder.prototype.eventPress = function (next) { + switch (next['code'] || next.key) { + case 'Enter': return this.eventDone(next); + } + }; + return $mol_app_todomvc_adder; + }($.$mol_app_todomvc_adder)); + $mol.$mol_app_todomvc_adder = $mol_app_todomvc_adder; + var $mol_app_todomvc = (function (_super) { + __extends($mol_app_todomvc, _super); + function $mol_app_todomvc() { + var _this = _super.apply(this, arguments) || this; + _this._idSeed = 0; + return _this; + } + $mol_app_todomvc.prototype.taskIds = function (next) { + return $.$mol_state_local.value(this.stateKey('taskIds'), next) || []; + }; + $mol_app_todomvc.prototype.argCompleted = function () { + return $.$mol_state_arg.value(this.stateKey('completed')); + }; + $mol_app_todomvc.prototype.groupsByCompleted = function () { + var groups = { 'true': [], 'false': [] }; + for (var _i = 0, _a = this.taskIds(); _i < _a.length; _i++) { + var id = _a[_i]; + var task = this.task(id); + groups[String(task.completed)].push(id); + } + return groups; + }; + $mol_app_todomvc.prototype.tasksFiltered = function () { + var completed = this.argCompleted(); + if (completed) { + return this.groupsByCompleted()[completed] || []; + } + else { + return this.taskIds(); + } + }; + $mol_app_todomvc.prototype.allCompleted = function (next) { + if (next === void 0) + return this.groupsByCompleted()['false'].length === 0; + for (var _i = 0, _a = this.groupsByCompleted()[String(!next)]; _i < _a.length; _i++) { + var id = _a[_i]; + var task = this.task(id); + this.task(id, { title: task.title, completed: next }); + } + return next; + }; + $mol_app_todomvc.prototype.allCompleterEnabled = function () { + return this.taskIds().length > 0; + }; + $mol_app_todomvc.prototype.pendingMessage = function () { + var count = this.groupsByCompleted()['false'].length; + return (count === 1) ? '1 item left' : count + " items left"; + }; + $mol_app_todomvc.prototype.eventAdd = function (next) { + var title = this.taskNewTitle(); + if (!title) + return; + var id = ++this._idSeed; + var task = { completed: false, title: title }; + this.task(id, task); + this.taskIds(this.taskIds().concat(id)); + this.taskNewTitle(''); + }; + $mol_app_todomvc.prototype.taskers = function () { + var _this = this; + return this.tasksFiltered().map(function (id, index) { return _this.tasker(index); }); + }; + $mol_app_todomvc.prototype.task = function (id, next) { + var key = this.stateKey("task=" + id); + if (next === void 0) + return $.$mol_state_local.value(key) || { title: '', completed: false }; + $.$mol_state_local.value(key, next); + return next || void 0; + }; + $mol_app_todomvc.prototype.taskCompleted = function (index, next) { + var id = this.tasksFiltered()[index]; + if (next === void 0) + return this.task(id).completed; + this.task(id, $.$mol_merge_dict(this.task(id), { completed: next })); + return next; + }; + $mol_app_todomvc.prototype.taskTitle = function (index, next) { + var id = this.tasksFiltered()[index]; + if (next === void 0) + return this.task(id).title; + this.task(id, $.$mol_merge_dict(this.task(id), { title: next })); + return next; + }; + $mol_app_todomvc.prototype.eventTaskDrop = function (index, next) { + var tasks = this.tasksFiltered(); + var id = tasks[index]; + tasks = tasks.slice(0, index).concat(tasks.slice(index + 1, tasks.length)); + this.task(id, null); + this.taskIds(tasks); + }; + $mol_app_todomvc.prototype.eventSanitize = function () { + var _this = this; + this.taskIds(this.taskIds().filter(function (id) { + if (!_this.task(id).completed) + return true; + _this.task(id, null); + return false; + })); + }; + $mol_app_todomvc.prototype.panels = function () { + return [ + this.header(), + this.lister(), + this.footerVisible() ? this.footer() : null, + ]; + }; + $mol_app_todomvc.prototype.footerVisible = function () { + return this.taskIds().length > 0; + }; + $mol_app_todomvc.prototype.sanitizerEnabled = function () { + return this.groupsByCompleted()['true'].length > 0; + }; + return $mol_app_todomvc; + }($.$mol_app_todomvc)); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "groupsByCompleted", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "tasksFiltered", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "allCompleted", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "pendingMessage", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "taskers", null); + __decorate([ + $.$mol_mem_key() + ], $mol_app_todomvc.prototype, "taskCompleted", null); + __decorate([ + $.$mol_mem_key() + ], $mol_app_todomvc.prototype, "taskTitle", null); + $mol.$mol_app_todomvc = $mol_app_todomvc; + })($mol = $.$mol || ($.$mol = {})); +})($ || ($ = {})); +//todomvc.view.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var $; +(function ($) { + var $mol_app_todomvc_demo = (function (_super) { + __extends($mol_app_todomvc_demo, _super); + function $mol_app_todomvc_demo() { + return _super.apply(this, arguments) || this; + } + return $mol_app_todomvc_demo; + }($.$mol_app_todomvc)); + $.$mol_app_todomvc_demo = $mol_app_todomvc_demo; +})($ || ($ = {})); +//demo.view.tree.js.map +//# sourceMappingURL=web.js.map \ No newline at end of file diff --git a/examples/mol/-/web.js.map b/examples/mol/-/web.js.map new file mode 100644 index 0000000000..406bc8046e --- /dev/null +++ b/examples/mol/-/web.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../mol.jam.js","../../../log/log.web.ts","../../../object/object.ts","../../../set/set.ts","../../../set/set_select.jam.js","../../../defer/defer.ts","../../../dict/dict.ts","../../../dict/dict_select.jam.js","../../../state/stack/stack.ts","../../../atom/atom.ts","../../../mem/mem.ts","../../../window/window.web.ts","../../../viewer/viewer.ts","../../../viewer/viewer.web.ts","../../../merge/dict/dict.ts","../../../stringer/-view.tree/stringer.view.tree.ts","../../../stringer/stringer.view.ts","../../../clicker/-view.tree/clicker.view.tree.ts","../../../clicker/clicker.view.ts","../../../clicker/-view.tree/clicker_types.view.tree.ts","../../../state/arg/arg.web.ts","../../../linker/-view.tree/linker.view.tree.ts","../../../linker/linker.view.ts","../../../checker/-view.tree/checker.view.tree.ts","../../../checker/checker.view.ts","../../../state/session/session.ts","../../../scroller/-view.tree/scroller.view.tree.ts","../../../scroller/scroller.view.ts","../../../state/local/local.ts","../../../state/local/local.web.ts","../../../http/request/request.ts","../../../http/request/request.web.ts","../../../http/resource/resource.ts","../../../locale/locale.ts","../../../lister/-view.tree/lister.view.tree.ts","../../../lister/lister.view.ts","../../../barer/-view.tree/barer.view.tree.ts","../-view.tree/todomvc.view.tree.ts","../todomvc.view.ts","../demo/-view.tree/demo.view.tree.ts"],"names":[],"mappings":"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","file":"web.js","sourcesContent":[null,"namespace $ {\n\t\n\texport function $mol_log( path : string , values : any[] ) {\n\t\t\n\t\tvar filter = $mol_log.filter()\n\t\tif( filter == null ) return\n\t\tif( path.indexOf( filter ) === -1 ) return\n\t\t\n\t\tvar time = new Date().toLocaleTimeString()\n\t\tconsole.log( time , path , values )\n\t}\n\t\n\texport namespace $mol_log {\n\t\t\n\t\tvar _filter : string\n\t\t\n\t\texport function filter( next? : string ) {\n\t\t\tif( next !== void 0 ) {\n\t\t\t\tif( next == null ) {\n\t\t\t\t\tsessionStorage.removeItem( '$mol_log.filter()' )\n\t\t\t\t} else {\n\t\t\t\t\tsessionStorage.setItem( '$mol_log.filter()' , next )\n\t\t\t\t}\n\t\t\t\t_filter = next\n\t\t\t}\n\t\t\t\n\t\t\tif( _filter !== void 0 ) return _filter\n\t\t\t\n\t\t\treturn _filter = sessionStorage.getItem( '$mol_log.filter()' )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\t/// Common superclass that provides base functionality.\n\texport class $mol_object {\n\t\t\n\t\tClass() {\n\t\t\treturn this.constructor as any\n\t\t}\n\t\t\n\t\tstatic toString() : string {\n\t\t\tlet self : any = this\n\t\t\treturn self[ 'name' ]\n\t\t\t\t|| self[ 'displayName' ]\n\t\t\t\t|| ( self[ 'displayName' ] = Function.prototype.toString.call( self )\n\t\t\t\t.match( /^function ([a-z0-9_$]*)/ )[ 1 ] )\n\t\t}\n\t\t\n\t\t'objectClassNames()' : string[]\n\t\t\n\t\tobjectClassNames() {\n\t\t\tif( this.hasOwnProperty( 'objectClassNames()' ) ) return this[ 'objectClassNames()' ]\n\t\t\t\n\t\t\tvar names : string[] = []\n\t\t\tvar current = this\n\t\t\t\n\t\t\twhile( current ) {\n\t\t\t\tvar name = current.constructor.toString()\n\t\t\t\tif( !name ) continue\n\t\t\t\t\n\t\t\t\tnames.push( name )\n\t\t\t\t\n\t\t\t\tcurrent = Object.getPrototypeOf( current )\n\t\t\t}\n\t\t\t\n\t\t\treturn this[ 'objectClassNames()' ] = names\n\t\t}\n\t\t\n\t\t/// Owner object.\n\t\tprivate 'objectOwner()' : Object\n\t\t\n\t\tobjectOwner( next? : Object ) {\n\t\t\tif( this[ 'objectOwner()' ] ) return this[ 'objectOwner()' ]\n\t\t\treturn this[ 'objectOwner()' ] = next\n\t\t}\n\t\t\n\t\t/// Field in owner where this object is stored.\n\t\tprivate 'objectField()' : string\n\t\t\n\t\tobjectField( next? : string ) {\n\t\t\tif( this[ 'objectField()' ] ) return this[ 'objectField()' ] || ''\n\t\t\treturn this[ 'objectField()' ] = next\n\t\t}\n\t\t\n\t\t/// JS-path to this object from global scope. Can not be redefined.\n\t\ttoString() {\n\t\t\tvar path = ''\n\t\t\t\n\t\t\tvar owner = this.objectOwner()\n\t\t\tif( owner ) path = owner.toString()\n\t\t\t\n\t\t\tvar field = this.objectField()\n\t\t\tif( field ) path += '.' + field\n\t\t\t\n\t\t\treturn path\n\t\t}\n\t\t\n\t\t/// Helper to override fields in fluent style.\n\t\tsetup( script : ( obj : this )=> void ) : this {\n\t\t\tscript( this )\n\t\t\treturn this\n\t\t}\n\t\t\n\t\t'destroyed()' = false\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next === void 0 ) return this[ 'destroyed()' ]\n\t\t\tthis[ 'destroyed()' ] = next\n\t\t\tthis.log( [ '.destroyed()' , next ] )\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tlog( values : any[] ) {\n\t\t\tif( $mol_log.filter() == null ) return\n\t\t\t$mol_log( this.toString() , values )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport declare class $mol_set< Value > {\n\t\tsize : number\n\t\t\n\t\tadd( key : Value ) : this\n\t\t\n\t\tdelete( key : Value ) : void\n\t\t\n\t\thas( key : Value ) : boolean\n\t\t\n\t\tclear() : void\n\t\t\n\t\tkeys() : Value[]\n\t\t\n\t\tvalues() : Value[]\n\t\t\n\t\tentries() : [ Value , Value ][]\n\t\t\n\t\tforEach( handler : ( key : Value , value : Value ) => void ) : void\n\t}\n\t\n\texport class $mol_set_shim< Value > implements $mol_set< Value > {\n\t\t\n\t\t_index : { [ index : string ] : Value[] } = {}\n\t\tsize = 0\n\t\t\n\t\tadd( value : Value ) {\n\t\t\tvar key = String( value )\n\t\t\t\n\t\t\tvar list = this._index[ key ]\n\t\t\tif( list ) {\n\t\t\t\tif( list.indexOf( value ) !== -1 ) return this\n\t\t\t\tlist.push( value )\n\t\t\t} else {\n\t\t\t\tlist = this._index[ key ] = [ value ]\n\t\t\t}\n\t\t\t\n\t\t\t++this.size\n\t\t\t\n\t\t\treturn this\n\t\t}\n\t\t\n\t\thas( value : Value ) {\n\t\t\tvar key = String( value )\n\t\t\t\n\t\t\tvar list = this._index[ key ]\n\t\t\tif( !list ) return false\n\t\t\t\n\t\t\treturn list.indexOf( value ) !== -1\n\t\t}\n\t\t\n\t\tdelete( value : Value ) {\n\t\t\tvar key = String( value )\n\t\t\t\n\t\t\tvar list = this._index[ key ]\n\t\t\tif( !list ) return\n\t\t\t\n\t\t\tvar index = list.indexOf( value )\n\t\t\tif( index === -1 ) return\n\t\t\t\n\t\t\tlist.splice( index , 1 )\n\t\t\t--this.size\n\t\t}\n\t\t\n\t\tforEach( handle : ( val : Value , key : Value )=> void ) {\n\t\t\tfor( var key in this._index ) {\n\t\t\t\tif( !this._index.hasOwnProperty( key ) ) continue\n\t\t\t\tthis._index[ key ].forEach( ( val , index ) => handle( val , val ) )\n\t\t\t}\n\t\t}\n\t\t\n\t\tkeys() {\n\t\t\tvar keys : Value[] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tkeys.push( key )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn keys\n\t\t}\n\t\t\n\t\tvalues() {\n\t\t\tvar values : Value[] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tvalues.push( val )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn values\n\t\t}\n\t\t\n\t\tentries() {\n\t\t\tvar entries : [ Value , Value ][] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tentries.push( [ val , key ] )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn entries\n\t\t}\n\t\t\n\t\tclear() {\n\t\t\tthis._index = {}\n\t\t\tthis.size = 0\n\t\t}\n\t\t\n\t}\n\t\n}\n",null,"namespace $ {\n\t\n\texport class $mol_defer extends $mol_object {\n\t\t\n\t\tconstructor( public run : ()=> void ) {\n\t\t\tsuper()\n\t\t\t$mol_defer.add( this )\n\t\t}\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next ) $mol_defer.drop( this )\n\t\t\treturn super.destroyed( next )\n\t\t}\n\t\t\n\t\tstatic all : $mol_defer[] = []\n\t\tstatic timer = 0\n\t\t\n\t\tstatic scheduleNative : ( handler : ()=> void ) => number = ( typeof requestAnimationFrame == 'function' )\n\t\t\t? handler => requestAnimationFrame( handler )\n\t\t\t: handler => setTimeout( handler , 16 )\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.timer ) return\n\t\t\t\n\t\t\tthis.timer = this.scheduleNative(\n\t\t\t\t()=> {\n\t\t\t\t\tthis.timer = 0\n\t\t\t\t\tthis.run()\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t\t\n\t\tstatic unschedule() {\n\t\t\tif( !this.timer ) return\n\t\t\t\n\t\t\tcancelAnimationFrame( this.timer )\n\t\t\tthis.timer = 0\n\t\t}\n\t\t\n\t\tstatic add( defer : $mol_defer ) {\n\t\t\tthis.all.push( defer )\n\t\t\tthis.schedule()\n\t\t}\n\t\t\n\t\tstatic drop( defer : $mol_defer ) {\n\t\t\tvar index = this.all.indexOf( defer )\n\t\t\tif( index >= 0 ) this.all.splice( index , 1 )\n\t\t}\n\t\t\n\t\tstatic run() {\n\t\t\tif( this.all.length === 0 ) return\n\t\t\tthis.schedule()\n\t\t\tfor( var defer : $mol_defer ; defer = this.all.pop() ; ) defer.run()\n\t\t\t//this.unschedule()\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\texport declare class $mol_dict< Key , Value > {\n\t\tsize : number\n\t\t\n\t\tget( key : Key ) : Value\n\t\t\n\t\tset( key : Key , value : Value ) : this\n\t\t\n\t\tdelete( key : Key ) : void\n\t\t\n\t\thas( key : Key ) : boolean\n\t\t\n\t\tclear() : void\n\t\t\n\t\tkeys() : Key[]\n\t\t\n\t\tvalues() : Value[]\n\t\t\n\t\tentries() : [ Key , Value ][]\n\t\t\n\t\tforEach( handler : ( value : Value , key : Key ) => void ) : void\n\t}\n\t\n\texport class $mol_dict_shim< Key , Value > implements $mol_dict< Key , Value > {\n\t\t\n\t\t_keys : { [ index : string ] : Key[] } = {}\n\t\t_values : { [ index : string ] : Value[] } = {}\n\t\tsize = 0\n\t\t\n\t\tset( key : Key , value : Value ) {\n\t\t\tvar keyStr = String( key )\n\t\t\t\n\t\t\tvar keys = this._keys[ keyStr ]\n\t\t\tif( keys ) {\n\t\t\t\tvar index = keys.indexOf( key )\n\t\t\t\tif( index === -1 ) {\n\t\t\t\t\tindex = keys.length\n\t\t\t\t\tkeys.push( key )\n\t\t\t\t\t++this.size\n\t\t\t\t}\n\t\t\t\tthis._values[ keyStr ][ index ] = value\n\t\t\t} else {\n\t\t\t\tthis._keys[ keyStr ] = [ key ]\n\t\t\t\tthis._values[ keyStr ] = [ value ]\n\t\t\t\t++this.size\n\t\t\t}\n\t\t\t\n\t\t\treturn this\n\t\t}\n\t\t\n\t\tget( key : Key ) {\n\t\t\tvar keyStr = String( key )\n\t\t\t\n\t\t\tvar list = this._keys[ keyStr ]\n\t\t\tif( !list ) return void 0\n\t\t\t\n\t\t\tvar index = list.indexOf( key )\n\t\t\tif( index === -1 ) return void 0\n\t\t\t\n\t\t\treturn this._values[ keyStr ][ index ]\n\t\t}\n\t\t\n\t\thas( key : Key ) {\n\t\t\tvar keyStr = String( key )\n\t\t\t\n\t\t\tvar list = this._keys[ keyStr ]\n\t\t\tif( !list ) return false\n\t\t\t\n\t\t\treturn list.indexOf( key ) !== -1\n\t\t}\n\t\t\n\t\tdelete( key : Key ) {\n\t\t\tvar keyStr = String( key )\n\t\t\t\n\t\t\tvar keys = this._keys[ keyStr ]\n\t\t\tif( !keys ) return\n\t\t\t\n\t\t\tvar index = keys.indexOf( key )\n\t\t\tif( index === -1 ) return\n\t\t\t\n\t\t\tkeys.splice( index , 1 )\n\t\t\tthis._values[ keyStr ].splice( index , 1 )\n\t\t\t\n\t\t\t--this.size\n\t\t}\n\t\t\n\t\tforEach( handle : ( val : Value , key : Key )=> void ) {\n\t\t\tfor( var keyStr in this._keys ) {\n\t\t\t\tif( !this._keys.hasOwnProperty( keyStr ) ) continue\n\t\t\t\tvar values = this._values[ keyStr ]\n\t\t\t\tthis._keys[ keyStr ].forEach(\n\t\t\t\t\t( key , index ) => {\n\t\t\t\t\t\thandle( values[ index ] , key )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\t\n\t\tkeys() {\n\t\t\tvar keys : Key[] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tkeys.push( key )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn keys\n\t\t}\n\t\t\n\t\tvalues() {\n\t\t\tvar values : Value[] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tvalues.push( val )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn values\n\t\t}\n\t\t\n\t\tentries() {\n\t\t\tvar entries : [ Key , Value ][] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tentries.push( [ key , val ] )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn entries\n\t\t}\n\t\t\n\t\tclear() {\n\t\t\tthis._keys = {}\n\t\t\tthis._values = {}\n\t\t\tthis.size = 0\n\t\t}\n\t\t\n\t}\n\t\n}\n",null,"namespace $ {\n\t\n\t/// Global storage of temporary state\n\texport var $mol_state_stack = new $mol_dict< string , any >()\n\t\n}\n","declare var Proxy : any\n\nnamespace $ {\n\t\n\texport enum $mol_atom_status {\n\t\tobsolete = 'obsolete' as any ,\n\t\tchecking = 'checking' as any ,\n\t\tpulling = 'pulling' as any ,\n\t\tactual = 'actual' as any ,\n\t}\n\t\n\texport class $mol_atom< Value > extends $mol_object {\n\t\t\n\t\tmasters : $mol_set< $mol_atom > = null\n\t\tslaves : $mol_set< $mol_atom > = null\n\t\t\n\t\tstatus = $mol_atom_status.obsolete\n\t\tautoFresh = true\n\t\t\n\t\thandler : ( next? : Value|Error , force? : $mol_atom_force )=> Value\n\t\thost : { [ key : string ] : any }\n\t\tfield : string\n\t\t\n\t\tconstructor(\n\t\t\thost : any ,\n\t\t\thandler : ( next? : Value|Error , force? : $mol_atom_force )=> Value ,\n\t\t\tfield = 'value()'\n\t\t) {\n\t\t\tsuper()\n\t\t\t\n\t\t\tthis.handler = handler\n\t\t\tthis.host = Object( host )\n\t\t\tthis.field = field || 'value()'\n\t\t}\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next ) {\n\t\t\t\tthis.unlink()\n\t\t\t\t\n\t\t\t\tconst host = this.host\n\t\t\t\tconst value = host[ this.field ]\n\t\t\t\tif( value instanceof $mol_object ) {\n\t\t\t\t\tif( ( value.objectOwner() === host ) && ( value.objectField() === this.field ) ) {\n\t\t\t\t\t\tvalue.destroyed( true );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\thost[ this.field ] = void null\n\t\t\t\thost[ this.field + '@' ] = void null\n\t\t\t\t\n\t\t\t\tthis[ 'destroyed()' ] = true\n\t\t\t\tthis.log( [ '.destroyed()' , true , 'atom' ] )\n\t\t\t\tthis.status = $mol_atom_status.obsolete\n\t\t\t\t\n\t\t\t\treturn true\n\t\t\t} else {\n\t\t\t\treturn this[ 'destroyed()' ]\n\t\t\t}\n\t\t}\n\t\t\n\t\tunlink() {\n\t\t\tthis.disobeyAll()\n\t\t\tthis.checkSlaves()\n\t\t}\n\t\t\n\t\ttoString() {\n\t\t\treturn `${ this.host }.${ this.field }`\n\t\t}\n\t\t\n\t\tget( force? : $mol_atom_force ) {\n\t\t\tif( this.status === $mol_atom_status.pulling ) {\n\t\t\t\tthrow new Error( `Cyclic atom dependency of ${ this }` )\n\t\t\t}\n\t\t\t\n\t\t\tthis.actualize( force )\n\t\t\t\n\t\t\tconst slave = $mol_atom.stack[0]\n\t\t\tif( slave ) this.lead( slave )\n\t\t\tif( slave ) slave.obey( this )\n\t\t\t\n\t\t\tconst value : Value = this.host[ this.field ]\n\t\t\t\n\t\t\tif( value instanceof Error ) {\n\t\t\t\tif( typeof Proxy !== 'function' ) throw value\n\t\t\t\t//if(!( value instanceof $mol_atom_wait )) throw value\n\t\t\t}\n\t\t\t\n\t\t\treturn value\n\t\t}\n\t\t\n\t\tactualize( force? : $mol_atom_force ) {\n\t\t\t\n\t\t\t//this.log([ 'actualize' ])\n\t\t\t\n\t\t\tif( !force && this.status === $mol_atom_status.actual ) return\n\t\t\t\n\t\t\tconst slave = $mol_atom.stack[0]\n\t\t\t$mol_atom.stack[0] = this\n\t\t\t\n\t\t\tif( !force && this.status === $mol_atom_status.checking ) {\n\t\t\t\t\n\t\t\t\tthis.masters.forEach(\n\t\t\t\t\tmaster => {\n\t\t\t\t\t\tif( this.status !== $mol_atom_status.checking ) return\n\t\t\t\t\t\tmaster.actualize()\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tif( this.status === $mol_atom_status.checking ) {\n\t\t\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif( force || this.status !== $mol_atom_status.actual ) {\n\t\t\t\t\n\t\t\t\tconst oldMasters = this.masters\n\t\t\t\tthis.masters = null\n\t\t\t\t\n\t\t\t\tif( oldMasters ) oldMasters.forEach(\n\t\t\t\t\tmaster => {\n\t\t\t\t\t\tmaster.dislead( this )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tthis.status = $mol_atom_status.pulling\n\t\t\t\tconst next = this.pull( force )\n\t\t\t\t\n\t\t\t\tthis.push( next )\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t$mol_atom.stack[0] = slave\n\t\t}\n\t\t\n\t\tpull( force? : $mol_atom_force ) {\n\t\t\ttry {\n\t\t\t\treturn this.handler( this._next , force )\n\t\t\t} catch( error ) {\n\t\t\t\tif( error[ '$mol_atom_catched' ] ) return error\n\t\t\t\tif( error instanceof $mol_atom_wait ) return error\n\t\t\t\t\n\t\t\t\tconsole.error( error.stack || error )\n\t\t\t\t\n\t\t\t\tif(!( error instanceof Error )) {\n\t\t\t\t\terror = new Error( error.stack || error )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\terror['$mol_atom_catched'] = true\n\t\t\t\treturn error\n\t\t\t}\n\t\t}\n\t\t\n\t\t_next : Value\n\t\t\n\t\tset( next : Value ) : Value {\n\t\t\tthis._next = next\n\t\t\tthis.obsolete()\n\t\t\treturn this.get()\n\t\t}\n\t\t\n\t\tpush( next : Value|Error ) {\n\t\t\tconst host = this.host\n\t\t\tconst prev = host[ this.field ]\n\t\t\tif( next === void null ) next = prev\n\t\t\tcomparing: if( ( next !== prev ) && ( next instanceof Array ) && ( prev instanceof Array ) && ( next.length === prev.length ) ) {\n\t\t\t\tfor( let i = 0 ; i < next[ 'length' ] ; ++i ) {\n\t\t\t\t\tif( next[ i ] !== prev[ i ] ) break comparing\n\t\t\t\t}\n\t\t\t\tnext = prev\n\t\t\t}\n\t\t\tif( prev !== next ) {\n\t\t\t\tif( next instanceof $mol_object ) {\n\t\t\t\t\tnext[ 'objectField' ]( this.field ) // FIXME: type checking\n\t\t\t\t\tnext[ 'objectOwner' ]( host ) // FIXME: type checking\n\t\t\t\t}\n\t\t\t\tif(( typeof Proxy === 'function' )&&( next instanceof Error )) {\n\t\t\t\t\tnext = new Proxy( next , {\n\t\t\t\t\t\tget( target : Error ) {\n\t\t\t\t\t\t\tthrow target.valueOf()\n\t\t\t\t\t\t} ,\n\t\t\t\t\t\townKeys( target : Error ) {\n\t\t\t\t\t\t\tthrow target.valueOf()\n\t\t\t\t\t\t} ,\n\t\t\t\t\t} )\n\t\t\t\t}\n\t\t\t\thost[ this.field ] = next\n\t\t\t\tthis.log( [ 'push' , next , prev ] )\n\t\t\t\t\n\t\t\t\tthis.obsoleteSlaves()\n\t\t\t}\n\t\t\tthis.status = $mol_atom_status.actual\n\t\t\tthis._next = void null\n\t\t\treturn next as Value\n\t\t}\n\t\t\n\t\tobsoleteSlaves() {\n\t\t\tif( !this.slaves ) return\n\t\t\t\n\t\t\tthis.slaves.forEach( slave => slave.obsolete() )\n\t\t}\n\t\t\n\t\tcheckSlaves() {\n\t\t\tif( this.slaves ) {\n\t\t\t\tthis.slaves.forEach( slave => slave.check() )\n\t\t\t} else {\n\t\t\t\tif( this.autoFresh ) $mol_atom.actualize( this )\n\t\t\t}\n\t\t}\n\t\t\n\t\tcheck() {\n\t\t\t//if( this.status === $mol_atom_status.pulling ) {\n\t\t\t//\tthrow new Error( `May be obsolated while pulling ${ this }` )\n\t\t\t//}\n\t\t\t\n\t\t\tif( this.status === $mol_atom_status.actual ) {\n\t\t\t\t//this.log([ 'checking' ])\n\t\t\t\tthis.status = $mol_atom_status.checking\n\t\t\t\t\n\t\t\t\tthis.checkSlaves()\n\t\t\t}\n\t\t}\n\t\t\n\t\tobsolete() : Value {\n\t\t\tif( this.status === $mol_atom_status.obsolete ) return\n\t\t\t\n\t\t\t//if( this.status === $mol_atom_status.pulling ) {\n\t\t\t//\tthrow new Error( `Obsolated while pulling ${ this }` )\n\t\t\t//} \n\t\t\t\n\t\t\tthis.log( [ 'obsolete' ] )\n\t\t\t\n\t\t\tthis.status = $mol_atom_status.obsolete\n\t\t\t\n\t\t\tthis.checkSlaves()\n\t\t\t\n\t\t\treturn void null\n\t\t}\n\t\t\n\t\tlead( slave : $mol_atom ) {\n\t\t\tif( !this.slaves ) {\n\t\t\t\tthis.slaves = new $mol_set<$mol_atom>()\n\t\t\t\t$mol_atom.unreap( this )\n\t\t\t}\n\t\t\tthis.slaves.add( slave )\n\t\t}\n\t\t\n\t\tdislead( slave : $mol_atom ) {\n\t\t\tif( !this.slaves ) return\n\t\t\t\n\t\t\tif( this.slaves.size === 1 ) {\n\t\t\t\tthis.slaves = null\n\t\t\t\t$mol_atom.reap( this )\n\t\t\t} else {\n\t\t\t\tthis.slaves.delete( slave )\n\t\t\t}\n\t\t}\n\t\t\n\t\tobey( master : $mol_atom ) {\n\t\t\tif( !this.masters ) this.masters = new $mol_set< $mol_atom >()\n\t\t\tthis.masters.add( master )\n\t\t}\n\t\t\n\t\tdisobey( master : $mol_atom ) {\n\t\t\tif( !this.masters ) return\n\t\t\tthis.masters.delete( master )\n\t\t}\n\t\t\n\t\tdisobeyAll() {\n\t\t\tif( !this.masters ) return\n\t\t\t\n\t\t\tthis.masters.forEach( master => master.dislead( this ) )\n\t\t\t\n\t\t\tthis.masters = null\n\t\t}\n\t\t\n\t\tvalue( next? : Value , force? : $mol_atom_force ) {\n\t\t\tif( next === void null ) {\n\t\t\t\treturn this.get( force )\n\t\t\t} else {\n\t\t\t\tif( force ) {\n\t\t\t\t\treturn this.push( next )\n\t\t\t\t} else {\n\t\t\t\t\treturn this.set( next )\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic stack = [ null ] as $mol_atom[]\n\t\tstatic updating : $mol_atom[] = []\n\t\tstatic reaping = new $mol_set< $mol_atom >()\n\t\tstatic scheduled = false\n\t\t\n\t\tstatic actualize( atom : $mol_atom ) {\n\t\t\t$mol_atom.updating.push( atom )\n\t\t\t$mol_atom.schedule()\n\t\t}\n\t\t\n\t\tstatic reap( atom : $mol_atom ) {\n\t\t\t$mol_atom.reaping.add( atom )\n\t\t\t$mol_atom.schedule()\n\t\t}\n\t\t\n\t\tstatic unreap( atom : $mol_atom ) {\n\t\t\t$mol_atom.reaping.delete( atom )\n\t\t}\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.scheduled ) return\n\t\t\t\n\t\t\tnew $mol_defer(\n\t\t\t\t() => {\n\t\t\t\t\tif( !this.scheduled ) return\n\t\t\t\t\tthis.scheduled = false\n\t\t\t\t\tthis.sync()\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\tthis.scheduled = true\n\t\t}\n\t\t\n\t\tstatic sync() {\n\t\t\t$mol_log( '$mol_atom.sync' , [] )\n\t\t\tthis.schedule()\n\t\t\t\n\t\t\twhile( this.updating.length ) {\n\t\t\t\tconst atom = this.updating.shift()\n\t\t\t\tif( this.reaping.has( atom ) ) continue\n\t\t\t\tif( !atom.destroyed() ) atom.get()\n\t\t\t}\n\t\t\t\n\t\t\twhile( this.reaping.size ) {\n\t\t\t\tthis.reaping.forEach(\n\t\t\t\t\tatom => {\n\t\t\t\t\t\tthis.reaping.delete( atom )\n\t\t\t\t\t\tif( !atom.slaves ) atom.destroyed( true )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\t\n\t\t\tthis.scheduled = false\n\t\t}\n\t\t\n\t}\n\t\n\t$mol_state_stack.set( '$mol_atom.stack' , $mol_atom.stack )\n\t\n\texport class $mol_atom_wait extends Error {\n\t\tname = '$mol_atom_wait'\n\t\t\n\t\tconstructor( public message = 'Wait...' ) {\n\t\t\tsuper( message )\n\t\t\tconst error : any = new Error( message )\n\t\t\terror.name = this.name\n\t\t\terror['__proto__'] = $mol_atom_wait.prototype\n\t\t\treturn error\n\t\t}\n\t}\n\t\n\texport class $mol_atom_force extends Object {\n\t\t$mol_atom_force : boolean\n\t\tstatic $mol_atom_force : boolean\n\t}\n\t\n\texport function $mol_atom_task< Value >(\n\t\thost : any ,\n\t\thandler : ()=> Value ,\n\t) {\n\t\tconst atom = new $mol_atom(\n\t\t\thost ,\n\t\t\t() => {\n\t\t\t\ttry {\n\t\t\t\t\thandler()\n\t\t\t\t} catch( error ) {\n\t\t\t\t\tif(!( error instanceof $mol_atom_wait )) atom.destroyed( true )\n\t\t\t\t\tthrow error\n\t\t\t\t}\n\t\t\t\tatom.destroyed( true )\n\t\t\t} ,\n\t\t)\n\t\t\n\t\t$mol_atom.actualize( atom )\n\t\t\n\t\treturn atom\n\t}\n\t\n}\n","namespace $ {\n\t\n\t/// Creates the decorator for caching result value by json-key passed as first argument.\n\t/// Method must be a polymorphic property (getter/setter/getter+setter).\n\texport function $mol_mem< Host , Value >(\n\t\tconfig? : {\n\t\t\tlazy? : boolean\n\t\t}\n\t) {\n\t\t\n\t\treturn function(\n\t\t\tobj : Host ,\n\t\t\tname : string ,\n\t\t\tdescr : TypedPropertyDescriptor< ( next? : Value , force? : $mol_atom_force )=> Value >\n\t\t) {\n\t\t\tconst value = descr.value\n\t\t\t\n\t\t\tdescr.value = function( next? : Value , force? : $mol_atom_force ) {\n\t\t\t\tconst host : any = this\n\t\t\t\tconst field = name + \"()\"\n\t\t\t\tconst fieldA = field + '@'\n\t\t\t\t\n\t\t\t\tlet atom : $mol_atom = host[ fieldA ]\n\t\t\t\tif( !atom ) {\n\t\t\t\t\thost[ fieldA ] = atom = new $mol_atom(\n\t\t\t\t\t\thost ,\n\t\t\t\t\t\tvalue.bind( host ) as any , // FIXME: type checking\n\t\t\t\t\t\tfield ,\n\t\t\t\t\t)\n\t\t\t\t\tif( config ) atom.autoFresh = !config.lazy\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn atom.value( next , force )\n\t\t\t}\n\t\t\t\n\t\t\tvoid( (descr.value)[ 'value' ] = value )\n\t\t}\n\t\t\n\t}\n\t\n\texport function $mol_mem_key< Host , Key , Value >(\n\t\tconfig? : {\n\t\t\tlazy? : boolean\n\t\t}\n\t) {\n\t\t\n\t\treturn function(\n\t\t\tobj : Host ,\n\t\t\tname : string ,\n\t\t\tdescr : TypedPropertyDescriptor< ( key : Key , next? : Value , force? : $mol_atom_force )=> Value >\n\t\t) {\n\t\t\tconst value = descr.value\n\n\t\t\tdescr.value = function( key : Key , next? : Value , force? : $mol_atom_force ) {\n\t\t\t\tconst host : any = this\n\t\t\t\tconst field = name + \"(\" + JSON.stringify( key ) + \")\"\n\t\t\t\tconst fieldA = field + '@'\n\t\t\t\t\n\t\t\t\tlet atom : $mol_atom = host[ fieldA ]\n\t\t\t\tif( !atom ) {\n\t\t\t\t\thost[ fieldA ] = atom = new $mol_atom(\n\t\t\t\t\t\thost ,\n\t\t\t\t\t\tvalue.bind( host , key ) as any , // FIXME: type checking\n\t\t\t\t\t\tfield ,\n\t\t\t\t\t)\n\t\t\t\t\tif( config ) atom.autoFresh = !config.lazy\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn atom.value( next , force )\n\t\t\t}\n\t\t\t\n\t\t\tvoid( (descr.value)[ 'value' ] = value )\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\texport class $mol_window extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic size( next? : {\n\t\t\twidth : number\n\t\t\theight : number\n\t\t} ) {\n\t\t\treturn next || {\n\t\t\t\twidth : window.innerWidth ,\n\t\t\t\theight : window.innerHeight ,\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\twindow.addEventListener( 'resize' , ()=> {\n\t\t$mol_window.size( null )\n\t} )\n\t\n}\n","namespace $ {\n\t\n\texport var $mol_viewer_context = <$mol_viewer_context> {}\n\t\n\texport interface $mol_viewer_context {\n\t\t$mol_viewer_heightLimit() : number\n\t}\n\t\n\t$mol_viewer_context.$mol_viewer_heightLimit = () => $mol_window.size().height\n\n\t/// Reactive statefull lazy ViewModel \n\texport class $mol_viewer extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic root( id : number ) {\n\t\t\treturn new this\n\t\t}\n\t\t\n\t\ttitle() : string {\n\t\t\treturn this.Class().toString()\n\t\t}\n\t\t\n\t\tstatic statePrefix() {\n\t\t\treturn ''\n\t\t}\n\t\t\n\t\tstatePrefix() {\n\t\t\tconst owner = this.objectOwner()\n\t\t\treturn owner ? (owner).statePrefix() : ''\n\t\t}\n\t\t\n\t\tstateKey( postfix : string ) {\n\t\t\treturn this.statePrefix() + postfix\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tcontext( next? : $mol_viewer_context ) {\n\t\t\treturn next || $mol_viewer_context\n\t\t}\n\t\t\n\t\tcontextSub() {\n\t\t\treturn this.context()\n\t\t}\n\t\t\n\t\t/// Name of element that created when element not found in DOM\n\t\ttagName() { return 'div' }\n\t\t\n\t\t/// NameSpace of element that created when element not found in DOM\n\t\tnameSpace() { return 'http://www.w3.org/1999/xhtml' }\n\t\t\n\t\t/// Raw child views\n\t\tchilds() {\n\t\t\treturn > null\n\t\t}\n\t\t\n\t\t/// Visible child views with defined heightAvailable()\n\t\t/// Render all by default\n\t\tchildsVisible() {\n\t\t\tconst childs = this.childs()\n\t\t\tif( !childs ) return childs\n\t\t\t\n\t\t\tconst context = this.contextSub()\n\t\t\tchilds.forEach( child => {\n\t\t\t\tif( child instanceof $mol_viewer ) {\n\t\t\t\t\tchild.context( context )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn childs\n\t\t}\n\t\t\n\t\t/// Minimal height that used for lazy rendering\n\t\theightMinimal() {\n\t\t\treturn 0\n\t\t}\n\t\t\n\t\tprivate 'DOMNode()' : Element\n\t\t\n\t\tDOMNode( next? : Element ) {\n\t\t\tconst path = this.toString()\n\t\t\t\n\t\t\tlet next2 = next\n\t\t\tif( !next2 ) {\n\t\t\t\tnext2 = this[ 'DOMNode()' ]\n\t\t\t\tif( next2 ) return next2\n\t\t\t\t\n\t\t\t\tnext2 = document.getElementById( path )\n\t\t\t\tif( next2 ) {\n\t\t\t\t\tif( (next2)[ '$mol_viewer' ] ) {\n\t\t\t\t\t\treturn this[ 'DOMNode()' ] = next2\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tnext2 = document.createElementNS( this.nameSpace() , this.tagName() )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tnext2.id = path\n\t\t\tvoid( (next2)[ '$mol_viewer' ] = this )\n\t\t\tthis[ 'DOMNode()' ] = next2\n\t\t\t\n\t\t\t/// Set BEM-like element-attributes with inheritance support\n\t\t\tconst ownerProto = this.objectOwner() && Object.getPrototypeOf( this.objectOwner() )\n\t\t\tif( ownerProto && ownerProto[ 'objectClassNames' ] ) {\n\t\t\t\tconst suffix = '_' + this.objectField().replace( /\\(.*/ , '' )\n\t\t\t\tfor( let className of ownerProto[ 'objectClassNames' ]() ) {\n\t\t\t\t\tconst attrName = className.replace( /\\$/g , '' ) + suffix\n\t\t\t\t\tnext2.setAttribute( attrName , '' )\n\t\t\t\t\tif( className === '$mol_viewer' ) break\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/// Set BEM-like block-attributes with inheritance support\n\t\t\tconst proto = Object.getPrototypeOf( this )\n\t\t\tfor( let className of proto[ 'objectClassNames' ]() ) {\n\t\t\t\tnext2.setAttribute( className.replace( /\\$/g , '' ) , '' )\n\t\t\t\tif( className === '$mol_viewer' ) break\n\t\t\t}\n\t\t\t\n\t\t\t/// Bind properties to events\n\t\t\tconst events = this.event()\n\t\t\tfor( let name in events ) {\n\t\t\t\tlet handle = events[ name ]\n\t\t\t\tnext2.addEventListener( name , event => {\n\t\t\t\t\t$mol_atom_task( `${ this }.event()['${ name }']` , ()=> {\n\t\t\t\t\t\thandle( event )\n\t\t\t\t\t} ).get()\n\t\t\t\t} )\n\t\t\t}\n\t\t\t\n\t\t\treturn next2\n\t\t}\n\t\t\n\t\tstatic renderChilds( node : Element , childs : ($mol_viewer|Node|string|number|boolean)[] ) {\n\t\t\tif( childs == null ) return\n\t\t\t\t\n\t\t\tlet nextNode = node.firstChild\n\t\t\tfor( let view of childs ) {\n\t\t\t\t\n\t\t\t\tif( view == null ) {\n\t\t\t\t} else if( typeof view === 'object' ) {\n\t\t\t\t\tconst existsNode = ( ( view instanceof $mol_viewer ) ? view.DOMNode() : view.valueOf() as Node )\n\t\t\t\t\twhile( true ) {\n\t\t\t\t\t\tif( !nextNode ) {\n\t\t\t\t\t\t\tnode.appendChild( existsNode )\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif( nextNode == existsNode ) {\n\t\t\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t//if( childViews.indexOf( nextNode ) === -1 ) {\n\t\t\t\t\t\t\t//\tvar nn = nextNode.nextSibling\n\t\t\t\t\t\t\t//\tprev.removeChild( nextNode )\n\t\t\t\t\t\t\t//\tnextNode = nn\n\t\t\t\t\t\t\t//} else {\n\t\t\t\t\t\t\tnode.insertBefore( existsNode , nextNode )\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t//}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif( nextNode && nextNode.nodeName === '#text' ) {\n\t\t\t\t\t\tnextNode.nodeValue = String( view )\n\t\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst textNode = document.createTextNode( String( view ) )\n\t\t\t\t\t\tnode.insertBefore( textNode , nextNode )\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\twhile( nextNode ) {\n\t\t\t\tconst currNode = nextNode\n\t\t\t\tnextNode = currNode.nextSibling\n\t\t\t\tnode.removeChild( currNode )\n\t\t\t}\n\t\t\t\n\t\t\tfor( let view of childs ) {\n\t\t\t\tif( view instanceof $mol_viewer ) view.DOMTree()\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic renderAttrs( node : Element , attrs : { [ key : string ] : ()=> string|number|boolean } ) {\n\t\t\tfor( let name in attrs ) {\n\t\t\t\tlet val = attrs[ name ]()\n\t\t\t\tif( ( val == null ) || ( val === false ) ) {\n\t\t\t\t\tnode.removeAttribute( name )\n\t\t\t\t} else if( val === true ) {\n\t\t\t\t\tnode.setAttribute( name , 'true' )\n\t\t\t\t} else {\n\t\t\t\t\tnode.setAttribute( name , String( val ) )\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic renderFields( node : Element , fields : { [ key : string ] : ( next? : any )=> any } ) {\n\t\t\tfor( let path in fields ) {\n\t\t\t\tconst names = path.split( '.' )\n\t\t\t\tlet obj : any = node\n\t\t\t\tfor( let i = 0 ; i < names.length - 1 ; ++i ) {\n\t\t\t\t\tif( names[ i ] ) obj = obj[ names[ i ] ]\n\t\t\t\t}\n\t\t\t\tconst field = names[ names.length - 1 ]\n\t\t\t\tconst val = fields[ path ]()\n\t\t\t\tif( obj[ field ] !== val ) {\n\t\t\t\t\tobj[ field ] = val\n\t\t\t\t\tif( obj[ field ] !== val ) {\n\t\t\t\t\t\tnew $mol_defer( ()=> fields[ path ]( obj[ field ] ) )\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tDOMTree() {\n\t\t\tlet node = this.DOMNode()\n\t\t\t\n\t\t\ttry {\n\t\t\t\t$mol_viewer.renderChilds( node , this.childsVisible() )\n\t\t\t\t$mol_viewer.renderAttrs( node , this.attr() )\n\t\t\t\t$mol_viewer.renderFields( node , this.field() )\n\t\t\t\t\n\t\t\t\treturn node\n\t\t\t} catch( error ) {\n\t\t\t\tif( !error['$mol_viewer_catched'] ) {\n\t\t\t\t\tnode.setAttribute( 'mol_viewer_error' , error.name )\n\t\t\t\t\terror['$mol_viewer_catched'] = true\n\t\t\t\t}\n\t\t\t\tthrow error\n\t\t\t}\n\t\t}\n\t\t\n\t\tattr() : { [ key : string ] : ()=> string|number|boolean } { return {\n\t\t\t'mol_viewer_error' : ()=> false\n\t\t} }\n\t\t\n\t\tfield() : { [ key : string ] : ( next? : any )=> any } { return {\n\t\t\t//'style.minHeight' : ()=> this.heightMinimal() + 'px'\n\t\t} }\n\t\t\n\t\tevent() : { [ key : string ] : ( event : Event )=> void } { return {} }\n\t\t\n\t\tlocalizationContexts() {\n\t\t\treturn Object.getPrototypeOf( this ).objectClassNames()\n\t\t}\n\t\t\n\t}\n\t\n}\n","interface Window {\n\tcordova : any\n}\n\nnamespace $ {\n\n\t/// Autoattach view roots to loaded DOM.\n\tdocument.addEventListener( window.cordova ? 'deviceready' : 'DOMContentLoaded' , event => {\n\t\t\t\n\t\tconst nodes = document.querySelectorAll( '[mol_viewer_root]' )\n\t\t\n\t\tfor( let i = nodes.length - 1 ; i >= 0 ; --i ) {\n\t\t\tlet view = ($)[ nodes.item( i ).getAttribute( 'mol_viewer_root' ) ].root( i )\n\t\t\tview.DOMNode( nodes.item( i ) )\n\t\t\tlet win = new $mol_atom( `$mol_viewer.root(${ i })` , ()=> {\n\t\t\t\tview.DOMTree()\n\t\t\t\tdocument.title = view.title()\n\t\t\t\treturn null\n\t\t\t} )\n\t\t\tnew $mol_defer( ()=> win.get() )\n\t\t}\n\t\t\n\t\t$mol_defer.run()\n\t} )\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_merge_dict< Target , Source >( target : Target , source : Source ) : Target & Source {\n\t\tlet result = {}\n\t\tfor( let key in target ) result[ key ] = ( target )[ key ]\n\t\tfor( let key in source ) result[ key ] = ( source )[ key ]\n\t\treturn result\n\t}\n\t\n}\n","namespace $ { export class $mol_stringer extends $mol_viewer {\n\n\t/// tagName \\input\n\ttagName() {\n\t\treturn \"input\"\n\t}\n\n\t/// enabled true\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// type \\text\n\ttype() {\n\t\treturn \"text\"\n\t}\n\n\t/// attr * \n\t/// \tplaceholder < hint \n\t/// \ttype < type\n\tattr() {\n\t\treturn $mol_merge_dict( super.attr() , {\n\t\t\t\"placeholder\" : ()=> this.hint() ,\n\t\t\t\"type\" : ()=> this.type() ,\n\t\t} )\n\t}\n\n\t/// disabled false\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/// value \\\n\t@ $mol_mem()\n\tvalue( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : \"\"\n\t}\n\n\t/// valueChanged > value\n\tvalueChanged( next? : any ) {\n\t\treturn this.value( next )\n\t}\n\n\t/// field * \n\t/// \tdisabled < disabled \n\t/// \tvalue < valueChanged\n\tfield() {\n\t\treturn $mol_merge_dict( super.field() , {\n\t\t\t\"disabled\" : ()=> this.disabled() ,\n\t\t\t\"value\" : ()=> this.valueChanged() ,\n\t\t} )\n\t}\n\n\t/// eventChange null\n\t@ $mol_mem()\n\teventChange( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : null\n\t}\n\n\t/// event * input > eventChange\n\tevent() {\n\t\treturn $mol_merge_dict( super.event() , {\n\t\t\t\"input\" : ( next? : any )=> this.eventChange( next ) ,\n\t\t} )\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_stringer extends $.$mol_stringer {\n\t\t\n\t\teventChange( next? : Event ) {\n\t\t\tthis.value( ( this.DOMNode() as HTMLInputElement ).value.trim() )\n\t\t}\n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t}\n}\n","namespace $ { export class $mol_clicker extends $mol_viewer {\n\n\t/// tagName \\button\n\ttagName() {\n\t\treturn \"button\"\n\t}\n\n\t/// enabled true\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/// eventClick null\n\t@ $mol_mem()\n\teventClick( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : null\n\t}\n\n\t/// eventActivate > eventClick\n\t@ $mol_mem()\n\teventActivate( next? : any ) {\n\t\treturn this.eventClick( next )\n\t}\n\n\t/// event * click > eventActivate\n\tevent() {\n\t\treturn $mol_merge_dict( super.event() , {\n\t\t\t\"click\" : ( next? : any )=> this.eventActivate( next ) ,\n\t\t} )\n\t}\n\n\t/// disabled false\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/// attr * \n\t/// \tdisabled < disabled \n\t/// \ttabindex \\0\n\tattr() {\n\t\treturn $mol_merge_dict( super.attr() , {\n\t\t\t\"disabled\" : ()=> this.disabled() ,\n\t\t\t\"tabindex\" : ()=> \"0\" ,\n\t\t} )\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_clicker extends $.$mol_clicker {\n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t\t\n\t\teventActivate( next : Event ) {\n\t\t\tif( !this.enabled() ) return\n\t\t\tthis.eventClick( next )\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { export class $mol_clicker_button extends $mol_clicker {\n\n} }\n\nnamespace $ { export class $mol_clicker_major extends $mol_clicker_button {\n\n} }\n\nnamespace $ { export class $mol_clicker_minor extends $mol_clicker_button {\n\n} }\n\nnamespace $ { export class $mol_clicker_danger extends $mol_clicker_button {\n\n} }\n\n","namespace $ {\n\t\n\texport class $mol_state_arg< Value > extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic href( next? : string ) {\n\t\t\tif( next ) history.replaceState( history.state , document.title , `${ next }` )\n\t\t\treturn window.location.search + window.location.hash\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic dict( next? : { [ key : string ] : string } ) {\n\t\t\tvar href = this.href( next && this.make( next ) )\n\t\t\tvar chunks = href.split( /[\\/\\?#!&;]/g )\n\t\t\t\n\t\t\tvar params : { [ key : string ] : string } = {}\n\t\t\tchunks.forEach(\n\t\t\t\tchunk => {\n\t\t\t\t\tif( !chunk ) return\n\t\t\t\t\tvar vals = chunk.split( '=' ).map( decodeURIComponent )\n\t\t\t\t\tparams[ vals.shift() ] = vals.join( '=' )\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\treturn params\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic value( key : string , next? : string ) {\n\t\t\tconst nextDict = ( next === void 0 ) ? void 0 : $mol_merge_dict( this.dict() , { [ key ] : next } ) \n\t\t\treturn this.dict( nextDict )[ key ] || null\n\t\t}\n\t\t\n\t\tstatic link( next : { [ key : string ] : string } ) {\n\t\t\treturn this.make( $mol_merge_dict( this.dict() , next ) )\n\t\t}\n\t\t\n\t\tstatic make( next : { [ key : string ] : string } ) {\n\t\t\tconst chunks : string[] = []\n\t\t\tfor( let key in next ) {\n\t\t\t\tif( null == next[ key ] ) continue\n\t\t\t\tchunks.push( [ key ].concat( next[ key ] ).map( encodeURIComponent ).join( '=' ) )\n\t\t\t}\n\t\t\t\n\t\t\tconst hash = chunks.join( '#' )\n\t\t\t\n\t\t\treturn hash ? '#' + hash + '#' : '#'\n\t\t}\n\t\t\n\t\tconstructor( public prefix = '' ) {\n\t\t\tsuper()\n\t\t}\n\t\t\n\t\tvalue( key : string , next? : string ) {\n\t\t\treturn $mol_state_arg.value( this.prefix + key , next )\n\t\t}\n\t\t\n\t\tsub( postfix : string ) {\n\t\t\treturn new $mol_state_arg( this.prefix + postfix + '.' )\n\t\t}\n\t\t\n\t\tlink( next : { [ key : string ] : string } ) {\n\t\t\tvar prefix = this.prefix\n\t\t\tvar dict : { [ key : string ] : string } = {}\n\t\t\tfor( var key in next ) {\n\t\t\t\tdict[ prefix + key ] = next[ key ]\n\t\t\t}\n\t\t\treturn $mol_state_arg.link( dict )\n\t\t}\n\t\t\n\t}\n\t\n\twindow.addEventListener( 'hashchange' , event => $mol_state_arg.href( null ) )\n\t\n}\n","namespace $ { export class $mol_linker extends $mol_viewer {\n\n\t/// heightMinimal 36\n\theightMinimal() {\n\t\treturn 36\n\t}\n\n\t/// tagName \\a\n\ttagName() {\n\t\treturn \"a\"\n\t}\n\n\t/// uri \\\n\turi() {\n\t\treturn \"\"\n\t}\n\n\t/// current false\n\tcurrent() {\n\t\treturn false\n\t}\n\n\t/// attr * \n\t/// \thref < uri \n\t/// \tmol_linker_current < current\n\tattr() {\n\t\treturn $mol_merge_dict( super.attr() , {\n\t\t\t\"href\" : ()=> this.uri() ,\n\t\t\t\"mol_linker_current\" : ()=> this.current() ,\n\t\t} )\n\t}\n\n\t/// arg *\n\targ() {\n\t\treturn ({\n\t\t})\n\t}\n\n} }\n\n","namespace $.$mol {\n\t\n\texport class $mol_linker extends $.$mol_linker {\n\t\t\n\t\t@ $mol_mem()\n\t\turi() {\n\t\t\tconst patch : { [ key : string ] : string } = {}\n\t\t\tconst arg : any = this.arg()\n\t\t\tfor( let key in arg ) patch[ key ] = arg[ key ]()\t\t\t\n\t\t\t\n\t\t\treturn new $mol_state_arg( this.statePrefix() ).link( patch )\n\t\t}\n\t\t\n\t\tcurrent() {\n\t\t\treturn this.uri() === $mol_state_arg.link( {} )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_checker extends $mol_clicker {\n\n\t/// checked false\n\t@ $mol_mem()\n\tchecked( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : false\n\t}\n\n\t/// attr * mol_checker_checked > checked\n\tattr() {\n\t\treturn $mol_merge_dict( super.attr() , {\n\t\t\t\"mol_checker_checked\" : ( next? : any )=> this.checked( next ) ,\n\t\t} )\n\t}\n\n\t/// icon null\n\ticon() {\n\t\treturn null\n\t}\n\n\t/// label /\n\tlabel() {\n\t\treturn [] as any[]\n\t}\n\n\t/// labeler $mol_viewer childs / < label\n\t@ $mol_mem()\n\tlabeler( next? : any ) {\n\t\treturn new $mol_viewer().setup( obj => { \n\t\t\tobj.childs = () => [].concat( this.label() )\n\t\t} )\n\t}\n\n\t/// childs / \n\t/// \t< icon \n\t/// \t< labeler\n\tchilds() {\n\t\treturn [].concat( this.icon() , this.labeler() )\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_checker extends $.$mol_checker {\n\n\t\teventClick( next? : Event ) {\n\t\t\tthis.checked( !this.checked() )\n\t\t\tnext.preventDefault()\n\t\t}\n\n\t}\n}\n\n","namespace $ {\n\t\n\texport class $mol_state_session< Value > extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic value< Value >( key : string , next? : Value ) : Value {\n\t\t\tif( next === void 0 ) return JSON.parse( sessionStorage.getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) sessionStorage.removeItem( key )\n\t\t\telse sessionStorage.setItem( key , JSON.stringify( next ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_session.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_scroller extends $mol_viewer {\n\n\t/// heightMinimal 0\n\theightMinimal() {\n\t\treturn 0\n\t}\n\n\t/// scrollTop 0\n\t@ $mol_mem()\n\tscrollTop( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : 0\n\t}\n\n\t/// scrollLeft 0\n\t@ $mol_mem()\n\tscrollLeft( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : 0\n\t}\n\n\t/// field * \n\t/// \tscrollTop > scrollTop \n\t/// \tscrollLeft > scrollLeft \n\t/// \t- style.boxShadow < shadowStyle\n\tfield() {\n\t\treturn $mol_merge_dict( super.field() , {\n\t\t\t\"scrollTop\" : ( next? : any )=> this.scrollTop( next ) ,\n\t\t\t\"scrollLeft\" : ( next? : any )=> this.scrollLeft( next ) ,\n\t\t} )\n\t}\n\n\t/// eventScroll null\n\t@ $mol_mem()\n\teventScroll( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : null\n\t}\n\n\t/// event * \n\t/// \tscroll > eventScroll \n\t/// \toverflow > eventScroll \n\t/// \tunderflow > eventScroll\n\tevent() {\n\t\treturn $mol_merge_dict( super.event() , {\n\t\t\t\"scroll\" : ( next? : any )=> this.eventScroll( next ) ,\n\t\t\t\"overflow\" : ( next? : any )=> this.eventScroll( next ) ,\n\t\t\t\"underflow\" : ( next? : any )=> this.eventScroll( next ) ,\n\t\t} )\n\t}\n\n} }\n\n","namespace $ {\n\t\n\texport interface $mol_viewer_context {\n\t\t$mol_scroller_scrollTop() : number\n\t\t$mol_scroller_moving() : boolean\n\t}\n\t\n\t$mol_viewer_context.$mol_scroller_scrollTop = () => 0\n\t$mol_viewer_context.$mol_scroller_moving = () => false\n\t\n}\n\nnamespace $.$mol {\n\t\n\texport class $mol_scroller extends $.$mol_scroller {\n\n\t\tscrollTop( next? : number ) {\n\t\t\treturn $mol_state_session.value( `${ this }.scrollTop()` , next ) || 0\n\t\t}\n\t\t\n\t\tscrollLeft( next? : number ) {\n\t\t\treturn $mol_state_session.value( `${ this }.scrollLeft()` , next ) || 0\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tscrollBottom( next? : number ) {\n\t\t\treturn next || 0\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tscrollRight( next? : number ) {\n\t\t\treturn next || 0\n\t\t}\n\t\t\n\t\teventScroll( next? : Event ) {\n\t\t\tthis.moving( true )\n\t\t\tnew $mol_defer( ()=> {\n\t\t\t\tconst el = this.DOMNode() as HTMLElement\n\t\t\t\tthis.scrollTop( Math.max( 0 , el.scrollTop ) )\n\t\t\t\tthis.scrollLeft( Math.max( 0 , el.scrollLeft ) )\n\t\t\t\tthis.scrollBottom( Math.max( 0 , el.scrollHeight - el.scrollTop - el.offsetHeight ) )\n\t\t\t\tthis.scrollRight( Math.max( 0 , el.scrollWidth - el.scrollLeft - el.offsetWidth ) )\n\t\t\t} )\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tmoving( next? : boolean ) {\n\t\t\tif( next ) {\n\t\t\t\tsetTimeout( ()=> {\n\t\t\t\t\tthis.moving( false )\n\t\t\t\t} )\n\t\t\t}\t\t\t\t\n\t\t\treturn next || false\n\t\t}\n\n\t\t@ $mol_mem()\n\t\tcontextSub( ) {\n\t\t\tconst subContext : $mol_viewer_context = Object.create( this.context() )\n\t\t\tsubContext.$mol_viewer_heightLimit = ()=> this.context().$mol_viewer_heightLimit() + this.scrollTop()\n\t\t\tsubContext.$mol_scroller_scrollTop = ()=> this.scrollTop()\n\t\t\tsubContext.$mol_scroller_moving = ()=> this.moving()\n\t\t\treturn subContext\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tshadowStyle() {\n\t\t\tlet shadows : string[] = []\n\t\t\tif( this.scrollTop() > 0 ) shadows.push( 'inset 0 6px 6px -6px rgba( 0 , 0 , 0 , .25 )' )\n\t\t\tif( this.scrollLeft() > 0 ) shadows.push( 'inset 6px 0 6px -6px rgba( 0 , 0 , 0 , .25 )' )\n\t\t\tif( this.scrollBottom() > 0 ) shadows.push( 'inset 0 -6px 6px -6px rgba( 0 , 0 , 0 , .25 )' )\n\t\t\tif( this.scrollRight() > 0 ) shadows.push( 'inset -6px 0 6px -6px rgba( 0 , 0 , 0 , .25 )' )\n\t\t\treturn shadows.join( ' , ' )\n\t\t}\n\t\t\n\t}\n\n}\n","var localStorage = localStorage || {\n\tgetItem( key : string ) {\n\t\treturn this[ ':' + key ]\n\t} ,\n\tsetItem( key : string , value : string ) {\n\t\tthis[ ':' + key ] = value\n\t} ,\n\tremoveItem( key : string ) {\n\t\tthis[ ':' + key ] = void 0\n\t}\n}\n\nnamespace $ {\n\t\n\texport class $mol_state_local< Value > extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic value< Value >( key : string , next? : Value , force? : $mol_atom_force ) {\n\t\t\tif( next === void 0 ) return JSON.parse( localStorage.getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) localStorage.removeItem( key )\n\t\t\telse localStorage.setItem( key , JSON.stringify( next ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_local.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\twindow.addEventListener( 'storage' , event => {\n\t\t$.$mol_state_local.value( event.key , void 0 , $mol_atom_force )\n\t} )\n}\n","namespace $ {\n\t\n\texport class $mol_http_request extends $mol_object {\n\t\t\n\t\turi() { return '' }\n\t\t\n\t\tmethod() { return 'Get' }\n\t\t\n\t\tcredentials() { return null as {\n\t\t\tlogin? : string\n\t\t\tpassword? : string\n\t\t} }\n\t\t\n\t\tbody() { return null }\n\t\t\n\t\t'native()' : XMLHttpRequest\n\t\tnative() {\n\t\t\tif( this[ 'native()' ] ) return this[ 'native()' ]\n\t\t\t\n\t\t\tvar next = this[ 'native()' ] = $mol_http_request_native()\n\t\t\t\n\t\t\tnext.withCredentials = Boolean( this.credentials() )\n\t\t\t\n\t\t\tnext.onload = ( event : Event )=> {\n\t\t\t\tif( Math.floor( next.status / 100 ) === 2 ) {\n\t\t\t\t\tthis.response( next.responseText , $mol_atom_force )\n\t\t\t\t} else {\n\t\t\t\t\tthis.response( new Error( next.responseText ) as any , $mol_atom_force )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tnext.onerror = ( event : ErrorEvent ) => {\n\t\t\t\tthis.response( event.error || new Error( 'Unknown HTTP error' ) , $mol_atom_force )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next ) {\n\t\t\t\tconst native = this[ 'native()' ]\n\t\t\t\tif( native ) native.abort()\n\t\t\t}\n\t\t\treturn super.destroyed( next )\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tresponse( next? : any , force? : $mol_atom_force ) : any {\n\t\t\tconst creds = this.credentials()\n\t\t\tconst native = this.native()\n\t\t\tconst method = ( next === void 0 ) ? 'Get' : this.method()\n\t\t\tconst uri = this.uri()\n\t\t\t\n\t\t\tnative.open( method , uri , true , creds && creds.login , creds && creds.password )\n\t\t\tnative.send( next )\n\t\t\t\n\t\t\tthrow new $mol_atom_wait( `${ method } ${ uri }` )\n\t\t}\n\t\t\n\t\ttext( next? : string , force? : $mol_atom_force ) : string {\n\t\t\treturn this.response( next , force )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\texport var $mol_http_request_native = ()=> new XMLHttpRequest;\n}\n","namespace $ {\n\t\n\texport class $mol_http_resource extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic item( uri : string ) {\n\t\t\treturn new $mol_http_resource().setup( obj => {\n\t\t\t\tobj.uri = ()=> uri\n\t\t\t} )\n\t\t}\n\t\t\n\t\turi() { return '' }\n\t\t\n\t\tcredentials() { return null as {\n\t\t\tlogin? : string\n\t\t\tpassword? : string\n\t\t} }\n\t\t\n\t\t@ $mol_mem()\n\t\trequest() {\n\t\t\tconst request = new $mol_http_request()\n\t\t\trequest.method = () => 'Put'\n\t\t\trequest.uri = () => this.uri()\n\t\t\trequest.credentials = () => this.credentials()\n\t\t\treturn request\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\ttext( next? : string , force? : $mol_atom_force ) {\n\t\t\treturn this.request().text( next , force )\n\t\t}\n\t\t\n\t}\n\t\n\texport class $mol_http_resource_json< Content > extends $mol_http_resource {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic item< Content >( uri : string ) {\n\t\t\treturn new $mol_http_resource_json< Content >().setup( obj => {\n\t\t\t\tobj.uri = ()=> uri\n\t\t\t} )\n\t\t}\n\t\t\n\t\tjson( next? : Content , force? : $mol_atom_force ) : Content {\n\t\t\treturn JSON.parse( this.text( next && JSON.stringify( next , null , '\\t' ) , force ) )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport interface $mol_locale_dict {\n\t\t[ key : string ] : string\n\t}\n\t\n\texport class $mol_locale extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic lang( next? : string ) {\n\t\t\treturn $mol_state_local.value( 'locale' , next ) || $mol_state_arg.value( 'locale' ) || 'en'\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic texts() {\n\t\t\tconst uri = `-/web.locale=${ this.lang() }.json`\n\t\t\tconst resource = $mol_http_resource_json.item< $mol_locale_dict >( uri ) \n\t\t\treturn resource.json()\n\t\t}\n\t\t\n\t\tstatic text( contexts : string[] , key : string ) {\n\t\t\tconst texts = this.texts()\n\t\t\t\n\t\t\tfor( let i = 0 ; i < contexts.length ; ++i ) {\n\t\t\t\tconst text = texts[ `${ contexts[i] }_${ key }` ]\n\t\t\t\tif( text ) return text\n\t\t\t}\n\t\t\t\n\t\t\tconsole.warn( 'Locale tet not found: ' , contexts , key )\n\t\t\t\n\t\t\treturn `<${ key }>`\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_lister extends $mol_viewer {\n\n\t/// minHeightStyle \\\n\tminHeightStyle() {\n\t\treturn \"\"\n\t}\n\n\t/// field * style.minHeight < minHeightStyle\n\tfield() {\n\t\treturn $mol_merge_dict( super.field() , {\n\t\t\t\"style.minHeight\" : ()=> this.minHeightStyle() ,\n\t\t} )\n\t}\n\n\t/// rows /\n\trows() {\n\t\treturn [] as any[]\n\t}\n\n\t/// childs < rows\n\tchilds() {\n\t\treturn this.rows()\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_lister extends $.$mol_lister {\n\t\t\n\t\t@ $mol_mem()\n\t\trowOffsets() : number[] {\n\t\t\tvar childs = this.childs()\n\t\t\tif( !childs ) return null\n\t\t\t\n\t\t\tlet heightLimit = this.contextSub().$mol_viewer_heightLimit()\n\t\t\tvar offset = 0\n\t\t\t\n\t\t\tvar next : number[] = []\n\t\t\tfor( let child of childs ) {\n\t\t\t\tnext.push( offset )\n\t\t\t\t\n\t\t\t\tif( child instanceof $mol_viewer ) {\n\t\t\t\t\toffset += child.heightMinimal()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( offset > heightLimit ) break\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\trowContext( index : number ) {\n\t\t\tlet context = this.contextSub()\n\t\t\tlet next = Object.create( context )\n\t\t\tnext.$mol_viewer_heightLimit = ()=> context.$mol_viewer_heightLimit() - this.rowOffsets()[ index ]\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tchildsVisible() {\n\t\t\tvar childs = this.childs()\n\t\t\tif( !childs ) return childs\n\t\t\t\n\t\t\tvar limit = this.rowOffsets().length\n\t\t\t\n\t\t\tvar next : $mol_viewer[] = []\n\t\t\tfor( let i = 0 ; i < limit ; ++ i ) {\n\t\t\t\tconst child = childs[ i ]\n\t\t\t\tif( child == null ) continue \n\t\t\t\tif( child instanceof $mol_viewer ) {\n\t\t\t\t\tchild.context( this.rowContext( i ) )\n\t\t\t\t}\n\t\t\t\tnext.push( child )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\theightMinimal() {\n\t\t\tvar height = 0\n\t\t\tvar childs = this.childs()\n\t\t\tif( childs ) childs.forEach( child => {\n\t\t\t\tif( child instanceof $mol_viewer ) {\n\t\t\t\t\theight += child.heightMinimal()\n\t\t\t\t}\n\t\t\t} )\n\t\t\treturn height\n\t\t}\n\t\t\n\t\tminHeightStyle() {\n\t\t\treturn this.heightMinimal() + 'px'\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { export class $mol_barer extends $mol_viewer {\n\n} }\n\n","namespace $ { export class $mol_app_todomvc extends $mol_scroller {\n\n\t/// title @ \\todos\n\ttitle() {\n\t\treturn $mol_locale.text( this.localizationContexts() , \"title\" )\n\t}\n\n\t/// titler $mol_viewer \n\t/// \theightMinimal 142 \n\t/// \tchilds / < title\n\t@ $mol_mem()\n\ttitler( next? : any ) {\n\t\treturn new $mol_viewer().setup( obj => { \n\t\t\tobj.heightMinimal = () => 142\n\t\t\tobj.childs = () => [].concat( this.title() )\n\t\t} )\n\t}\n\n\t/// allCompleterEnabled false\n\tallCompleterEnabled() {\n\t\treturn false\n\t}\n\n\t/// allCompleted false\n\t@ $mol_mem()\n\tallCompleted( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : false\n\t}\n\n\t/// allCompleter $mol_checker \n\t/// \tenabled < allCompleterEnabled \n\t/// \tchecked > allCompleted \n\t/// \tchilds / \\❯\n\t@ $mol_mem()\n\tallCompleter( next? : any ) {\n\t\treturn new $mol_checker().setup( obj => { \n\t\t\tobj.enabled = () => this.allCompleterEnabled()\n\t\t\tobj.checked = ( next? : any ) => this.allCompleted( next )\n\t\t\tobj.childs = () => [].concat( \"❯\" )\n\t\t} )\n\t}\n\n\t/// taskNewTitle \\\n\t@ $mol_mem()\n\ttaskNewTitle( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : \"\"\n\t}\n\n\t/// eventAdd null\n\t@ $mol_mem()\n\teventAdd( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : null\n\t}\n\n\t/// adder $mol_app_todomvc_adder \n\t/// \tvalue > taskNewTitle \n\t/// \teventDone > eventAdd\n\t@ $mol_mem()\n\tadder( next? : any ) {\n\t\treturn new $mol_app_todomvc_adder().setup( obj => { \n\t\t\tobj.value = ( next? : any ) => this.taskNewTitle( next )\n\t\t\tobj.eventDone = ( next? : any ) => this.eventAdd( next )\n\t\t} )\n\t}\n\n\t/// headerContent / \n\t/// \t< allCompleter \n\t/// \t< adder\n\theaderContent() {\n\t\treturn [].concat( this.allCompleter() , this.adder() )\n\t}\n\n\t/// header $mol_viewer \n\t/// \theightMinimal 64 \n\t/// \tchilds < headerContent\n\t@ $mol_mem()\n\theader( next? : any ) {\n\t\treturn new $mol_viewer().setup( obj => { \n\t\t\tobj.heightMinimal = () => 64\n\t\t\tobj.childs = () => this.headerContent()\n\t\t} )\n\t}\n\n\t/// taskers /\n\ttaskers() {\n\t\treturn [] as any[]\n\t}\n\n\t/// lister $mol_lister rows < taskers\n\t@ $mol_mem()\n\tlister( next? : any ) {\n\t\treturn new $mol_lister().setup( obj => { \n\t\t\tobj.rows = () => this.taskers()\n\t\t} )\n\t}\n\n\t/// pendingMessage @ \\0 items left\n\tpendingMessage() {\n\t\treturn $mol_locale.text( this.localizationContexts() , \"pendingMessage\" )\n\t}\n\n\t/// pendinger $mol_viewer childs / < pendingMessage\n\t@ $mol_mem()\n\tpendinger( next? : any ) {\n\t\treturn new $mol_viewer().setup( obj => { \n\t\t\tobj.childs = () => [].concat( this.pendingMessage() )\n\t\t} )\n\t}\n\n\t/// filterAllLabel @ \\All\n\tfilterAllLabel() {\n\t\treturn $mol_locale.text( this.localizationContexts() , \"filterAllLabel\" )\n\t}\n\n\t/// filterAll $mol_linker \n\t/// \tchilds / < filterAllLabel \n\t/// \targ * completed null\n\t@ $mol_mem()\n\tfilterAll( next? : any ) {\n\t\treturn new $mol_linker().setup( obj => { \n\t\t\tobj.childs = () => [].concat( this.filterAllLabel() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : ()=> null ,\n\t\t})\n\t\t} )\n\t}\n\n\t/// filterActiveLabel @ \\Active\n\tfilterActiveLabel() {\n\t\treturn $mol_locale.text( this.localizationContexts() , \"filterActiveLabel\" )\n\t}\n\n\t/// filterActive $mol_linker \n\t/// \tchilds / < filterActiveLabel \n\t/// \targ * completed false\n\t@ $mol_mem()\n\tfilterActive( next? : any ) {\n\t\treturn new $mol_linker().setup( obj => { \n\t\t\tobj.childs = () => [].concat( this.filterActiveLabel() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : ()=> false ,\n\t\t})\n\t\t} )\n\t}\n\n\t/// filterCompletedLabel @ \\Completed\n\tfilterCompletedLabel() {\n\t\treturn $mol_locale.text( this.localizationContexts() , \"filterCompletedLabel\" )\n\t}\n\n\t/// filterCompleted $mol_linker \n\t/// \tchilds / < filterCompletedLabel \n\t/// \targ * completed true\n\t@ $mol_mem()\n\tfilterCompleted( next? : any ) {\n\t\treturn new $mol_linker().setup( obj => { \n\t\t\tobj.childs = () => [].concat( this.filterCompletedLabel() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : ()=> true ,\n\t\t})\n\t\t} )\n\t}\n\n\t/// filterOptions / \n\t/// \t< filterAll \n\t/// \t< filterActive \n\t/// \t< filterCompleted\n\tfilterOptions() {\n\t\treturn [].concat( this.filterAll() , this.filterActive() , this.filterCompleted() )\n\t}\n\n\t/// filter $mol_barer childs < filterOptions\n\t@ $mol_mem()\n\tfilter( next? : any ) {\n\t\treturn new $mol_barer().setup( obj => { \n\t\t\tobj.childs = () => this.filterOptions()\n\t\t} )\n\t}\n\n\t/// sanitizerEnabled true\n\tsanitizerEnabled() {\n\t\treturn true\n\t}\n\n\t/// eventSanitize null\n\teventSanitize() {\n\t\treturn null\n\t}\n\n\t/// sanitizerLabel @ \\Clear completed\n\tsanitizerLabel() {\n\t\treturn $mol_locale.text( this.localizationContexts() , \"sanitizerLabel\" )\n\t}\n\n\t/// sanitizer $mol_clicker_minor \n\t/// \tenabled < sanitizerEnabled \n\t/// \teventClick < eventSanitize \n\t/// \tchilds / < sanitizerLabel\n\t@ $mol_mem()\n\tsanitizer( next? : any ) {\n\t\treturn new $mol_clicker_minor().setup( obj => { \n\t\t\tobj.enabled = () => this.sanitizerEnabled()\n\t\t\tobj.eventClick = () => this.eventSanitize()\n\t\t\tobj.childs = () => [].concat( this.sanitizerLabel() )\n\t\t} )\n\t}\n\n\t/// footerContent / \n\t/// \t< pendinger \n\t/// \t< filter \n\t/// \t< sanitizer\n\tfooterContent() {\n\t\treturn [].concat( this.pendinger() , this.filter() , this.sanitizer() )\n\t}\n\n\t/// footer $mol_viewer childs < footerContent\n\t@ $mol_mem()\n\tfooter( next? : any ) {\n\t\treturn new $mol_viewer().setup( obj => { \n\t\t\tobj.childs = () => this.footerContent()\n\t\t} )\n\t}\n\n\t/// panels / \n\t/// \t< header \n\t/// \t< lister \n\t/// \t< footer\n\tpanels() {\n\t\treturn [].concat( this.header() , this.lister() , this.footer() )\n\t}\n\n\t/// paneler $mol_lister rows < panels\n\t@ $mol_mem()\n\tpaneler( next? : any ) {\n\t\treturn new $mol_lister().setup( obj => { \n\t\t\tobj.rows = () => this.panels()\n\t\t} )\n\t}\n\n\t/// pager $mol_lister childs / \n\t/// \t< titler \n\t/// \t< paneler\n\t@ $mol_mem()\n\tpager( next? : any ) {\n\t\treturn new $mol_lister().setup( obj => { \n\t\t\tobj.childs = () => [].concat( this.titler() , this.paneler() )\n\t\t} )\n\t}\n\n\t/// childs / < pager\n\tchilds() {\n\t\treturn [].concat( this.pager() )\n\t}\n\n\t/// taskCompleted# false\n\t@ $mol_mem_key()\n\ttaskCompleted( key : any , next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : false\n\t}\n\n\t/// taskTitle# \\\n\t@ $mol_mem_key()\n\ttaskTitle( key : any , next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : \"\"\n\t}\n\n\t/// eventTaskDrop# null\n\t@ $mol_mem_key()\n\teventTaskDrop( key : any , next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : null\n\t}\n\n\t/// tasker# $mol_app_todomvc_tasker \n\t/// \tcompleted > taskCompleted# \n\t/// \ttitle > taskTitle# \n\t/// \teventDrop > eventTaskDrop#\n\t@ $mol_mem_key()\n\ttasker( key : any , next? : any ) {\n\t\treturn new $mol_app_todomvc_tasker().setup( obj => { \n\t\t\tobj.completed = ( next? : any ) => this.taskCompleted( key , next )\n\t\t\tobj.title = ( next? : any ) => this.taskTitle( key , next )\n\t\t\tobj.eventDrop = ( next? : any ) => this.eventTaskDrop( key , next )\n\t\t} )\n\t}\n\n} }\n\nnamespace $ { export class $mol_app_todomvc_adder extends $mol_stringer {\n\n\t/// hint @ \\What needs to be done?\n\thint() {\n\t\treturn $mol_locale.text( this.localizationContexts() , \"hint\" )\n\t}\n\n\t/// eventPress null\n\t@ $mol_mem()\n\teventPress( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : null\n\t}\n\n\t/// event * keyup > eventPress\n\tevent() {\n\t\treturn $mol_merge_dict( super.event() , {\n\t\t\t\"keyup\" : ( next? : any )=> this.eventPress( next ) ,\n\t\t} )\n\t}\n\n\t/// eventDone null\n\t@ $mol_mem()\n\teventDone( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : null\n\t}\n\n} }\n\nnamespace $ { export class $mol_app_todomvc_tasker extends $mol_viewer {\n\n\t/// heightMinimal 64\n\theightMinimal() {\n\t\treturn 64\n\t}\n\n\t/// completed false\n\t@ $mol_mem()\n\tcompleted( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : false\n\t}\n\n\t/// completer $mol_checker \n\t/// \tchecked > completed \n\t/// \tchilds /\n\t@ $mol_mem()\n\tcompleter( next? : any ) {\n\t\treturn new $mol_checker().setup( obj => { \n\t\t\tobj.checked = ( next? : any ) => this.completed( next )\n\t\t\tobj.childs = () => [] as any[]\n\t\t} )\n\t}\n\n\t/// titleHint @ \\Task title\n\ttitleHint() {\n\t\treturn $mol_locale.text( this.localizationContexts() , \"titleHint\" )\n\t}\n\n\t/// title \\\n\t@ $mol_mem()\n\ttitle( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : \"\"\n\t}\n\n\t/// titler $mol_stringer \n\t/// \thint < titleHint \n\t/// \tvalue > title\n\t@ $mol_mem()\n\ttitler( next? : any ) {\n\t\treturn new $mol_stringer().setup( obj => { \n\t\t\tobj.hint = () => this.titleHint()\n\t\t\tobj.value = ( next? : any ) => this.title( next )\n\t\t} )\n\t}\n\n\t/// eventDrop null\n\t@ $mol_mem()\n\teventDrop( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : null\n\t}\n\n\t/// dropper $mol_clicker \n\t/// \tchilds / \\✖\n\t/// \teventClick > eventDrop\n\t@ $mol_mem()\n\tdropper( next? : any ) {\n\t\treturn new $mol_clicker().setup( obj => { \n\t\t\tobj.childs = () => [].concat( \"✖\" )\n\t\t\tobj.eventClick = ( next? : any ) => this.eventDrop( next )\n\t\t} )\n\t}\n\n\t/// childs / \n\t/// \t< completer \n\t/// \t< titler \n\t/// \t< dropper\n\tchilds() {\n\t\treturn [].concat( this.completer() , this.titler() , this.dropper() )\n\t}\n\n\t/// attr * mol_app_todomvc_tasker_completed < completed\n\tattr() {\n\t\treturn $mol_merge_dict( super.attr() , {\n\t\t\t\"mol_app_todomvc_tasker_completed\" : ()=> this.completed() ,\n\t\t} )\n\t}\n\n} }\n\n","interface $mol_app_todomvc_task {\n\tcompleted? : boolean\n\ttitle? : string\n}\n\nnamespace $.$mol {\n\t\n\texport class $mol_app_todomvc_adder extends $.$mol_app_todomvc_adder {\n\t\t\n\t\teventPress( next? : KeyboardEvent ) {\n\t\t\tswitch( next['code'] || next.key ) {\n\t\t\t\tcase 'Enter' : return this.eventDone( next )\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\texport class $mol_app_todomvc extends $.$mol_app_todomvc {\n\t\t\n\t\ttaskIds( next? : number[] ) : number[] {\n\t\t\treturn $mol_state_local.value( this.stateKey( 'taskIds' ) , next ) || []\n\t\t}\n\t\t\n\t\targCompleted() {\n\t\t\treturn $mol_state_arg.value( this.stateKey( 'completed' ) )\n\t\t}\n\n\t\t@ $mol_mem()\n\t\tgroupsByCompleted() {\n\t\t\tvar groups : { [ index : string ] : number[] } = { 'true' : [] , 'false' : [] }\n\t\t\tfor( let id of this.taskIds() ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tgroups[ String( task.completed ) ].push( id )\n\t\t\t}\n\t\t\treturn groups\n\t\t}\n\n\t\t@ $mol_mem()\n\t\ttasksFiltered() {\n\t\t\tvar completed = this.argCompleted()\n\t\t\tif( completed ) {\n\t\t\t\treturn this.groupsByCompleted()[ completed ] || []\n\t\t\t} else {\n\t\t\t\treturn this.taskIds()\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_mem()\n\t\tallCompleted( next? : boolean ) {\n\t\t\tif( next === void 0 ) return this.groupsByCompleted()[ 'false' ].length === 0\n\t\t\t\n\t\t\tfor( let id of this.groupsByCompleted()[ String( !next ) ] ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tthis.task( id , { title : task.title , completed : next } )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tallCompleterEnabled() {\n\t\t\treturn this.taskIds().length > 0 \n\t\t}\n\n\t\t@ $mol_mem()\n\t\tpendingMessage() {\n\t\t\tlet count = this.groupsByCompleted()[ 'false' ].length\n\t\t\treturn ( count === 1 ) ? '1 item left' : `${count} items left`\n\t\t}\n\t\t\n\t\t_idSeed = 0\n\n\t\teventAdd( next : Event ) {\n\t\t\tvar title = this.taskNewTitle() \n\t\t\tif( !title ) return\n\t\t\t\n\t\t\tvar id = ++ this._idSeed\n\t\t\tvar task = { completed : false , title }\n\t\t\tthis.task( id , task )\n\t\t\t\n\t\t\tthis.taskIds( this.taskIds().concat( id ) )\n\t\t\tthis.taskNewTitle( '' )\n\t\t}\n\n\t\t@ $mol_mem()\n\t\ttaskers() {\n\t\t\treturn this.tasksFiltered().map( ( id , index )=> this.tasker( index ) )\n\t\t}\n\t\t\n\t\ttask( id : number , next? : $mol_app_todomvc_task ) {\n\t\t\tconst key = this.stateKey( `task=${id}` )\n\t\t\tif( next === void 0 ) return $mol_state_local.value( key ) || { title : '' , completed : false }\n\t\t\t\n\t\t\t$mol_state_local.value( key , next )\n\t\t\t\n\t\t\treturn next || void 0\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\ttaskCompleted( index : number , next? : boolean ) {\n\t\t\tvar id = this.tasksFiltered()[ index ]\n\t\t\tif( next === void 0 ) return this.task( id ).completed\n\t\t\t\n\t\t\tthis.task( id , $mol_merge_dict( this.task( id ) , { completed : next } ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\ttaskTitle( index : number , next? : string ) {\n\t\t\tvar id = this.tasksFiltered()[ index ]\n\t\t\tif( next === void 0 ) return this.task( id ).title\n\t\t\t\n\t\t\tthis.task( id , $mol_merge_dict( this.task( id ) , { title : next } ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\teventTaskDrop( index : number , next? : Event ) {\n\t\t\tvar tasks = this.tasksFiltered()\n\t\t\tvar id = tasks[index]\n\t\t\ttasks = tasks.slice( 0 , index ).concat( tasks.slice( index + 1 , tasks.length ) )\n\t\t\tthis.task( id , null )\n\t\t\tthis.taskIds( tasks )\n\t\t}\n\n\t\teventSanitize() {\n\t\t\tthis.taskIds( this.taskIds().filter( id => {\n\t\t\t\tif( !this.task( id ).completed ) return true\n\t\t\t\tthis.task( id , null )\n\t\t\t\treturn false\n\t\t\t} ) )\n\t\t}\n\t\t\n\t\tpanels() {\n\t\t\treturn [\n\t\t\t\tthis.header() , \n\t\t\t\tthis.lister() ,\n\t\t\t\tthis.footerVisible() ? this.footer() : null ,\n\t\t\t]\n\t\t}\n\t\t\n\t\tfooterVisible() {\n\t\t\treturn this.taskIds().length > 0\n\t\t}\n\n\t\tsanitizerEnabled() {\n\t\t\treturn this.groupsByCompleted()[ 'true' ].length > 0\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_app_todomvc_demo extends $mol_app_todomvc {\n\n} }\n\n"]} \ No newline at end of file diff --git a/examples/mol/-/web.locale=en.json b/examples/mol/-/web.locale=en.json new file mode 100644 index 0000000000..5cbb6e1424 --- /dev/null +++ b/examples/mol/-/web.locale=en.json @@ -0,0 +1,10 @@ +{ + "$mol_app_todomvc_title": "todos", + "$mol_app_todomvc_pendingMessage": "0 items left ", + "$mol_app_todomvc_filterAllLabel": "All", + "$mol_app_todomvc_filterActiveLabel": "Active", + "$mol_app_todomvc_filterCompletedLabel": "Completed", + "$mol_app_todomvc_sanitizerLabel": "Clear completed", + "$mol_app_todomvc_adder_hint": "What needs to be done?", + "$mol_app_todomvc_tasker_titleHint": "Task title" +} \ No newline at end of file diff --git a/examples/mol/.gitignore b/examples/mol/.gitignore new file mode 100644 index 0000000000..16451c1ea8 --- /dev/null +++ b/examples/mol/.gitignore @@ -0,0 +1,5 @@ +node_modules + +node_modules/todomvc-common/* +!node_modules/todomvc-common/base.css +!node_modules/todomvc-common/base.js diff --git a/examples/mol/index.html b/examples/mol/index.html new file mode 100644 index 0000000000..b5ba2df62e --- /dev/null +++ b/examples/mol/index.html @@ -0,0 +1,294 @@ + + + + + + + + + + + +
+ + + + + + diff --git a/examples/mol/package.json b/examples/mol/package.json new file mode 100644 index 0000000000..6ae220b2d8 --- /dev/null +++ b/examples/mol/package.json @@ -0,0 +1,6 @@ +{ + "private": true, + "dependencies": { + "todomvc-common": "^1.0.1" + } +} diff --git a/examples/mol/todomvc.css b/examples/mol/todomvc.css new file mode 100644 index 0000000000..7594b57e4b --- /dev/null +++ b/examples/mol/todomvc.css @@ -0,0 +1,147 @@ +[mol_app_todomvc] { + align-self: stretch; + width: 100%; + height: 100%; +} + +[mol_app_todomvc] [mol_stringer] , +[mol_app_todomvc] [mol_stringer]:focus , +[mol_app_todomvc] [mol_stringer]:hover , +[mol_app_todomvc] [mol_clicker] , +[mol_app_todomvc] [mol_clicker]:focus , +[mol_app_todomvc] [mol_clicker]:hover , +[mol_app_todomvc] [mol_linker] , +[mol_app_todomvc] [mol_linker]:focus , +[mol_app_todomvc] [mol_linker]:hover { + box-shadow: none; +} + +[mol_app_todomvc] [mol_stringer] , +[mol_app_todomvc] [mol_linker] { + background: transparent; +} + +[mol_app_todomvc] [mol_linker]:not([mol_linker_current]):hover , +[mol_app_todomvc] [mol_linker]:not([mol_linker_current]):focus { + text-decoration: underline; +} + +[mol_app_todomvc_allCompleter] { + flex: 0 0 4rem; + transform: rotate( 90deg ); + opacity: .5; + padding: 0; + justify-content: center; +} +[mol_app_todomvc_allCompleter]:disabled { + visibility: hidden; +} +[mol_app_todomvc_allCompleter][mol_checker_checked] { + opacity: 1; +} + +[mol_app_todomvc_adder] { + padding: 0; +} + +[mol_app_todomvc_lister] { + font-size: 1.5rem; +} + +[mol_app_todomvc_paneler] { + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1); + max-width: 38rem; + background: white; + display: flex; + flex-direction: column; + margin: 0 auto 2rem; +} + +[mol_app_todomvc_header] { + font-size: 1.5rem; + padding: 0; + display: flex; + height: 4rem; +} + +[mol_app_todomvc_titler] { + padding: .25rem; + font-size: 7rem; + font-weight: 100; + text-align: center; + color: rgba(175, 47, 47, 0.15); + text-rendering: optimizeLegibility; +} + +[mol_app_todomvc_tasker] { + display: flex; + background: white; + box-shadow: 0 -1px 0 0 #ededed; + height: 4rem; +} + +[mol_app_todomvc_tasker_completer] { + flex: 0 0 4rem; + background: no-repeat center center url('data:image/svg+xml;utf8,'); +} +[mol_app_todomvc_tasker_completer][mol_checker_checked] { + background: no-repeat center center url('data:image/svg+xml;utf8,') +} + +[mol_app_todomvc_tasker_titler] { + padding: 0; + transition: all 0.4s; +} + +[mol_app_todomvc_tasker_completed] [mol_app_todomvc_tasker_titler] { + color: #d9d9d9; + text-decoration: line-through; +} + +[mol_app_todomvc_tasker_dropper] { + font-size: 1.25rem; + flex: 0 04rem; +} +[mol_app_todomvc_tasker]:not(:hover) [mol_app_todomvc_tasker_dropper]:not(:focus) { + opacity: 0; + color: #cc9a9a; + transition: all 0.2s ease-out; +} + +[mol_app_todomvc_footer] { + display: flex; + flex-wrap: wrap; + align-items: baseline; + padding: .5rem 1rem; + color: #777; + font-size: .85rem; + border-top: 1px solid #ededed; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2); +} + +[mol_app_todomvc_pendinger] { + padding: .25rem; + flex: 0 1 6rem; +} + +[mol_app_todomvc_filter] { + flex: 1 100 auto; + display: flex; + justify-content: center; + margin: .25rem; + box-shadow: none; +} + +[mol_app_todomvc_sanitizer] { + flex: 0 1 auto; + padding: .25rem; +} +[mol_app_todomvc_sanitizer]:disabled { + visibility: hidden; +} + +[mol_app_todomvc_sanitizer]:hover , +[mol_app_todomvc_sanitizer]:focus { + text-decoration: underline; +} + diff --git a/examples/mol/todomvc.view.tree b/examples/mol/todomvc.view.tree new file mode 100644 index 0000000000..c1f34da024 --- /dev/null +++ b/examples/mol/todomvc.view.tree @@ -0,0 +1,57 @@ +$mol_app_todomvc $mol_scroller + childs / < pager $mol_lister childs / + < titler $mol_viewer + heightMinimal 142 + childs / < title @ \todos + < paneler $mol_lister rows < panels / + < header $mol_viewer + heightMinimal 64 + childs < headerContent / + < allCompleter $mol_checker + enabled < allCompleterEnabled false + checked > allCompleted false + childs / \❯ + < adder $mol_app_todomvc_adder + value > taskNewTitle \ + eventDone > eventAdd null + < lister $mol_lister rows < taskers / + < footer $mol_viewer + childs < footerContent / + < pendinger $mol_viewer childs / < pendingMessage @ \0 items left + < filter $mol_barer childs < filterOptions / + < filterAll $mol_linker + childs / < filterAllLabel @ \All + arg * completed null + < filterActive $mol_linker + childs / < filterActiveLabel @ \Active + arg * completed false + < filterCompleted $mol_linker + childs / < filterCompletedLabel @ \Completed + arg * completed true + < sanitizer $mol_clicker_minor + enabled < sanitizerEnabled true + eventClick < eventSanitize null + childs / < sanitizerLabel @ \Clear completed + tasker# $mol_app_todomvc_tasker + completed > taskCompleted# false + title > taskTitle# \ + eventDrop > eventTaskDrop# null + +$mol_app_todomvc_adder $mol_stringer + hint @ \What needs to be done? + event * keyup > eventPress null + > eventDone null + +$mol_app_todomvc_tasker $mol_viewer + heightMinimal 64 + childs / + < completer $mol_checker + checked > completed false + childs / + < titler $mol_stringer + hint < titleHint @ \Task title + value > title \ + < dropper $mol_clicker + childs / \✖ + eventClick > eventDrop null + attr * mol_app_todomvc_tasker_completed < completed diff --git a/examples/mol/todomvc.view.ts b/examples/mol/todomvc.view.ts new file mode 100644 index 0000000000..6863e8034a --- /dev/null +++ b/examples/mol/todomvc.view.ts @@ -0,0 +1,152 @@ +interface $mol_app_todomvc_task { + completed? : boolean + title? : string +} + +namespace $.$mol { + + export class $mol_app_todomvc_adder extends $.$mol_app_todomvc_adder { + + eventPress( next? : KeyboardEvent ) { + switch( next['code'] || next.key ) { + case 'Enter' : return this.eventDone( next ) + } + } + + } + + export class $mol_app_todomvc extends $.$mol_app_todomvc { + + taskIds( next? : number[] ) : number[] { + return $mol_state_local.value( this.stateKey( 'taskIds' ) , next ) || [] + } + + argCompleted() { + return $mol_state_arg.value( this.stateKey( 'completed' ) ) + } + + @ $mol_mem() + groupsByCompleted() { + var groups : { [ index : string ] : number[] } = { 'true' : [] , 'false' : [] } + for( let id of this.taskIds() ) { + var task = this.task( id ) + groups[ String( task.completed ) ].push( id ) + } + return groups + } + + @ $mol_mem() + tasksFiltered() { + var completed = this.argCompleted() + if( completed ) { + return this.groupsByCompleted()[ completed ] || [] + } else { + return this.taskIds() + } + } + + @ $mol_mem() + allCompleted( next? : boolean ) { + if( next === void 0 ) return this.groupsByCompleted()[ 'false' ].length === 0 + + for( let id of this.groupsByCompleted()[ String( !next ) ] ) { + var task = this.task( id ) + this.task( id , { title : task.title , completed : next } ) + } + + return next + } + + allCompleterEnabled() { + return this.taskIds().length > 0 + } + + @ $mol_mem() + pendingMessage() { + let count = this.groupsByCompleted()[ 'false' ].length + return ( count === 1 ) ? '1 item left' : `${count} items left` + } + + _idSeed = 0 + + eventAdd( next : Event ) { + var title = this.taskNewTitle() + if( !title ) return + + var id = ++ this._idSeed + var task = { completed : false , title } + this.task( id , task ) + + this.taskIds( this.taskIds().concat( id ) ) + this.taskNewTitle( '' ) + } + + @ $mol_mem() + taskers() { + return this.tasksFiltered().map( ( id , index )=> this.tasker( index ) ) + } + + task( id : number , next? : $mol_app_todomvc_task ) { + const key = this.stateKey( `task=${id}` ) + if( next === void 0 ) return $mol_state_local.value( key ) || { title : '' , completed : false } + + $mol_state_local.value( key , next ) + + return next || void 0 + } + + @ $mol_mem_key() + taskCompleted( index : number , next? : boolean ) { + var id = this.tasksFiltered()[ index ] + if( next === void 0 ) return this.task( id ).completed + + this.task( id , $mol_merge_dict( this.task( id ) , { completed : next } ) ) + + return next + } + + @ $mol_mem_key() + taskTitle( index : number , next? : string ) { + var id = this.tasksFiltered()[ index ] + if( next === void 0 ) return this.task( id ).title + + this.task( id , $mol_merge_dict( this.task( id ) , { title : next } ) ) + + return next + } + + eventTaskDrop( index : number , next? : Event ) { + var tasks = this.tasksFiltered() + var id = tasks[index] + tasks = tasks.slice( 0 , index ).concat( tasks.slice( index + 1 , tasks.length ) ) + this.task( id , null ) + this.taskIds( tasks ) + } + + eventSanitize() { + this.taskIds( this.taskIds().filter( id => { + if( !this.task( id ).completed ) return true + this.task( id , null ) + return false + } ) ) + } + + panels() { + return [ + this.header() , + this.lister() , + this.footerVisible() ? this.footer() : null , + ] + } + + footerVisible() { + return this.taskIds().length > 0 + } + + sanitizerEnabled() { + return this.groupsByCompleted()[ 'true' ].length > 0 + } + + } + +} diff --git a/learn.json b/learn.json index df37f57f37..5c075f2c64 100644 --- a/learn.json +++ b/learn.json @@ -1181,6 +1181,16 @@ }] }] }, + "mol": { + "name": "$mol", + "description": "$mol - full reactive micromodular framework", + "homepage": "https://github.com/eigenmethod/mol", + "examples": [{ + "name": "Example", + "url": "examples/mol" + }], + "link_groups": [] + }, "kendo": { "name": "Kendo UI", "description": "Comprehensive HTML5/JavaScript framework for modern web and mobile app development.", From c12d8003f92ac59082feed4e8b0fb6c91cc9fdc7 Mon Sep 17 00:00:00 2001 From: nin-jin Date: Thu, 15 Dec 2016 17:21:11 +0300 Subject: [PATCH 02/53] Added benchmarking. --- benchmark/index.html | 190 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 190 insertions(+) create mode 100644 benchmark/index.html diff --git a/benchmark/index.html b/benchmark/index.html new file mode 100644 index 0000000000..9ee5df0e14 --- /dev/null +++ b/benchmark/index.html @@ -0,0 +1,190 @@ + + + + + + + + + + From 771dba95b7f389cd97377419d4833a368ab55fcb Mon Sep 17 00:00:00 2001 From: nin-jin Date: Thu, 15 Dec 2016 17:24:10 +0300 Subject: [PATCH 03/53] Removed testing code. --- examples/mol/index.html | 273 +--------------------------------------- 1 file changed, 1 insertion(+), 272 deletions(-) diff --git a/examples/mol/index.html b/examples/mol/index.html index b5ba2df62e..ad8a1d353f 100644 --- a/examples/mol/index.html +++ b/examples/mol/index.html @@ -20,275 +20,4 @@
- - - - + From 1afc99d9c527c83087fe7065fd9a86008efab721 Mon Sep 17 00:00:00 2001 From: nin-jin Date: Thu, 15 Dec 2016 18:39:59 +0300 Subject: [PATCH 04/53] Added / to end of page url, because github redirects to http protocol from https. --- benchmark/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmark/index.html b/benchmark/index.html index 9ee5df0e14..7f80abddfa 100644 --- a/benchmark/index.html +++ b/benchmark/index.html @@ -94,7 +94,7 @@ function start( sample ) { var start = Date.now() - sandbox.src = '../examples/' + sample + sandbox.src = '../examples/' + sample + '/' sandbox.onload = function() { step() function step() { From f7955fe1e02f3bf1086fd5423be46752534c052f Mon Sep 17 00:00:00 2001 From: nin-jin Date: Thu, 15 Dec 2016 19:02:20 +0300 Subject: [PATCH 05/53] Added base files. --- examples/mol/.gitignore | 2 - .../mol/node_modules/todomvc-common/base.css | 141 ++++++++++ .../mol/node_modules/todomvc-common/base.js | 249 ++++++++++++++++++ 3 files changed, 390 insertions(+), 2 deletions(-) create mode 100644 examples/mol/node_modules/todomvc-common/base.css create mode 100644 examples/mol/node_modules/todomvc-common/base.js diff --git a/examples/mol/.gitignore b/examples/mol/.gitignore index 16451c1ea8..9cd5bfd778 100644 --- a/examples/mol/.gitignore +++ b/examples/mol/.gitignore @@ -1,5 +1,3 @@ -node_modules - node_modules/todomvc-common/* !node_modules/todomvc-common/base.css !node_modules/todomvc-common/base.js diff --git a/examples/mol/node_modules/todomvc-common/base.css b/examples/mol/node_modules/todomvc-common/base.css new file mode 100644 index 0000000000..da65968a73 --- /dev/null +++ b/examples/mol/node_modules/todomvc-common/base.css @@ -0,0 +1,141 @@ +hr { + margin: 20px 0; + border: 0; + border-top: 1px dashed #c5c5c5; + border-bottom: 1px dashed #f7f7f7; +} + +.learn a { + font-weight: normal; + text-decoration: none; + color: #b83f45; +} + +.learn a:hover { + text-decoration: underline; + color: #787e7e; +} + +.learn h3, +.learn h4, +.learn h5 { + margin: 10px 0; + font-weight: 500; + line-height: 1.2; + color: #000; +} + +.learn h3 { + font-size: 24px; +} + +.learn h4 { + font-size: 18px; +} + +.learn h5 { + margin-bottom: 0; + font-size: 14px; +} + +.learn ul { + padding: 0; + margin: 0 0 30px 25px; +} + +.learn li { + line-height: 20px; +} + +.learn p { + font-size: 15px; + font-weight: 300; + line-height: 1.3; + margin-top: 0; + margin-bottom: 0; +} + +#issue-count { + display: none; +} + +.quote { + border: none; + margin: 20px 0 60px 0; +} + +.quote p { + font-style: italic; +} + +.quote p:before { + content: '“'; + font-size: 50px; + opacity: .15; + position: absolute; + top: -20px; + left: 3px; +} + +.quote p:after { + content: '”'; + font-size: 50px; + opacity: .15; + position: absolute; + bottom: -42px; + right: 3px; +} + +.quote footer { + position: absolute; + bottom: -40px; + right: 0; +} + +.quote footer img { + border-radius: 3px; +} + +.quote footer a { + margin-left: 5px; + vertical-align: middle; +} + +.speech-bubble { + position: relative; + padding: 10px; + background: rgba(0, 0, 0, .04); + border-radius: 5px; +} + +.speech-bubble:after { + content: ''; + position: absolute; + top: 100%; + right: 30px; + border: 13px solid transparent; + border-top-color: rgba(0, 0, 0, .04); +} + +.learn-bar > .learn { + position: absolute; + width: 272px; + top: 8px; + left: -300px; + padding: 10px; + border-radius: 5px; + background-color: rgba(255, 255, 255, .6); + transition-property: left; + transition-duration: 500ms; +} + +@media (min-width: 899px) { + .learn-bar { + width: auto; + padding-left: 300px; + } + + .learn-bar > .learn { + left: 8px; + } +} diff --git a/examples/mol/node_modules/todomvc-common/base.js b/examples/mol/node_modules/todomvc-common/base.js new file mode 100644 index 0000000000..3c6723f390 --- /dev/null +++ b/examples/mol/node_modules/todomvc-common/base.js @@ -0,0 +1,249 @@ +/* global _ */ +(function () { + 'use strict'; + + /* jshint ignore:start */ + // Underscore's Template Module + // Courtesy of underscorejs.org + var _ = (function (_) { + _.defaults = function (object) { + if (!object) { + return object; + } + for (var argsIndex = 1, argsLength = arguments.length; argsIndex < argsLength; argsIndex++) { + var iterable = arguments[argsIndex]; + if (iterable) { + for (var key in iterable) { + if (object[key] == null) { + object[key] = iterable[key]; + } + } + } + } + return object; + } + + // By default, Underscore uses ERB-style template delimiters, change the + // following template settings to use alternative delimiters. + _.templateSettings = { + evaluate : /<%([\s\S]+?)%>/g, + interpolate : /<%=([\s\S]+?)%>/g, + escape : /<%-([\s\S]+?)%>/g + }; + + // When customizing `templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. + var noMatch = /(.)^/; + + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\t': 't', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g; + + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + _.template = function(text, data, settings) { + var render; + settings = _.defaults({}, settings, _.templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = new RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset) + .replace(escaper, function(match) { return '\\' + escapes[match]; }); + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } + if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } + if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + index = offset + match.length; + return match; + }); + source += "';\n"; + + // If a variable is not specified, place data values in local scope. + if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + "return __p;\n"; + + try { + render = new Function(settings.variable || 'obj', '_', source); + } catch (e) { + e.source = source; + throw e; + } + + if (data) return render(data, _); + var template = function(data) { + return render.call(this, data, _); + }; + + // Provide the compiled function source as a convenience for precompilation. + template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}'; + + return template; + }; + + return _; + })({}); + + if (location.hostname === 'todomvc.com') { + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); + ga('create', 'UA-31081062-1', 'auto'); + ga('send', 'pageview'); + } + /* jshint ignore:end */ + + function redirect() { + if (location.hostname === 'tastejs.github.io') { + location.href = location.href.replace('tastejs.github.io/todomvc', 'todomvc.com'); + } + } + + function findRoot() { + var base = location.href.indexOf('examples/'); + return location.href.substr(0, base); + } + + function getFile(file, callback) { + if (!location.host) { + return console.info('Miss the info bar? Run TodoMVC from a server to avoid a cross-origin error.'); + } + + var xhr = new XMLHttpRequest(); + + xhr.open('GET', findRoot() + file, true); + xhr.send(); + + xhr.onload = function () { + if (xhr.status === 200 && callback) { + callback(xhr.responseText); + } + }; + } + + function Learn(learnJSON, config) { + if (!(this instanceof Learn)) { + return new Learn(learnJSON, config); + } + + var template, framework; + + if (typeof learnJSON !== 'object') { + try { + learnJSON = JSON.parse(learnJSON); + } catch (e) { + return; + } + } + + if (config) { + template = config.template; + framework = config.framework; + } + + if (!template && learnJSON.templates) { + template = learnJSON.templates.todomvc; + } + + if (!framework && document.querySelector('[data-framework]')) { + framework = document.querySelector('[data-framework]').dataset.framework; + } + + this.template = template; + + if (learnJSON.backend) { + this.frameworkJSON = learnJSON.backend; + this.frameworkJSON.issueLabel = framework; + this.append({ + backend: true + }); + } else if (learnJSON[framework]) { + this.frameworkJSON = learnJSON[framework]; + this.frameworkJSON.issueLabel = framework; + this.append(); + } + + this.fetchIssueCount(); + } + + Learn.prototype.append = function (opts) { + var aside = document.createElement('aside'); + aside.innerHTML = _.template(this.template, this.frameworkJSON); + aside.className = 'learn'; + + if (opts && opts.backend) { + // Remove demo link + var sourceLinks = aside.querySelector('.source-links'); + var heading = sourceLinks.firstElementChild; + var sourceLink = sourceLinks.lastElementChild; + // Correct link path + var href = sourceLink.getAttribute('href'); + sourceLink.setAttribute('href', href.substr(href.lastIndexOf('http'))); + sourceLinks.innerHTML = heading.outerHTML + sourceLink.outerHTML; + } else { + // Localize demo links + var demoLinks = aside.querySelectorAll('.demo-link'); + Array.prototype.forEach.call(demoLinks, function (demoLink) { + if (demoLink.getAttribute('href').substr(0, 4) !== 'http') { + demoLink.setAttribute('href', findRoot() + demoLink.getAttribute('href')); + } + }); + } + + document.body.className = (document.body.className + ' learn-bar').trim(); + document.body.insertAdjacentHTML('afterBegin', aside.outerHTML); + }; + + Learn.prototype.fetchIssueCount = function () { + var issueLink = document.getElementById('issue-count-link'); + if (issueLink) { + var url = issueLink.href.replace('https://github.com', 'https://api.github.com/repos'); + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.onload = function (e) { + var parsedResponse = JSON.parse(e.target.responseText); + if (parsedResponse instanceof Array) { + var count = parsedResponse.length; + if (count !== 0) { + issueLink.innerHTML = 'This app has ' + count + ' open issues'; + document.getElementById('issue-count').style.display = 'inline'; + } + } + }; + xhr.send(); + } + }; + + redirect(); + getFile('learn.json', Learn); +})(); From b8ed2622deb9c1bfbf10aac70c109b15d2aee083 Mon Sep 17 00:00:00 2001 From: nin-jin Date: Thu, 26 Jan 2017 14:30:26 +0300 Subject: [PATCH 06/53] Added cyclejs --- examples/cyclejs | 1 + learn.json | 9 +++++++++ 2 files changed, 10 insertions(+) create mode 160000 examples/cyclejs diff --git a/examples/cyclejs b/examples/cyclejs new file mode 160000 index 0000000000..8dd3adeca7 --- /dev/null +++ b/examples/cyclejs @@ -0,0 +1 @@ +Subproject commit 8dd3adeca76276c52b90b5132c74b295ca7e710a diff --git a/learn.json b/learn.json index 5c075f2c64..2a3dd88b85 100644 --- a/learn.json +++ b/learn.json @@ -538,6 +538,15 @@ }] }] }, + "cyclejs": { + "name": "CycleJS", + "description": "A functional and reactive JavaScript framework for cleaner code", + "homepage": "https://cycle.js.org", + "examples": [{ + "name": "Example", + "url": "examples/cyclejs" + }] + }, "dart": { "name": "Dart", "description": "Dart is a class-based, object-oriented language with lexical scoping, closures, and optional static typing. Dart helps you build structured modern web apps and is easy to learn for a wide range of developers.", From 3056b785a450a60a9bdb9939c61e57f480577904 Mon Sep 17 00:00:00 2001 From: nin-jin Date: Thu, 26 Jan 2017 14:35:57 +0300 Subject: [PATCH 07/53] Drop cyclejs submodule. --- examples/cyclejs | 1 - 1 file changed, 1 deletion(-) delete mode 160000 examples/cyclejs diff --git a/examples/cyclejs b/examples/cyclejs deleted file mode 160000 index 8dd3adeca7..0000000000 --- a/examples/cyclejs +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8dd3adeca76276c52b90b5132c74b295ca7e710a From 662e46008cfa740eb5f60ab1d6409648bd245491 Mon Sep 17 00:00:00 2001 From: nin-jin Date: Thu, 26 Jan 2017 14:37:06 +0300 Subject: [PATCH 08/53] Added cyclejs example. --- examples/cyclejs/.babelrc | 4 + examples/cyclejs/.editorconfig | 7 + examples/cyclejs/.gitignore | 4 + examples/cyclejs/LICENSE | 22 + examples/cyclejs/README.md | 10 + examples/cyclejs/index.html | 19 + examples/cyclejs/js/app.js | 12327 ++++++++++++++++ examples/cyclejs/js/app.min.js | 12 + .../node_modules/todomvc-app-css/index.css | 377 + .../node_modules/todomvc-app-css/package.json | 96 + .../node_modules/todomvc-app-css/readme.md | 28 + .../node_modules/todomvc-common/base.css | 141 + .../node_modules/todomvc-common/base.js | 244 + .../node_modules/todomvc-common/package.json | 90 + .../node_modules/todomvc-common/readme.md | 15 + examples/cyclejs/package.json | 52 + examples/cyclejs/src/app.js | 28 + examples/cyclejs/src/components/Task/index.js | 20 + .../cyclejs/src/components/Task/intent.js | 40 + examples/cyclejs/src/components/Task/model.js | 60 + examples/cyclejs/src/components/Task/view.js | 34 + .../cyclejs/src/components/TaskList/index.js | 106 + .../cyclejs/src/components/TaskList/intent.js | 52 + .../cyclejs/src/components/TaskList/model.js | 62 + .../src/components/TaskList/storage-sink.js | 14 + .../src/components/TaskList/storage-source.js | 30 + .../cyclejs/src/components/TaskList/view.js | 84 + examples/cyclejs/src/utils.js | 4 + 28 files changed, 13982 insertions(+) create mode 100644 examples/cyclejs/.babelrc create mode 100644 examples/cyclejs/.editorconfig create mode 100644 examples/cyclejs/.gitignore create mode 100644 examples/cyclejs/LICENSE create mode 100644 examples/cyclejs/README.md create mode 100644 examples/cyclejs/index.html create mode 100644 examples/cyclejs/js/app.js create mode 100644 examples/cyclejs/js/app.min.js create mode 100644 examples/cyclejs/node_modules/todomvc-app-css/index.css create mode 100644 examples/cyclejs/node_modules/todomvc-app-css/package.json create mode 100644 examples/cyclejs/node_modules/todomvc-app-css/readme.md create mode 100644 examples/cyclejs/node_modules/todomvc-common/base.css create mode 100644 examples/cyclejs/node_modules/todomvc-common/base.js create mode 100644 examples/cyclejs/node_modules/todomvc-common/package.json create mode 100644 examples/cyclejs/node_modules/todomvc-common/readme.md create mode 100644 examples/cyclejs/package.json create mode 100644 examples/cyclejs/src/app.js create mode 100644 examples/cyclejs/src/components/Task/index.js create mode 100644 examples/cyclejs/src/components/Task/intent.js create mode 100644 examples/cyclejs/src/components/Task/model.js create mode 100644 examples/cyclejs/src/components/Task/view.js create mode 100644 examples/cyclejs/src/components/TaskList/index.js create mode 100644 examples/cyclejs/src/components/TaskList/intent.js create mode 100644 examples/cyclejs/src/components/TaskList/model.js create mode 100644 examples/cyclejs/src/components/TaskList/storage-sink.js create mode 100644 examples/cyclejs/src/components/TaskList/storage-source.js create mode 100644 examples/cyclejs/src/components/TaskList/view.js create mode 100644 examples/cyclejs/src/utils.js diff --git a/examples/cyclejs/.babelrc b/examples/cyclejs/.babelrc new file mode 100644 index 0000000000..831f20a8e5 --- /dev/null +++ b/examples/cyclejs/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["es2015"], + "plugins": ["transform-object-rest-spread"] +} diff --git a/examples/cyclejs/.editorconfig b/examples/cyclejs/.editorconfig new file mode 100644 index 0000000000..442d28d0cf --- /dev/null +++ b/examples/cyclejs/.editorconfig @@ -0,0 +1,7 @@ +; editorconfig.org +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = LF \ No newline at end of file diff --git a/examples/cyclejs/.gitignore b/examples/cyclejs/.gitignore new file mode 100644 index 0000000000..30caf22711 --- /dev/null +++ b/examples/cyclejs/.gitignore @@ -0,0 +1,4 @@ +.idea/ +ignore/ +node_modules/ +npm-debug.log diff --git a/examples/cyclejs/LICENSE b/examples/cyclejs/LICENSE new file mode 100644 index 0000000000..76dc4b5250 --- /dev/null +++ b/examples/cyclejs/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2014 André Staltz + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/examples/cyclejs/README.md b/examples/cyclejs/README.md new file mode 100644 index 0000000000..6181be490f --- /dev/null +++ b/examples/cyclejs/README.md @@ -0,0 +1,10 @@ +TodoMVC in Cycle.js +=================== + +TodoMVC example implemented in [Cycle.js](http://cycle.js.org). + +[Open the app]( http://cycle.js.org/todomvc-cycle/ ) + +- - - + +To see a version of this codebase using Immutable.js, [click here](https://github.com/cyclejs/todomvc-cycle/pull/9/files). diff --git a/examples/cyclejs/index.html b/examples/cyclejs/index.html new file mode 100644 index 0000000000..5be41b1ad1 --- /dev/null +++ b/examples/cyclejs/index.html @@ -0,0 +1,19 @@ + + + + + Cycle • TodoMVC + + + + +
+ + + + + diff --git a/examples/cyclejs/js/app.js b/examples/cyclejs/js/app.js new file mode 100644 index 0000000000..d4ad604ff0 --- /dev/null +++ b/examples/cyclejs/js/app.js @@ -0,0 +1,12327 @@ +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 0) { + topNode = this.isolateModule.getIsolatedElement(scope) || rootElement; + if (selector && matchesSelector(topNode, selector)) { + topNodeMatches.push(topNode); + } + } + return toElArray(topNode.querySelectorAll(selector)) + .filter(scopeChecker.isStrictlyInRootScope, scopeChecker) + .concat(topNodeMatches); + }; + return ElementFinder; +}()); +exports.ElementFinder = ElementFinder; + +},{"./ScopeChecker":6,"./utils":19,"matches-selector":21}],3:[function(require,module,exports){ +"use strict"; +var ScopeChecker_1 = require('./ScopeChecker'); +var utils_1 = require('./utils'); +var matchesSelector; +try { + matchesSelector = require("matches-selector"); +} +catch (e) { + matchesSelector = Function.prototype; +} +/** + * Attaches an actual event listener to the DOM root element, + * handles "destinations" (interested DOMSource output subjects), and bubbling. + */ +var EventDelegator = (function () { + function EventDelegator(topElement, eventType, useCapture, isolateModule) { + var _this = this; + this.topElement = topElement; + this.eventType = eventType; + this.useCapture = useCapture; + this.isolateModule = isolateModule; + this.destinations = []; + this.roof = topElement.parentElement; + if (useCapture) { + this.domListener = function (ev) { return _this.capture(ev); }; + } + else { + this.domListener = function (ev) { return _this.bubble(ev); }; + } + topElement.addEventListener(eventType, this.domListener, useCapture); + } + EventDelegator.prototype.bubble = function (rawEvent) { + if (!document.body.contains(rawEvent.currentTarget)) { + return; + } + var ev = this.patchEvent(rawEvent); + for (var el = ev.target; el && el !== this.roof; el = el.parentElement) { + if (ev.propagationHasBeenStopped) { + return; + } + this.matchEventAgainstDestinations(el, ev); + } + }; + EventDelegator.prototype.matchEventAgainstDestinations = function (el, ev) { + for (var i = 0, n = this.destinations.length; i < n; i++) { + var dest = this.destinations[i]; + if (!dest.scopeChecker.isStrictlyInRootScope(el)) { + continue; + } + if (matchesSelector(el, dest.selector)) { + this.mutateEventCurrentTarget(ev, el); + dest.subject._n(ev); + } + } + }; + EventDelegator.prototype.capture = function (ev) { + for (var i = 0, n = this.destinations.length; i < n; i++) { + var dest = this.destinations[i]; + if (matchesSelector(ev.target, dest.selector)) { + dest.subject._n(ev); + } + } + }; + EventDelegator.prototype.addDestination = function (subject, namespace) { + var scope = utils_1.getScope(namespace); + var selector = utils_1.getSelectors(namespace); + var scopeChecker = new ScopeChecker_1.ScopeChecker(scope, this.isolateModule); + this.destinations.push({ subject: subject, scopeChecker: scopeChecker, selector: selector }); + }; + EventDelegator.prototype.patchEvent = function (event) { + var pEvent = event; + pEvent.propagationHasBeenStopped = false; + var oldStopPropagation = pEvent.stopPropagation; + pEvent.stopPropagation = function stopPropagation() { + oldStopPropagation.call(this); + this.propagationHasBeenStopped = true; + }; + return pEvent; + }; + EventDelegator.prototype.mutateEventCurrentTarget = function (event, currentTargetElement) { + try { + Object.defineProperty(event, "currentTarget", { + value: currentTargetElement, + configurable: true, + }); + } + catch (err) { + console.log("please use event.ownerTarget"); + } + event.ownerTarget = currentTargetElement; + }; + EventDelegator.prototype.updateTopElement = function (newTopElement) { + this.topElement.removeEventListener(this.eventType, this.domListener, this.useCapture); + newTopElement.addEventListener(this.eventType, this.domListener, this.useCapture); + this.topElement = newTopElement; + }; + return EventDelegator; +}()); +exports.EventDelegator = EventDelegator; + +},{"./ScopeChecker":6,"./utils":19,"matches-selector":21}],4:[function(require,module,exports){ +"use strict"; +var xstream_1 = require('xstream'); +var xstream_adapter_1 = require('@cycle/xstream-adapter'); +var HTMLSource = (function () { + function HTMLSource(html$, runSA) { + this.runSA = runSA; + this._html$ = html$; + this._empty$ = runSA.adapt(xstream_1.default.empty(), xstream_adapter_1.default.streamSubscribe); + } + HTMLSource.prototype.elements = function () { + return this.runSA.adapt(this._html$, xstream_adapter_1.default.streamSubscribe); + }; + HTMLSource.prototype.select = function (selector) { + return new HTMLSource(xstream_1.default.empty(), this.runSA); + }; + HTMLSource.prototype.events = function (eventType, options) { + return this._empty$; + }; + return HTMLSource; +}()); +exports.HTMLSource = HTMLSource; + +},{"@cycle/xstream-adapter":20,"xstream":115}],5:[function(require,module,exports){ +"use strict"; +var xstream_adapter_1 = require('@cycle/xstream-adapter'); +var xstream_1 = require('xstream'); +var ElementFinder_1 = require('./ElementFinder'); +var fromEvent_1 = require('./fromEvent'); +var isolate_1 = require('./isolate'); +var EventDelegator_1 = require('./EventDelegator'); +var utils_1 = require('./utils'); +var matchesSelector; +try { + matchesSelector = require("matches-selector"); +} +catch (e) { + matchesSelector = Function.prototype; +} +var eventTypesThatDontBubble = [ + "load", + "unload", + "focus", + "blur", + "mouseenter", + "mouseleave", + "submit", + "change", + "reset", + "timeupdate", + "playing", + "waiting", + "seeking", + "seeked", + "ended", + "loadedmetadata", + "loadeddata", + "canplay", + "canplaythrough", + "durationchange", + "play", + "pause", + "ratechange", + "volumechange", + "suspend", + "emptied", + "stalled", +]; +function determineUseCapture(eventType, options) { + var result = false; + if (typeof options.useCapture === "boolean") { + result = options.useCapture; + } + if (eventTypesThatDontBubble.indexOf(eventType) !== -1) { + result = true; + } + return result; +} +var MainDOMSource = (function () { + function MainDOMSource(_rootElement$, _runStreamAdapter, _namespace, _isolateModule, _delegators) { + if (_namespace === void 0) { _namespace = []; } + this._rootElement$ = _rootElement$; + this._runStreamAdapter = _runStreamAdapter; + this._namespace = _namespace; + this._isolateModule = _isolateModule; + this._delegators = _delegators; + this.isolateSource = isolate_1.isolateSource; + this.isolateSink = isolate_1.isolateSink; + } + MainDOMSource.prototype.elements = function () { + var output$; + if (this._namespace.length === 0) { + output$ = this._rootElement$; + } + else { + var elementFinder_1 = new ElementFinder_1.ElementFinder(this._namespace, this._isolateModule); + output$ = this._rootElement$.map(function (el) { return elementFinder_1.call(el); }); + } + var runSA = this._runStreamAdapter; + return runSA.remember(runSA.adapt(output$, xstream_adapter_1.default.streamSubscribe)); + }; + Object.defineProperty(MainDOMSource.prototype, "namespace", { + get: function () { + return this._namespace; + }, + enumerable: true, + configurable: true + }); + MainDOMSource.prototype.select = function (selector) { + if (typeof selector !== 'string') { + throw new Error("DOM driver's select() expects the argument to be a " + + "string as a CSS selector"); + } + var trimmedSelector = selector.trim(); + var childNamespace = trimmedSelector === ":root" ? + this._namespace : + this._namespace.concat(trimmedSelector); + return new MainDOMSource(this._rootElement$, this._runStreamAdapter, childNamespace, this._isolateModule, this._delegators); + }; + MainDOMSource.prototype.events = function (eventType, options) { + if (options === void 0) { options = {}; } + if (typeof eventType !== "string") { + throw new Error("DOM driver's events() expects argument to be a " + + "string representing the event type to listen for."); + } + var useCapture = determineUseCapture(eventType, options); + var namespace = this._namespace; + var scope = utils_1.getScope(namespace); + var keyParts = [eventType, useCapture]; + if (scope) { + keyParts.push(scope); + } + var key = keyParts.join('~'); + var domSource = this; + var rootElement$; + if (scope) { + var hadIsolated_mutable_1 = false; + rootElement$ = this._rootElement$ + .filter(function (rootElement) { + var hasIsolated = !!domSource._isolateModule.getIsolatedElement(scope); + var shouldPass = hasIsolated && !hadIsolated_mutable_1; + hadIsolated_mutable_1 = hasIsolated; + return shouldPass; + }); + } + else { + rootElement$ = this._rootElement$.take(2); + } + var event$ = rootElement$ + .map(function setupEventDelegatorOnTopElement(rootElement) { + // Event listener just for the root element + if (!namespace || namespace.length === 0) { + return fromEvent_1.fromEvent(rootElement, eventType, useCapture); + } + // Event listener on the top element as an EventDelegator + var delegators = domSource._delegators; + var top = scope + ? domSource._isolateModule.getIsolatedElement(scope) + : rootElement; + var delegator; + if (delegators.has(key)) { + delegator = delegators.get(key); + delegator.updateTopElement(top); + } + else { + delegator = new EventDelegator_1.EventDelegator(top, eventType, useCapture, domSource._isolateModule); + delegators.set(key, delegator); + } + var subject = xstream_1.default.create(); + if (scope) { + domSource._isolateModule.addEventDelegator(scope, delegator); + } + delegator.addDestination(subject, namespace); + return subject; + }) + .flatten(); + return this._runStreamAdapter.adapt(event$, xstream_adapter_1.default.streamSubscribe); + }; + MainDOMSource.prototype.dispose = function () { + this._isolateModule.reset(); + }; + return MainDOMSource; +}()); +exports.MainDOMSource = MainDOMSource; + +},{"./ElementFinder":2,"./EventDelegator":3,"./fromEvent":8,"./isolate":12,"./utils":19,"@cycle/xstream-adapter":20,"matches-selector":21,"xstream":115}],6:[function(require,module,exports){ +"use strict"; +var ScopeChecker = (function () { + function ScopeChecker(scope, isolateModule) { + this.scope = scope; + this.isolateModule = isolateModule; + } + ScopeChecker.prototype.isStrictlyInRootScope = function (leaf) { + for (var el = leaf; el; el = el.parentElement) { + var scope = this.isolateModule.isIsolatedElement(el); + if (scope && scope !== this.scope) { + return false; + } + if (scope) { + return true; + } + } + return true; + }; + return ScopeChecker; +}()); +exports.ScopeChecker = ScopeChecker; + +},{}],7:[function(require,module,exports){ +"use strict"; +var hyperscript_1 = require('./hyperscript'); +var classNameFromVNode_1 = require('snabbdom-selector/lib/classNameFromVNode'); +var selectorParser_1 = require('snabbdom-selector/lib/selectorParser'); +var VNodeWrapper = (function () { + function VNodeWrapper(rootElement) { + this.rootElement = rootElement; + } + VNodeWrapper.prototype.call = function (vnode) { + var _a = selectorParser_1.default(vnode.sel), selectorTagName = _a.tagName, selectorId = _a.id; + var vNodeClassName = classNameFromVNode_1.default(vnode); + var vNodeData = vnode.data || {}; + var vNodeDataProps = vNodeData.props || {}; + var _b = vNodeDataProps.id, vNodeId = _b === void 0 ? selectorId : _b; + var isVNodeAndRootElementIdentical = vNodeId.toUpperCase() === this.rootElement.id.toUpperCase() && + selectorTagName.toUpperCase() === this.rootElement.tagName.toUpperCase() && + vNodeClassName.toUpperCase() === this.rootElement.className.toUpperCase(); + if (isVNodeAndRootElementIdentical) { + return vnode; + } + var _c = this.rootElement, tagName = _c.tagName, id = _c.id, className = _c.className; + var elementId = id ? "#" + id : ""; + var elementClassName = className ? + "." + className.split(" ").join(".") : ""; + return hyperscript_1.h("" + tagName + elementId + elementClassName, {}, [vnode]); + }; + return VNodeWrapper; +}()); +exports.VNodeWrapper = VNodeWrapper; + +},{"./hyperscript":10,"snabbdom-selector/lib/classNameFromVNode":22,"snabbdom-selector/lib/selectorParser":23}],8:[function(require,module,exports){ +"use strict"; +var xstream_1 = require('xstream'); +function fromEvent(element, eventName, useCapture) { + if (useCapture === void 0) { useCapture = false; } + return xstream_1.Stream.create({ + element: element, + next: null, + start: function start(listener) { + this.next = function next(event) { listener.next(event); }; + this.element.addEventListener(eventName, this.next, useCapture); + }, + stop: function stop() { + this.element.removeEventListener(eventName, this.next, useCapture); + } + }); +} +exports.fromEvent = fromEvent; + +},{"xstream":115}],9:[function(require,module,exports){ +"use strict"; +var hyperscript_1 = require('./hyperscript'); +function isValidString(param) { + return typeof param === 'string' && param.length > 0; +} +function isSelector(param) { + return isValidString(param) && (param[0] === '.' || param[0] === '#'); +} +function createTagFunction(tagName) { + return function hyperscript(first, b, c) { + if (isSelector(first)) { + if (!!b && !!c) { + return hyperscript_1.h(tagName + first, b, c); + } + else if (!!b) { + return hyperscript_1.h(tagName + first, b); + } + else { + return hyperscript_1.h(tagName + first, {}); + } + } + else if (!!b) { + return hyperscript_1.h(tagName, first, b); + } + else if (!!first) { + return hyperscript_1.h(tagName, first); + } + else { + return hyperscript_1.h(tagName, {}); + } + }; +} +var SVG_TAG_NAMES = [ + 'a', 'altGlyph', 'altGlyphDef', 'altGlyphItem', 'animate', 'animateColor', + 'animateMotion', 'animateTransform', 'circle', 'clipPath', 'colorProfile', + 'cursor', 'defs', 'desc', 'ellipse', 'feBlend', 'feColorMatrix', + 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', + 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', + 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', + 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', + 'feSpotlight', 'feTile', 'feTurbulence', 'filter', 'font', 'fontFace', + 'fontFaceFormat', 'fontFaceName', 'fontFaceSrc', 'fontFaceUri', + 'foreignObject', 'g', 'glyph', 'glyphRef', 'hkern', 'image', 'line', + 'linearGradient', 'marker', 'mask', 'metadata', 'missingGlyph', 'mpath', + 'path', 'pattern', 'polygon', 'polyling', 'radialGradient', 'rect', 'script', + 'set', 'stop', 'style', 'switch', 'symbol', 'text', 'textPath', 'title', + 'tref', 'tspan', 'use', 'view', 'vkern' +]; +var svg = createTagFunction('svg'); +SVG_TAG_NAMES.forEach(function (tag) { + svg[tag] = createTagFunction(tag); +}); +var TAG_NAMES = [ + 'a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', + 'bdi', 'bdo', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', + 'cite', 'code', 'col', 'colgroup', 'dd', 'del', 'dfn', 'dir', 'div', 'dl', + 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', + 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', + 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', + 'li', 'link', 'main', 'map', 'mark', 'menu', 'meta', 'nav', 'noscript', + 'object', 'ol', 'optgroup', 'option', 'p', 'param', 'pre', 'progress', 'q', + 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', + 'source', 'span', 'strong', 'style', 'sub', 'sup', 'table', 'tbody', 'td', + 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'u', 'ul', 'video' +]; +var exported = { SVG_TAG_NAMES: SVG_TAG_NAMES, TAG_NAMES: TAG_NAMES, svg: svg, isSelector: isSelector, createTagFunction: createTagFunction }; +TAG_NAMES.forEach(function (n) { + exported[n] = createTagFunction(n); +}); +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = exported; + +},{"./hyperscript":10}],10:[function(require,module,exports){ +"use strict"; +var is = require('snabbdom/is'); +var vnode = require('snabbdom/vnode'); +function isGenericStream(x) { + return !Array.isArray(x) && typeof x.map === "function"; +} +function mutateStreamWithNS(vNode) { + addNS(vNode.data, vNode.children); + return vNode; +} +function addNS(data, children) { + data.ns = "http://www.w3.org/2000/svg"; + if (typeof children !== "undefined" && is.array(children)) { + for (var i = 0; i < children.length; ++i) { + if (isGenericStream(children[i])) { + children[i] = children[i].map(mutateStreamWithNS); + } + else { + addNS(children[i].data, children[i].children); + } + } + } +} +function h(sel, b, c) { + var data = {}; + var children; + var text; + var i; + if (arguments.length === 3) { + data = b; + if (is.array(c)) { + children = c; + } + else if (is.primitive(c)) { + text = c; + } + } + else if (arguments.length === 2) { + if (is.array(b)) { + children = b; + } + else if (is.primitive(b)) { + text = b; + } + else { + data = b; + } + } + if (is.array(children)) { + children = children.filter(function (x) { return x; }); + for (i = 0; i < children.length; ++i) { + if (is.primitive(children[i])) { + children[i] = vnode(undefined, undefined, undefined, children[i]); + } + } + } + if (sel[0] === 's' && sel[1] === 'v' && sel[2] === 'g') { + addNS(data, children); + } + return vnode(sel, data, children, text, undefined); +} +exports.h = h; +; + +},{"snabbdom/is":59,"snabbdom/vnode":68}],11:[function(require,module,exports){ +"use strict"; +var thunk = require('snabbdom/thunk'); +exports.thunk = thunk; +var makeDOMDriver_1 = require('./makeDOMDriver'); +exports.makeDOMDriver = makeDOMDriver_1.makeDOMDriver; +var makeHTMLDriver_1 = require('./makeHTMLDriver'); +exports.makeHTMLDriver = makeHTMLDriver_1.makeHTMLDriver; +var mockDOMSource_1 = require('./mockDOMSource'); +exports.mockDOMSource = mockDOMSource_1.mockDOMSource; +var hyperscript_1 = require('./hyperscript'); +exports.h = hyperscript_1.h; +var hyperscript_helpers_1 = require('./hyperscript-helpers'); +exports.svg = hyperscript_helpers_1.default.svg; +exports.a = hyperscript_helpers_1.default.a; +exports.abbr = hyperscript_helpers_1.default.abbr; +exports.address = hyperscript_helpers_1.default.address; +exports.area = hyperscript_helpers_1.default.area; +exports.article = hyperscript_helpers_1.default.article; +exports.aside = hyperscript_helpers_1.default.aside; +exports.audio = hyperscript_helpers_1.default.audio; +exports.b = hyperscript_helpers_1.default.b; +exports.base = hyperscript_helpers_1.default.base; +exports.bdi = hyperscript_helpers_1.default.bdi; +exports.bdo = hyperscript_helpers_1.default.bdo; +exports.blockquote = hyperscript_helpers_1.default.blockquote; +exports.body = hyperscript_helpers_1.default.body; +exports.br = hyperscript_helpers_1.default.br; +exports.button = hyperscript_helpers_1.default.button; +exports.canvas = hyperscript_helpers_1.default.canvas; +exports.caption = hyperscript_helpers_1.default.caption; +exports.cite = hyperscript_helpers_1.default.cite; +exports.code = hyperscript_helpers_1.default.code; +exports.col = hyperscript_helpers_1.default.col; +exports.colgroup = hyperscript_helpers_1.default.colgroup; +exports.dd = hyperscript_helpers_1.default.dd; +exports.del = hyperscript_helpers_1.default.del; +exports.dfn = hyperscript_helpers_1.default.dfn; +exports.dir = hyperscript_helpers_1.default.dir; +exports.div = hyperscript_helpers_1.default.div; +exports.dl = hyperscript_helpers_1.default.dl; +exports.dt = hyperscript_helpers_1.default.dt; +exports.em = hyperscript_helpers_1.default.em; +exports.embed = hyperscript_helpers_1.default.embed; +exports.fieldset = hyperscript_helpers_1.default.fieldset; +exports.figcaption = hyperscript_helpers_1.default.figcaption; +exports.figure = hyperscript_helpers_1.default.figure; +exports.footer = hyperscript_helpers_1.default.footer; +exports.form = hyperscript_helpers_1.default.form; +exports.h1 = hyperscript_helpers_1.default.h1; +exports.h2 = hyperscript_helpers_1.default.h2; +exports.h3 = hyperscript_helpers_1.default.h3; +exports.h4 = hyperscript_helpers_1.default.h4; +exports.h5 = hyperscript_helpers_1.default.h5; +exports.h6 = hyperscript_helpers_1.default.h6; +exports.head = hyperscript_helpers_1.default.head; +exports.header = hyperscript_helpers_1.default.header; +exports.hgroup = hyperscript_helpers_1.default.hgroup; +exports.hr = hyperscript_helpers_1.default.hr; +exports.html = hyperscript_helpers_1.default.html; +exports.i = hyperscript_helpers_1.default.i; +exports.iframe = hyperscript_helpers_1.default.iframe; +exports.img = hyperscript_helpers_1.default.img; +exports.input = hyperscript_helpers_1.default.input; +exports.ins = hyperscript_helpers_1.default.ins; +exports.kbd = hyperscript_helpers_1.default.kbd; +exports.keygen = hyperscript_helpers_1.default.keygen; +exports.label = hyperscript_helpers_1.default.label; +exports.legend = hyperscript_helpers_1.default.legend; +exports.li = hyperscript_helpers_1.default.li; +exports.link = hyperscript_helpers_1.default.link; +exports.main = hyperscript_helpers_1.default.main; +exports.map = hyperscript_helpers_1.default.map; +exports.mark = hyperscript_helpers_1.default.mark; +exports.menu = hyperscript_helpers_1.default.menu; +exports.meta = hyperscript_helpers_1.default.meta; +exports.nav = hyperscript_helpers_1.default.nav; +exports.noscript = hyperscript_helpers_1.default.noscript; +exports.object = hyperscript_helpers_1.default.object; +exports.ol = hyperscript_helpers_1.default.ol; +exports.optgroup = hyperscript_helpers_1.default.optgroup; +exports.option = hyperscript_helpers_1.default.option; +exports.p = hyperscript_helpers_1.default.p; +exports.param = hyperscript_helpers_1.default.param; +exports.pre = hyperscript_helpers_1.default.pre; +exports.progress = hyperscript_helpers_1.default.progress; +exports.q = hyperscript_helpers_1.default.q; +exports.rp = hyperscript_helpers_1.default.rp; +exports.rt = hyperscript_helpers_1.default.rt; +exports.ruby = hyperscript_helpers_1.default.ruby; +exports.s = hyperscript_helpers_1.default.s; +exports.samp = hyperscript_helpers_1.default.samp; +exports.script = hyperscript_helpers_1.default.script; +exports.section = hyperscript_helpers_1.default.section; +exports.select = hyperscript_helpers_1.default.select; +exports.small = hyperscript_helpers_1.default.small; +exports.source = hyperscript_helpers_1.default.source; +exports.span = hyperscript_helpers_1.default.span; +exports.strong = hyperscript_helpers_1.default.strong; +exports.style = hyperscript_helpers_1.default.style; +exports.sub = hyperscript_helpers_1.default.sub; +exports.sup = hyperscript_helpers_1.default.sup; +exports.table = hyperscript_helpers_1.default.table; +exports.tbody = hyperscript_helpers_1.default.tbody; +exports.td = hyperscript_helpers_1.default.td; +exports.textarea = hyperscript_helpers_1.default.textarea; +exports.tfoot = hyperscript_helpers_1.default.tfoot; +exports.th = hyperscript_helpers_1.default.th; +exports.thead = hyperscript_helpers_1.default.thead; +exports.title = hyperscript_helpers_1.default.title; +exports.tr = hyperscript_helpers_1.default.tr; +exports.u = hyperscript_helpers_1.default.u; +exports.ul = hyperscript_helpers_1.default.ul; +exports.video = hyperscript_helpers_1.default.video; + +},{"./hyperscript":10,"./hyperscript-helpers":9,"./makeDOMDriver":14,"./makeHTMLDriver":15,"./mockDOMSource":16,"snabbdom/thunk":67}],12:[function(require,module,exports){ +"use strict"; +var utils_1 = require('./utils'); +function isolateSource(source, scope) { + return source.select(utils_1.SCOPE_PREFIX + scope); +} +exports.isolateSource = isolateSource; +function isolateSink(sink, scope) { + return sink.map(function (vTree) { + if (vTree.data.isolate) { + var existingScope = parseInt(vTree.data.isolate.split(utils_1.SCOPE_PREFIX + 'cycle')[1]); + var _scope = parseInt(scope.split('cycle')[1]); + if (Number.isNaN(existingScope) || + Number.isNaN(_scope) || + existingScope > _scope) { + return vTree; + } + } + vTree.data.isolate = utils_1.SCOPE_PREFIX + scope; + return vTree; + }); +} +exports.isolateSink = isolateSink; + +},{"./utils":19}],13:[function(require,module,exports){ +"use strict"; +var IsolateModule = (function () { + function IsolateModule(isolatedElements) { + this.isolatedElements = isolatedElements; + this.eventDelegators = new Map(); + } + IsolateModule.prototype.setScope = function (elm, scope) { + this.isolatedElements.set(scope, elm); + }; + IsolateModule.prototype.removeScope = function (scope) { + this.isolatedElements.delete(scope); + }; + IsolateModule.prototype.getIsolatedElement = function (scope) { + return this.isolatedElements.get(scope); + }; + IsolateModule.prototype.isIsolatedElement = function (elm) { + var elements = Array.from(this.isolatedElements.entries()); + for (var i = 0; i < elements.length; ++i) { + if (elm === elements[i][1]) { + return elements[i][0]; + } + } + return false; + }; + IsolateModule.prototype.addEventDelegator = function (scope, eventDelegator) { + var delegators = this.eventDelegators.get(scope); + if (!delegators) { + delegators = []; + this.eventDelegators.set(scope, delegators); + } + delegators[delegators.length] = eventDelegator; + }; + IsolateModule.prototype.reset = function () { + this.isolatedElements.clear(); + }; + IsolateModule.prototype.createModule = function () { + var self = this; + return { + create: function (oldVNode, vNode) { + var _a = oldVNode.data, oldData = _a === void 0 ? {} : _a; + var elm = vNode.elm, _b = vNode.data, data = _b === void 0 ? {} : _b; + var oldScope = oldData.isolate || ""; + var scope = data.isolate || ""; + if (scope) { + if (oldScope) { + self.removeScope(oldScope); + } + self.setScope(elm, scope); + var delegators = self.eventDelegators.get(scope); + if (delegators) { + for (var i = 0, len = delegators.length; i < len; ++i) { + delegators[i].updateTopElement(elm); + } + } + else if (delegators === void 0) { + self.eventDelegators.set(scope, []); + } + } + if (oldScope && !scope) { + self.removeScope(scope); + } + }, + update: function (oldVNode, vNode) { + var _a = oldVNode.data, oldData = _a === void 0 ? {} : _a; + var elm = vNode.elm, _b = vNode.data, data = _b === void 0 ? {} : _b; + var oldScope = oldData.isolate || ""; + var scope = data.isolate || ""; + if (scope) { + if (oldScope) { + self.removeScope(oldScope); + } + self.setScope(elm, scope); + } + if (oldScope && !scope) { + self.removeScope(scope); + } + }, + remove: function (_a, cb) { + var data = _a.data; + data = data || {}; + var scope = data.isolate; + if (scope) { + self.removeScope(scope); + if (self.eventDelegators.get(scope)) { + self.eventDelegators.set(scope, []); + } + } + cb(); + }, + destroy: function (_a) { + var data = _a.data; + data = data || {}; + var scope = data.isolate; + if (scope) { + self.removeScope(scope); + if (self.eventDelegators.get(scope)) { + self.eventDelegators.set(scope, []); + } + } + } + }; + }; + return IsolateModule; +}()); +exports.IsolateModule = IsolateModule; + +},{}],14:[function(require,module,exports){ +"use strict"; +var snabbdom_1 = require('snabbdom'); +var xstream_1 = require('xstream'); +var MainDOMSource_1 = require('./MainDOMSource'); +var VNodeWrapper_1 = require('./VNodeWrapper'); +var utils_1 = require('./utils'); +var modules_1 = require('./modules'); +var isolateModule_1 = require('./isolateModule'); +var transposition_1 = require('./transposition'); +var xstream_adapter_1 = require('@cycle/xstream-adapter'); +function makeDOMDriverInputGuard(modules) { + if (!Array.isArray(modules)) { + throw new Error("Optional modules option must be " + + "an array for snabbdom modules"); + } +} +function domDriverInputGuard(view$) { + if (!view$ + || typeof view$.addListener !== "function" + || typeof view$.fold !== "function") { + throw new Error("The DOM driver function expects as input a Stream of " + + "virtual DOM elements"); + } +} +function makeDOMDriver(container, options) { + if (!options) { + options = {}; + } + var transposition = options.transposition || false; + var modules = options.modules || modules_1.default; + var isolateModule = new isolateModule_1.IsolateModule((new Map())); + var patch = snabbdom_1.init([isolateModule.createModule()].concat(modules)); + var rootElement = utils_1.getElement(container); + var vnodeWrapper = new VNodeWrapper_1.VNodeWrapper(rootElement); + var delegators = new Map(); + makeDOMDriverInputGuard(modules); + function DOMDriver(vnode$, runStreamAdapter) { + domDriverInputGuard(vnode$); + var transposeVNode = transposition_1.makeTransposeVNode(runStreamAdapter); + var preprocessedVNode$ = (transposition ? vnode$.map(transposeVNode).flatten() : vnode$); + var rootElement$ = preprocessedVNode$ + .map(function (vnode) { return vnodeWrapper.call(vnode); }) + .fold(patch, rootElement) + .drop(1) + .map(function unwrapElementFromVNode(vnode) { return vnode.elm; }) + .compose(function (stream) { return xstream_1.default.merge(stream, xstream_1.default.never()); }) // don't complete this stream + .startWith(rootElement); + /* tslint:disable:no-empty */ + rootElement$.addListener({ next: function () { }, error: function () { }, complete: function () { } }); + /* tslint:enable:no-empty */ + return new MainDOMSource_1.MainDOMSource(rootElement$, runStreamAdapter, [], isolateModule, delegators); + } + ; + DOMDriver.streamAdapter = xstream_adapter_1.default; + return DOMDriver; +} +exports.makeDOMDriver = makeDOMDriver; + +},{"./MainDOMSource":5,"./VNodeWrapper":7,"./isolateModule":13,"./modules":17,"./transposition":18,"./utils":19,"@cycle/xstream-adapter":20,"snabbdom":66,"xstream":115}],15:[function(require,module,exports){ +"use strict"; +var xstream_adapter_1 = require('@cycle/xstream-adapter'); +var transposition_1 = require('./transposition'); +var HTMLSource_1 = require('./HTMLSource'); +var toHTML = require('snabbdom-to-html'); +/* tslint:disable:no-empty */ +var noop = function () { }; +/* tslint:enable:no-empty */ +function makeHTMLDriver(effect, options) { + if (!options) { + options = {}; + } + var transposition = options.transposition || false; + function htmlDriver(vnode$, runStreamAdapter) { + var transposeVNode = transposition_1.makeTransposeVNode(runStreamAdapter); + var preprocessedVNode$ = (transposition ? vnode$.map(transposeVNode).flatten() : vnode$); + var html$ = preprocessedVNode$.last().map(toHTML); + html$.addListener({ + next: effect || noop, + error: noop, + complete: noop, + }); + return new HTMLSource_1.HTMLSource(html$, runStreamAdapter); + } + ; + htmlDriver.streamAdapter = xstream_adapter_1.default; + return htmlDriver; +} +exports.makeHTMLDriver = makeHTMLDriver; + +},{"./HTMLSource":4,"./transposition":18,"@cycle/xstream-adapter":20,"snabbdom-to-html":26}],16:[function(require,module,exports){ +"use strict"; +var xstream_adapter_1 = require('@cycle/xstream-adapter'); +var xstream_1 = require('xstream'); +var MockedDOMSource = (function () { + function MockedDOMSource(_streamAdapter, _mockConfig) { + this._streamAdapter = _streamAdapter; + this._mockConfig = _mockConfig; + if (_mockConfig.elements) { + this._elements = _mockConfig.elements; + } + else { + this._elements = _streamAdapter.adapt(xstream_1.default.empty(), xstream_adapter_1.default.streamSubscribe); + } + } + MockedDOMSource.prototype.elements = function () { + return this._elements; + }; + MockedDOMSource.prototype.events = function (eventType, options) { + var mockConfig = this._mockConfig; + var keys = Object.keys(mockConfig); + var keysLen = keys.length; + for (var i = 0; i < keysLen; i++) { + var key = keys[i]; + if (key === eventType) { + return mockConfig[key]; + } + } + return this._streamAdapter.adapt(xstream_1.default.empty(), xstream_adapter_1.default.streamSubscribe); + }; + MockedDOMSource.prototype.select = function (selector) { + var mockConfig = this._mockConfig; + var keys = Object.keys(mockConfig); + var keysLen = keys.length; + for (var i = 0; i < keysLen; i++) { + var key = keys[i]; + if (key === selector) { + return new MockedDOMSource(this._streamAdapter, mockConfig[key]); + } + } + return new MockedDOMSource(this._streamAdapter, {}); + }; + return MockedDOMSource; +}()); +exports.MockedDOMSource = MockedDOMSource; +function mockDOMSource(streamAdapter, mockConfig) { + return new MockedDOMSource(streamAdapter, mockConfig); +} +exports.mockDOMSource = mockDOMSource; + +},{"@cycle/xstream-adapter":20,"xstream":115}],17:[function(require,module,exports){ +"use strict"; +var ClassModule = require('snabbdom/modules/class'); +exports.ClassModule = ClassModule; +var PropsModule = require('snabbdom/modules/props'); +exports.PropsModule = PropsModule; +var AttrsModule = require('snabbdom/modules/attributes'); +exports.AttrsModule = AttrsModule; +var EventsModule = require('snabbdom/modules/eventlisteners'); +exports.EventsModule = EventsModule; +var StyleModule = require('snabbdom/modules/style'); +exports.StyleModule = StyleModule; +var HeroModule = require('snabbdom/modules/hero'); +exports.HeroModule = HeroModule; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = [StyleModule, ClassModule, PropsModule, AttrsModule]; + +},{"snabbdom/modules/attributes":60,"snabbdom/modules/class":61,"snabbdom/modules/eventlisteners":62,"snabbdom/modules/hero":63,"snabbdom/modules/props":64,"snabbdom/modules/style":65}],18:[function(require,module,exports){ +"use strict"; +var xstream_adapter_1 = require('@cycle/xstream-adapter'); +var xstream_1 = require('xstream'); +function createVTree(vnode, children) { + return { + sel: vnode.sel, + data: vnode.data, + text: vnode.text, + elm: vnode.elm, + key: vnode.key, + children: children, + }; +} +function makeTransposeVNode(runStreamAdapter) { + return function transposeVNode(vnode) { + if (!vnode) { + return null; + } + else if (vnode && typeof vnode.data === "object" && vnode.data.static) { + return xstream_1.default.of(vnode); + } + else if (runStreamAdapter.isValidStream(vnode)) { + var xsStream = xstream_adapter_1.default.adapt(vnode, runStreamAdapter.streamSubscribe); + return xsStream.map(transposeVNode).flatten(); + } + else if (typeof vnode === "object") { + if (!vnode.children || vnode.children.length === 0) { + return xstream_1.default.of(vnode); + } + var vnodeChildren = vnode.children + .map(transposeVNode) + .filter(function (x) { return x !== null; }); + if (vnodeChildren.length === 0) { + return xstream_1.default.of(createVTree(vnode, [])); + } + else { + return xstream_1.default.combine.apply(xstream_1.default, vnodeChildren) + .map(function (children) { return createVTree(vnode, children.slice()); }); + } + } + else { + throw new Error("Unhandled vTree Value"); + } + }; +} +exports.makeTransposeVNode = makeTransposeVNode; + +},{"@cycle/xstream-adapter":20,"xstream":115}],19:[function(require,module,exports){ +"use strict"; +function isElement(obj) { + return typeof HTMLElement === "object" ? + obj instanceof HTMLElement || obj instanceof DocumentFragment : + obj && typeof obj === "object" && obj !== null && + (obj.nodeType === 1 || obj.nodeType === 11) && + typeof obj.nodeName === "string"; +} +exports.SCOPE_PREFIX = "$$CYCLEDOM$$-"; +function getElement(selectors) { + var domElement = (typeof selectors === "string" ? + document.querySelector(selectors) : + selectors); + if (typeof selectors === "string" && domElement === null) { + throw new Error("Cannot render into unknown element `" + selectors + "`"); + } + else if (!isElement(domElement)) { + throw new Error("Given container is not a DOM element neither a " + + "selector string."); + } + return domElement; +} +exports.getElement = getElement; +function getScope(namespace) { + return namespace + .filter(function (c) { return c.indexOf(exports.SCOPE_PREFIX) > -1; }) + .slice(-1) // only need the latest, most specific, isolated boundary + .join(""); +} +exports.getScope = getScope; +function getSelectors(namespace) { + return namespace.filter(function (c) { return c.indexOf(exports.SCOPE_PREFIX) === -1; }).join(" "); +} +exports.getSelectors = getSelectors; + +},{}],20:[function(require,module,exports){ +"use strict"; +var xstream_1 = require('xstream'); +var XStreamAdapter = { + adapt: function (originStream, originStreamSubscribe) { + if (XStreamAdapter.isValidStream(originStream)) { + return originStream; + } + ; + var dispose = null; + return xstream_1.default.create({ + start: function (out) { + var observer = out; + dispose = originStreamSubscribe(originStream, observer); + }, + stop: function () { + if (typeof dispose === 'function') { + dispose(); + } + } + }); + }, + makeSubject: function () { + var stream = xstream_1.default.create(); + var observer = { + next: function (x) { stream.shamefullySendNext(x); }, + error: function (err) { stream.shamefullySendError(err); }, + complete: function () { stream.shamefullySendComplete(); } + }; + return { observer: observer, stream: stream }; + }, + remember: function (stream) { + return stream.remember(); + }, + isValidStream: function (stream) { + return (typeof stream.addListener === 'function' && + typeof stream.shamefullySendNext === 'function'); + }, + streamSubscribe: function (stream, observer) { + stream.addListener(observer); + return function () { return stream.removeListener(observer); }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = XStreamAdapter; + +},{"xstream":115}],21:[function(require,module,exports){ +'use strict'; + +var proto = Element.prototype; +var vendor = proto.matches + || proto.matchesSelector + || proto.webkitMatchesSelector + || proto.mozMatchesSelector + || proto.msMatchesSelector + || proto.oMatchesSelector; + +module.exports = match; + +/** + * Match `el` to `selector`. + * + * @param {Element} el + * @param {String} selector + * @return {Boolean} + * @api public + */ + +function match(el, selector) { + if (vendor) return vendor.call(el, selector); + var nodes = el.parentNode.querySelectorAll(selector); + for (var i = 0; i < nodes.length; i++) { + if (nodes[i] == el) return true; + } + return false; +} +},{}],22:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = classNameFromVNode; + +var _selectorParser2 = require('./selectorParser'); + +var _selectorParser3 = _interopRequireDefault(_selectorParser2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function classNameFromVNode(vNode) { + var _selectorParser = (0, _selectorParser3.default)(vNode.sel); + + var cn = _selectorParser.className; + + if (!vNode.data) { + return cn; + } + + var _vNode$data = vNode.data; + var dataClass = _vNode$data.class; + var props = _vNode$data.props; + + if (dataClass) { + var c = Object.keys(vNode.data.class).filter(function (cl) { + return vNode.data.class[cl]; + }); + cn += ' ' + c.join(' '); + } + + if (props && props.className) { + cn += ' ' + props.className; + } + + return cn.trim(); +} +},{"./selectorParser":23}],23:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = selectorParser; + +var _browserSplit = require('browser-split'); + +var _browserSplit2 = _interopRequireDefault(_browserSplit); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var classIdSplit = /([\.#]?[a-zA-Z0-9\u007F-\uFFFF_:-]+)/; +var notClassId = /^\.|#/; + +function selectorParser() { + var selector = arguments.length <= 0 || arguments[0] === undefined ? '' : arguments[0]; + + var tagName = undefined; + var id = ''; + var classes = []; + + var tagParts = (0, _browserSplit2.default)(selector, classIdSplit); + + if (notClassId.test(tagParts[1]) || selector === '') { + tagName = 'div'; + } + + var part = undefined; + var type = undefined; + var i = undefined; + + for (i = 0; i < tagParts.length; i++) { + part = tagParts[i]; + + if (!part) { + continue; + } + + type = part.charAt(0); + + if (!tagName) { + tagName = part; + } else if (type === '.') { + classes.push(part.substring(1, part.length)); + } else if (type === '#') { + id = part.substring(1, part.length); + } + } + + return { + tagName: tagName, + id: id, + className: classes.join(' ') + }; +} +},{"browser-split":24}],24:[function(require,module,exports){ +/*! + * Cross-Browser Split 1.1.1 + * Copyright 2007-2012 Steven Levithan + * Available under the MIT License + * ECMAScript compliant, uniform cross-browser split method + */ + +/** + * Splits a string into an array of strings using a regex or string separator. Matches of the + * separator are not included in the result array. However, if `separator` is a regex that contains + * capturing groups, backreferences are spliced into the result each time `separator` is matched. + * Fixes browser bugs compared to the native `String.prototype.split` and can be used reliably + * cross-browser. + * @param {String} str String to split. + * @param {RegExp|String} separator Regex or string to use for separating the string. + * @param {Number} [limit] Maximum number of items to include in the result array. + * @returns {Array} Array of substrings. + * @example + * + * // Basic use + * split('a b c d', ' '); + * // -> ['a', 'b', 'c', 'd'] + * + * // With limit + * split('a b c d', ' ', 2); + * // -> ['a', 'b'] + * + * // Backreferences in result array + * split('..word1 word2..', /([a-z]+)(\d+)/i); + * // -> ['..', 'word', '1', ' ', 'word', '2', '..'] + */ +module.exports = (function split(undef) { + + var nativeSplit = String.prototype.split, + compliantExecNpcg = /()??/.exec("")[1] === undef, + // NPCG: nonparticipating capturing group + self; + + self = function(str, separator, limit) { + // If `separator` is not a regex, use `nativeSplit` + if (Object.prototype.toString.call(separator) !== "[object RegExp]") { + return nativeSplit.call(str, separator, limit); + } + var output = [], + flags = (separator.ignoreCase ? "i" : "") + (separator.multiline ? "m" : "") + (separator.extended ? "x" : "") + // Proposed for ES6 + (separator.sticky ? "y" : ""), + // Firefox 3+ + lastLastIndex = 0, + // Make `global` and avoid `lastIndex` issues by working with a copy + separator = new RegExp(separator.source, flags + "g"), + separator2, match, lastIndex, lastLength; + str += ""; // Type-convert + if (!compliantExecNpcg) { + // Doesn't need flags gy, but they don't hurt + separator2 = new RegExp("^" + separator.source + "$(?!\\s)", flags); + } + /* Values for `limit`, per the spec: + * If undefined: 4294967295 // Math.pow(2, 32) - 1 + * If 0, Infinity, or NaN: 0 + * If positive number: limit = Math.floor(limit); if (limit > 4294967295) limit -= 4294967296; + * If negative number: 4294967296 - Math.floor(Math.abs(limit)) + * If other: Type-convert, then use the above rules + */ + limit = limit === undef ? -1 >>> 0 : // Math.pow(2, 32) - 1 + limit >>> 0; // ToUint32(limit) + while (match = separator.exec(str)) { + // `separator.lastIndex` is not reliable cross-browser + lastIndex = match.index + match[0].length; + if (lastIndex > lastLastIndex) { + output.push(str.slice(lastLastIndex, match.index)); + // Fix browsers whose `exec` methods don't consistently return `undefined` for + // nonparticipating capturing groups + if (!compliantExecNpcg && match.length > 1) { + match[0].replace(separator2, function() { + for (var i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === undef) { + match[i] = undef; + } + } + }); + } + if (match.length > 1 && match.index < str.length) { + Array.prototype.push.apply(output, match.slice(1)); + } + lastLength = match[0].length; + lastLastIndex = lastIndex; + if (output.length >= limit) { + break; + } + } + if (separator.lastIndex === match.index) { + separator.lastIndex++; // Avoid an infinite loop + } + } + if (lastLastIndex === str.length) { + if (lastLength || !separator.test("")) { + output.push(""); + } + } else { + output.push(str.slice(lastLastIndex)); + } + return output.length > limit ? output.slice(0, limit) : output; + }; + + return self; +})(); + +},{}],25:[function(require,module,exports){ + +// All SVG children elements, not in this list, should self-close + +module.exports = { + // http://www.w3.org/TR/SVG/intro.html#TermContainerElement + 'a': true, + 'defs': true, + 'glyph': true, + 'g': true, + 'marker': true, + 'mask': true, + 'missing-glyph': true, + 'pattern': true, + 'svg': true, + 'switch': true, + 'symbol': true, + + // http://www.w3.org/TR/SVG/intro.html#TermDescriptiveElement + 'desc': true, + 'metadata': true, + 'title': true +}; +},{}],26:[function(require,module,exports){ + +var init = require('./init'); + +module.exports = init([require('./modules/attributes'), require('./modules/style')]); +},{"./init":27,"./modules/attributes":28,"./modules/style":29}],27:[function(require,module,exports){ + +var parseSelector = require('./parse-selector'); +var VOID_ELEMENTS = require('./void-elements'); +var CONTAINER_ELEMENTS = require('./container-elements'); + +module.exports = function init(modules) { + function parse(data) { + return modules.reduce(function (arr, fn) { + arr.push(fn(data)); + return arr; + }, []).filter(function (result) { + return result !== ''; + }); + } + + return function renderToString(vnode) { + if (!vnode.sel && vnode.text) { + return vnode.text; + } + + vnode.data = vnode.data || {}; + + // Support thunks + if (typeof vnode.sel === 'string' && vnode.sel.slice(0, 5) === 'thunk') { + vnode = vnode.data.fn.apply(null, vnode.data.args); + } + + var tagName = parseSelector(vnode.sel).tagName; + var attributes = parse(vnode); + var svg = vnode.data.ns === 'http://www.w3.org/2000/svg'; + var tag = []; + + // Open tag + tag.push('<' + tagName); + if (attributes.length) { + tag.push(' ' + attributes.join(' ')); + } + if (svg && CONTAINER_ELEMENTS[tagName] !== true) { + tag.push(' /'); + } + tag.push('>'); + + // Close tag, if needed + if (VOID_ELEMENTS[tagName] !== true && !svg || svg && CONTAINER_ELEMENTS[tagName] === true) { + if (vnode.data.props && vnode.data.props.innerHTML) { + tag.push(vnode.data.props.innerHTML); + } else if (vnode.text) { + tag.push(vnode.text); + } else if (vnode.children) { + vnode.children.forEach(function (child) { + tag.push(renderToString(child)); + }); + } + tag.push(''); + } + + return tag.join(''); + }; +}; +},{"./container-elements":25,"./parse-selector":30,"./void-elements":31}],28:[function(require,module,exports){ + +var forOwn = require('lodash.forown'); +var escape = require('lodash.escape'); +var union = require('lodash.union'); + +var parseSelector = require('../parse-selector'); + +// data.attrs, data.props, data.class + +module.exports = function attributes(vnode) { + var selector = parseSelector(vnode.sel); + var parsedClasses = selector.className.split(' '); + + var attributes = []; + var classes = []; + var values = {}; + + if (selector.id) { + values.id = selector.id; + } + + setAttributes(vnode.data.props, values); + setAttributes(vnode.data.attrs, values); // `attrs` override `props`, not sure if this is good so + + if (vnode.data.class) { + // Omit `className` attribute if `class` is set on vnode + values.class = undefined; + } + forOwn(vnode.data.class, function (value, key) { + if (value === true) { + classes.push(key); + } + }); + classes = union(classes, values.class, parsedClasses).filter(function (x) { + return x !== ''; + }); + + if (classes.length) { + values.class = classes.join(' '); + } + + forOwn(values, function (value, key) { + attributes.push(value === true ? key : key + '="' + escape(value) + '"'); + }); + + return attributes.length ? attributes.join(' ') : ''; +}; + +function setAttributes(values, target) { + forOwn(values, function (value, key) { + if (key === 'htmlFor') { + target['for'] = value; + return; + } + if (key === 'className') { + target['class'] = value.split(' '); + return; + } + if (key === 'innerHTML') { + return; + } + target[key] = value; + }); +} +},{"../parse-selector":30,"lodash.escape":33,"lodash.forown":35,"lodash.union":47}],29:[function(require,module,exports){ +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var forOwn = require('lodash.forown'); +var escape = require('lodash.escape'); +var kebabCase = require('lodash.kebabcase'); + +// data.style + +module.exports = function style(vnode) { + var styles = []; + var style = vnode.data.style || {}; + + // merge in `delayed` properties + if (style.delayed) { + _extends(style, style.delayed); + } + + forOwn(style, function (value, key) { + // omit hook objects + if (typeof value === 'string') { + styles.push(kebabCase(key) + ': ' + escape(value)); + } + }); + + return styles.length ? 'style="' + styles.join('; ') + '"' : ''; +}; +},{"lodash.escape":33,"lodash.forown":35,"lodash.kebabcase":42}],30:[function(require,module,exports){ + +// https://github.com/Matt-Esch/virtual-dom/blob/master/virtual-hyperscript/parse-tag.js + +var split = require('browser-split'); + +var classIdSplit = /([\.#]?[a-zA-Z0-9\u007F-\uFFFF_:-]+)/; +var notClassId = /^\.|#/; + +module.exports = function parseSelector(selector, upper) { + selector = selector || ''; + var tagName; + var id = ''; + var classes = []; + + var tagParts = split(selector, classIdSplit); + + if (notClassId.test(tagParts[1]) || selector === '') { + tagName = 'div'; + } + + var part, type, i; + + for (i = 0; i < tagParts.length; i++) { + part = tagParts[i]; + + if (!part) { + continue; + } + + type = part.charAt(0); + + if (!tagName) { + tagName = part; + } else if (type === '.') { + classes.push(part.substring(1, part.length)); + } else if (type === '#') { + id = part.substring(1, part.length); + } + } + + return { + tagName: upper === true ? tagName.toUpperCase() : tagName, + id: id, + className: classes.join(' ') + }; +}; +},{"browser-split":32}],31:[function(require,module,exports){ + +// http://www.w3.org/html/wg/drafts/html/master/syntax.html#void-elements + +module.exports = { + area: true, + base: true, + br: true, + col: true, + embed: true, + hr: true, + img: true, + input: true, + keygen: true, + link: true, + meta: true, + param: true, + source: true, + track: true, + wbr: true +}; +},{}],32:[function(require,module,exports){ +arguments[4][24][0].apply(exports,arguments) +},{"dup":24}],33:[function(require,module,exports){ +/** + * lodash 3.2.0 (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright 2012-2016 The Dojo Foundation + * Based on Underscore.js 1.8.3 + * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var root = require('lodash._root'); + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** `Object#toString` result references. */ +var symbolTag = '[object Symbol]'; + +/** Used to match HTML entities and HTML characters. */ +var reUnescapedHtml = /[&<>"'`]/g, + reHasUnescapedHtml = RegExp(reUnescapedHtml.source); + +/** Used to map characters to HTML entities. */ +var htmlEscapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' +}; + +/** + * Used by `_.escape` to convert characters to HTML entities. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ +function escapeHtmlChar(chr) { + return htmlEscapes[chr]; +} + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** Built-in value references. */ +var Symbol = root.Symbol; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolToString = Symbol ? symbolProto.toString : undefined; + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && objectToString.call(value) == symbolTag); +} + +/** + * Converts `value` to a string if it's not one. An empty string is returned + * for `null` and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to process. + * @returns {string} Returns the string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ +function toString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (value == null) { + return ''; + } + if (isSymbol(value)) { + return Symbol ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +/** + * Converts the characters "&", "<", ">", '"', "'", and "\`" in `string` to + * their corresponding HTML entities. + * + * **Note:** No other characters are escaped. To escape additional + * characters use a third-party library like [_he_](https://mths.be/he). + * + * Though the ">" character is escaped for symmetry, characters like + * ">" and "/" don't need escaping in HTML and have no special meaning + * unless they're part of a tag or unquoted attribute value. + * See [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) + * (under "semi-related fun fact") for more details. + * + * Backticks are escaped because in IE < 9, they can break out of + * attribute values or HTML comments. See [#59](https://html5sec.org/#59), + * [#102](https://html5sec.org/#102), [#108](https://html5sec.org/#108), and + * [#133](https://html5sec.org/#133) of the [HTML5 Security Cheatsheet](https://html5sec.org/) + * for more details. + * + * When working with HTML you should always [quote attribute values](http://wonko.com/post/html-escaping) + * to reduce XSS vectors. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escape('fred, barney, & pebbles'); + * // => 'fred, barney, & pebbles' + */ +function escape(string) { + string = toString(string); + return (string && reHasUnescapedHtml.test(string)) + ? string.replace(reUnescapedHtml, escapeHtmlChar) + : string; +} + +module.exports = escape; + +},{"lodash._root":34}],34:[function(require,module,exports){ +(function (global){ +/** + * lodash 3.0.1 (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright 2012-2016 The Dojo Foundation + * Based on Underscore.js 1.8.3 + * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ + +/** Used to determine if values are of the language type `Object`. */ +var objectTypes = { + 'function': true, + 'object': true +}; + +/** Detect free variable `exports`. */ +var freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType) + ? exports + : undefined; + +/** Detect free variable `module`. */ +var freeModule = (objectTypes[typeof module] && module && !module.nodeType) + ? module + : undefined; + +/** Detect free variable `global` from Node.js. */ +var freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global); + +/** Detect free variable `self`. */ +var freeSelf = checkGlobal(objectTypes[typeof self] && self); + +/** Detect free variable `window`. */ +var freeWindow = checkGlobal(objectTypes[typeof window] && window); + +/** Detect `this` as the global object. */ +var thisGlobal = checkGlobal(objectTypes[typeof this] && this); + +/** + * Used as a reference to the global object. + * + * The `this` value is used if it's the global object to avoid Greasemonkey's + * restricted `window` object, otherwise the `window` object is used. + */ +var root = freeGlobal || + ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) || + freeSelf || thisGlobal || Function('return this')(); + +/** + * Checks if `value` is a global object. + * + * @private + * @param {*} value The value to check. + * @returns {null|Object} Returns `value` if it's a global object, else `null`. + */ +function checkGlobal(value) { + return (value && value.Object === Object) ? value : null; +} + +module.exports = root; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{}],35:[function(require,module,exports){ +/** + * lodash 3.0.2 (Custom Build) + * Build: `lodash modern modularize exports="npm" -o ./` + * Copyright 2012-2015 The Dojo Foundation + * Based on Underscore.js 1.8.3 + * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseFor = require('lodash._basefor'), + bindCallback = require('lodash._bindcallback'), + keys = require('lodash.keys'); + +/** + * The base implementation of `_.forOwn` without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ +function baseForOwn(object, iteratee) { + return baseFor(object, iteratee, keys); +} + +/** + * Creates a function for `_.forOwn` or `_.forOwnRight`. + * + * @private + * @param {Function} objectFunc The function to iterate over an object. + * @returns {Function} Returns the new each function. + */ +function createForOwn(objectFunc) { + return function(object, iteratee, thisArg) { + if (typeof iteratee != 'function' || thisArg !== undefined) { + iteratee = bindCallback(iteratee, thisArg, 3); + } + return objectFunc(object, iteratee); + }; +} + +/** + * Iterates over own enumerable properties of an object invoking `iteratee` + * for each property. The `iteratee` is bound to `thisArg` and invoked with + * three arguments: (value, key, object). Iteratee functions may exit iteration + * early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns `object`. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => logs 'a' and 'b' (iteration order is not guaranteed) + */ +var forOwn = createForOwn(baseForOwn); + +module.exports = forOwn; + +},{"lodash._basefor":36,"lodash._bindcallback":37,"lodash.keys":38}],36:[function(require,module,exports){ +/** + * lodash 3.0.3 (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright 2012-2016 The Dojo Foundation + * Based on Underscore.js 1.8.3 + * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ + +/** + * The base implementation of `baseForIn` and `baseForOwn` which iterates + * over `object` properties returned by `keysFunc` invoking `iteratee` for + * each property. Iteratee functions may exit iteration early by explicitly + * returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ +var baseFor = createBaseFor(); + +/** + * Creates a base function for methods like `_.forIn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; +} + +module.exports = baseFor; + +},{}],37:[function(require,module,exports){ +/** + * lodash 3.0.1 (Custom Build) + * Build: `lodash modern modularize exports="npm" -o ./` + * Copyright 2012-2015 The Dojo Foundation + * Based on Underscore.js 1.8.3 + * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ + +/** + * A specialized version of `baseCallback` which only supports `this` binding + * and specifying the number of arguments to provide to `func`. + * + * @private + * @param {Function} func The function to bind. + * @param {*} thisArg The `this` binding of `func`. + * @param {number} [argCount] The number of arguments to provide to `func`. + * @returns {Function} Returns the callback. + */ +function bindCallback(func, thisArg, argCount) { + if (typeof func != 'function') { + return identity; + } + if (thisArg === undefined) { + return func; + } + switch (argCount) { + case 1: return function(value) { + return func.call(thisArg, value); + }; + case 3: return function(value, index, collection) { + return func.call(thisArg, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(thisArg, accumulator, value, index, collection); + }; + case 5: return function(value, other, key, object, source) { + return func.call(thisArg, value, other, key, object, source); + }; + } + return function() { + return func.apply(thisArg, arguments); + }; +} + +/** + * This method returns the first argument provided to it. + * + * @static + * @memberOf _ + * @category Utility + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'user': 'fred' }; + * + * _.identity(object) === object; + * // => true + */ +function identity(value) { + return value; +} + +module.exports = bindCallback; + +},{}],38:[function(require,module,exports){ +/** + * lodash 3.1.2 (Custom Build) + * Build: `lodash modern modularize exports="npm" -o ./` + * Copyright 2012-2015 The Dojo Foundation + * Based on Underscore.js 1.8.3 + * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var getNative = require('lodash._getnative'), + isArguments = require('lodash.isarguments'), + isArray = require('lodash.isarray'); + +/** Used to detect unsigned integer values. */ +var reIsUint = /^\d+$/; + +/** Used for native method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/* Native method references for those with the same name as other `lodash` methods. */ +var nativeKeys = getNative(Object, 'keys'); + +/** + * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer) + * of an array-like value. + */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new function. + */ +function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; +} + +/** + * Gets the "length" property value of `object`. + * + * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) + * that affects Safari on at least iOS 8.1-8.3 ARM64. + * + * @private + * @param {Object} object The object to query. + * @returns {*} Returns the "length" value. + */ +var getLength = baseProperty('length'); + +/** + * Checks if `value` is array-like. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + */ +function isArrayLike(value) { + return value != null && isLength(getLength(value)); +} + +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1; + length = length == null ? MAX_SAFE_INTEGER : length; + return value > -1 && value % 1 == 0 && value < length; +} + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + */ +function isLength(value) { + return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +/** + * A fallback implementation of `Object.keys` which creates an array of the + * own enumerable property names of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function shimKeys(object) { + var props = keysIn(object), + propsLength = props.length, + length = propsLength && object.length; + + var allowIndexes = !!length && isLength(length) && + (isArray(object) || isArguments(object)); + + var index = -1, + result = []; + + while (++index < propsLength) { + var key = props[index]; + if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) { + result.push(key); + } + } + return result; +} + +/** + * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. + * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(1); + * // => false + */ +function isObject(value) { + // Avoid a V8 JIT bug in Chrome 19-20. + // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys) + * for more details. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ +var keys = !nativeKeys ? shimKeys : function(object) { + var Ctor = object == null ? undefined : object.constructor; + if ((typeof Ctor == 'function' && Ctor.prototype === object) || + (typeof object != 'function' && isArrayLike(object))) { + return shimKeys(object); + } + return isObject(object) ? nativeKeys(object) : []; +}; + +/** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ +function keysIn(object) { + if (object == null) { + return []; + } + if (!isObject(object)) { + object = Object(object); + } + var length = object.length; + length = (length && isLength(length) && + (isArray(object) || isArguments(object)) && length) || 0; + + var Ctor = object.constructor, + index = -1, + isProto = typeof Ctor == 'function' && Ctor.prototype === object, + result = Array(length), + skipIndexes = length > 0; + + while (++index < length) { + result[index] = (index + ''); + } + for (var key in object) { + if (!(skipIndexes && isIndex(key, length)) && + !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + return result; +} + +module.exports = keys; + +},{"lodash._getnative":39,"lodash.isarguments":40,"lodash.isarray":41}],39:[function(require,module,exports){ +/** + * lodash 3.9.1 (Custom Build) + * Build: `lodash modern modularize exports="npm" -o ./` + * Copyright 2012-2015 The Dojo Foundation + * Based on Underscore.js 1.8.3 + * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ + +/** `Object#toString` result references. */ +var funcTag = '[object Function]'; + +/** Used to detect host constructors (Safari > 5). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; + +/** + * Checks if `value` is object-like. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** Used for native method references. */ +var objectProto = Object.prototype; + +/** Used to resolve the decompiled source of functions. */ +var fnToString = Function.prototype.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) + * of values. + */ +var objToString = objectProto.toString; + +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); + +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = object == null ? undefined : object[key]; + return isNative(value) ? value : undefined; +} + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in older versions of Chrome and Safari which return 'function' for regexes + // and Safari 8 equivalents which return 'object' for typed array constructors. + return isObject(value) && objToString.call(value) == funcTag; +} + +/** + * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. + * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(1); + * // => false + */ +function isObject(value) { + // Avoid a V8 JIT bug in Chrome 19-20. + // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +/** + * Checks if `value` is a native function. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, else `false`. + * @example + * + * _.isNative(Array.prototype.push); + * // => true + * + * _.isNative(_); + * // => false + */ +function isNative(value) { + if (value == null) { + return false; + } + if (isFunction(value)) { + return reIsNative.test(fnToString.call(value)); + } + return isObjectLike(value) && reIsHostCtor.test(value); +} + +module.exports = getNative; + +},{}],40:[function(require,module,exports){ +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]'; + +/** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; +} + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; + +/** + * Gets the "length" property value of `object`. + * + * **Note:** This function is used to avoid a + * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects + * Safari on at least iOS 8.1-8.3 ARM64. + * + * @private + * @param {Object} object The object to query. + * @returns {*} Returns the "length" value. + */ +var getLength = baseProperty('length'); + +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +function isArguments(value) { + // Safari 8.1 incorrectly makes `arguments.callee` enumerable in strict mode. + return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && + (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); +} + +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(getLength(value)) && !isFunction(value); +} + +/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ +function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); +} + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 8 which returns 'object' for typed array and weak map constructors, + // and PhantomJS 1.9 which returns 'function' for `NodeList` instances. + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; +} + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This function is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, + * else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +module.exports = isArguments; + +},{}],41:[function(require,module,exports){ +/** + * lodash 3.0.4 (Custom Build) + * Build: `lodash modern modularize exports="npm" -o ./` + * Copyright 2012-2015 The Dojo Foundation + * Based on Underscore.js 1.8.3 + * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ + +/** `Object#toString` result references. */ +var arrayTag = '[object Array]', + funcTag = '[object Function]'; + +/** Used to detect host constructors (Safari > 5). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; + +/** + * Checks if `value` is object-like. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** Used for native method references. */ +var objectProto = Object.prototype; + +/** Used to resolve the decompiled source of functions. */ +var fnToString = Function.prototype.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) + * of values. + */ +var objToString = objectProto.toString; + +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); + +/* Native method references for those with the same name as other `lodash` methods. */ +var nativeIsArray = getNative(Array, 'isArray'); + +/** + * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer) + * of an array-like value. + */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = object == null ? undefined : object[key]; + return isNative(value) ? value : undefined; +} + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + */ +function isLength(value) { + return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(function() { return arguments; }()); + * // => false + */ +var isArray = nativeIsArray || function(value) { + return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag; +}; + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in older versions of Chrome and Safari which return 'function' for regexes + // and Safari 8 equivalents which return 'object' for typed array constructors. + return isObject(value) && objToString.call(value) == funcTag; +} + +/** + * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. + * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(1); + * // => false + */ +function isObject(value) { + // Avoid a V8 JIT bug in Chrome 19-20. + // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +/** + * Checks if `value` is a native function. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, else `false`. + * @example + * + * _.isNative(Array.prototype.push); + * // => true + * + * _.isNative(_); + * // => false + */ +function isNative(value) { + if (value == null) { + return false; + } + if (isFunction(value)) { + return reIsNative.test(fnToString.call(value)); + } + return isObjectLike(value) && reIsHostCtor.test(value); +} + +module.exports = isArray; + +},{}],42:[function(require,module,exports){ +/** + * lodash 3.1.1 (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright 2012-2016 The Dojo Foundation + * Based on Underscore.js 1.8.3 + * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var deburr = require('lodash.deburr'), + words = require('lodash.words'); + +/** + * A specialized version of `_.reduce` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the first element of `array` as the initial value. + * @returns {*} Returns the accumulated value. + */ +function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, + length = array.length; + + if (initAccum && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; +} + +/** + * Creates a function like `_.camelCase`. + * + * @private + * @param {Function} callback The function to combine each word. + * @returns {Function} Returns the new compounder function. + */ +function createCompounder(callback) { + return function(string) { + return arrayReduce(words(deburr(string)), callback, ''); + }; +} + +/** + * Converts `string` to [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the kebab cased string. + * @example + * + * _.kebabCase('Foo Bar'); + * // => 'foo-bar' + * + * _.kebabCase('fooBar'); + * // => 'foo-bar' + * + * _.kebabCase('__foo_bar__'); + * // => 'foo-bar' + */ +var kebabCase = createCompounder(function(result, word, index) { + return result + (index ? '-' : '') + word.toLowerCase(); +}); + +module.exports = kebabCase; + +},{"lodash.deburr":43,"lodash.words":45}],43:[function(require,module,exports){ +/** + * lodash 3.2.0 (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright 2012-2016 The Dojo Foundation + * Based on Underscore.js 1.8.3 + * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var root = require('lodash._root'); + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** `Object#toString` result references. */ +var symbolTag = '[object Symbol]'; + +/** Used to match latin-1 supplementary letters (excluding mathematical operators). */ +var reLatin1 = /[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g; + +/** Used to compose unicode character classes. */ +var rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23', + rsComboSymbolsRange = '\\u20d0-\\u20f0'; + +/** Used to compose unicode capture groups. */ +var rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']'; + +/** + * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and + * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). + */ +var reComboMark = RegExp(rsCombo, 'g'); + +/** Used to map latin-1 supplementary letters to basic latin letters. */ +var deburredLetters = { + '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', + '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', + '\xc7': 'C', '\xe7': 'c', + '\xd0': 'D', '\xf0': 'd', + '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', + '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', + '\xcC': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', + '\xeC': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', + '\xd1': 'N', '\xf1': 'n', + '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', + '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', + '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', + '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', + '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', + '\xc6': 'Ae', '\xe6': 'ae', + '\xde': 'Th', '\xfe': 'th', + '\xdf': 'ss' +}; + +/** + * Used by `_.deburr` to convert latin-1 supplementary letters to basic latin letters. + * + * @private + * @param {string} letter The matched letter to deburr. + * @returns {string} Returns the deburred letter. + */ +function deburrLetter(letter) { + return deburredLetters[letter]; +} + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** Built-in value references. */ +var Symbol = root.Symbol; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolToString = Symbol ? symbolProto.toString : undefined; + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && objectToString.call(value) == symbolTag); +} + +/** + * Converts `value` to a string if it's not one. An empty string is returned + * for `null` and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to process. + * @returns {string} Returns the string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ +function toString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (value == null) { + return ''; + } + if (isSymbol(value)) { + return Symbol ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +/** + * Deburrs `string` by converting [latin-1 supplementary letters](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) + * to basic latin letters and removing [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to deburr. + * @returns {string} Returns the deburred string. + * @example + * + * _.deburr('déjà vu'); + * // => 'deja vu' + */ +function deburr(string) { + string = toString(string); + return string && string.replace(reLatin1, deburrLetter).replace(reComboMark, ''); +} + +module.exports = deburr; + +},{"lodash._root":44}],44:[function(require,module,exports){ +(function (global){ +/** + * lodash 3.0.1 (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright 2012-2016 The Dojo Foundation + * Based on Underscore.js 1.8.3 + * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ + +/** Used to determine if values are of the language type `Object`. */ +var objectTypes = { + 'function': true, + 'object': true +}; + +/** Detect free variable `exports`. */ +var freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType) + ? exports + : undefined; + +/** Detect free variable `module`. */ +var freeModule = (objectTypes[typeof module] && module && !module.nodeType) + ? module + : undefined; + +/** Detect free variable `global` from Node.js. */ +var freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global); + +/** Detect free variable `self`. */ +var freeSelf = checkGlobal(objectTypes[typeof self] && self); + +/** Detect free variable `window`. */ +var freeWindow = checkGlobal(objectTypes[typeof window] && window); + +/** Detect `this` as the global object. */ +var thisGlobal = checkGlobal(objectTypes[typeof this] && this); + +/** + * Used as a reference to the global object. + * + * The `this` value is used if it's the global object to avoid Greasemonkey's + * restricted `window` object, otherwise the `window` object is used. + */ +var root = freeGlobal || + ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) || + freeSelf || thisGlobal || Function('return this')(); + +/** + * Checks if `value` is a global object. + * + * @private + * @param {*} value The value to check. + * @returns {null|Object} Returns `value` if it's a global object, else `null`. + */ +function checkGlobal(value) { + return (value && value.Object === Object) ? value : null; +} + +module.exports = root; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{}],45:[function(require,module,exports){ +/** + * lodash 3.2.0 (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright 2012-2016 The Dojo Foundation + * Based on Underscore.js 1.8.3 + * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var root = require('lodash._root'); + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** `Object#toString` result references. */ +var symbolTag = '[object Symbol]'; + +/** Used to compose unicode character classes. */ +var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23', + rsComboSymbolsRange = '\\u20d0-\\u20f0', + rsDingbatRange = '\\u2700-\\u27bf', + rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', + rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', + rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', + rsQuoteRange = '\\u2018\\u2019\\u201c\\u201d', + rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', + rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', + rsVarRange = '\\ufe0e\\ufe0f', + rsBreakRange = rsMathOpRange + rsNonCharRange + rsQuoteRange + rsSpaceRange; + +/** Used to compose unicode capture groups. */ +var rsBreak = '[' + rsBreakRange + ']', + rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']', + rsDigits = '\\d+', + rsDingbat = '[' + rsDingbatRange + ']', + rsLower = '[' + rsLowerRange + ']', + rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', + rsNonAstral = '[^' + rsAstralRange + ']', + rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', + rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', + rsUpper = '[' + rsUpperRange + ']', + rsZWJ = '\\u200d'; + +/** Used to compose unicode regexes. */ +var rsLowerMisc = '(?:' + rsLower + '|' + rsMisc + ')', + rsUpperMisc = '(?:' + rsUpper + '|' + rsMisc + ')', + reOptMod = rsModifier + '?', + rsOptVar = '[' + rsVarRange + ']?', + rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', + rsSeq = rsOptVar + reOptMod + rsOptJoin, + rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq; + +/** Used to match non-compound words composed of alphanumeric characters. */ +var reBasicWord = /[a-zA-Z0-9]+/g; + +/** Used to match complex or compound words. */ +var reComplexWord = RegExp([ + rsUpper + '?' + rsLower + '+(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', + rsUpperMisc + '+(?=' + [rsBreak, rsUpper + rsLowerMisc, '$'].join('|') + ')', + rsUpper + '?' + rsLowerMisc + '+', + rsUpper + '+', + rsDigits, + rsEmoji +].join('|'), 'g'); + +/** Used to detect strings that need a more robust regexp to match words. */ +var reHasComplexWord = /[a-z][A-Z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** Built-in value references. */ +var Symbol = root.Symbol; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolToString = Symbol ? symbolProto.toString : undefined; + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && objectToString.call(value) == symbolTag); +} + +/** + * Converts `value` to a string if it's not one. An empty string is returned + * for `null` and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to process. + * @returns {string} Returns the string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ +function toString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (value == null) { + return ''; + } + if (isSymbol(value)) { + return Symbol ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +/** + * Splits `string` into an array of its words. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to inspect. + * @param {RegExp|string} [pattern] The pattern to match words. + * @param- {Object} [guard] Enables use as an iteratee for functions like `_.map`. + * @returns {Array} Returns the words of `string`. + * @example + * + * _.words('fred, barney, & pebbles'); + * // => ['fred', 'barney', 'pebbles'] + * + * _.words('fred, barney, & pebbles', /[^, ]+/g); + * // => ['fred', 'barney', '&', 'pebbles'] + */ +function words(string, pattern, guard) { + string = toString(string); + pattern = guard ? undefined : pattern; + + if (pattern === undefined) { + pattern = reHasComplexWord.test(string) ? reComplexWord : reBasicWord; + } + return string.match(pattern) || []; +} + +module.exports = words; + +},{"lodash._root":46}],46:[function(require,module,exports){ +(function (global){ +/** + * lodash 3.0.1 (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright 2012-2016 The Dojo Foundation + * Based on Underscore.js 1.8.3 + * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ + +/** Used to determine if values are of the language type `Object`. */ +var objectTypes = { + 'function': true, + 'object': true +}; + +/** Detect free variable `exports`. */ +var freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType) + ? exports + : undefined; + +/** Detect free variable `module`. */ +var freeModule = (objectTypes[typeof module] && module && !module.nodeType) + ? module + : undefined; + +/** Detect free variable `global` from Node.js. */ +var freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global); + +/** Detect free variable `self`. */ +var freeSelf = checkGlobal(objectTypes[typeof self] && self); + +/** Detect free variable `window`. */ +var freeWindow = checkGlobal(objectTypes[typeof window] && window); + +/** Detect `this` as the global object. */ +var thisGlobal = checkGlobal(objectTypes[typeof this] && this); + +/** + * Used as a reference to the global object. + * + * The `this` value is used if it's the global object to avoid Greasemonkey's + * restricted `window` object, otherwise the `window` object is used. + */ +var root = freeGlobal || + ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) || + freeSelf || thisGlobal || Function('return this')(); + +/** + * Checks if `value` is a global object. + * + * @private + * @param {*} value The value to check. + * @returns {null|Object} Returns `value` if it's a global object, else `null`. + */ +function checkGlobal(value) { + return (value && value.Object === Object) ? value : null; +} + +module.exports = root; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{}],47:[function(require,module,exports){ +/** + * lodash 3.1.0 (Custom Build) + * Build: `lodash modern modularize exports="npm" -o ./` + * Copyright 2012-2015 The Dojo Foundation + * Based on Underscore.js 1.8.2 + * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseFlatten = require('lodash._baseflatten'), + baseUniq = require('lodash._baseuniq'), + restParam = require('lodash.restparam'); + +/** + * Creates an array of unique values, in order, of the provided arrays using + * `SameValueZero` for equality comparisons. + * + * **Note:** [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * comparisons are like strict equality comparisons, e.g. `===`, except that + * `NaN` matches `NaN`. + * + * @static + * @memberOf _ + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.union([1, 2], [4, 2], [2, 1]); + * // => [1, 2, 4] + */ +var union = restParam(function(arrays) { + return baseUniq(baseFlatten(arrays, false, true)); +}); + +module.exports = union; + +},{"lodash._baseflatten":48,"lodash._baseuniq":51,"lodash.restparam":56}],48:[function(require,module,exports){ +/** + * lodash 3.1.4 (Custom Build) + * Build: `lodash modern modularize exports="npm" -o ./` + * Copyright 2012-2015 The Dojo Foundation + * Based on Underscore.js 1.8.3 + * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var isArguments = require('lodash.isarguments'), + isArray = require('lodash.isarray'); + +/** + * Checks if `value` is object-like. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** + * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer) + * of an array-like value. + */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ +function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; +} + +/** + * The base implementation of `_.flatten` with added support for restricting + * flattening and specifying the start index. + * + * @private + * @param {Array} array The array to flatten. + * @param {boolean} [isDeep] Specify a deep flatten. + * @param {boolean} [isStrict] Restrict flattening to arrays-like objects. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. + */ +function baseFlatten(array, isDeep, isStrict, result) { + result || (result = []); + + var index = -1, + length = array.length; + + while (++index < length) { + var value = array[index]; + if (isObjectLike(value) && isArrayLike(value) && + (isStrict || isArray(value) || isArguments(value))) { + if (isDeep) { + // Recursively flatten arrays (susceptible to call stack limits). + baseFlatten(value, isDeep, isStrict, result); + } else { + arrayPush(result, value); + } + } else if (!isStrict) { + result[result.length] = value; + } + } + return result; +} + +/** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new function. + */ +function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; +} + +/** + * Gets the "length" property value of `object`. + * + * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) + * that affects Safari on at least iOS 8.1-8.3 ARM64. + * + * @private + * @param {Object} object The object to query. + * @returns {*} Returns the "length" value. + */ +var getLength = baseProperty('length'); + +/** + * Checks if `value` is array-like. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + */ +function isArrayLike(value) { + return value != null && isLength(getLength(value)); +} + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + */ +function isLength(value) { + return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +module.exports = baseFlatten; + +},{"lodash.isarguments":49,"lodash.isarray":50}],49:[function(require,module,exports){ +arguments[4][40][0].apply(exports,arguments) +},{"dup":40}],50:[function(require,module,exports){ +arguments[4][41][0].apply(exports,arguments) +},{"dup":41}],51:[function(require,module,exports){ +/** + * lodash 3.0.3 (Custom Build) + * Build: `lodash modern modularize exports="npm" -o ./` + * Copyright 2012-2015 The Dojo Foundation + * Based on Underscore.js 1.8.3 + * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var baseIndexOf = require('lodash._baseindexof'), + cacheIndexOf = require('lodash._cacheindexof'), + createCache = require('lodash._createcache'); + +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; + +/** + * The base implementation of `_.uniq` without support for callback shorthands + * and `this` binding. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The function invoked per iteration. + * @returns {Array} Returns the new duplicate-value-free array. + */ +function baseUniq(array, iteratee) { + var index = -1, + indexOf = baseIndexOf, + length = array.length, + isCommon = true, + isLarge = isCommon && length >= LARGE_ARRAY_SIZE, + seen = isLarge ? createCache() : null, + result = []; + + if (seen) { + indexOf = cacheIndexOf; + isCommon = false; + } else { + isLarge = false; + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value, index, array) : value; + + if (isCommon && value === value) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); + } + else if (indexOf(seen, computed, 0) < 0) { + if (iteratee || isLarge) { + seen.push(computed); + } + result.push(value); + } + } + return result; +} + +module.exports = baseUniq; + +},{"lodash._baseindexof":52,"lodash._cacheindexof":53,"lodash._createcache":54}],52:[function(require,module,exports){ +/** + * lodash 3.1.0 (Custom Build) + * Build: `lodash modern modularize exports="npm" -o ./` + * Copyright 2012-2015 The Dojo Foundation + * Based on Underscore.js 1.8.2 + * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ + +/** + * The base implementation of `_.indexOf` without support for binary searches. + * + * @private + * @param {Array} array The array to search. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseIndexOf(array, value, fromIndex) { + if (value !== value) { + return indexOfNaN(array, fromIndex); + } + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; +} + +/** + * Gets the index at which the first occurrence of `NaN` is found in `array`. + * If `fromRight` is provided elements of `array` are iterated from right to left. + * + * @private + * @param {Array} array The array to search. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched `NaN`, else `-1`. + */ +function indexOfNaN(array, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 0 : -1); + + while ((fromRight ? index-- : ++index < length)) { + var other = array[index]; + if (other !== other) { + return index; + } + } + return -1; +} + +module.exports = baseIndexOf; + +},{}],53:[function(require,module,exports){ +/** + * lodash 3.0.2 (Custom Build) + * Build: `lodash modern modularize exports="npm" -o ./` + * Copyright 2012-2015 The Dojo Foundation + * Based on Underscore.js 1.8.3 + * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ + +/** + * Checks if `value` is in `cache` mimicking the return signature of + * `_.indexOf` by returning `0` if the value is found, else `-1`. + * + * @private + * @param {Object} cache The cache to search. + * @param {*} value The value to search for. + * @returns {number} Returns `0` if `value` is found, else `-1`. + */ +function cacheIndexOf(cache, value) { + var data = cache.data, + result = (typeof value == 'string' || isObject(value)) ? data.set.has(value) : data.hash[value]; + + return result ? 0 : -1; +} + +/** + * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. + * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(1); + * // => false + */ +function isObject(value) { + // Avoid a V8 JIT bug in Chrome 19-20. + // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +module.exports = cacheIndexOf; + +},{}],54:[function(require,module,exports){ +(function (global){ +/** + * lodash 3.1.2 (Custom Build) + * Build: `lodash modern modularize exports="npm" -o ./` + * Copyright 2012-2015 The Dojo Foundation + * Based on Underscore.js 1.8.3 + * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +var getNative = require('lodash._getnative'); + +/** Native method references. */ +var Set = getNative(global, 'Set'); + +/* Native method references for those with the same name as other `lodash` methods. */ +var nativeCreate = getNative(Object, 'create'); + +/** + * + * Creates a cache object to store unique values. + * + * @private + * @param {Array} [values] The values to cache. + */ +function SetCache(values) { + var length = values ? values.length : 0; + + this.data = { 'hash': nativeCreate(null), 'set': new Set }; + while (length--) { + this.push(values[length]); + } +} + +/** + * Adds `value` to the cache. + * + * @private + * @name push + * @memberOf SetCache + * @param {*} value The value to cache. + */ +function cachePush(value) { + var data = this.data; + if (typeof value == 'string' || isObject(value)) { + data.set.add(value); + } else { + data.hash[value] = true; + } +} + +/** + * Creates a `Set` cache object to optimize linear searches of large arrays. + * + * @private + * @param {Array} [values] The values to cache. + * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`. + */ +function createCache(values) { + return (nativeCreate && Set) ? new SetCache(values) : null; +} + +/** + * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. + * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(1); + * // => false + */ +function isObject(value) { + // Avoid a V8 JIT bug in Chrome 19-20. + // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +// Add functions to the `Set` cache. +SetCache.prototype.push = cachePush; + +module.exports = createCache; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{"lodash._getnative":55}],55:[function(require,module,exports){ +arguments[4][39][0].apply(exports,arguments) +},{"dup":39}],56:[function(require,module,exports){ +/** + * lodash 3.6.1 (Custom Build) + * Build: `lodash modern modularize exports="npm" -o ./` + * Copyright 2012-2015 The Dojo Foundation + * Based on Underscore.js 1.8.3 + * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ + +/** Used as the `TypeError` message for "Functions" methods. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/* Native method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * Creates a function that invokes `func` with the `this` binding of the + * created function and arguments from `start` and beyond provided as an array. + * + * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters). + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.restParam(function(what, names) { + * return what + ' ' + _.initial(names).join(', ') + + * (_.size(names) > 1 ? ', & ' : '') + _.last(names); + * }); + * + * say('hello', 'fred', 'barney', 'pebbles'); + * // => 'hello fred, barney, & pebbles' + */ +function restParam(func, start) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + rest = Array(length); + + while (++index < length) { + rest[index] = args[start + index]; + } + switch (start) { + case 0: return func.call(this, rest); + case 1: return func.call(this, args[0], rest); + case 2: return func.call(this, args[0], args[1], rest); + } + var otherArgs = Array(start + 1); + index = -1; + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = rest; + return func.apply(this, otherArgs); + }; +} + +module.exports = restParam; + +},{}],57:[function(require,module,exports){ +var VNode = require('./vnode'); +var is = require('./is'); + +function addNS(data, children) { + data.ns = 'http://www.w3.org/2000/svg'; + if (children !== undefined) { + for (var i = 0; i < children.length; ++i) { + addNS(children[i].data, children[i].children); + } + } +} + +module.exports = function h(sel, b, c) { + var data = {}, children, text, i; + if (arguments.length === 3) { + data = b; + if (is.array(c)) { children = c; } + else if (is.primitive(c)) { text = c; } + } else if (arguments.length === 2) { + if (is.array(b)) { children = b; } + else if (is.primitive(b)) { text = b; } + else { data = b; } + } + if (is.array(children)) { + for (i = 0; i < children.length; ++i) { + if (is.primitive(children[i])) children[i] = VNode(undefined, undefined, undefined, children[i]); + } + } + if (sel[0] === 's' && sel[1] === 'v' && sel[2] === 'g') { + addNS(data, children); + } + return VNode(sel, data, children, text, undefined); +}; + +},{"./is":59,"./vnode":68}],58:[function(require,module,exports){ +function createElement(tagName){ + return document.createElement(tagName); +} + +function createElementNS(namespaceURI, qualifiedName){ + return document.createElementNS(namespaceURI, qualifiedName); +} + +function createTextNode(text){ + return document.createTextNode(text); +} + + +function insertBefore(parentNode, newNode, referenceNode){ + parentNode.insertBefore(newNode, referenceNode); +} + + +function removeChild(node, child){ + node.removeChild(child); +} + +function appendChild(node, child){ + node.appendChild(child); +} + +function parentNode(node){ + return node.parentElement; +} + +function nextSibling(node){ + return node.nextSibling; +} + +function tagName(node){ + return node.tagName; +} + +function setTextContent(node, text){ + node.textContent = text; +} + +module.exports = { + createElement: createElement, + createElementNS: createElementNS, + createTextNode: createTextNode, + appendChild: appendChild, + removeChild: removeChild, + insertBefore: insertBefore, + parentNode: parentNode, + nextSibling: nextSibling, + tagName: tagName, + setTextContent: setTextContent +}; + +},{}],59:[function(require,module,exports){ +module.exports = { + array: Array.isArray, + primitive: function(s) { return typeof s === 'string' || typeof s === 'number'; }, +}; + +},{}],60:[function(require,module,exports){ +var booleanAttrs = ["allowfullscreen", "async", "autofocus", "autoplay", "checked", "compact", "controls", "declare", + "default", "defaultchecked", "defaultmuted", "defaultselected", "defer", "disabled", "draggable", + "enabled", "formnovalidate", "hidden", "indeterminate", "inert", "ismap", "itemscope", "loop", "multiple", + "muted", "nohref", "noresize", "noshade", "novalidate", "nowrap", "open", "pauseonexit", "readonly", + "required", "reversed", "scoped", "seamless", "selected", "sortable", "spellcheck", "translate", + "truespeed", "typemustmatch", "visible"]; + +var booleanAttrsDict = {}; +for(var i=0, len = booleanAttrs.length; i < len; i++) { + booleanAttrsDict[booleanAttrs[i]] = true; +} + +function updateAttrs(oldVnode, vnode) { + var key, cur, old, elm = vnode.elm, + oldAttrs = oldVnode.data.attrs || {}, attrs = vnode.data.attrs || {}; + + // update modified attributes, add new attributes + for (key in attrs) { + cur = attrs[key]; + old = oldAttrs[key]; + if (old !== cur) { + // TODO: add support to namespaced attributes (setAttributeNS) + if(!cur && booleanAttrsDict[key]) + elm.removeAttribute(key); + else + elm.setAttribute(key, cur); + } + } + //remove removed attributes + // use `in` operator since the previous `for` iteration uses it (.i.e. add even attributes with undefined value) + // the other option is to remove all attributes with value == undefined + for (key in oldAttrs) { + if (!(key in attrs)) { + elm.removeAttribute(key); + } + } +} + +module.exports = {create: updateAttrs, update: updateAttrs}; + +},{}],61:[function(require,module,exports){ +function updateClass(oldVnode, vnode) { + var cur, name, elm = vnode.elm, + oldClass = oldVnode.data.class || {}, + klass = vnode.data.class || {}; + for (name in oldClass) { + if (!klass[name]) { + elm.classList.remove(name); + } + } + for (name in klass) { + cur = klass[name]; + if (cur !== oldClass[name]) { + elm.classList[cur ? 'add' : 'remove'](name); + } + } +} + +module.exports = {create: updateClass, update: updateClass}; + +},{}],62:[function(require,module,exports){ +var is = require('../is'); + +function arrInvoker(arr) { + return function() { + // Special case when length is two, for performance + arr.length === 2 ? arr[0](arr[1]) : arr[0].apply(undefined, arr.slice(1)); + }; +} + +function fnInvoker(o) { + return function(ev) { o.fn(ev); }; +} + +function updateEventListeners(oldVnode, vnode) { + var name, cur, old, elm = vnode.elm, + oldOn = oldVnode.data.on || {}, on = vnode.data.on; + if (!on) return; + for (name in on) { + cur = on[name]; + old = oldOn[name]; + if (old === undefined) { + if (is.array(cur)) { + elm.addEventListener(name, arrInvoker(cur)); + } else { + cur = {fn: cur}; + on[name] = cur; + elm.addEventListener(name, fnInvoker(cur)); + } + } else if (is.array(old)) { + // Deliberately modify old array since it's captured in closure created with `arrInvoker` + old.length = cur.length; + for (var i = 0; i < old.length; ++i) old[i] = cur[i]; + on[name] = old; + } else { + old.fn = cur; + on[name] = old; + } + } +} + +module.exports = {create: updateEventListeners, update: updateEventListeners}; + +},{"../is":59}],63:[function(require,module,exports){ +var raf = (typeof window !== 'undefined' && window.requestAnimationFrame) || setTimeout; +var nextFrame = function(fn) { raf(function() { raf(fn); }); }; + +function setNextFrame(obj, prop, val) { + nextFrame(function() { obj[prop] = val; }); +} + +function getTextNodeRect(textNode) { + var rect; + if (document.createRange) { + var range = document.createRange(); + range.selectNodeContents(textNode); + if (range.getBoundingClientRect) { + rect = range.getBoundingClientRect(); + } + } + return rect; +} + +function calcTransformOrigin(isTextNode, textRect, boundingRect) { + if (isTextNode) { + if (textRect) { + //calculate pixels to center of text from left edge of bounding box + var relativeCenterX = textRect.left + textRect.width/2 - boundingRect.left; + var relativeCenterY = textRect.top + textRect.height/2 - boundingRect.top; + return relativeCenterX + 'px ' + relativeCenterY + 'px'; + } + } + return '0 0'; //top left +} + +function getTextDx(oldTextRect, newTextRect) { + if (oldTextRect && newTextRect) { + return ((oldTextRect.left + oldTextRect.width/2) - (newTextRect.left + newTextRect.width/2)); + } + return 0; +} +function getTextDy(oldTextRect, newTextRect) { + if (oldTextRect && newTextRect) { + return ((oldTextRect.top + oldTextRect.height/2) - (newTextRect.top + newTextRect.height/2)); + } + return 0; +} + +function isTextElement(elm) { + return elm.childNodes.length === 1 && elm.childNodes[0].nodeType === 3; +} + +var removed, created; + +function pre(oldVnode, vnode) { + removed = {}; + created = []; +} + +function create(oldVnode, vnode) { + var hero = vnode.data.hero; + if (hero && hero.id) { + created.push(hero.id); + created.push(vnode); + } +} + +function destroy(vnode) { + var hero = vnode.data.hero; + if (hero && hero.id) { + var elm = vnode.elm; + vnode.isTextNode = isTextElement(elm); //is this a text node? + vnode.boundingRect = elm.getBoundingClientRect(); //save the bounding rectangle to a new property on the vnode + vnode.textRect = vnode.isTextNode ? getTextNodeRect(elm.childNodes[0]) : null; //save bounding rect of inner text node + var computedStyle = window.getComputedStyle(elm, null); //get current styles (includes inherited properties) + vnode.savedStyle = JSON.parse(JSON.stringify(computedStyle)); //save a copy of computed style values + removed[hero.id] = vnode; + } +} + +function post() { + var i, id, newElm, oldVnode, oldElm, hRatio, wRatio, + oldRect, newRect, dx, dy, origTransform, origTransition, + newStyle, oldStyle, newComputedStyle, isTextNode, + newTextRect, oldTextRect; + for (i = 0; i < created.length; i += 2) { + id = created[i]; + newElm = created[i+1].elm; + oldVnode = removed[id]; + if (oldVnode) { + isTextNode = oldVnode.isTextNode && isTextElement(newElm); //Are old & new both text? + newStyle = newElm.style; + newComputedStyle = window.getComputedStyle(newElm, null); //get full computed style for new element + oldElm = oldVnode.elm; + oldStyle = oldElm.style; + //Overall element bounding boxes + newRect = newElm.getBoundingClientRect(); + oldRect = oldVnode.boundingRect; //previously saved bounding rect + //Text node bounding boxes & distances + if (isTextNode) { + newTextRect = getTextNodeRect(newElm.childNodes[0]); + oldTextRect = oldVnode.textRect; + dx = getTextDx(oldTextRect, newTextRect); + dy = getTextDy(oldTextRect, newTextRect); + } else { + //Calculate distances between old & new positions + dx = oldRect.left - newRect.left; + dy = oldRect.top - newRect.top; + } + hRatio = newRect.height / (Math.max(oldRect.height, 1)); + wRatio = isTextNode ? hRatio : newRect.width / (Math.max(oldRect.width, 1)); //text scales based on hRatio + // Animate new element + origTransform = newStyle.transform; + origTransition = newStyle.transition; + if (newComputedStyle.display === 'inline') //inline elements cannot be transformed + newStyle.display = 'inline-block'; //this does not appear to have any negative side effects + newStyle.transition = origTransition + 'transform 0s'; + newStyle.transformOrigin = calcTransformOrigin(isTextNode, newTextRect, newRect); + newStyle.opacity = '0'; + newStyle.transform = origTransform + 'translate('+dx+'px, '+dy+'px) ' + + 'scale('+1/wRatio+', '+1/hRatio+')'; + setNextFrame(newStyle, 'transition', origTransition); + setNextFrame(newStyle, 'transform', origTransform); + setNextFrame(newStyle, 'opacity', '1'); + // Animate old element + for (var key in oldVnode.savedStyle) { //re-apply saved inherited properties + if (parseInt(key) != key) { + var ms = key.substring(0,2) === 'ms'; + var moz = key.substring(0,3) === 'moz'; + var webkit = key.substring(0,6) === 'webkit'; + if (!ms && !moz && !webkit) //ignore prefixed style properties + oldStyle[key] = oldVnode.savedStyle[key]; + } + } + oldStyle.position = 'absolute'; + oldStyle.top = oldRect.top + 'px'; //start at existing position + oldStyle.left = oldRect.left + 'px'; + oldStyle.width = oldRect.width + 'px'; //Needed for elements who were sized relative to their parents + oldStyle.height = oldRect.height + 'px'; //Needed for elements who were sized relative to their parents + oldStyle.margin = 0; //Margin on hero element leads to incorrect positioning + oldStyle.transformOrigin = calcTransformOrigin(isTextNode, oldTextRect, oldRect); + oldStyle.transform = ''; + oldStyle.opacity = '1'; + document.body.appendChild(oldElm); + setNextFrame(oldStyle, 'transform', 'translate('+ -dx +'px, '+ -dy +'px) scale('+wRatio+', '+hRatio+')'); //scale must be on far right for translate to be correct + setNextFrame(oldStyle, 'opacity', '0'); + oldElm.addEventListener('transitionend', function(ev) { + if (ev.propertyName === 'transform') + document.body.removeChild(ev.target); + }); + } + } + removed = created = undefined; +} + +module.exports = {pre: pre, create: create, destroy: destroy, post: post}; + +},{}],64:[function(require,module,exports){ +function updateProps(oldVnode, vnode) { + var key, cur, old, elm = vnode.elm, + oldProps = oldVnode.data.props || {}, props = vnode.data.props || {}; + for (key in oldProps) { + if (!props[key]) { + delete elm[key]; + } + } + for (key in props) { + cur = props[key]; + old = oldProps[key]; + if (old !== cur && (key !== 'value' || elm[key] !== cur)) { + elm[key] = cur; + } + } +} + +module.exports = {create: updateProps, update: updateProps}; + +},{}],65:[function(require,module,exports){ +var raf = (typeof window !== 'undefined' && window.requestAnimationFrame) || setTimeout; +var nextFrame = function(fn) { raf(function() { raf(fn); }); }; + +function setNextFrame(obj, prop, val) { + nextFrame(function() { obj[prop] = val; }); +} + +function updateStyle(oldVnode, vnode) { + var cur, name, elm = vnode.elm, + oldStyle = oldVnode.data.style || {}, + style = vnode.data.style || {}, + oldHasDel = 'delayed' in oldStyle; + for (name in oldStyle) { + if (!style[name]) { + elm.style[name] = ''; + } + } + for (name in style) { + cur = style[name]; + if (name === 'delayed') { + for (name in style.delayed) { + cur = style.delayed[name]; + if (!oldHasDel || cur !== oldStyle.delayed[name]) { + setNextFrame(elm.style, name, cur); + } + } + } else if (name !== 'remove' && cur !== oldStyle[name]) { + elm.style[name] = cur; + } + } +} + +function applyDestroyStyle(vnode) { + var style, name, elm = vnode.elm, s = vnode.data.style; + if (!s || !(style = s.destroy)) return; + for (name in style) { + elm.style[name] = style[name]; + } +} + +function applyRemoveStyle(vnode, rm) { + var s = vnode.data.style; + if (!s || !s.remove) { + rm(); + return; + } + var name, elm = vnode.elm, idx, i = 0, maxDur = 0, + compStyle, style = s.remove, amount = 0, applied = []; + for (name in style) { + applied.push(name); + elm.style[name] = style[name]; + } + compStyle = getComputedStyle(elm); + var props = compStyle['transition-property'].split(', '); + for (; i < props.length; ++i) { + if(applied.indexOf(props[i]) !== -1) amount++; + } + elm.addEventListener('transitionend', function(ev) { + if (ev.target === elm) --amount; + if (amount === 0) rm(); + }); +} + +module.exports = {create: updateStyle, update: updateStyle, destroy: applyDestroyStyle, remove: applyRemoveStyle}; + +},{}],66:[function(require,module,exports){ +// jshint newcap: false +/* global require, module, document, Node */ +'use strict'; + +var VNode = require('./vnode'); +var is = require('./is'); +var domApi = require('./htmldomapi.js'); + +function isUndef(s) { return s === undefined; } +function isDef(s) { return s !== undefined; } + +var emptyNode = VNode('', {}, [], undefined, undefined); + +function sameVnode(vnode1, vnode2) { + return vnode1.key === vnode2.key && vnode1.sel === vnode2.sel; +} + +function createKeyToOldIdx(children, beginIdx, endIdx) { + var i, map = {}, key; + for (i = beginIdx; i <= endIdx; ++i) { + key = children[i].key; + if (isDef(key)) map[key] = i; + } + return map; +} + +var hooks = ['create', 'update', 'remove', 'destroy', 'pre', 'post']; + +function init(modules, api) { + var i, j, cbs = {}; + + if (isUndef(api)) api = domApi; + + for (i = 0; i < hooks.length; ++i) { + cbs[hooks[i]] = []; + for (j = 0; j < modules.length; ++j) { + if (modules[j][hooks[i]] !== undefined) cbs[hooks[i]].push(modules[j][hooks[i]]); + } + } + + function emptyNodeAt(elm) { + return VNode(api.tagName(elm).toLowerCase(), {}, [], undefined, elm); + } + + function createRmCb(childElm, listeners) { + return function() { + if (--listeners === 0) { + var parent = api.parentNode(childElm); + api.removeChild(parent, childElm); + } + }; + } + + function createElm(vnode, insertedVnodeQueue) { + var i, thunk, data = vnode.data; + if (isDef(data)) { + if (isDef(i = data.hook) && isDef(i = i.init)) i(vnode); + if (isDef(i = data.vnode)) { + thunk = vnode; + vnode = i; + } + } + var elm, children = vnode.children, sel = vnode.sel; + if (isDef(sel)) { + // Parse selector + var hashIdx = sel.indexOf('#'); + var dotIdx = sel.indexOf('.', hashIdx); + var hash = hashIdx > 0 ? hashIdx : sel.length; + var dot = dotIdx > 0 ? dotIdx : sel.length; + var tag = hashIdx !== -1 || dotIdx !== -1 ? sel.slice(0, Math.min(hash, dot)) : sel; + elm = vnode.elm = isDef(data) && isDef(i = data.ns) ? api.createElementNS(i, tag) + : api.createElement(tag); + if (hash < dot) elm.id = sel.slice(hash + 1, dot); + if (dotIdx > 0) elm.className = sel.slice(dot+1).replace(/\./g, ' '); + if (is.array(children)) { + for (i = 0; i < children.length; ++i) { + api.appendChild(elm, createElm(children[i], insertedVnodeQueue)); + } + } else if (is.primitive(vnode.text)) { + api.appendChild(elm, api.createTextNode(vnode.text)); + } + for (i = 0; i < cbs.create.length; ++i) cbs.create[i](emptyNode, vnode); + i = vnode.data.hook; // Reuse variable + if (isDef(i)) { + if (i.create) i.create(emptyNode, vnode); + if (i.insert) insertedVnodeQueue.push(vnode); + } + } else { + elm = vnode.elm = api.createTextNode(vnode.text); + } + if (isDef(thunk)) thunk.elm = vnode.elm; + return vnode.elm; + } + + function addVnodes(parentElm, before, vnodes, startIdx, endIdx, insertedVnodeQueue) { + for (; startIdx <= endIdx; ++startIdx) { + api.insertBefore(parentElm, createElm(vnodes[startIdx], insertedVnodeQueue), before); + } + } + + function invokeDestroyHook(vnode) { + var i, j, data = vnode.data; + if (isDef(data)) { + if (isDef(i = data.hook) && isDef(i = i.destroy)) i(vnode); + for (i = 0; i < cbs.destroy.length; ++i) cbs.destroy[i](vnode); + if (isDef(i = vnode.children)) { + for (j = 0; j < vnode.children.length; ++j) { + invokeDestroyHook(vnode.children[j]); + } + } + if (isDef(i = data.vnode)) invokeDestroyHook(i); + } + } + + function removeVnodes(parentElm, vnodes, startIdx, endIdx) { + for (; startIdx <= endIdx; ++startIdx) { + var i, listeners, rm, ch = vnodes[startIdx]; + if (isDef(ch)) { + if (isDef(ch.sel)) { + invokeDestroyHook(ch); + listeners = cbs.remove.length + 1; + rm = createRmCb(ch.elm, listeners); + for (i = 0; i < cbs.remove.length; ++i) cbs.remove[i](ch, rm); + if (isDef(i = ch.data) && isDef(i = i.hook) && isDef(i = i.remove)) { + i(ch, rm); + } else { + rm(); + } + } else { // Text node + api.removeChild(parentElm, ch.elm); + } + } + } + } + + function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue) { + var oldStartIdx = 0, newStartIdx = 0; + var oldEndIdx = oldCh.length - 1; + var oldStartVnode = oldCh[0]; + var oldEndVnode = oldCh[oldEndIdx]; + var newEndIdx = newCh.length - 1; + var newStartVnode = newCh[0]; + var newEndVnode = newCh[newEndIdx]; + var oldKeyToIdx, idxInOld, elmToMove, before; + + while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) { + if (isUndef(oldStartVnode)) { + oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left + } else if (isUndef(oldEndVnode)) { + oldEndVnode = oldCh[--oldEndIdx]; + } else if (sameVnode(oldStartVnode, newStartVnode)) { + patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue); + oldStartVnode = oldCh[++oldStartIdx]; + newStartVnode = newCh[++newStartIdx]; + } else if (sameVnode(oldEndVnode, newEndVnode)) { + patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue); + oldEndVnode = oldCh[--oldEndIdx]; + newEndVnode = newCh[--newEndIdx]; + } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right + patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue); + api.insertBefore(parentElm, oldStartVnode.elm, api.nextSibling(oldEndVnode.elm)); + oldStartVnode = oldCh[++oldStartIdx]; + newEndVnode = newCh[--newEndIdx]; + } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left + patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue); + api.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm); + oldEndVnode = oldCh[--oldEndIdx]; + newStartVnode = newCh[++newStartIdx]; + } else { + if (isUndef(oldKeyToIdx)) oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); + idxInOld = oldKeyToIdx[newStartVnode.key]; + if (isUndef(idxInOld)) { // New element + api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm); + newStartVnode = newCh[++newStartIdx]; + } else { + elmToMove = oldCh[idxInOld]; + patchVnode(elmToMove, newStartVnode, insertedVnodeQueue); + oldCh[idxInOld] = undefined; + api.insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm); + newStartVnode = newCh[++newStartIdx]; + } + } + } + if (oldStartIdx > oldEndIdx) { + before = isUndef(newCh[newEndIdx+1]) ? null : newCh[newEndIdx+1].elm; + addVnodes(parentElm, before, newCh, newStartIdx, newEndIdx, insertedVnodeQueue); + } else if (newStartIdx > newEndIdx) { + removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx); + } + } + + function patchVnode(oldVnode, vnode, insertedVnodeQueue) { + var i, hook; + if (isDef(i = vnode.data) && isDef(hook = i.hook) && isDef(i = hook.prepatch)) { + i(oldVnode, vnode); + } + if (isDef(i = oldVnode.data) && isDef(i = i.vnode)) oldVnode = i; + if (isDef(i = vnode.data) && isDef(i = i.vnode)) { + patchVnode(oldVnode, i, insertedVnodeQueue); + vnode.elm = i.elm; + return; + } + var elm = vnode.elm = oldVnode.elm, oldCh = oldVnode.children, ch = vnode.children; + if (oldVnode === vnode) return; + if (!sameVnode(oldVnode, vnode)) { + var parentElm = api.parentNode(oldVnode.elm); + elm = createElm(vnode, insertedVnodeQueue); + api.insertBefore(parentElm, elm, oldVnode.elm); + removeVnodes(parentElm, [oldVnode], 0, 0); + return; + } + if (isDef(vnode.data)) { + for (i = 0; i < cbs.update.length; ++i) cbs.update[i](oldVnode, vnode); + i = vnode.data.hook; + if (isDef(i) && isDef(i = i.update)) i(oldVnode, vnode); + } + if (isUndef(vnode.text)) { + if (isDef(oldCh) && isDef(ch)) { + if (oldCh !== ch) updateChildren(elm, oldCh, ch, insertedVnodeQueue); + } else if (isDef(ch)) { + if (isDef(oldVnode.text)) api.setTextContent(elm, ''); + addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue); + } else if (isDef(oldCh)) { + removeVnodes(elm, oldCh, 0, oldCh.length - 1); + } else if (isDef(oldVnode.text)) { + api.setTextContent(elm, ''); + } + } else if (oldVnode.text !== vnode.text) { + api.setTextContent(elm, vnode.text); + } + if (isDef(hook) && isDef(i = hook.postpatch)) { + i(oldVnode, vnode); + } + } + + return function(oldVnode, vnode) { + var i, elm, parent; + var insertedVnodeQueue = []; + for (i = 0; i < cbs.pre.length; ++i) cbs.pre[i](); + + if (isUndef(oldVnode.sel)) { + oldVnode = emptyNodeAt(oldVnode); + } + + if (sameVnode(oldVnode, vnode)) { + patchVnode(oldVnode, vnode, insertedVnodeQueue); + } else { + elm = oldVnode.elm; + parent = api.parentNode(elm); + + createElm(vnode, insertedVnodeQueue); + + if (parent !== null) { + api.insertBefore(parent, vnode.elm, api.nextSibling(elm)); + removeVnodes(parent, [oldVnode], 0, 0); + } + } + + for (i = 0; i < insertedVnodeQueue.length; ++i) { + insertedVnodeQueue[i].data.hook.insert(insertedVnodeQueue[i]); + } + for (i = 0; i < cbs.post.length; ++i) cbs.post[i](); + return vnode; + }; +} + +module.exports = {init: init}; + +},{"./htmldomapi.js":58,"./is":59,"./vnode":68}],67:[function(require,module,exports){ +var h = require('./h'); + +function init(thunk) { + var i, cur = thunk.data; + cur.vnode = cur.fn.apply(undefined, cur.args); +} + +function prepatch(oldThunk, thunk) { + var i, old = oldThunk.data, cur = thunk.data; + var oldArgs = old.args, args = cur.args; + cur.vnode = old.vnode; + if (old.fn !== cur.fn || oldArgs.length !== args.length) { + cur.vnode = cur.fn.apply(undefined, args); + return; + } + for (i = 0; i < args.length; ++i) { + if (oldArgs[i] !== args[i]) { + cur.vnode = cur.fn.apply(undefined, args); + return; + } + } +} + +module.exports = function(name, fn /* args */) { + var i, args = []; + for (i = 2; i < arguments.length; ++i) { + args[i - 2] = arguments[i]; + } + return h('thunk' + name, { + hook: {init: init, prepatch: prepatch}, + fn: fn, args: args, + }); +}; + +},{"./h":57}],68:[function(require,module,exports){ +module.exports = function(sel, data, children, text, elm) { + var key = data === undefined ? undefined : data.key; + return {sel: sel, data: data, children: children, + text: text, elm: elm, key: key}; +}; + +},{}],69:[function(require,module,exports){ +"use strict"; +var clickEvent = 'undefined' !== typeof document && document.ontouchstart ? + 'touchstart' : 'click'; +function which(ev) { + if (typeof window === 'undefined') { + return false; + } + var e = ev || window.event; + return e.which === null ? e.button : e.which; +} +function sameOrigin(href) { + if (typeof window === 'undefined') { + return false; + } + return href && href.indexOf(window.location.origin) === 0; +} +function makeClickListener(push) { + return function clickListener(event) { + if (which(event) !== 1) { + return; + } + if (event.metaKey || event.ctrlKey || event.shiftKey) { + return; + } + if (event.defaultPrevented) { + return; + } + var element = event.target; + while (element && element.nodeName !== 'A') { + element = element.parentNode; + } + if (!element || element.nodeName !== 'A') { + return; + } + if (element.hasAttribute('download') || + element.getAttribute('rel') === 'external') { + return; + } + if (element.target) { + return; + } + var link = element.getAttribute('href'); + if (link && link.indexOf('mailto:') > -1 || link === '#') { + return; + } + if (!sameOrigin(element.href)) { + return; + } + event.preventDefault(); + var pathname = element.pathname, search = element.search, _a = element.hash, hash = _a === void 0 ? '' : _a; + push(pathname + search + hash); + }; +} +function captureClicks(push) { + var listener = makeClickListener(push); + if (typeof window !== 'undefined') { + document.addEventListener(clickEvent, listener, false); + } +} +exports.captureClicks = captureClicks; + +},{}],70:[function(require,module,exports){ +"use strict"; +var makeHistoryDriver_1 = require('./makeHistoryDriver'); +exports.makeHistoryDriver = makeHistoryDriver_1.makeHistoryDriver; +var serverHistory_1 = require('./serverHistory'); +exports.createServerHistory = serverHistory_1.createServerHistory; +var util_1 = require('./util'); +exports.supportsHistory = util_1.supportsHistory; +exports.createLocation = util_1.createLocation; + +},{"./makeHistoryDriver":71,"./serverHistory":72,"./util":73}],71:[function(require,module,exports){ +"use strict"; +var captureClicks_1 = require('./captureClicks'); +function makeUpdateHistory(history) { + return function updateHistory(location) { + if ('string' === typeof location) { + history.push(history.createLocation(location)); + } + else if ('object' === typeof location) { + // suport things like history.replace() + var _a = location.type, type = _a === void 0 ? 'push' : _a; + if (type === 'go') { + history[type](location); + } + else { + history[type](location); + } + } + else { + throw new Error('History Driver input must be a string or an ' + + 'object but received ${typeof url}'); + } + }; +} +function defaultOnErrorFn(err) { + if (console && console.error !== void 0) { + console.error(err); + } +} +function makeHistoryDriver(history, options) { + if (!history || typeof history !== 'object' + || typeof history.createLocation !== 'function' + || typeof history.createHref !== 'function' + || typeof history.listen !== 'function' + || typeof history.push !== 'function') { + throw new TypeError('makeHistoryDriver requires an valid history object ' + + 'containing createLocation(), createHref(), push(), and listen() methods'); + } + var capture = options && options.capture || false; + var onError = options && options.onError || defaultOnErrorFn; + return function historyDriver(sink$, runSA) { + var _a = runSA.makeSubject(), observer = _a.observer, stream = _a.stream; + var history$ = runSA.remember(stream + .startWith(history.getCurrentLocation()) + .filter(Boolean)); + var unlisten = history.listen(function (location) { + observer.next(location); + }); + if (typeof history.addCompleteCallback === 'function' + && typeof history.complete === 'function') { + history.addCompleteCallback(function () { + observer.complete(); + }); + } + runSA.streamSubscribe(sink$, { + next: makeUpdateHistory(history), + error: onError, + complete: function () { + unlisten(); + observer.complete(); + } + }); + if (capture) { + captureClicks_1.captureClicks(function (pathname) { + var location = history.createLocation(pathname); + history.push(location); + }); + } + history$.createHref = function (href) { return history.createHref(href); }; + history$.createLocation = function (location) { return history.createLocation(location); }; + return history$; + }; +} +exports.makeHistoryDriver = makeHistoryDriver; + +},{"./captureClicks":69}],72:[function(require,module,exports){ +"use strict"; +var util_1 = require('./util'); +var ServerHistory = (function () { + function ServerHistory(currentLocation) { + this.currentLocation = currentLocation; + this.listeners = []; + } + ServerHistory.prototype.listen = function (listener) { + this.listeners.push(listener); + return function noop() { return void 0; }; + }; + ServerHistory.prototype.push = function (location) { + var length = this.listeners.length; + if (length === 0) { + throw new Error('Must be given at least one listener before pushing'); + } + for (var i = 0; i < length; ++i) { + this.listeners[i](util_1.createLocation(location)); + } + }; + ServerHistory.prototype.replace = function (location) { + this.push(location); + }; + ServerHistory.prototype.createHref = function (path) { + return path; + }; + ServerHistory.prototype.createLocation = function (location) { + return util_1.createLocation(location); + }; + ServerHistory.prototype.getCurrentLocation = function () { + return this.currentLocation; + }; + ServerHistory.prototype.addCompleteCallback = function (complete) { + this._completeCallback = complete; + }; + ServerHistory.prototype.complete = function () { + this._completeCallback(); + }; + return ServerHistory; +}()); +function createServerHistory(loc) { + return new ServerHistory(loc ? util_1.createLocation(loc) : null); +} +exports.createServerHistory = createServerHistory; + +},{"./util":73}],73:[function(require,module,exports){ +"use strict"; +function supportsHistory() { + if (typeof navigator === 'undefined') { + return false; + } + var ua = navigator.userAgent; + if ((ua.indexOf('Android 2.') !== -1 || + ua.indexOf('Android 4.0') !== -1) && + ua.indexOf('Mobile Safari') !== -1 && + ua.indexOf('Chrome') === -1 && + ua.indexOf('Windows Phone') === -1) { + return false; + } + if (typeof window !== 'undefined') { + return window.history && 'pushState' in window.history; + } + else { + return false; + } +} +exports.supportsHistory = supportsHistory; +var locationDefaults = { + pathname: '/', + action: 'POP', + hash: '', + search: '', + state: undefined, + key: null, + query: null, +}; +function createLocation(location) { + if (typeof location === 'string') { + return Object.assign({}, locationDefaults, { pathname: location }); + } + return Object.assign({}, locationDefaults, location); +} +exports.createLocation = createLocation; + +},{}],74:[function(require,module,exports){ +"use strict"; +var counter = 0; +function newScope() { + return "cycle" + ++counter; +} +function checkIsolateArgs(dataflowComponent, scope) { + if (typeof dataflowComponent !== "function") { + throw new Error("First argument given to isolate() must be a " + + "'dataflowComponent' function"); + } + if (scope === null) { + throw new Error("Second argument given to isolate() must not be null"); + } +} +function isolateAllSources(sources, scope) { + var scopedSources = {}; + for (var key in sources) { + if (sources.hasOwnProperty(key) && sources[key] + && typeof sources[key].isolateSource === "function") { + scopedSources[key] = sources[key].isolateSource(sources[key], scope); + } + else if (sources.hasOwnProperty(key)) { + scopedSources[key] = sources[key]; + } + } + return scopedSources; +} +function isolateAllSinks(sources, sinks, scope) { + var scopedSinks = {}; + for (var key in sinks) { + if (sinks.hasOwnProperty(key) + && sources[key] + && typeof sources[key].isolateSink === "function") { + scopedSinks[key] = sources[key].isolateSink(sinks[key], scope); + } + else if (sinks.hasOwnProperty(key)) { + scopedSinks[key] = sinks[key]; + } + } + return scopedSinks; +} +/** + * Takes a `dataflowComponent` function and an optional `scope` string, and + * returns a scoped version of the `dataflowComponent` function. + * + * When the scoped dataflow component is invoked, each source provided to the + * scoped dataflowComponent is isolated to the scope using + * `source.isolateSource(source, scope)`, if possible. Likewise, the sinks + * returned from the scoped dataflow component are isolate to the scope using + * `source.isolateSink(sink, scope)`. + * + * If the `scope` is not provided, a new scope will be automatically created. + * This means that while **`isolate(dataflowComponent, scope)` is pure** + * (referentially transparent), **`isolate(dataflowComponent)` is impure** + * (not referentially transparent). Two calls to `isolate(Foo, bar)` will + * generate two indistinct dataflow components. But, two calls to `isolate(Foo)` + * will generate two distinct dataflow components. + * + * Note that both `isolateSource()` and `isolateSink()` are static members of + * `source`. The reason for this is that drivers produce `source` while the + * application produces `sink`, and it's the driver's responsibility to + * implement `isolateSource()` and `isolateSink()`. + * + * @param {Function} dataflowComponent a function that takes `sources` as input + * and outputs a collection of `sinks`. + * @param {String} scope an optional string that is used to isolate each + * `sources` and `sinks` when the returned scoped dataflow component is invoked. + * @return {Function} the scoped dataflow component function that, as the + * original `dataflowComponent` function, takes `sources` and returns `sinks`. + * @function isolate + */ +function isolate(component, scope) { + if (scope === void 0) { scope = newScope(); } + checkIsolateArgs(component, scope); + var convertedScope = typeof scope === 'string' ? scope : scope.toString(); + return function scopedComponent(sources) { + var rest = []; + for (var _i = 1; _i < arguments.length; _i++) { + rest[_i - 1] = arguments[_i]; + } + var scopedSources = isolateAllSources(sources, convertedScope); + var sinks = component.apply(void 0, [scopedSources].concat(rest)); + var scopedSinks = isolateAllSinks(sources, sinks, convertedScope); + return scopedSinks; + }; +} +isolate.reset = function () { return counter = 0; }; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = isolate; + +},{}],75:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _xstreamAdapter = require('@cycle/xstream-adapter'); + +var _xstreamAdapter2 = _interopRequireDefault(_xstreamAdapter); + +var _writeToStore = require('./writeToStore'); + +var _writeToStore2 = _interopRequireDefault(_writeToStore); + +var _responseCollection = require('./responseCollection'); + +var _responseCollection2 = _interopRequireDefault(_responseCollection); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Storage Driver. + * + * This is a localStorage and sessionStorage Driver for Cycle.js apps. The + * driver is also a function, and it takes a stream of requests as input, and + * returns a **`responseCollection`** with functions that allow reading from the + * storage objects. The functions on the **`responseCollection`** return streams + * of the storage data that was requested. + * + * **Requests**. The stream of requests should emit objects. These should be + * instructions to write to the desired Storage object. Here are the `request` + * object properties: + * + * - `target` *(String)*: type of storage, can be `local` or `session`, defaults + * to `local`. + * - `action` *(String)*: type of action, can be `setItem`, `removeItem` or + * `clear`, defaults to `setItem`. + * - `key` *(String)*: storage key. + * - `value` *(String)*: storage value. + * + * **responseCollection**. The **`responseCollection`** is an Object that + * exposes functions to read from local- and sessionStorage. + * + * ```js + * // Returns key of nth localStorage value. + * responseCollection.local.getKey(n) + * // Returns localStorage value of `key`. + * responseCollection.local.getItem(key) + * // Returns key of nth sessionStorage value. + * responseCollection.session.getKey(n) + * // Returns sessionStorage value of `key`. + * responseCollection.session.getItem(key) + * ``` + * + * @param request$ - a stream of write request objects. + * @return {Object} the response collection containing functions + * for reading from storage. + * @function storageDriver + */ +function storageDriver(request$, runStreamAdapter) { + // Execute writing actions. + request$.addListener({ + next: function next(request) { + return (0, _writeToStore2.default)(request); + }, + error: function error() {}, + complete: function complete() {} + }); + + // Return reading functions. + return (0, _responseCollection2.default)(request$, runStreamAdapter); +} + +storageDriver.streamAdapter = _xstreamAdapter2.default; + +exports.default = storageDriver; +},{"./responseCollection":76,"./writeToStore":78,"@cycle/xstream-adapter":79}],76:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +exports.default = function (request$, runStreamAdapter) { + return { + // For localStorage. + get local() { + return (0, _util2.default)(request$, runStreamAdapter); + }, + // For sessionStorage. + get session() { + return (0, _util2.default)(request$, runStreamAdapter, 'session'); + } + }; +}; + +var _util = require('./util'); + +var _util2 = _interopRequireDefault(_util); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +},{"./util":77}],77:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = getResponseObj; + +var _dropRepeats = require('xstream/extra/dropRepeats'); + +var _dropRepeats2 = _interopRequireDefault(_dropRepeats); + +var _xstreamAdapter = require('@cycle/xstream-adapter'); + +var _xstreamAdapter2 = _interopRequireDefault(_xstreamAdapter); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function getStorage$(request$, type) { + if (type === 'local') { + return request$.filter(function (req) { + return !req.target || req.target === 'local'; + }); + } else { + return request$.filter(function (req) { + return req.target === 'session'; + }); + } +} + +function storageKey(n, request$) { + var type = arguments.length <= 2 || arguments[2] === undefined ? 'local' : arguments[2]; + + var storage$ = getStorage$(request$, type); + var key = type === 'local' ? localStorage.key(n) : sessionStorage.key(n); + + return storage$.filter(function (req) { + return req.key === key; + }).map(function (req) { + return req.key; + }).startWith(key).compose((0, _dropRepeats2.default)()); +} + +function storageGetItem(key, request$) { + var type = arguments.length <= 2 || arguments[2] === undefined ? 'local' : arguments[2]; + + var storage$ = getStorage$(request$, type); + var storageObj = type === 'local' ? localStorage : sessionStorage; + + return storage$.filter(function (req) { + return req.key === key; + }).map(function (req) { + return req.value; + }).startWith(storageObj.getItem(key)); +} + +function getResponseObj(request$, runSA) { + var type = arguments.length <= 2 || arguments[2] === undefined ? 'local' : arguments[2]; + + return { + // Function returning stream of the nth key. + + key: function key(n) { + return runSA.adapt(storageKey(n, request$, type), _xstreamAdapter2.default.streamSubscribe); + }, + + // Function returning stream of item values. + getItem: function getItem(key) { + return runSA.adapt(storageGetItem(key, request$, type), _xstreamAdapter2.default.streamSubscribe); + } + }; +} +},{"@cycle/xstream-adapter":79,"xstream/extra/dropRepeats":81}],78:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +/** + * @function writeToStore + * @description + * A universal write function for localStorage and sessionStorage. + * @param {object} request - the storage request object + * @param {string} request.target - a string determines which storage to use + * @param {string} request.action - a string determines the write action + * @param {string} request.key - the key of a storage item + * @param {string} request.value - the value of a storage item + */ +function writeToStore(_ref) { + var _ref$target = _ref.target; + var target = _ref$target === undefined ? "local" : _ref$target; + var _ref$action = _ref.action; + var action = _ref$action === undefined ? "setItem" : _ref$action; + var key = _ref.key; + var value = _ref.value; + + // Determine the storage target. + var storage = target === "local" ? localStorage : sessionStorage; + + // Execute the storage action and pass arguments if they were defined. + storage[action](key, value); +} + +exports.default = writeToStore; +},{}],79:[function(require,module,exports){ +"use strict"; +var xstream_1 = require('xstream'); +function logToConsoleError(err) { + var target = err.stack || err; + if (console && console.error) { + console.error(target); + } + else if (console && console.log) { + console.log(target); + } +} +var XStreamAdapter = { + adapt: function (originStream, originStreamSubscribe) { + if (XStreamAdapter.isValidStream(originStream)) { + return originStream; + } + ; + var dispose = null; + return xstream_1.default.create({ + start: function (out) { + var observer = { + next: function (value) { return out.shamefullySendNext(value); }, + error: function (err) { return out.shamefullySendError(err); }, + complete: function () { return out.shamefullySendComplete(); }, + }; + dispose = originStreamSubscribe(originStream, observer); + }, + stop: function () { + if (typeof dispose === 'function') { + dispose(); + } + } + }); + }, + dispose: function (sinks, sinkProxies, sources) { + Object.keys(sources).forEach(function (k) { + if (typeof sources[k].dispose === 'function') { + sources[k].dispose(); + } + }); + Object.keys(sinks).forEach(function (k) { + sinks[k].removeListener(sinkProxies[k].stream); + }); + }, + makeHoldSubject: function () { + var stream = xstream_1.default.createWithMemory(); + var observer = { + next: function (x) { stream.shamefullySendNext(x); }, + error: function (err) { + logToConsoleError(err); + stream.shamefullySendError(err); + }, + complete: function () { stream.shamefullySendComplete(); } + }; + return { observer: observer, stream: stream }; + }, + isValidStream: function (stream) { + return (typeof stream.addListener === 'function' && + typeof stream.shamefullySendNext === 'function'); + }, + streamSubscribe: function (stream, observer) { + stream.addListener(observer); + return function () { return stream.removeListener(observer); }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = XStreamAdapter; + +},{"xstream":82}],80:[function(require,module,exports){ +"use strict"; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var empty = {}; +function noop() { } +function copy(a) { + var l = a.length; + var b = Array(l); + for (var i = 0; i < l; ++i) { + b[i] = a[i]; + } + return b; +} +exports.emptyListener = { + _n: noop, + _e: noop, + _c: noop, +}; +// mutates the input +function internalizeProducer(producer) { + producer._start = + function _start(il) { + il.next = il._n; + il.error = il._e; + il.complete = il._c; + this.start(il); + }; + producer._stop = producer.stop; +} +function invoke(f, args) { + switch (args.length) { + case 0: return f(); + case 1: return f(args[0]); + case 2: return f(args[0], args[1]); + case 3: return f(args[0], args[1], args[2]); + case 4: return f(args[0], args[1], args[2], args[3]); + case 5: return f(args[0], args[1], args[2], args[3], args[4]); + default: return f.apply(void 0, args); + } +} +function compose2(f1, f2) { + return function composedFn(arg) { + return f1(f2(arg)); + }; +} +function and(f1, f2) { + return function andFn(t) { + return f1(t) && f2(t); + }; +} +var CombineListener = (function () { + function CombineListener(i, p) { + this.i = i; + this.p = p; + p.ils.push(this); + } + CombineListener.prototype._n = function (t) { + var p = this.p, out = p.out; + if (!out) + return; + if (p.up(t, this.i)) { + try { + out._n(invoke(p.project, p.vals)); + } + catch (e) { + out._e(e); + } + } + }; + CombineListener.prototype._e = function (err) { + var out = this.p.out; + if (!out) + return; + out._e(err); + }; + CombineListener.prototype._c = function () { + var p = this.p; + if (!p.out) + return; + if (--p.ac === 0) { + p.out._c(); + } + }; + return CombineListener; +}()); +exports.CombineListener = CombineListener; +var CombineProducer = (function () { + function CombineProducer(project, streams) { + this.project = project; + this.streams = streams; + this.type = 'combine'; + this.out = exports.emptyListener; + this.ils = []; + var n = this.ac = this.left = streams.length; + var vals = this.vals = new Array(n); + for (var i = 0; i < n; i++) { + vals[i] = empty; + } + } + CombineProducer.prototype.up = function (t, i) { + var v = this.vals[i]; + var left = !this.left ? 0 : v === empty ? --this.left : this.left; + this.vals[i] = t; + return left === 0; + }; + CombineProducer.prototype._start = function (out) { + this.out = out; + var s = this.streams; + var n = s.length; + if (n === 0) + this.zero(out); + else { + for (var i = 0; i < n; i++) { + s[i]._add(new CombineListener(i, this)); + } + } + }; + CombineProducer.prototype._stop = function () { + var s = this.streams; + var n = this.ac = this.left = s.length; + var vals = this.vals = new Array(n); + for (var i = 0; i < n; i++) { + s[i]._remove(this.ils[i]); + vals[i] = empty; + } + this.out = null; + this.ils = []; + }; + CombineProducer.prototype.zero = function (out) { + try { + out._n(this.project()); + out._c(); + } + catch (e) { + out._e(e); + } + }; + return CombineProducer; +}()); +exports.CombineProducer = CombineProducer; +var FromArrayProducer = (function () { + function FromArrayProducer(a) { + this.a = a; + this.type = 'fromArray'; + } + FromArrayProducer.prototype._start = function (out) { + var a = this.a; + for (var i = 0, l = a.length; i < l; i++) { + out._n(a[i]); + } + out._c(); + }; + FromArrayProducer.prototype._stop = function () { + }; + return FromArrayProducer; +}()); +exports.FromArrayProducer = FromArrayProducer; +var FromPromiseProducer = (function () { + function FromPromiseProducer(p) { + this.p = p; + this.type = 'fromPromise'; + this.on = false; + } + FromPromiseProducer.prototype._start = function (out) { + var prod = this; + this.on = true; + this.p.then(function (v) { + if (prod.on) { + out._n(v); + out._c(); + } + }, function (e) { + out._e(e); + }).then(null, function (err) { + setTimeout(function () { throw err; }); + }); + }; + FromPromiseProducer.prototype._stop = function () { + this.on = false; + }; + return FromPromiseProducer; +}()); +exports.FromPromiseProducer = FromPromiseProducer; +var MergeProducer = (function () { + function MergeProducer(streams) { + this.streams = streams; + this.type = 'merge'; + this.out = exports.emptyListener; + this.ac = streams.length; + } + MergeProducer.prototype._start = function (out) { + this.out = out; + var s = this.streams; + var L = s.length; + for (var i = 0; i < L; i++) { + s[i]._add(this); + } + }; + MergeProducer.prototype._stop = function () { + var s = this.streams; + var L = s.length; + for (var i = 0; i < L; i++) { + s[i]._remove(this); + } + this.out = null; + this.ac = L; + }; + MergeProducer.prototype._n = function (t) { + var u = this.out; + if (!u) + return; + u._n(t); + }; + MergeProducer.prototype._e = function (err) { + var u = this.out; + if (!u) + return; + u._e(err); + }; + MergeProducer.prototype._c = function () { + if (--this.ac === 0) { + var u = this.out; + if (!u) + return; + u._c(); + } + }; + return MergeProducer; +}()); +exports.MergeProducer = MergeProducer; +var PeriodicProducer = (function () { + function PeriodicProducer(period) { + this.period = period; + this.type = 'periodic'; + this.intervalID = -1; + this.i = 0; + } + PeriodicProducer.prototype._start = function (stream) { + var self = this; + function intervalHandler() { stream._n(self.i++); } + this.intervalID = setInterval(intervalHandler, this.period); + }; + PeriodicProducer.prototype._stop = function () { + if (this.intervalID !== -1) + clearInterval(this.intervalID); + this.intervalID = -1; + this.i = 0; + }; + return PeriodicProducer; +}()); +exports.PeriodicProducer = PeriodicProducer; +var DebugOperator = (function () { + function DebugOperator(arg, ins) { + this.ins = ins; + this.type = 'debug'; + this.out = null; + this.s = null; // spy + this.l = null; // label + if (typeof arg === 'string') { + this.l = arg; + } + else { + this.s = arg; + } + } + DebugOperator.prototype._start = function (out) { + this.out = out; + this.ins._add(this); + }; + DebugOperator.prototype._stop = function () { + this.ins._remove(this); + this.out = null; + }; + DebugOperator.prototype._n = function (t) { + var u = this.out; + if (!u) + return; + var s = this.s, l = this.l; + if (s) { + try { + s(t); + } + catch (e) { + u._e(e); + } + } + else if (l) { + console.log(l + ':', t); + } + else { + console.log(t); + } + u._n(t); + }; + DebugOperator.prototype._e = function (err) { + var u = this.out; + if (!u) + return; + u._e(err); + }; + DebugOperator.prototype._c = function () { + var u = this.out; + if (!u) + return; + u._c(); + }; + return DebugOperator; +}()); +exports.DebugOperator = DebugOperator; +var DropOperator = (function () { + function DropOperator(max, ins) { + this.max = max; + this.ins = ins; + this.type = 'drop'; + this.out = null; + this.dropped = 0; + } + DropOperator.prototype._start = function (out) { + this.out = out; + this.ins._add(this); + }; + DropOperator.prototype._stop = function () { + this.ins._remove(this); + this.out = null; + this.dropped = 0; + }; + DropOperator.prototype._n = function (t) { + var u = this.out; + if (!u) + return; + if (this.dropped++ >= this.max) + u._n(t); + }; + DropOperator.prototype._e = function (err) { + var u = this.out; + if (!u) + return; + u._e(err); + }; + DropOperator.prototype._c = function () { + var u = this.out; + if (!u) + return; + u._c(); + }; + return DropOperator; +}()); +exports.DropOperator = DropOperator; +var OtherIL = (function () { + function OtherIL(out, op) { + this.out = out; + this.op = op; + } + OtherIL.prototype._n = function (t) { + this.op.end(); + }; + OtherIL.prototype._e = function (err) { + this.out._e(err); + }; + OtherIL.prototype._c = function () { + this.op.end(); + }; + return OtherIL; +}()); +var EndWhenOperator = (function () { + function EndWhenOperator(o, // o = other + ins) { + this.o = o; + this.ins = ins; + this.type = 'endWhen'; + this.out = null; + this.oil = exports.emptyListener; // oil = other InternalListener + } + EndWhenOperator.prototype._start = function (out) { + this.out = out; + this.o._add(this.oil = new OtherIL(out, this)); + this.ins._add(this); + }; + EndWhenOperator.prototype._stop = function () { + this.ins._remove(this); + this.o._remove(this.oil); + this.out = null; + this.oil = null; + }; + EndWhenOperator.prototype.end = function () { + var u = this.out; + if (!u) + return; + u._c(); + }; + EndWhenOperator.prototype._n = function (t) { + var u = this.out; + if (!u) + return; + u._n(t); + }; + EndWhenOperator.prototype._e = function (err) { + var u = this.out; + if (!u) + return; + u._e(err); + }; + EndWhenOperator.prototype._c = function () { + this.end(); + }; + return EndWhenOperator; +}()); +exports.EndWhenOperator = EndWhenOperator; +var FilterOperator = (function () { + function FilterOperator(passes, ins) { + this.passes = passes; + this.ins = ins; + this.type = 'filter'; + this.out = null; + } + FilterOperator.prototype._start = function (out) { + this.out = out; + this.ins._add(this); + }; + FilterOperator.prototype._stop = function () { + this.ins._remove(this); + this.out = null; + }; + FilterOperator.prototype._n = function (t) { + var u = this.out; + if (!u) + return; + try { + if (this.passes(t)) + u._n(t); + } + catch (e) { + u._e(e); + } + }; + FilterOperator.prototype._e = function (err) { + var u = this.out; + if (!u) + return; + u._e(err); + }; + FilterOperator.prototype._c = function () { + var u = this.out; + if (!u) + return; + u._c(); + }; + return FilterOperator; +}()); +exports.FilterOperator = FilterOperator; +var FlattenListener = (function () { + function FlattenListener(out, op) { + this.out = out; + this.op = op; + } + FlattenListener.prototype._n = function (t) { + this.out._n(t); + }; + FlattenListener.prototype._e = function (err) { + this.out._e(err); + }; + FlattenListener.prototype._c = function () { + this.op.inner = null; + this.op.less(); + }; + return FlattenListener; +}()); +var FlattenOperator = (function () { + function FlattenOperator(ins) { + this.ins = ins; + this.type = 'flatten'; + this.inner = null; // Current inner Stream + this.il = null; // Current inner InternalListener + this.open = true; + this.out = null; + } + FlattenOperator.prototype._start = function (out) { + this.out = out; + this.ins._add(this); + }; + FlattenOperator.prototype._stop = function () { + this.ins._remove(this); + this.inner = null; + this.il = null; + this.open = true; + this.out = null; + }; + FlattenOperator.prototype.less = function () { + var u = this.out; + if (!u) + return; + if (!this.open && !this.inner) + u._c(); + }; + FlattenOperator.prototype._n = function (s) { + var u = this.out; + if (!u) + return; + var _a = this, inner = _a.inner, il = _a.il; + if (inner && il) + inner._remove(il); + (this.inner = s)._add(this.il = new FlattenListener(u, this)); + }; + FlattenOperator.prototype._e = function (err) { + var u = this.out; + if (!u) + return; + u._e(err); + }; + FlattenOperator.prototype._c = function () { + this.open = false; + this.less(); + }; + return FlattenOperator; +}()); +exports.FlattenOperator = FlattenOperator; +var FoldOperator = (function () { + function FoldOperator(f, seed, ins) { + this.f = f; + this.seed = seed; + this.ins = ins; + this.type = 'fold'; + this.out = null; + this.acc = seed; + } + FoldOperator.prototype._start = function (out) { + this.out = out; + out._n(this.acc); + this.ins._add(this); + }; + FoldOperator.prototype._stop = function () { + this.ins._remove(this); + this.out = null; + this.acc = this.seed; + }; + FoldOperator.prototype._n = function (t) { + var u = this.out; + if (!u) + return; + try { + u._n(this.acc = this.f(this.acc, t)); + } + catch (e) { + u._e(e); + } + }; + FoldOperator.prototype._e = function (err) { + var u = this.out; + if (!u) + return; + u._e(err); + }; + FoldOperator.prototype._c = function () { + var u = this.out; + if (!u) + return; + u._c(); + }; + return FoldOperator; +}()); +exports.FoldOperator = FoldOperator; +var LastOperator = (function () { + function LastOperator(ins) { + this.ins = ins; + this.type = 'last'; + this.out = null; + this.has = false; + this.val = empty; + } + LastOperator.prototype._start = function (out) { + this.out = out; + this.ins._add(this); + }; + LastOperator.prototype._stop = function () { + this.ins._remove(this); + this.out = null; + this.has = false; + this.val = empty; + }; + LastOperator.prototype._n = function (t) { + this.has = true; + this.val = t; + }; + LastOperator.prototype._e = function (err) { + var u = this.out; + if (!u) + return; + u._e(err); + }; + LastOperator.prototype._c = function () { + var u = this.out; + if (!u) + return; + if (this.has) { + u._n(this.val); + u._c(); + } + else { + u._e('TODO show proper error'); + } + }; + return LastOperator; +}()); +exports.LastOperator = LastOperator; +var MapFlattenInner = (function () { + function MapFlattenInner(out, op) { + this.out = out; + this.op = op; + } + MapFlattenInner.prototype._n = function (r) { + this.out._n(r); + }; + MapFlattenInner.prototype._e = function (err) { + this.out._e(err); + }; + MapFlattenInner.prototype._c = function () { + this.op.inner = null; + this.op.less(); + }; + return MapFlattenInner; +}()); +var MapFlattenOperator = (function () { + function MapFlattenOperator(mapOp) { + this.mapOp = mapOp; + this.inner = null; // Current inner Stream + this.il = null; // Current inner InternalListener + this.open = true; + this.out = null; + this.type = mapOp.type + "+flatten"; + this.ins = mapOp.ins; + } + MapFlattenOperator.prototype._start = function (out) { + this.out = out; + this.mapOp.ins._add(this); + }; + MapFlattenOperator.prototype._stop = function () { + this.mapOp.ins._remove(this); + this.inner = null; + this.il = null; + this.open = true; + this.out = null; + }; + MapFlattenOperator.prototype.less = function () { + if (!this.open && !this.inner) { + var u = this.out; + if (!u) + return; + u._c(); + } + }; + MapFlattenOperator.prototype._n = function (v) { + var u = this.out; + if (!u) + return; + var _a = this, inner = _a.inner, il = _a.il; + if (inner && il) + inner._remove(il); + try { + (this.inner = this.mapOp.project(v))._add(this.il = new MapFlattenInner(u, this)); + } + catch (e) { + u._e(e); + } + }; + MapFlattenOperator.prototype._e = function (err) { + var u = this.out; + if (!u) + return; + u._e(err); + }; + MapFlattenOperator.prototype._c = function () { + this.open = false; + this.less(); + }; + return MapFlattenOperator; +}()); +exports.MapFlattenOperator = MapFlattenOperator; +var MapOperator = (function () { + function MapOperator(project, ins) { + this.project = project; + this.ins = ins; + this.type = 'map'; + this.out = null; + } + MapOperator.prototype._start = function (out) { + this.out = out; + this.ins._add(this); + }; + MapOperator.prototype._stop = function () { + this.ins._remove(this); + this.out = null; + }; + MapOperator.prototype._n = function (t) { + var u = this.out; + if (!u) + return; + try { + u._n(this.project(t)); + } + catch (e) { + u._e(e); + } + }; + MapOperator.prototype._e = function (err) { + var u = this.out; + if (!u) + return; + u._e(err); + }; + MapOperator.prototype._c = function () { + var u = this.out; + if (!u) + return; + u._c(); + }; + return MapOperator; +}()); +exports.MapOperator = MapOperator; +var FilterMapOperator = (function (_super) { + __extends(FilterMapOperator, _super); + function FilterMapOperator(passes, project, ins) { + _super.call(this, project, ins); + this.passes = passes; + this.type = 'filter+map'; + } + FilterMapOperator.prototype._n = function (v) { + if (this.passes(v)) { + _super.prototype._n.call(this, v); + } + ; + }; + return FilterMapOperator; +}(MapOperator)); +exports.FilterMapOperator = FilterMapOperator; +var ReplaceErrorOperator = (function () { + function ReplaceErrorOperator(fn, ins) { + this.fn = fn; + this.ins = ins; + this.type = 'replaceError'; + this.out = empty; + } + ReplaceErrorOperator.prototype._start = function (out) { + this.out = out; + this.ins._add(this); + }; + ReplaceErrorOperator.prototype._stop = function () { + this.ins._remove(this); + this.out = null; + }; + ReplaceErrorOperator.prototype._n = function (t) { + var u = this.out; + if (!u) + return; + u._n(t); + }; + ReplaceErrorOperator.prototype._e = function (err) { + var u = this.out; + if (!u) + return; + try { + this.ins._remove(this); + (this.ins = this.fn(err))._add(this); + } + catch (e) { + u._e(e); + } + }; + ReplaceErrorOperator.prototype._c = function () { + var u = this.out; + if (!u) + return; + u._c(); + }; + return ReplaceErrorOperator; +}()); +exports.ReplaceErrorOperator = ReplaceErrorOperator; +var StartWithOperator = (function () { + function StartWithOperator(ins, value) { + this.ins = ins; + this.value = value; + this.type = 'startWith'; + this.out = exports.emptyListener; + } + StartWithOperator.prototype._start = function (out) { + this.out = out; + this.out._n(this.value); + this.ins._add(out); + }; + StartWithOperator.prototype._stop = function () { + this.ins._remove(this.out); + this.out = null; + }; + return StartWithOperator; +}()); +exports.StartWithOperator = StartWithOperator; +var TakeOperator = (function () { + function TakeOperator(max, ins) { + this.max = max; + this.ins = ins; + this.type = 'take'; + this.out = null; + this.taken = 0; + } + TakeOperator.prototype._start = function (out) { + this.out = out; + this.ins._add(this); + }; + TakeOperator.prototype._stop = function () { + this.ins._remove(this); + this.out = null; + this.taken = 0; + }; + TakeOperator.prototype._n = function (t) { + var u = this.out; + if (!u) + return; + if (this.taken++ < this.max - 1) { + u._n(t); + } + else { + u._n(t); + u._c(); + this._stop(); + } + }; + TakeOperator.prototype._e = function (err) { + var u = this.out; + if (!u) + return; + u._e(err); + }; + TakeOperator.prototype._c = function () { + var u = this.out; + if (!u) + return; + u._c(); + }; + return TakeOperator; +}()); +exports.TakeOperator = TakeOperator; +var Stream = (function () { + function Stream(producer) { + this._stopID = empty; + this._prod = producer; + this._ils = []; + } + Stream.prototype._n = function (t) { + var a = this._ils; + var L = a.length; + if (L == 1) + a[0]._n(t); + else { + var b = copy(a); + for (var i = 0; i < L; i++) + b[i]._n(t); + } + }; + Stream.prototype._e = function (err) { + var a = this._ils; + var L = a.length; + if (L == 1) + a[0]._e(err); + else { + var b = copy(a); + for (var i = 0; i < L; i++) + b[i]._e(err); + } + this._x(); + }; + Stream.prototype._c = function () { + var a = this._ils; + var L = a.length; + if (L == 1) + a[0]._c(); + else { + var b = copy(a); + for (var i = 0; i < L; i++) + b[i]._c(); + } + this._x(); + }; + Stream.prototype._x = function () { + if (this._ils.length === 0) + return; + if (this._prod) + this._prod._stop(); + this._ils = []; + }; + /** + * Adds a Listener to the Stream. + * + * @param {Listener} listener + */ + Stream.prototype.addListener = function (listener) { + if (typeof listener.next !== 'function' + || typeof listener.error !== 'function' + || typeof listener.complete !== 'function') { + throw new Error('stream.addListener() requires all three next, error, ' + + 'and complete functions.'); + } + listener._n = listener.next; + listener._e = listener.error; + listener._c = listener.complete; + this._add(listener); + }; + /** + * Removes a Listener from the Stream, assuming the Listener was added to it. + * + * @param {Listener} listener + */ + Stream.prototype.removeListener = function (listener) { + this._remove(listener); + }; + Stream.prototype._add = function (il) { + var a = this._ils; + a.push(il); + if (a.length === 1) { + if (this._stopID !== empty) { + clearTimeout(this._stopID); + this._stopID = empty; + } + var p = this._prod; + if (p) + p._start(this); + } + }; + Stream.prototype._remove = function (il) { + var a = this._ils; + var i = a.indexOf(il); + if (i > -1) { + a.splice(i, 1); + var p_1 = this._prod; + if (p_1 && a.length <= 0) { + this._stopID = setTimeout(function () { return p_1._stop(); }); + } + } + }; + Stream.prototype.ctor = function () { + return this instanceof MemoryStream ? MemoryStream : Stream; + }; + /** + * Creates a new Stream given a Producer. + * + * @factory true + * @param {Producer} producer An optional Producer that dictates how to + * start, generate events, and stop the Stream. + * @return {Stream} + */ + Stream.create = function (producer) { + if (producer) { + if (typeof producer.start !== 'function' + || typeof producer.stop !== 'function') { + throw new Error('producer requires both start and stop functions'); + } + internalizeProducer(producer); // mutates the input + } + return new Stream(producer); + }; + /** + * Creates a new MemoryStream given a Producer. + * + * @factory true + * @param {Producer} producer An optional Producer that dictates how to + * start, generate events, and stop the Stream. + * @return {MemoryStream} + */ + Stream.createWithMemory = function (producer) { + if (producer) { + internalizeProducer(producer); // mutates the input + } + return new MemoryStream(producer); + }; + /** + * Creates a new MimicStream, which can `imitate` another Stream. Only a + * MimicStream has the `imitate()` method. + * + * @factory true + * @return {MimicStream} + */ + Stream.createMimic = function () { + return new MimicStream(); + }; + /** + * Creates a Stream that does nothing when started. It never emits any event. + * + * Marble diagram: + * + * ```text + * never + * ----------------------- + * ``` + * + * @factory true + * @return {Stream} + */ + Stream.never = function () { + return new Stream({ _start: noop, _stop: noop }); + }; + /** + * Creates a Stream that immediately emits the "complete" notification when + * started, and that's it. + * + * Marble diagram: + * + * ```text + * empty + * -| + * ``` + * + * @factory true + * @return {Stream} + */ + Stream.empty = function () { + return new Stream({ + _start: function (il) { il._c(); }, + _stop: noop, + }); + }; + /** + * Creates a Stream that immediately emits an "error" notification with the + * value you passed as the `error` argument when the stream starts, and that's + * it. + * + * Marble diagram: + * + * ```text + * throw(X) + * -X + * ``` + * + * @factory true + * @param error The error event to emit on the created stream. + * @return {Stream} + */ + Stream.throw = function (error) { + return new Stream({ + _start: function (il) { il._e(error); }, + _stop: noop, + }); + }; + /** + * Creates a Stream that immediately emits the arguments that you give to + * *of*, then completes. + * + * Marble diagram: + * + * ```text + * of(1,2,3) + * 123| + * ``` + * + * @factory true + * @param a The first value you want to emit as an event on the stream. + * @param b The second value you want to emit as an event on the stream. One + * or more of these values may be given as arguments. + * @return {Stream} + */ + Stream.of = function () { + var items = []; + for (var _i = 0; _i < arguments.length; _i++) { + items[_i - 0] = arguments[_i]; + } + return Stream.fromArray(items); + }; + /** + * Converts an array to a stream. The returned stream will emit synchronously + * all the items in the array, and then complete. + * + * Marble diagram: + * + * ```text + * fromArray([1,2,3]) + * 123| + * ``` + * + * @factory true + * @param {Array} array The array to be converted as a stream. + * @return {Stream} + */ + Stream.fromArray = function (array) { + return new Stream(new FromArrayProducer(array)); + }; + /** + * Converts a promise to a stream. The returned stream will emit the resolved + * value of the promise, and then complete. However, if the promise is + * rejected, the stream will emit the corresponding error. + * + * Marble diagram: + * + * ```text + * fromPromise( ----42 ) + * -----------------42| + * ``` + * + * @factory true + * @param {Promise} promise The promise to be converted as a stream. + * @return {Stream} + */ + Stream.fromPromise = function (promise) { + return new Stream(new FromPromiseProducer(promise)); + }; + /** + * Creates a stream that periodically emits incremental numbers, every + * `period` milliseconds. + * + * Marble diagram: + * + * ```text + * periodic(1000) + * ---0---1---2---3---4---... + * ``` + * + * @factory true + * @param {number} period The interval in milliseconds to use as a rate of + * emission. + * @return {Stream} + */ + Stream.periodic = function (period) { + return new Stream(new PeriodicProducer(period)); + }; + /** + * Blends multiple streams together, emitting events from all of them + * concurrently. + * + * *merge* takes multiple streams as arguments, and creates a stream that + * behaves like each of the argument streams, in parallel. + * + * Marble diagram: + * + * ```text + * --1----2-----3--------4--- + * ----a-----b----c---d------ + * merge + * --1-a--2--b--3-c---d--4--- + * ``` + * + * @factory true + * @param {Stream} stream1 A stream to merge together with other streams. + * @param {Stream} stream2 A stream to merge together with other streams. Two + * or more streams may be given as arguments. + * @return {Stream} + */ + Stream.merge = function () { + var streams = []; + for (var _i = 0; _i < arguments.length; _i++) { + streams[_i - 0] = arguments[_i]; + } + return new Stream(new MergeProducer(streams)); + }; + Stream.prototype._map = function (project) { + var p = this._prod; + var ctor = this.ctor(); + if (p instanceof FilterOperator) { + return new ctor(new FilterMapOperator(p.passes, project, p.ins)); + } + if (p instanceof FilterMapOperator) { + return new ctor(new FilterMapOperator(p.passes, compose2(project, p.project), p.ins)); + } + if (p instanceof MapOperator) { + return new ctor(new MapOperator(compose2(project, p.project), p.ins)); + } + return new ctor(new MapOperator(project, this)); + }; + /** + * Transforms each event from the input Stream through a `project` function, + * to get a Stream that emits those transformed events. + * + * Marble diagram: + * + * ```text + * --1---3--5-----7------ + * map(i => i * 10) + * --10--30-50----70----- + * ``` + * + * @param {Function} project A function of type `(t: T) => U` that takes event + * `t` of type `T` from the input Stream and produces an event of type `U`, to + * be emitted on the output Stream. + * @return {Stream} + */ + Stream.prototype.map = function (project) { + return this._map(project); + }; + /** + * It's like `map`, but transforms each input event to always the same + * constant value on the output Stream. + * + * Marble diagram: + * + * ```text + * --1---3--5-----7----- + * mapTo(10) + * --10--10-10----10---- + * ``` + * + * @param projectedValue A value to emit on the output Stream whenever the + * input Stream emits any value. + * @return {Stream} + */ + Stream.prototype.mapTo = function (projectedValue) { + var s = this.map(function () { return projectedValue; }); + var op = s._prod; + op.type = op.type.replace('map', 'mapTo'); + return s; + }; + /** + * Only allows events that pass the test given by the `passes` argument. + * + * Each event from the input stream is given to the `passes` function. If the + * function returns `true`, the event is forwarded to the output stream, + * otherwise it is ignored and not forwarded. + * + * Marble diagram: + * + * ```text + * --1---2--3-----4-----5---6--7-8-- + * filter(i => i % 2 === 0) + * ------2--------4---------6----8-- + * ``` + * + * @param {Function} passes A function of type `(t: T) +> boolean` that takes + * an event from the input stream and checks if it passes, by returning a + * boolean. + * @return {Stream} + */ + Stream.prototype.filter = function (passes) { + var p = this._prod; + if (p instanceof FilterOperator) { + return new Stream(new FilterOperator(and(passes, p.passes), p.ins)); + } + return new Stream(new FilterOperator(passes, this)); + }; + /** + * Lets the first `amount` many events from the input stream pass to the + * output stream, then makes the output stream complete. + * + * Marble diagram: + * + * ```text + * --a---b--c----d---e-- + * take(3) + * --a---b--c| + * ``` + * + * @param {number} amount How many events to allow from the input stream + * before completing the output stream. + * @return {Stream} + */ + Stream.prototype.take = function (amount) { + return new (this.ctor())(new TakeOperator(amount, this)); + }; + /** + * Ignores the first `amount` many events from the input stream, and then + * after that starts forwarding events from the input stream to the output + * stream. + * + * Marble diagram: + * + * ```text + * --a---b--c----d---e-- + * drop(3) + * --------------d---e-- + * ``` + * + * @param {number} amount How many events to ignore from the input stream + * before forwarding all events from the input stream to the output stream. + * @return {Stream} + */ + Stream.prototype.drop = function (amount) { + return new Stream(new DropOperator(amount, this)); + }; + /** + * When the input stream completes, the output stream will emit the last event + * emitted by the input stream, and then will also complete. + * + * Marble diagram: + * + * ```text + * --a---b--c--d----| + * last() + * -----------------d| + * ``` + * + * @return {Stream} + */ + Stream.prototype.last = function () { + return new Stream(new LastOperator(this)); + }; + /** + * Prepends the given `initial` value to the sequence of events emitted by the + * input stream. The returned stream is a MemoryStream, which means it is + * already `remember()`'d. + * + * Marble diagram: + * + * ```text + * ---1---2-----3--- + * startWith(0) + * 0--1---2-----3--- + * ``` + * + * @param initial The value or event to prepend. + * @return {MemoryStream} + */ + Stream.prototype.startWith = function (initial) { + return new MemoryStream(new StartWithOperator(this, initial)); + }; + /** + * Uses another stream to determine when to complete the current stream. + * + * When the given `other` stream emits an event or completes, the output + * stream will complete. Before that happens, the output stream will behaves + * like the input stream. + * + * Marble diagram: + * + * ```text + * ---1---2-----3--4----5----6--- + * endWhen( --------a--b--| ) + * ---1---2-----3--4--| + * ``` + * + * @param other Some other stream that is used to know when should the output + * stream of this operator complete. + * @return {Stream} + */ + Stream.prototype.endWhen = function (other) { + return new (this.ctor())(new EndWhenOperator(other, this)); + }; + /** + * "Folds" the stream onto itself. + * + * Combines events from the past throughout + * the entire execution of the input stream, allowing you to accumulate them + * together. It's essentially like `Array.prototype.reduce`. The returned + * stream is a MemoryStream, which means it is already `remember()`'d. + * + * The output stream starts by emitting the `seed` which you give as argument. + * Then, when an event happens on the input stream, it is combined with that + * seed value through the `accumulate` function, and the output value is + * emitted on the output stream. `fold` remembers that output value as `acc` + * ("accumulator"), and then when a new input event `t` happens, `acc` will be + * combined with that to produce the new `acc` and so forth. + * + * Marble diagram: + * + * ```text + * ------1-----1--2----1----1------ + * fold((acc, x) => acc + x, 3) + * 3-----4-----5--7----8----9------ + * ``` + * + * @param {Function} accumulate A function of type `(acc: R, t: T) => R` that + * takes the previous accumulated value `acc` and the incoming event from the + * input stream and produces the new accumulated value. + * @param seed The initial accumulated value, of type `R`. + * @return {MemoryStream} + */ + Stream.prototype.fold = function (accumulate, seed) { + return new MemoryStream(new FoldOperator(accumulate, seed, this)); + }; + /** + * Replaces an error with another stream. + * + * When (and if) an error happens on the input stream, instead of forwarding + * that error to the output stream, *replaceError* will call the `replace` + * function which returns the stream that the output stream will replicate. + * And, in case that new stream also emits an error, `replace` will be called + * again to get another stream to start replicating. + * + * Marble diagram: + * + * ```text + * --1---2-----3--4-----X + * replaceError( () => --10--| ) + * --1---2-----3--4--------10--| + * ``` + * + * @param {Function} replace A function of type `(err) => Stream` that takes + * the error that occurred on the input stream or on the previous replacement + * stream and returns a new stream. The output stream will behave like the + * stream that this function returns. + * @return {Stream} + */ + Stream.prototype.replaceError = function (replace) { + return new (this.ctor())(new ReplaceErrorOperator(replace, this)); + }; + /** + * Flattens a "stream of streams", handling only one nested stream at a time + * (no concurrency). + * + * If the input stream is a stream that emits streams, then this operator will + * return an output stream which is a flat stream: emits regular events. The + * flattening happens without concurrency. It works like this: when the input + * stream emits a nested stream, *flatten* will start imitating that nested + * one. However, as soon as the next nested stream is emitted on the input + * stream, *flatten* will forget the previous nested one it was imitating, and + * will start imitating the new nested one. + * + * Marble diagram: + * + * ```text + * --+--------+--------------- + * \ \ + * \ ----1----2---3-- + * --a--b----c----d-------- + * flatten + * -----a--b------1----2---3-- + * ``` + * + * @return {Stream} + */ + Stream.prototype.flatten = function () { + var p = this._prod; + return new Stream(p instanceof MapOperator && !(p instanceof FilterMapOperator) ? + new MapFlattenOperator(p) : + new FlattenOperator(this)); + }; + /** + * Passes the input stream to a custom operator, to produce an output stream. + * + * *compose* is a handy way of using an existing function in a chained style. + * Instead of writing `outStream = f(inStream)` you can write + * `outStream = inStream.compose(f)`. + * + * @param {function} operator A function that takes a stream as input and + * returns a stream as well. + * @return {Stream} + */ + Stream.prototype.compose = function (operator) { + return operator(this); + }; + /** + * Returns an output stream that behaves like the input stream, but also + * remembers the most recent event that happens on the input stream, so that a + * newly added listener will immediately receive that memorised event. + * + * @return {MemoryStream} + */ + Stream.prototype.remember = function () { + var _this = this; + return new MemoryStream({ + _start: function (il) { + var p = _this._prod; + if (p) + p._start(il); + }, + _stop: function () { + var p = _this._prod; + if (p) + p._stop(); + }, + }); + }; + /** + * Returns an output stream that identically behaves like the input stream, + * but also runs a `spy` function fo each event, to help you debug your app. + * + * *debug* takes a `spy` function as argument, and runs that for each event + * happening on the input stream. If you don't provide the `spy` argument, + * then *debug* will just `console.log` each event. This helps you to + * understand the flow of events through some operator chain. + * + * Please note that if the output stream has no listeners, then it will not + * start, which means `spy` will never run because no actual event happens in + * that case. + * + * Marble diagram: + * + * ```text + * --1----2-----3-----4-- + * debug + * --1----2-----3-----4-- + * ``` + * + * @param {function} labelOrSpy A string to use as the label when printing + * debug information on the console, or a 'spy' function that takes an event + * as argument, and does not need to return anything. + * @return {Stream} + */ + Stream.prototype.debug = function (labelOrSpy) { + return new (this.ctor())(new DebugOperator(labelOrSpy, this)); + }; + /** + * Forces the Stream to emit the given value to its listeners. + * + * As the name indicates, if you use this, you are most likely doing something + * The Wrong Way. Please try to understand the reactive way before using this + * method. Use it only when you know what you are doing. + * + * @param value The "next" value you want to broadcast to all listeners of + * this Stream. + */ + Stream.prototype.shamefullySendNext = function (value) { + this._n(value); + }; + /** + * Forces the Stream to emit the given error to its listeners. + * + * As the name indicates, if you use this, you are most likely doing something + * The Wrong Way. Please try to understand the reactive way before using this + * method. Use it only when you know what you are doing. + * + * @param {any} error The error you want to broadcast to all the listeners of + * this Stream. + */ + Stream.prototype.shamefullySendError = function (error) { + this._e(error); + }; + /** + * Forces the Stream to emit the "completed" event to its listeners. + * + * As the name indicates, if you use this, you are most likely doing something + * The Wrong Way. Please try to understand the reactive way before using this + * method. Use it only when you know what you are doing. + */ + Stream.prototype.shamefullySendComplete = function () { + this._c(); + }; + /** + * Combines multiple streams together to return a stream whose events are + * calculated from the latest events of each of the input streams. + * + * *combine* remembers the most recent event from each of the input streams. + * When any of the input streams emits an event, that event together with all + * the other saved events are combined in the `project` function which should + * return a value. That value will be emitted on the output stream. It's + * essentially a way of mixing the events from multiple streams according to a + * formula. + * + * Marble diagram: + * + * ```text + * --1----2-----3--------4--- + * ----a-----b-----c--d------ + * combine((x,y) => x+y) + * ----1a-2a-2b-3b-3c-3d-4d-- + * ``` + * + * @factory true + * @param {Function} project A function of type `(x: T1, y: T2) => R` or + * similar that takes the most recent events `x` and `y` from the input + * streams and returns a value. The output stream will emit that value. The + * number of arguments for this function should match the number of input + * streams. + * @param {Stream} stream1 A stream to combine together with other streams. + * @param {Stream} stream2 A stream to combine together with other streams. + * Two or more streams may be given as arguments. + * @return {Stream} + */ + Stream.combine = function combine(project) { + var streams = []; + for (var _i = 1; _i < arguments.length; _i++) { + streams[_i - 1] = arguments[_i]; + } + return new Stream(new CombineProducer(project, streams)); + }; + return Stream; +}()); +exports.Stream = Stream; +var MimicStream = (function (_super) { + __extends(MimicStream, _super); + function MimicStream() { + _super.call(this); + } + MimicStream.prototype._add = function (il) { + var t = this._target; + if (!t) + return; + t._add(il); + }; + MimicStream.prototype._remove = function (il) { + var t = this._target; + if (!t) + return; + t._remove(il); + }; + /** + * This method exists only on a MimicStream, which is created through + * `xs.createMimic()`. *imitate* changes this current MimicStream to behave + * like the `other` given stream. + * + * The `imitate` method and the `MimicStream` type exist to allow one thing: + * **circular dependency of streams**. For instance, let's imagine that for + * some reason you need to create a circular dependency where stream `first$` + * depends on stream `second$` which in turn depends on `first$`: + * + * + * ```js + * import delay from 'xstream/extra/delay' + * + * var first$ = second$.map(x => x * 10).take(3); + * var second$ = first$.map(x => x + 1).startWith(1).compose(delay(100)); + * ``` + * + * However, that is invalid JavaScript, because `second$` is undefined + * on the first line. This is how a MimicStream and imitate can help solve it: + * + * ```js + * import delay from 'xstream/extra/delay' + * + * var secondMimic$ = xs.createMimic(); + * var first$ = secondMimic$.map(x => x * 10).take(3); + * var second$ = first$.map(x => x + 1).startWith(1).compose(delay(100)); + * secondMimic$.imitate(second$); + * ``` + * + * We create `secondMimic$` before the others, so it can be used in the + * declaration of `first$`. Then, after both `first$` and `second$` are + * defined, we hook `secondMimic$` with `second$` with `imitate()` to tell + * that they are "the same". `imitate` will not trigger the start of any + * stream, it simply forwards listeners of `secondMimic$` to `second$`. + * + * The following is an example where `imitate()` is important in Cycle.js + * applications. A parent component contains some child components. A child + * has an action stream which is given to the parent to define its state: + * + * + * ```js + * const childActionMimic$ = xs.createMimic(); + * const parent = Parent({...sources, childAction$: childActionMimic$}); + * const childAction$ = parent.state$.map(s => s.child.action$).flatten(); + * childActionMimic$.imitate(childAction$); + * ``` + * + * The *imitate* method returns nothing. Instead, it changes the behavior of + * the current stream, making it re-emit whatever events are emitted by the + * given `other` stream. + * + * Note, though, that **`imitate()` does not support MemoryStreams**. If we + * would attempt to imitate a MemoryStream in a circular dependency, we would + * either get a race condition (where the symptom would be "nothing happens") + * or an infinite cyclic emission of values. It's useful to think about + * MemoryStreams as cells in a spreadsheet. It doesn't make any sense to + * define a spreadsheet cell `A1` with a formula that depends on `B1` and + * cell `B1` defined with a formula that depends on `A1`. + * + * If you find yourself wanting to use `imitate()` with a + * MemoryStream, you should rework your code around `imitate()` to use a + * Stream instead. Look for the stream in the circular dependency that + * represents an event stream, and that would be a candidate for creating a + * MimicStream which then imitates the real event stream. + * + * @param {Stream} other The stream to imitate on the current one. Must not be + * a MemoryStream. + */ + MimicStream.prototype.imitate = function (other) { + if (other instanceof MemoryStream) { + throw new Error('A MemoryStream was given to imitate(), but it only ' + + 'supports a Stream. Read more about this restriction here: ' + + 'https://github.com/staltz/xstream#faq'); + } + this._target = other; + }; + return MimicStream; +}(Stream)); +exports.MimicStream = MimicStream; +var MemoryStream = (function (_super) { + __extends(MemoryStream, _super); + function MemoryStream(producer) { + _super.call(this, producer); + this._has = false; + } + MemoryStream.prototype._n = function (x) { + this._v = x; + this._has = true; + _super.prototype._n.call(this, x); + }; + MemoryStream.prototype._add = function (il) { + if (this._has) { + il._n(this._v); + } + _super.prototype._add.call(this, il); + }; + MemoryStream.prototype._x = function () { + this._has = false; + _super.prototype._x.call(this); + }; + MemoryStream.prototype.map = function (project) { + return this._map(project); + }; + MemoryStream.prototype.mapTo = function (projectedValue) { + return _super.prototype.mapTo.call(this, projectedValue); + }; + MemoryStream.prototype.take = function (amount) { + return _super.prototype.take.call(this, amount); + }; + MemoryStream.prototype.endWhen = function (other) { + return _super.prototype.endWhen.call(this, other); + }; + MemoryStream.prototype.replaceError = function (replace) { + return _super.prototype.replaceError.call(this, replace); + }; + MemoryStream.prototype.debug = function (labelOrSpy) { + return _super.prototype.debug.call(this, labelOrSpy); + }; + return MemoryStream; +}(Stream)); +exports.MemoryStream = MemoryStream; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = Stream; + +},{}],81:[function(require,module,exports){ +"use strict"; +var core_1 = require('../core'); +var empty = {}; +var DropRepeatsOperator = (function () { + function DropRepeatsOperator(fn, ins) { + this.fn = fn; + this.ins = ins; + this.type = 'dropRepeats'; + this.out = null; + this.v = empty; + } + DropRepeatsOperator.prototype._start = function (out) { + this.out = out; + this.ins._add(this); + }; + DropRepeatsOperator.prototype._stop = function () { + this.ins._remove(this); + this.out = null; + this.v = empty; + }; + DropRepeatsOperator.prototype.isEq = function (x, y) { + return this.fn ? this.fn(x, y) : x === y; + }; + DropRepeatsOperator.prototype._n = function (t) { + var u = this.out; + if (!u) + return; + var v = this.v; + if (v === empty || !this.isEq(t, v)) { + u._n(t); + } + this.v = t; + }; + DropRepeatsOperator.prototype._e = function (err) { + var u = this.out; + if (!u) + return; + u._e(err); + }; + DropRepeatsOperator.prototype._c = function () { + var u = this.out; + if (!u) + return; + u._c(); + }; + return DropRepeatsOperator; +}()); +exports.DropRepeatsOperator = DropRepeatsOperator; +function dropRepeats(isEqual) { + if (isEqual === void 0) { isEqual = null; } + return function dropRepeatsOperator(ins) { + return new core_1.Stream(new DropRepeatsOperator(isEqual, ins)); + }; +} +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = dropRepeats; + +},{"../core":80}],82:[function(require,module,exports){ +"use strict"; +var core_1 = require('./core'); +exports.Stream = core_1.Stream; +exports.MemoryStream = core_1.MemoryStream; +exports.MimicStream = core_1.MimicStream; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = core_1.Stream; + +},{"./core":80}],83:[function(require,module,exports){ +"use strict"; +var base_1 = require('@cycle/base'); +var xstream_adapter_1 = require('@cycle/xstream-adapter'); +/** + * A function that prepares the Cycle application to be executed. Takes a `main` + * function and prepares to circularly connects it to the given collection of + * driver functions. As an output, `Cycle()` returns an object with three + * properties: `sources`, `sinks` and `run`. Only when `run()` is called will + * the application actually execute. Refer to the documentation of `run()` for + * more details. + * + * **Example:** + * ```js + * const {sources, sinks, run} = Cycle(main, drivers); + * // ... + * const dispose = run(); // Executes the application + * // ... + * dispose(); + * ``` + * + * @param {Function} main a function that takes `sources` as input + * and outputs a collection of `sinks` Observables. + * @param {Object} drivers an object where keys are driver names and values + * are driver functions. + * @return {Object} an object with three properties: `sources`, `sinks` and + * `run`. `sources` is the collection of driver sources, `sinks` is the + * collection of driver sinks, these can be used for debugging or testing. `run` + * is the function that once called will execute the application. + * @function Cycle + */ +var Cycle = function (main, drivers) { + return base_1.default(main, drivers, { streamAdapter: xstream_adapter_1.default }); +}; +/** + * Takes a `main` function and circularly connects it to the given collection + * of driver functions. + * + * **Example:** + * ```js + * const dispose = Cycle.run(main, drivers); + * // ... + * dispose(); + * ``` + * + * The `main` function expects a collection of "source" Observables (returned + * from drivers) as input, and should return a collection of "sink" Observables + * (to be given to drivers). A "collection of Observables" is a JavaScript + * object where keys match the driver names registered by the `drivers` object, + * and values are the Observables. Refer to the documentation of each driver to + * see more details on what types of sources it outputs and sinks it receives. + * + * @param {Function} main a function that takes `sources` as input + * and outputs a collection of `sinks` Observables. + * @param {Object} drivers an object where keys are driver names and values + * are driver functions. + * @return {Function} a dispose function, used to terminate the execution of the + * Cycle.js program, cleaning up resources used. + * @function run + */ +function run(main, drivers) { + var run = base_1.default(main, drivers, { streamAdapter: xstream_adapter_1.default }).run; + return run(); +} +exports.run = run; +Cycle.run = run; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = Cycle; + +},{"@cycle/base":84,"@cycle/xstream-adapter":85}],84:[function(require,module,exports){ +"use strict"; +function logToConsoleError(err) { + var target = err.stack || err; + if (console && console.error) { + console.error(target); + } + else if (console && console.log) { + console.log(target); + } +} +function makeSinkProxies(drivers, streamAdapter) { + var sinkProxies = {}; + for (var name_1 in drivers) { + if (drivers.hasOwnProperty(name_1)) { + var holdSubject = streamAdapter.makeSubject(); + var driverStreamAdapter = drivers[name_1].streamAdapter || streamAdapter; + var stream = driverStreamAdapter.adapt(holdSubject.stream, streamAdapter.streamSubscribe); + sinkProxies[name_1] = { + stream: stream, + observer: holdSubject.observer, + }; + } + } + return sinkProxies; +} +function callDrivers(drivers, sinkProxies, streamAdapter) { + var sources = {}; + for (var name_2 in drivers) { + if (drivers.hasOwnProperty(name_2)) { + var driverOutput = drivers[name_2](sinkProxies[name_2].stream, streamAdapter, name_2); + var driverStreamAdapter = drivers[name_2].streamAdapter; + if (driverStreamAdapter && driverStreamAdapter.isValidStream(driverOutput)) { + sources[name_2] = streamAdapter.adapt(driverOutput, driverStreamAdapter.streamSubscribe); + } + else { + sources[name_2] = driverOutput; + } + } + } + return sources; +} +function replicateMany(sinks, sinkProxies, streamAdapter) { + var results = Object.keys(sinks) + .filter(function (name) { return !!sinkProxies[name]; }) + .map(function (name) { + return streamAdapter.streamSubscribe(sinks[name], { + next: function (x) { sinkProxies[name].observer.next(x); }, + error: function (err) { + logToConsoleError(err); + sinkProxies[name].observer.error(err); + }, + complete: function (x) { + sinkProxies[name].observer.complete(x); + } + }); + }); + var disposeFunctions = results + .filter(function (dispose) { return typeof dispose === 'function'; }); + return function () { + disposeFunctions.forEach(function (dispose) { return dispose(); }); + }; +} +function disposeSources(sources) { + for (var k in sources) { + if (sources.hasOwnProperty(k) && sources[k] + && typeof sources[k].dispose === 'function') { + sources[k].dispose(); + } + } +} +var isObjectEmpty = function (obj) { return Object.keys(obj).length === 0; }; +function Cycle(main, drivers, options) { + if (typeof main !== "function") { + throw new Error("First argument given to Cycle must be the 'main' " + + "function."); + } + if (typeof drivers !== "object" || drivers === null) { + throw new Error("Second argument given to Cycle must be an object " + + "with driver functions as properties."); + } + if (isObjectEmpty(drivers)) { + throw new Error("Second argument given to Cycle must be an object " + + "with at least one driver function declared as a property."); + } + var streamAdapter = options.streamAdapter; + if (!streamAdapter || isObjectEmpty(streamAdapter)) { + throw new Error("Third argument given to Cycle must be an options object " + + "with the streamAdapter key supplied with a valid stream adapter."); + } + var sinkProxies = makeSinkProxies(drivers, streamAdapter); + var sources = callDrivers(drivers, sinkProxies, streamAdapter); + var sinks = main(sources); + if (typeof window !== 'undefined') { + window.Cyclejs = { sinks: sinks }; + } + var run = function () { + var disposeReplication = replicateMany(sinks, sinkProxies, streamAdapter); + return function () { + disposeSources(sources); + disposeReplication(); + }; + }; + return { sinks: sinks, sources: sources, run: run }; +} +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = Cycle; + +},{}],85:[function(require,module,exports){ +arguments[4][20][0].apply(exports,arguments) +},{"dup":20,"xstream":115}],86:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +/** + * Indicates that navigation was caused by a call to history.push. + */ +var PUSH = exports.PUSH = 'PUSH'; + +/** + * Indicates that navigation was caused by a call to history.replace. + */ +var REPLACE = exports.REPLACE = 'REPLACE'; + +/** + * Indicates that navigation was caused by some other action such + * as using a browser's back/forward buttons and/or manually manipulating + * the URL in a browser's location bar. This is the default. + * + * See https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate + * for more information. + */ +var POP = exports.POP = 'POP'; +},{}],87:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } + +var loopAsync = exports.loopAsync = function loopAsync(turns, work, callback) { + var currentTurn = 0, + isDone = false; + var isSync = false, + hasNext = false, + doneArgs = void 0; + + var done = function done() { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + isDone = true; + + if (isSync) { + // Iterate instead of recursing if possible. + doneArgs = args; + return; + } + + callback.apply(undefined, args); + }; + + var next = function next() { + if (isDone) return; + + hasNext = true; + + if (isSync) return; // Iterate instead of recursing if possible. + + isSync = true; + + while (!isDone && currentTurn < turns && hasNext) { + hasNext = false; + work(currentTurn++, next, done); + } + + isSync = false; + + if (isDone) { + // This means the loop finished synchronously. + callback.apply(undefined, _toConsumableArray(doneArgs)); + return; + } + + if (currentTurn >= turns && hasNext) { + isDone = true; + callback(); + } + }; + + next(); +}; +},{}],88:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.go = exports.replaceLocation = exports.pushLocation = exports.startListener = exports.getUserConfirmation = exports.getCurrentLocation = undefined; + +var _LocationUtils = require('./LocationUtils'); + +var _DOMUtils = require('./DOMUtils'); + +var _DOMStateStorage = require('./DOMStateStorage'); + +var _PathUtils = require('./PathUtils'); + +/* eslint-disable no-alert */ + + +var PopStateEvent = 'popstate'; + +var _createLocation = function _createLocation(historyState) { + var key = historyState && historyState.key; + + return (0, _LocationUtils.createLocation)({ + pathname: window.location.pathname, + search: window.location.search, + hash: window.location.hash, + state: key ? (0, _DOMStateStorage.readState)(key) : undefined + }, undefined, key); +}; + +var getCurrentLocation = exports.getCurrentLocation = function getCurrentLocation() { + var historyState = void 0; + try { + historyState = window.history.state || {}; + } catch (error) { + // IE 11 sometimes throws when accessing window.history.state + // See https://github.com/mjackson/history/pull/289 + historyState = {}; + } + + return _createLocation(historyState); +}; + +var getUserConfirmation = exports.getUserConfirmation = function getUserConfirmation(message, callback) { + return callback(window.confirm(message)); +}; + +var startListener = exports.startListener = function startListener(listener) { + var handlePopState = function handlePopState(event) { + if (event.state !== undefined) // Ignore extraneous popstate events in WebKit + listener(_createLocation(event.state)); + }; + + (0, _DOMUtils.addEventListener)(window, PopStateEvent, handlePopState); + + return function () { + return (0, _DOMUtils.removeEventListener)(window, PopStateEvent, handlePopState); + }; +}; + +var updateLocation = function updateLocation(location, updateState) { + var state = location.state; + var key = location.key; + + + if (state !== undefined) (0, _DOMStateStorage.saveState)(key, state); + + updateState({ key: key }, (0, _PathUtils.createPath)(location)); +}; + +var pushLocation = exports.pushLocation = function pushLocation(location) { + return updateLocation(location, function (state, path) { + return window.history.pushState(state, null, path); + }); +}; + +var replaceLocation = exports.replaceLocation = function replaceLocation(location) { + return updateLocation(location, function (state, path) { + return window.history.replaceState(state, null, path); + }); +}; + +var go = exports.go = function go(n) { + if (n) window.history.go(n); +}; +},{"./DOMStateStorage":89,"./DOMUtils":90,"./LocationUtils":93,"./PathUtils":94}],89:[function(require,module,exports){ +(function (process){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.readState = exports.saveState = undefined; + +var _warning = require('warning'); + +var _warning2 = _interopRequireDefault(_warning); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var QuotaExceededErrors = ['QuotaExceededError', 'QUOTA_EXCEEDED_ERR']; /* eslint-disable no-empty */ + + +var SecurityError = 'SecurityError'; +var KeyPrefix = '@@History/'; + +var createKey = function createKey(key) { + return KeyPrefix + key; +}; + +var saveState = exports.saveState = function saveState(key, state) { + if (!window.sessionStorage) { + // Session storage is not available or hidden. + // sessionStorage is undefined in Internet Explorer when served via file protocol. + process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, '[history] Unable to save state; sessionStorage is not available') : void 0; + return; + } + + try { + if (state == null) { + window.sessionStorage.removeItem(createKey(key)); + } else { + window.sessionStorage.setItem(createKey(key), JSON.stringify(state)); + } + } catch (error) { + if (error.name === SecurityError) { + // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any + // attempt to access window.sessionStorage. + process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, '[history] Unable to save state; sessionStorage is not available due to security settings') : void 0; + + return; + } + + if (QuotaExceededErrors.indexOf(error.name) >= 0 && window.sessionStorage.length === 0) { + // Safari "private mode" throws QuotaExceededError. + process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, '[history] Unable to save state; sessionStorage is not available in Safari private mode') : void 0; + + return; + } + + throw error; + } +}; + +var readState = exports.readState = function readState(key) { + var json = void 0; + try { + json = window.sessionStorage.getItem(createKey(key)); + } catch (error) { + if (error.name === SecurityError) { + // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any + // attempt to access window.sessionStorage. + process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, '[history] Unable to read state; sessionStorage is not available due to security settings') : void 0; + + return undefined; + } + } + + if (json) { + try { + return JSON.parse(json); + } catch (error) { + // Ignore invalid JSON. + } + } + + return undefined; +}; +}).call(this,require('_process')) + +},{"_process":110,"warning":109}],90:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var addEventListener = exports.addEventListener = function addEventListener(node, event, listener) { + return node.addEventListener ? node.addEventListener(event, listener, false) : node.attachEvent('on' + event, listener); +}; + +var removeEventListener = exports.removeEventListener = function removeEventListener(node, event, listener) { + return node.removeEventListener ? node.removeEventListener(event, listener, false) : node.detachEvent('on' + event, listener); +}; + +/** + * Returns true if the HTML5 history API is supported. Taken from Modernizr. + * + * https://github.com/Modernizr/Modernizr/blob/master/LICENSE + * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js + * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586 + */ +var supportsHistory = exports.supportsHistory = function supportsHistory() { + var ua = window.navigator.userAgent; + + if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false; + + return window.history && 'pushState' in window.history; +}; + +/** + * Returns false if using go(n) with hash history causes a full page reload. + */ +var supportsGoWithoutReloadUsingHash = exports.supportsGoWithoutReloadUsingHash = function supportsGoWithoutReloadUsingHash() { + return window.navigator.userAgent.indexOf('Firefox') === -1; +}; +},{}],91:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var canUseDOM = exports.canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement); +},{}],92:[function(require,module,exports){ +(function (process){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.replaceLocation = exports.pushLocation = exports.startListener = exports.getCurrentLocation = exports.go = exports.getUserConfirmation = undefined; + +var _BrowserProtocol = require('./BrowserProtocol'); + +Object.defineProperty(exports, 'getUserConfirmation', { + enumerable: true, + get: function get() { + return _BrowserProtocol.getUserConfirmation; + } +}); +Object.defineProperty(exports, 'go', { + enumerable: true, + get: function get() { + return _BrowserProtocol.go; + } +}); + +var _warning = require('warning'); + +var _warning2 = _interopRequireDefault(_warning); + +var _LocationUtils = require('./LocationUtils'); + +var _DOMUtils = require('./DOMUtils'); + +var _DOMStateStorage = require('./DOMStateStorage'); + +var _PathUtils = require('./PathUtils'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var HashChangeEvent = 'hashchange'; + +var getHashPath = function getHashPath() { + // We can't use window.location.hash here because it's not + // consistent across browsers - Firefox will pre-decode it! + var href = window.location.href; + var index = href.indexOf('#'); + return index === -1 ? '' : href.substring(index + 1); +}; + +var pushHashPath = function pushHashPath(path) { + return window.location.hash = path; +}; + +var replaceHashPath = function replaceHashPath(path) { + var i = window.location.href.indexOf('#'); + + window.location.replace(window.location.href.slice(0, i >= 0 ? i : 0) + '#' + path); +}; + +var ensureSlash = function ensureSlash() { + var path = getHashPath(); + + if ((0, _PathUtils.isAbsolutePath)(path)) return true; + + replaceHashPath('/' + path); + + return false; +}; + +var getCurrentLocation = exports.getCurrentLocation = function getCurrentLocation(queryKey) { + var path = getHashPath(); + var key = (0, _PathUtils.getQueryStringValueFromPath)(path, queryKey); + + var state = void 0; + if (key) { + path = (0, _PathUtils.stripQueryStringValueFromPath)(path, queryKey); + state = (0, _DOMStateStorage.readState)(key); + } + + var init = (0, _PathUtils.parsePath)(path); + init.state = state; + + return (0, _LocationUtils.createLocation)(init, undefined, key); +}; + +var prevLocation = void 0; + +var startListener = exports.startListener = function startListener(listener, queryKey) { + var handleHashChange = function handleHashChange() { + if (!ensureSlash()) return; // Hash path must always begin with a / + + var currentLocation = getCurrentLocation(queryKey); + + if (prevLocation && currentLocation.key && prevLocation.key === currentLocation.key) return; // Ignore extraneous hashchange events + + prevLocation = currentLocation; + + listener(currentLocation); + }; + + ensureSlash(); + (0, _DOMUtils.addEventListener)(window, HashChangeEvent, handleHashChange); + + return function () { + return (0, _DOMUtils.removeEventListener)(window, HashChangeEvent, handleHashChange); + }; +}; + +var updateLocation = function updateLocation(location, queryKey, updateHash) { + var state = location.state; + var key = location.key; + + var path = (0, _PathUtils.createPath)(location); + + if (state !== undefined) { + path = (0, _PathUtils.addQueryStringValueToPath)(path, queryKey, key); + (0, _DOMStateStorage.saveState)(key, state); + } + + prevLocation = location; + + updateHash(path); +}; + +var pushLocation = exports.pushLocation = function pushLocation(location, queryKey) { + return updateLocation(location, queryKey, function (path) { + if (getHashPath() !== path) { + pushHashPath(path); + } else { + process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, 'You cannot PUSH the same path using hash history') : void 0; + } + }); +}; + +var replaceLocation = exports.replaceLocation = function replaceLocation(location, queryKey) { + return updateLocation(location, queryKey, function (path) { + if (getHashPath() !== path) replaceHashPath(path); + }); +}; +}).call(this,require('_process')) + +},{"./BrowserProtocol":88,"./DOMStateStorage":89,"./DOMUtils":90,"./LocationUtils":93,"./PathUtils":94,"_process":110,"warning":109}],93:[function(require,module,exports){ +(function (process){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.locationsAreEqual = exports.statesAreEqual = exports.createLocation = exports.createQuery = undefined; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _invariant = require('invariant'); + +var _invariant2 = _interopRequireDefault(_invariant); + +var _PathUtils = require('./PathUtils'); + +var _Actions = require('./Actions'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var createQuery = exports.createQuery = function createQuery(props) { + return _extends(Object.create(null), props); +}; + +var createLocation = exports.createLocation = function createLocation() { + var input = arguments.length <= 0 || arguments[0] === undefined ? '/' : arguments[0]; + var action = arguments.length <= 1 || arguments[1] === undefined ? _Actions.POP : arguments[1]; + var key = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2]; + + var object = typeof input === 'string' ? (0, _PathUtils.parsePath)(input) : input; + + var pathname = object.pathname || '/'; + var search = object.search || ''; + var hash = object.hash || ''; + var state = object.state; + + return { + pathname: pathname, + search: search, + hash: hash, + state: state, + action: action, + key: key + }; +}; + +var isDate = function isDate(object) { + return Object.prototype.toString.call(object) === '[object Date]'; +}; + +var statesAreEqual = exports.statesAreEqual = function statesAreEqual(a, b) { + if (a === b) return true; + + var typeofA = typeof a === 'undefined' ? 'undefined' : _typeof(a); + var typeofB = typeof b === 'undefined' ? 'undefined' : _typeof(b); + + if (typeofA !== typeofB) return false; + + !(typeofA !== 'function') ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'You must not store functions in location state') : (0, _invariant2.default)(false) : void 0; + + // Not the same object, but same type. + if (typeofA === 'object') { + !!(isDate(a) && isDate(b)) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'You must not store Date objects in location state') : (0, _invariant2.default)(false) : void 0; + + if (!Array.isArray(a)) return Object.keys(a).every(function (key) { + return statesAreEqual(a[key], b[key]); + }); + + return Array.isArray(b) && a.length === b.length && a.every(function (item, index) { + return statesAreEqual(item, b[index]); + }); + } + + // All other serializable types (string, number, boolean) + // should be strict equal. + return false; +}; + +var locationsAreEqual = exports.locationsAreEqual = function locationsAreEqual(a, b) { + return a.key === b.key && + // a.action === b.action && // Different action !== location change. + a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && statesAreEqual(a.state, b.state); +}; +}).call(this,require('_process')) + +},{"./Actions":86,"./PathUtils":94,"_process":110,"invariant":105}],94:[function(require,module,exports){ +(function (process){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.createPath = exports.parsePath = exports.getQueryStringValueFromPath = exports.stripQueryStringValueFromPath = exports.addQueryStringValueToPath = exports.isAbsolutePath = undefined; + +var _warning = require('warning'); + +var _warning2 = _interopRequireDefault(_warning); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var isAbsolutePath = exports.isAbsolutePath = function isAbsolutePath(path) { + return typeof path === 'string' && path.charAt(0) === '/'; +}; + +var addQueryStringValueToPath = exports.addQueryStringValueToPath = function addQueryStringValueToPath(path, key, value) { + var _parsePath = parsePath(path); + + var pathname = _parsePath.pathname; + var search = _parsePath.search; + var hash = _parsePath.hash; + + + return createPath({ + pathname: pathname, + search: search + (search.indexOf('?') === -1 ? '?' : '&') + key + '=' + value, + hash: hash + }); +}; + +var stripQueryStringValueFromPath = exports.stripQueryStringValueFromPath = function stripQueryStringValueFromPath(path, key) { + var _parsePath2 = parsePath(path); + + var pathname = _parsePath2.pathname; + var search = _parsePath2.search; + var hash = _parsePath2.hash; + + + return createPath({ + pathname: pathname, + search: search.replace(new RegExp('([?&])' + key + '=[a-zA-Z0-9]+(&?)'), function (match, prefix, suffix) { + return prefix === '?' ? prefix : suffix; + }), + hash: hash + }); +}; + +var getQueryStringValueFromPath = exports.getQueryStringValueFromPath = function getQueryStringValueFromPath(path, key) { + var _parsePath3 = parsePath(path); + + var search = _parsePath3.search; + + var match = search.match(new RegExp('[?&]' + key + '=([a-zA-Z0-9]+)')); + return match && match[1]; +}; + +var extractPath = function extractPath(string) { + var match = string.match(/^(https?:)?\/\/[^\/]*/); + return match == null ? string : string.substring(match[0].length); +}; + +var parsePath = exports.parsePath = function parsePath(path) { + var pathname = extractPath(path); + var search = ''; + var hash = ''; + + process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(path === pathname, 'A path must be pathname + search + hash only, not a full URL like "%s"', path) : void 0; + + var hashIndex = pathname.indexOf('#'); + if (hashIndex !== -1) { + hash = pathname.substring(hashIndex); + pathname = pathname.substring(0, hashIndex); + } + + var searchIndex = pathname.indexOf('?'); + if (searchIndex !== -1) { + search = pathname.substring(searchIndex); + pathname = pathname.substring(0, searchIndex); + } + + if (pathname === '') pathname = '/'; + + return { + pathname: pathname, + search: search, + hash: hash + }; +}; + +var createPath = exports.createPath = function createPath(location) { + if (location == null || typeof location === 'string') return location; + + var basename = location.basename; + var pathname = location.pathname; + var search = location.search; + var hash = location.hash; + + var path = (basename || '') + pathname; + + if (search && search !== '?') path += search; + + if (hash) path += hash; + + return path; +}; +}).call(this,require('_process')) + +},{"_process":110,"warning":109}],95:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.replaceLocation = exports.pushLocation = exports.getCurrentLocation = exports.go = exports.getUserConfirmation = undefined; + +var _BrowserProtocol = require('./BrowserProtocol'); + +Object.defineProperty(exports, 'getUserConfirmation', { + enumerable: true, + get: function get() { + return _BrowserProtocol.getUserConfirmation; + } +}); +Object.defineProperty(exports, 'go', { + enumerable: true, + get: function get() { + return _BrowserProtocol.go; + } +}); + +var _LocationUtils = require('./LocationUtils'); + +var _PathUtils = require('./PathUtils'); + +var getCurrentLocation = exports.getCurrentLocation = function getCurrentLocation() { + return (0, _LocationUtils.createLocation)(window.location); +}; + +var pushLocation = exports.pushLocation = function pushLocation(location) { + window.location.href = (0, _PathUtils.createPath)(location); + return false; // Don't update location +}; + +var replaceLocation = exports.replaceLocation = function replaceLocation(location) { + window.location.replace((0, _PathUtils.createPath)(location)); + return false; // Don't update location +}; +},{"./BrowserProtocol":88,"./LocationUtils":93,"./PathUtils":94}],96:[function(require,module,exports){ +(function (process){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _invariant = require('invariant'); + +var _invariant2 = _interopRequireDefault(_invariant); + +var _ExecutionEnvironment = require('./ExecutionEnvironment'); + +var _BrowserProtocol = require('./BrowserProtocol'); + +var BrowserProtocol = _interopRequireWildcard(_BrowserProtocol); + +var _RefreshProtocol = require('./RefreshProtocol'); + +var RefreshProtocol = _interopRequireWildcard(_RefreshProtocol); + +var _DOMUtils = require('./DOMUtils'); + +var _createHistory = require('./createHistory'); + +var _createHistory2 = _interopRequireDefault(_createHistory); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Creates and returns a history object that uses HTML5's history API + * (pushState, replaceState, and the popstate event) to manage history. + * This is the recommended method of managing history in browsers because + * it provides the cleanest URLs. + * + * Note: In browsers that do not support the HTML5 history API full + * page reloads will be used to preserve clean URLs. You can force this + * behavior using { forceRefresh: true } in options. + */ +var createBrowserHistory = function createBrowserHistory() { + var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + + !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Browser history needs a DOM') : (0, _invariant2.default)(false) : void 0; + + var useRefresh = options.forceRefresh || !(0, _DOMUtils.supportsHistory)(); + var Protocol = useRefresh ? RefreshProtocol : BrowserProtocol; + + var getUserConfirmation = Protocol.getUserConfirmation; + var getCurrentLocation = Protocol.getCurrentLocation; + var pushLocation = Protocol.pushLocation; + var replaceLocation = Protocol.replaceLocation; + var go = Protocol.go; + + + var history = (0, _createHistory2.default)(_extends({ + getUserConfirmation: getUserConfirmation }, options, { + getCurrentLocation: getCurrentLocation, + pushLocation: pushLocation, + replaceLocation: replaceLocation, + go: go + })); + + var listenerCount = 0, + stopListener = void 0; + + var startListener = function startListener(listener, before) { + if (++listenerCount === 1) stopListener = BrowserProtocol.startListener(history.transitionTo); + + var unlisten = before ? history.listenBefore(listener) : history.listen(listener); + + return function () { + unlisten(); + + if (--listenerCount === 0) stopListener(); + }; + }; + + var listenBefore = function listenBefore(listener) { + return startListener(listener, true); + }; + + var listen = function listen(listener) { + return startListener(listener, false); + }; + + return _extends({}, history, { + listenBefore: listenBefore, + listen: listen + }); +}; + +exports.default = createBrowserHistory; +}).call(this,require('_process')) + +},{"./BrowserProtocol":88,"./DOMUtils":90,"./ExecutionEnvironment":91,"./RefreshProtocol":95,"./createHistory":98,"_process":110,"invariant":105}],97:[function(require,module,exports){ +(function (process){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _warning = require('warning'); + +var _warning2 = _interopRequireDefault(_warning); + +var _invariant = require('invariant'); + +var _invariant2 = _interopRequireDefault(_invariant); + +var _ExecutionEnvironment = require('./ExecutionEnvironment'); + +var _DOMUtils = require('./DOMUtils'); + +var _HashProtocol = require('./HashProtocol'); + +var HashProtocol = _interopRequireWildcard(_HashProtocol); + +var _createHistory = require('./createHistory'); + +var _createHistory2 = _interopRequireDefault(_createHistory); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var DefaultQueryKey = '_k'; + +var createHashHistory = function createHashHistory() { + var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + + !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Hash history needs a DOM') : (0, _invariant2.default)(false) : void 0; + + var queryKey = options.queryKey; + + + process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(queryKey !== false, 'Using { queryKey: false } no longer works. Instead, just don\'t ' + 'use location state if you don\'t want a key in your URL query string') : void 0; + + if (typeof queryKey !== 'string') queryKey = DefaultQueryKey; + + var getUserConfirmation = HashProtocol.getUserConfirmation; + + + var getCurrentLocation = function getCurrentLocation() { + return HashProtocol.getCurrentLocation(queryKey); + }; + + var pushLocation = function pushLocation(location) { + return HashProtocol.pushLocation(location, queryKey); + }; + + var replaceLocation = function replaceLocation(location) { + return HashProtocol.replaceLocation(location, queryKey); + }; + + var history = (0, _createHistory2.default)(_extends({ + getUserConfirmation: getUserConfirmation }, options, { + getCurrentLocation: getCurrentLocation, + pushLocation: pushLocation, + replaceLocation: replaceLocation, + go: HashProtocol.go + })); + + var listenerCount = 0, + stopListener = void 0; + + var startListener = function startListener(listener, before) { + if (++listenerCount === 1) stopListener = HashProtocol.startListener(history.transitionTo, queryKey); + + var unlisten = before ? history.listenBefore(listener) : history.listen(listener); + + return function () { + unlisten(); + + if (--listenerCount === 0) stopListener(); + }; + }; + + var listenBefore = function listenBefore(listener) { + return startListener(listener, true); + }; + + var listen = function listen(listener) { + return startListener(listener, false); + }; + + var goIsSupportedWithoutReload = (0, _DOMUtils.supportsGoWithoutReloadUsingHash)(); + + var go = function go(n) { + process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(goIsSupportedWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0; + + history.go(n); + }; + + var createHref = function createHref(path) { + return '#' + history.createHref(path); + }; + + return _extends({}, history, { + listenBefore: listenBefore, + listen: listen, + go: go, + createHref: createHref + }); +}; + +exports.default = createHashHistory; +}).call(this,require('_process')) + +},{"./DOMUtils":90,"./ExecutionEnvironment":91,"./HashProtocol":92,"./createHistory":98,"_process":110,"invariant":105,"warning":109}],98:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _AsyncUtils = require('./AsyncUtils'); + +var _PathUtils = require('./PathUtils'); + +var _runTransitionHook = require('./runTransitionHook'); + +var _runTransitionHook2 = _interopRequireDefault(_runTransitionHook); + +var _Actions = require('./Actions'); + +var _LocationUtils = require('./LocationUtils'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } + +var createHistory = function createHistory() { + var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + var getCurrentLocation = options.getCurrentLocation; + var getUserConfirmation = options.getUserConfirmation; + var pushLocation = options.pushLocation; + var replaceLocation = options.replaceLocation; + var go = options.go; + var keyLength = options.keyLength; + + + var currentLocation = void 0; + var pendingLocation = void 0; + var beforeListeners = []; + var listeners = []; + var allKeys = []; + + var getCurrentIndex = function getCurrentIndex() { + if (pendingLocation && pendingLocation.action === _Actions.POP) return allKeys.indexOf(pendingLocation.key); + + if (currentLocation) return allKeys.indexOf(currentLocation.key); + + return -1; + }; + + var updateLocation = function updateLocation(nextLocation) { + currentLocation = nextLocation; + + var currentIndex = getCurrentIndex(); + + if (currentLocation.action === _Actions.PUSH) { + allKeys = [].concat(_toConsumableArray(allKeys.slice(0, currentIndex + 1)), [currentLocation.key]); + } else if (currentLocation.action === _Actions.REPLACE) { + allKeys[currentIndex] = currentLocation.key; + } + + listeners.forEach(function (listener) { + return listener(currentLocation); + }); + }; + + var listenBefore = function listenBefore(listener) { + beforeListeners.push(listener); + + return function () { + return beforeListeners = beforeListeners.filter(function (item) { + return item !== listener; + }); + }; + }; + + var listen = function listen(listener) { + listeners.push(listener); + + return function () { + return listeners = listeners.filter(function (item) { + return item !== listener; + }); + }; + }; + + var confirmTransitionTo = function confirmTransitionTo(location, callback) { + (0, _AsyncUtils.loopAsync)(beforeListeners.length, function (index, next, done) { + (0, _runTransitionHook2.default)(beforeListeners[index], location, function (result) { + return result != null ? done(result) : next(); + }); + }, function (message) { + if (getUserConfirmation && typeof message === 'string') { + getUserConfirmation(message, function (ok) { + return callback(ok !== false); + }); + } else { + callback(message !== false); + } + }); + }; + + var transitionTo = function transitionTo(nextLocation) { + if (currentLocation && (0, _LocationUtils.locationsAreEqual)(currentLocation, nextLocation) || pendingLocation && (0, _LocationUtils.locationsAreEqual)(pendingLocation, nextLocation)) return; // Nothing to do + + pendingLocation = nextLocation; + + confirmTransitionTo(nextLocation, function (ok) { + if (pendingLocation !== nextLocation) return; // Transition was interrupted during confirmation + + pendingLocation = null; + + if (ok) { + // Treat PUSH to same path like REPLACE to be consistent with browsers + if (nextLocation.action === _Actions.PUSH) { + var prevPath = (0, _PathUtils.createPath)(currentLocation); + var nextPath = (0, _PathUtils.createPath)(nextLocation); + + if (nextPath === prevPath && (0, _LocationUtils.statesAreEqual)(currentLocation.state, nextLocation.state)) nextLocation.action = _Actions.REPLACE; + } + + if (nextLocation.action === _Actions.POP) { + updateLocation(nextLocation); + } else if (nextLocation.action === _Actions.PUSH) { + if (pushLocation(nextLocation) !== false) updateLocation(nextLocation); + } else if (nextLocation.action === _Actions.REPLACE) { + if (replaceLocation(nextLocation) !== false) updateLocation(nextLocation); + } + } else if (currentLocation && nextLocation.action === _Actions.POP) { + var prevIndex = allKeys.indexOf(currentLocation.key); + var nextIndex = allKeys.indexOf(nextLocation.key); + + if (prevIndex !== -1 && nextIndex !== -1) go(prevIndex - nextIndex); // Restore the URL + } + }); + }; + + var push = function push(input) { + return transitionTo(createLocation(input, _Actions.PUSH)); + }; + + var replace = function replace(input) { + return transitionTo(createLocation(input, _Actions.REPLACE)); + }; + + var goBack = function goBack() { + return go(-1); + }; + + var goForward = function goForward() { + return go(1); + }; + + var createKey = function createKey() { + return Math.random().toString(36).substr(2, keyLength || 6); + }; + + var createHref = function createHref(location) { + return (0, _PathUtils.createPath)(location); + }; + + var createLocation = function createLocation(location, action) { + var key = arguments.length <= 2 || arguments[2] === undefined ? createKey() : arguments[2]; + return (0, _LocationUtils.createLocation)(location, action, key); + }; + + return { + getCurrentLocation: getCurrentLocation, + listenBefore: listenBefore, + listen: listen, + transitionTo: transitionTo, + push: push, + replace: replace, + go: go, + goBack: goBack, + goForward: goForward, + createKey: createKey, + createPath: _PathUtils.createPath, + createHref: createHref, + createLocation: createLocation + }; +}; + +exports.default = createHistory; +},{"./Actions":86,"./AsyncUtils":87,"./LocationUtils":93,"./PathUtils":94,"./runTransitionHook":101}],99:[function(require,module,exports){ +(function (process){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _warning = require('warning'); + +var _warning2 = _interopRequireDefault(_warning); + +var _invariant = require('invariant'); + +var _invariant2 = _interopRequireDefault(_invariant); + +var _LocationUtils = require('./LocationUtils'); + +var _PathUtils = require('./PathUtils'); + +var _createHistory = require('./createHistory'); + +var _createHistory2 = _interopRequireDefault(_createHistory); + +var _Actions = require('./Actions'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var createStateStorage = function createStateStorage(entries) { + return entries.filter(function (entry) { + return entry.state; + }).reduce(function (memo, entry) { + memo[entry.key] = entry.state; + return memo; + }, {}); +}; + +var createMemoryHistory = function createMemoryHistory() { + var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + + if (Array.isArray(options)) { + options = { entries: options }; + } else if (typeof options === 'string') { + options = { entries: [options] }; + } + + var getCurrentLocation = function getCurrentLocation() { + var entry = entries[current]; + var path = (0, _PathUtils.createPath)(entry); + + var key = void 0, + state = void 0; + if (entry.key) { + key = entry.key; + state = readState(key); + } + + var init = (0, _PathUtils.parsePath)(path); + + return (0, _LocationUtils.createLocation)(_extends({}, init, { state: state }), undefined, key); + }; + + var canGo = function canGo(n) { + var index = current + n; + return index >= 0 && index < entries.length; + }; + + var go = function go(n) { + if (!n) return; + + if (!canGo(n)) { + process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, 'Cannot go(%s) there is not enough history', n) : void 0; + + return; + } + + current += n; + var currentLocation = getCurrentLocation(); + + // Change action to POP + history.transitionTo(_extends({}, currentLocation, { action: _Actions.POP })); + }; + + var pushLocation = function pushLocation(location) { + current += 1; + + if (current < entries.length) entries.splice(current); + + entries.push(location); + + saveState(location.key, location.state); + }; + + var replaceLocation = function replaceLocation(location) { + entries[current] = location; + saveState(location.key, location.state); + }; + + var history = (0, _createHistory2.default)(_extends({}, options, { + getCurrentLocation: getCurrentLocation, + pushLocation: pushLocation, + replaceLocation: replaceLocation, + go: go + })); + + var _options = options; + var entries = _options.entries; + var current = _options.current; + + + if (typeof entries === 'string') { + entries = [entries]; + } else if (!Array.isArray(entries)) { + entries = ['/']; + } + + entries = entries.map(function (entry) { + return (0, _LocationUtils.createLocation)(entry); + }); + + if (current == null) { + current = entries.length - 1; + } else { + !(current >= 0 && current < entries.length) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Current index must be >= 0 and < %s, was %s', entries.length, current) : (0, _invariant2.default)(false) : void 0; + } + + var storage = createStateStorage(entries); + + var saveState = function saveState(key, state) { + return storage[key] = state; + }; + + var readState = function readState(key) { + return storage[key]; + }; + + return history; +}; + +exports.default = createMemoryHistory; +}).call(this,require('_process')) + +},{"./Actions":86,"./LocationUtils":93,"./PathUtils":94,"./createHistory":98,"_process":110,"invariant":105,"warning":109}],100:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.locationsAreEqual = exports.Actions = exports.useQueries = exports.useBeforeUnload = exports.useBasename = exports.createMemoryHistory = exports.createHashHistory = exports.createHistory = undefined; + +var _LocationUtils = require('./LocationUtils'); + +Object.defineProperty(exports, 'locationsAreEqual', { + enumerable: true, + get: function get() { + return _LocationUtils.locationsAreEqual; + } +}); + +var _createBrowserHistory = require('./createBrowserHistory'); + +var _createBrowserHistory2 = _interopRequireDefault(_createBrowserHistory); + +var _createHashHistory2 = require('./createHashHistory'); + +var _createHashHistory3 = _interopRequireDefault(_createHashHistory2); + +var _createMemoryHistory2 = require('./createMemoryHistory'); + +var _createMemoryHistory3 = _interopRequireDefault(_createMemoryHistory2); + +var _useBasename2 = require('./useBasename'); + +var _useBasename3 = _interopRequireDefault(_useBasename2); + +var _useBeforeUnload2 = require('./useBeforeUnload'); + +var _useBeforeUnload3 = _interopRequireDefault(_useBeforeUnload2); + +var _useQueries2 = require('./useQueries'); + +var _useQueries3 = _interopRequireDefault(_useQueries2); + +var _Actions2 = require('./Actions'); + +var _Actions3 = _interopRequireDefault(_Actions2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.createHistory = _createBrowserHistory2.default; +exports.createHashHistory = _createHashHistory3.default; +exports.createMemoryHistory = _createMemoryHistory3.default; +exports.useBasename = _useBasename3.default; +exports.useBeforeUnload = _useBeforeUnload3.default; +exports.useQueries = _useQueries3.default; +exports.Actions = _Actions3.default; +},{"./Actions":86,"./LocationUtils":93,"./createBrowserHistory":96,"./createHashHistory":97,"./createMemoryHistory":99,"./useBasename":102,"./useBeforeUnload":103,"./useQueries":104}],101:[function(require,module,exports){ +(function (process){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _warning = require('warning'); + +var _warning2 = _interopRequireDefault(_warning); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var runTransitionHook = function runTransitionHook(hook, location, callback) { + var result = hook(location, callback); + + if (hook.length < 2) { + // Assume the hook runs synchronously and automatically + // call the callback with the return value. + callback(result); + } else { + process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(result === undefined, 'You should not "return" in a transition hook with a callback argument; ' + 'call the callback instead') : void 0; + } +}; + +exports.default = runTransitionHook; +}).call(this,require('_process')) + +},{"_process":110,"warning":109}],102:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _runTransitionHook = require('./runTransitionHook'); + +var _runTransitionHook2 = _interopRequireDefault(_runTransitionHook); + +var _PathUtils = require('./PathUtils'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var useBasename = function useBasename(createHistory) { + return function () { + var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + + var history = createHistory(options); + var basename = options.basename; + + + var addBasename = function addBasename(location) { + if (!location) return location; + + if (basename && location.basename == null) { + if (location.pathname.indexOf(basename) === 0) { + location.pathname = location.pathname.substring(basename.length); + location.basename = basename; + + if (location.pathname === '') location.pathname = '/'; + } else { + location.basename = ''; + } + } + + return location; + }; + + var prependBasename = function prependBasename(location) { + if (!basename) return location; + + var object = typeof location === 'string' ? (0, _PathUtils.parsePath)(location) : location; + var pname = object.pathname; + var normalizedBasename = basename.slice(-1) === '/' ? basename : basename + '/'; + var normalizedPathname = pname.charAt(0) === '/' ? pname.slice(1) : pname; + var pathname = normalizedBasename + normalizedPathname; + + return _extends({}, location, { + pathname: pathname + }); + }; + + // Override all read methods with basename-aware versions. + var getCurrentLocation = function getCurrentLocation() { + return addBasename(history.getCurrentLocation()); + }; + + var listenBefore = function listenBefore(hook) { + return history.listenBefore(function (location, callback) { + return (0, _runTransitionHook2.default)(hook, addBasename(location), callback); + }); + }; + + var listen = function listen(listener) { + return history.listen(function (location) { + return listener(addBasename(location)); + }); + }; + + // Override all write methods with basename-aware versions. + var push = function push(location) { + return history.push(prependBasename(location)); + }; + + var replace = function replace(location) { + return history.replace(prependBasename(location)); + }; + + var createPath = function createPath(location) { + return history.createPath(prependBasename(location)); + }; + + var createHref = function createHref(location) { + return history.createHref(prependBasename(location)); + }; + + var createLocation = function createLocation(location) { + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + return addBasename(history.createLocation.apply(history, [prependBasename(location)].concat(args))); + }; + + return _extends({}, history, { + getCurrentLocation: getCurrentLocation, + listenBefore: listenBefore, + listen: listen, + push: push, + replace: replace, + createPath: createPath, + createHref: createHref, + createLocation: createLocation + }); + }; +}; + +exports.default = useBasename; +},{"./PathUtils":94,"./runTransitionHook":101}],103:[function(require,module,exports){ +(function (process){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _invariant = require('invariant'); + +var _invariant2 = _interopRequireDefault(_invariant); + +var _DOMUtils = require('./DOMUtils'); + +var _ExecutionEnvironment = require('./ExecutionEnvironment'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var startListener = function startListener(getPromptMessage) { + var handleBeforeUnload = function handleBeforeUnload(event) { + var message = getPromptMessage(); + + if (typeof message === 'string') { + (event || window.event).returnValue = message; + return message; + } + + return undefined; + }; + + (0, _DOMUtils.addEventListener)(window, 'beforeunload', handleBeforeUnload); + + return function () { + return (0, _DOMUtils.removeEventListener)(window, 'beforeunload', handleBeforeUnload); + }; +}; + +/** + * Returns a new createHistory function that can be used to create + * history objects that know how to use the beforeunload event in web + * browsers to cancel navigation. + */ +var useBeforeUnload = function useBeforeUnload(createHistory) { + !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'useBeforeUnload only works in DOM environments') : (0, _invariant2.default)(false) : void 0; + + return function (options) { + var history = createHistory(options); + + var listeners = []; + var stopListener = void 0; + + var getPromptMessage = function getPromptMessage() { + var message = void 0; + for (var i = 0, len = listeners.length; message == null && i < len; ++i) { + message = listeners[i].call(); + }return message; + }; + + var listenBeforeUnload = function listenBeforeUnload(listener) { + if (listeners.push(listener) === 1) stopListener = startListener(getPromptMessage); + + return function () { + listeners = listeners.filter(function (item) { + return item !== listener; + }); + + if (listeners.length === 0 && stopListener) { + stopListener(); + stopListener = null; + } + }; + }; + + return _extends({}, history, { + listenBeforeUnload: listenBeforeUnload + }); + }; +}; + +exports.default = useBeforeUnload; +}).call(this,require('_process')) + +},{"./DOMUtils":90,"./ExecutionEnvironment":91,"_process":110,"invariant":105}],104:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _queryString = require('query-string'); + +var _runTransitionHook = require('./runTransitionHook'); + +var _runTransitionHook2 = _interopRequireDefault(_runTransitionHook); + +var _LocationUtils = require('./LocationUtils'); + +var _PathUtils = require('./PathUtils'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var defaultStringifyQuery = function defaultStringifyQuery(query) { + return (0, _queryString.stringify)(query).replace(/%20/g, '+'); +}; + +var defaultParseQueryString = _queryString.parse; + +/** + * Returns a new createHistory function that may be used to create + * history objects that know how to handle URL queries. + */ +var useQueries = function useQueries(createHistory) { + return function () { + var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + + var history = createHistory(options); + var stringifyQuery = options.stringifyQuery; + var parseQueryString = options.parseQueryString; + + + if (typeof stringifyQuery !== 'function') stringifyQuery = defaultStringifyQuery; + + if (typeof parseQueryString !== 'function') parseQueryString = defaultParseQueryString; + + var decodeQuery = function decodeQuery(location) { + if (!location) return location; + + if (location.query == null) location.query = parseQueryString(location.search.substring(1)); + + return location; + }; + + var encodeQuery = function encodeQuery(location, query) { + if (query == null) return location; + + var object = typeof location === 'string' ? (0, _PathUtils.parsePath)(location) : location; + var queryString = stringifyQuery(query); + var search = queryString ? '?' + queryString : ''; + + return _extends({}, object, { + search: search + }); + }; + + // Override all read methods with query-aware versions. + var getCurrentLocation = function getCurrentLocation() { + return decodeQuery(history.getCurrentLocation()); + }; + + var listenBefore = function listenBefore(hook) { + return history.listenBefore(function (location, callback) { + return (0, _runTransitionHook2.default)(hook, decodeQuery(location), callback); + }); + }; + + var listen = function listen(listener) { + return history.listen(function (location) { + return listener(decodeQuery(location)); + }); + }; + + // Override all write methods with query-aware versions. + var push = function push(location) { + return history.push(encodeQuery(location, location.query)); + }; + + var replace = function replace(location) { + return history.replace(encodeQuery(location, location.query)); + }; + + var createPath = function createPath(location) { + return history.createPath(encodeQuery(location, location.query)); + }; + + var createHref = function createHref(location) { + return history.createHref(encodeQuery(location, location.query)); + }; + + var createLocation = function createLocation(location) { + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + var newLocation = history.createLocation.apply(history, [encodeQuery(location, location.query)].concat(args)); + + if (location.query) newLocation.query = (0, _LocationUtils.createQuery)(location.query); + + return decodeQuery(newLocation); + }; + + return _extends({}, history, { + getCurrentLocation: getCurrentLocation, + listenBefore: listenBefore, + listen: listen, + push: push, + replace: replace, + createPath: createPath, + createHref: createHref, + createLocation: createLocation + }); + }; +}; + +exports.default = useQueries; +},{"./LocationUtils":93,"./PathUtils":94,"./runTransitionHook":101,"query-string":106}],105:[function(require,module,exports){ +(function (process){ +/** + * Copyright 2013-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +'use strict'; + +/** + * Use invariant() to assert state which your program assumes to be true. + * + * Provide sprintf-style format (only %s is supported) and arguments + * to provide information about what broke and what you were + * expecting. + * + * The invariant message will be stripped in production, but the invariant + * will remain to ensure logic does not differ in production. + */ + +var invariant = function(condition, format, a, b, c, d, e, f) { + if (process.env.NODE_ENV !== 'production') { + if (format === undefined) { + throw new Error('invariant requires an error message argument'); + } + } + + if (!condition) { + var error; + if (format === undefined) { + error = new Error( + 'Minified exception occurred; use the non-minified dev environment ' + + 'for the full error message and additional helpful warnings.' + ); + } else { + var args = [a, b, c, d, e, f]; + var argIndex = 0; + error = new Error( + format.replace(/%s/g, function() { return args[argIndex++]; }) + ); + error.name = 'Invariant Violation'; + } + + error.framesToPop = 1; // we don't care about invariant's own frame + throw error; + } +}; + +module.exports = invariant; + +}).call(this,require('_process')) + +},{"_process":110}],106:[function(require,module,exports){ +'use strict'; +var strictUriEncode = require('strict-uri-encode'); +var objectAssign = require('object-assign'); + +function encode(value, opts) { + if (opts.encode) { + return opts.strict ? strictUriEncode(value) : encodeURIComponent(value); + } + + return value; +} + +exports.extract = function (str) { + return str.split('?')[1] || ''; +}; + +exports.parse = function (str) { + // Create an object with no prototype + // https://github.com/sindresorhus/query-string/issues/47 + var ret = Object.create(null); + + if (typeof str !== 'string') { + return ret; + } + + str = str.trim().replace(/^(\?|#|&)/, ''); + + if (!str) { + return ret; + } + + str.split('&').forEach(function (param) { + var parts = param.replace(/\+/g, ' ').split('='); + // Firefox (pre 40) decodes `%3D` to `=` + // https://github.com/sindresorhus/query-string/pull/37 + var key = parts.shift(); + var val = parts.length > 0 ? parts.join('=') : undefined; + + key = decodeURIComponent(key); + + // missing `=` should be `null`: + // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters + val = val === undefined ? null : decodeURIComponent(val); + + if (ret[key] === undefined) { + ret[key] = val; + } else if (Array.isArray(ret[key])) { + ret[key].push(val); + } else { + ret[key] = [ret[key], val]; + } + }); + + return ret; +}; + +exports.stringify = function (obj, opts) { + var defaults = { + encode: true, + strict: true + }; + + opts = objectAssign(defaults, opts); + + return obj ? Object.keys(obj).sort().map(function (key) { + var val = obj[key]; + + if (val === undefined) { + return ''; + } + + if (val === null) { + return encode(key, opts); + } + + if (Array.isArray(val)) { + var result = []; + + val.slice().forEach(function (val2) { + if (val2 === undefined) { + return; + } + + if (val2 === null) { + result.push(encode(key, opts)); + } else { + result.push(encode(key, opts) + '=' + encode(val2, opts)); + } + }); + + return result.join('&'); + } + + return encode(key, opts) + '=' + encode(val, opts); + }).filter(function (x) { + return x.length > 0; + }).join('&') : ''; +}; + +},{"object-assign":107,"strict-uri-encode":108}],107:[function(require,module,exports){ +'use strict'; +/* eslint-disable no-unused-vars */ +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; + +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } + + return Object(val); +} + +function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + + // Detect buggy property enumeration order in older V8 versions. + + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + var test1 = new String('abc'); // eslint-disable-line + test1[5] = 'de'; + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + if (order2.join('') !== '0123456789') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join('') !== + 'abcdefghijklmnopqrst') { + return false; + } + + return true; + } catch (e) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } +} + +module.exports = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; + + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + + if (Object.getOwnPropertySymbols) { + symbols = Object.getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + + return to; +}; + +},{}],108:[function(require,module,exports){ +'use strict'; +module.exports = function (str) { + return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { + return '%' + c.charCodeAt(0).toString(16).toUpperCase(); + }); +}; + +},{}],109:[function(require,module,exports){ +(function (process){ +/** + * Copyright 2014-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +'use strict'; + +/** + * Similar to invariant but only logs a warning if the condition is not met. + * This can be used to log issues in development environments in critical + * paths. Removing the logging code for production environments will keep the + * same logic and follow the same code paths. + */ + +var warning = function() {}; + +if (process.env.NODE_ENV !== 'production') { + warning = function(condition, format, args) { + var len = arguments.length; + args = new Array(len > 2 ? len - 2 : 0); + for (var key = 2; key < len; key++) { + args[key - 2] = arguments[key]; + } + if (format === undefined) { + throw new Error( + '`warning(condition, format, ...args)` requires a warning ' + + 'message argument' + ); + } + + if (format.length < 10 || (/^[s\W]*$/).test(format)) { + throw new Error( + 'The warning format should be able to uniquely identify this ' + + 'warning. Please, use a more descriptive format than: ' + format + ); + } + + if (!condition) { + var argIndex = 0; + var message = 'Warning: ' + + format.replace(/%s/g, function() { + return args[argIndex++]; + }); + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch(x) {} + } + }; +} + +module.exports = warning; + +}).call(this,require('_process')) + +},{"_process":110}],110:[function(require,module,exports){ +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +(function () { + try { + cachedSetTimeout = setTimeout; + } catch (e) { + cachedSetTimeout = function () { + throw new Error('setTimeout is not defined'); + } + } + try { + cachedClearTimeout = clearTimeout; + } catch (e) { + cachedClearTimeout = function () { + throw new Error('clearTimeout is not defined'); + } + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + return setTimeout(fun, 0); + } else { + return cachedSetTimeout.call(null, fun, 0); + } +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + clearTimeout(marker); + } else { + cachedClearTimeout.call(null, marker); + } +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],111:[function(require,module,exports){ +"use strict"; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var NO = {}; +function noop() { } +function copy(a) { + var l = a.length; + var b = Array(l); + for (var i = 0; i < l; ++i) { + b[i] = a[i]; + } + return b; +} +exports.NO_IL = { + _n: noop, + _e: noop, + _c: noop, +}; +// mutates the input +function internalizeProducer(producer) { + producer._start = + function _start(il) { + il.next = il._n; + il.error = il._e; + il.complete = il._c; + this.start(il); + }; + producer._stop = producer.stop; +} +function compose2(f1, f2) { + return function composedFn(arg) { + return f1(f2(arg)); + }; +} +function and(f1, f2) { + return function andFn(t) { + return f1(t) && f2(t); + }; +} +var MergeProducer = (function () { + function MergeProducer(insArr) { + this.type = 'merge'; + this.insArr = insArr; + this.out = NO; + this.ac = 0; + } + MergeProducer.prototype._start = function (out) { + this.out = out; + var s = this.insArr; + var L = s.length; + this.ac = L; + for (var i = 0; i < L; i++) { + s[i]._add(this); + } + }; + MergeProducer.prototype._stop = function () { + var s = this.insArr; + var L = s.length; + for (var i = 0; i < L; i++) { + s[i]._remove(this); + } + this.out = NO; + }; + MergeProducer.prototype._n = function (t) { + var u = this.out; + if (u === NO) + return; + u._n(t); + }; + MergeProducer.prototype._e = function (err) { + var u = this.out; + if (u === NO) + return; + u._e(err); + }; + MergeProducer.prototype._c = function () { + if (--this.ac <= 0) { + var u = this.out; + if (u === NO) + return; + u._c(); + } + }; + return MergeProducer; +}()); +exports.MergeProducer = MergeProducer; +var CombineListener = (function () { + function CombineListener(i, out, p) { + this.i = i; + this.out = out; + this.p = p; + p.ils.push(this); + } + CombineListener.prototype._n = function (t) { + var p = this.p, out = this.out; + if (!out) + return; + if (p.up(t, this.i)) { + out._n(p.vals); + } + }; + CombineListener.prototype._e = function (err) { + var out = this.out; + if (!out) + return; + out._e(err); + }; + CombineListener.prototype._c = function () { + var p = this.p; + if (!p.out) + return; + if (--p.Nc === 0) { + p.out._c(); + } + }; + return CombineListener; +}()); +exports.CombineListener = CombineListener; +var CombineProducer = (function () { + function CombineProducer(insArr) { + this.type = 'combine'; + this.insArr = insArr; + this.out = NO; + this.ils = []; + this.Nc = this.Nn = 0; + this.vals = []; + } + CombineProducer.prototype.up = function (t, i) { + var v = this.vals[i]; + var Nn = !this.Nn ? 0 : v === NO ? --this.Nn : this.Nn; + this.vals[i] = t; + return Nn === 0; + }; + CombineProducer.prototype._start = function (out) { + this.out = out; + var s = this.insArr; + var n = this.Nc = this.Nn = s.length; + var vals = this.vals = new Array(n); + if (n === 0) { + out._n([]); + out._c(); + } + else { + for (var i = 0; i < n; i++) { + vals[i] = NO; + s[i]._add(new CombineListener(i, out, this)); + } + } + }; + CombineProducer.prototype._stop = function () { + var s = this.insArr; + var n = s.length; + for (var i = 0; i < n; i++) { + s[i]._remove(this.ils[i]); + } + this.out = NO; + this.ils = []; + this.vals = []; + }; + return CombineProducer; +}()); +exports.CombineProducer = CombineProducer; +var FromArrayProducer = (function () { + function FromArrayProducer(a) { + this.type = 'fromArray'; + this.a = a; + } + FromArrayProducer.prototype._start = function (out) { + var a = this.a; + for (var i = 0, l = a.length; i < l; i++) { + out._n(a[i]); + } + out._c(); + }; + FromArrayProducer.prototype._stop = function () { + }; + return FromArrayProducer; +}()); +exports.FromArrayProducer = FromArrayProducer; +var FromPromiseProducer = (function () { + function FromPromiseProducer(p) { + this.type = 'fromPromise'; + this.on = false; + this.p = p; + } + FromPromiseProducer.prototype._start = function (out) { + var prod = this; + this.on = true; + this.p.then(function (v) { + if (prod.on) { + out._n(v); + out._c(); + } + }, function (e) { + out._e(e); + }).then(null, function (err) { + setTimeout(function () { throw err; }); + }); + }; + FromPromiseProducer.prototype._stop = function () { + this.on = false; + }; + return FromPromiseProducer; +}()); +exports.FromPromiseProducer = FromPromiseProducer; +var PeriodicProducer = (function () { + function PeriodicProducer(period) { + this.type = 'periodic'; + this.period = period; + this.intervalID = -1; + this.i = 0; + } + PeriodicProducer.prototype._start = function (stream) { + var self = this; + function intervalHandler() { stream._n(self.i++); } + this.intervalID = setInterval(intervalHandler, this.period); + }; + PeriodicProducer.prototype._stop = function () { + if (this.intervalID !== -1) + clearInterval(this.intervalID); + this.intervalID = -1; + this.i = 0; + }; + return PeriodicProducer; +}()); +exports.PeriodicProducer = PeriodicProducer; +var DebugOperator = (function () { + function DebugOperator(arg, ins) { + this.type = 'debug'; + this.ins = ins; + this.out = NO; + this.s = noop; + this.l = ''; + if (typeof arg === 'string') { + this.l = arg; + } + else if (typeof arg === 'function') { + this.s = arg; + } + } + DebugOperator.prototype._start = function (out) { + this.out = out; + this.ins._add(this); + }; + DebugOperator.prototype._stop = function () { + this.ins._remove(this); + this.out = NO; + }; + DebugOperator.prototype._n = function (t) { + var u = this.out; + if (u === NO) + return; + var s = this.s, l = this.l; + if (s !== noop) { + try { + s(t); + } + catch (e) { + u._e(e); + } + } + else if (l) { + console.log(l + ':', t); + } + else { + console.log(t); + } + u._n(t); + }; + DebugOperator.prototype._e = function (err) { + var u = this.out; + if (u === NO) + return; + u._e(err); + }; + DebugOperator.prototype._c = function () { + var u = this.out; + if (u === NO) + return; + u._c(); + }; + return DebugOperator; +}()); +exports.DebugOperator = DebugOperator; +var DropOperator = (function () { + function DropOperator(max, ins) { + this.type = 'drop'; + this.ins = ins; + this.out = NO; + this.max = max; + this.dropped = 0; + } + DropOperator.prototype._start = function (out) { + this.out = out; + this.dropped = 0; + this.ins._add(this); + }; + DropOperator.prototype._stop = function () { + this.ins._remove(this); + this.out = NO; + }; + DropOperator.prototype._n = function (t) { + var u = this.out; + if (u === NO) + return; + if (this.dropped++ >= this.max) + u._n(t); + }; + DropOperator.prototype._e = function (err) { + var u = this.out; + if (u === NO) + return; + u._e(err); + }; + DropOperator.prototype._c = function () { + var u = this.out; + if (u === NO) + return; + u._c(); + }; + return DropOperator; +}()); +exports.DropOperator = DropOperator; +var OtherIL = (function () { + function OtherIL(out, op) { + this.out = out; + this.op = op; + } + OtherIL.prototype._n = function (t) { + this.op.end(); + }; + OtherIL.prototype._e = function (err) { + this.out._e(err); + }; + OtherIL.prototype._c = function () { + this.op.end(); + }; + return OtherIL; +}()); +var EndWhenOperator = (function () { + function EndWhenOperator(o, ins) { + this.type = 'endWhen'; + this.ins = ins; + this.out = NO; + this.o = o; + this.oil = exports.NO_IL; + } + EndWhenOperator.prototype._start = function (out) { + this.out = out; + this.o._add(this.oil = new OtherIL(out, this)); + this.ins._add(this); + }; + EndWhenOperator.prototype._stop = function () { + this.ins._remove(this); + this.o._remove(this.oil); + this.out = NO; + this.oil = exports.NO_IL; + }; + EndWhenOperator.prototype.end = function () { + var u = this.out; + if (u === NO) + return; + u._c(); + }; + EndWhenOperator.prototype._n = function (t) { + var u = this.out; + if (u === NO) + return; + u._n(t); + }; + EndWhenOperator.prototype._e = function (err) { + var u = this.out; + if (u === NO) + return; + u._e(err); + }; + EndWhenOperator.prototype._c = function () { + this.end(); + }; + return EndWhenOperator; +}()); +exports.EndWhenOperator = EndWhenOperator; +var FilterOperator = (function () { + function FilterOperator(passes, ins) { + this.type = 'filter'; + this.ins = ins; + this.out = NO; + this.passes = passes; + } + FilterOperator.prototype._start = function (out) { + this.out = out; + this.ins._add(this); + }; + FilterOperator.prototype._stop = function () { + this.ins._remove(this); + this.out = NO; + }; + FilterOperator.prototype._n = function (t) { + var u = this.out; + if (u === NO) + return; + try { + if (this.passes(t)) + u._n(t); + } + catch (e) { + u._e(e); + } + }; + FilterOperator.prototype._e = function (err) { + var u = this.out; + if (u === NO) + return; + u._e(err); + }; + FilterOperator.prototype._c = function () { + var u = this.out; + if (u === NO) + return; + u._c(); + }; + return FilterOperator; +}()); +exports.FilterOperator = FilterOperator; +var FlattenListener = (function () { + function FlattenListener(out, op) { + this.out = out; + this.op = op; + } + FlattenListener.prototype._n = function (t) { + this.out._n(t); + }; + FlattenListener.prototype._e = function (err) { + this.out._e(err); + }; + FlattenListener.prototype._c = function () { + this.op.inner = NO; + this.op.less(); + }; + return FlattenListener; +}()); +var FlattenOperator = (function () { + function FlattenOperator(ins) { + this.type = 'flatten'; + this.ins = ins; + this.out = NO; + this.open = true; + this.inner = NO; + this.il = exports.NO_IL; + } + FlattenOperator.prototype._start = function (out) { + this.out = out; + this.open = true; + this.inner = NO; + this.il = exports.NO_IL; + this.ins._add(this); + }; + FlattenOperator.prototype._stop = function () { + this.ins._remove(this); + if (this.inner !== NO) + this.inner._remove(this.il); + this.out = NO; + this.open = true; + this.inner = NO; + this.il = exports.NO_IL; + }; + FlattenOperator.prototype.less = function () { + var u = this.out; + if (u === NO) + return; + if (!this.open && this.inner === NO) + u._c(); + }; + FlattenOperator.prototype._n = function (s) { + var u = this.out; + if (u === NO) + return; + var _a = this, inner = _a.inner, il = _a.il; + if (s === inner && s._prod !== NO) + s._stopNow(); + if (inner !== NO && il !== exports.NO_IL) + inner._remove(il); + (this.inner = s)._add(this.il = new FlattenListener(u, this)); + }; + FlattenOperator.prototype._e = function (err) { + var u = this.out; + if (u === NO) + return; + u._e(err); + }; + FlattenOperator.prototype._c = function () { + this.open = false; + this.less(); + }; + return FlattenOperator; +}()); +exports.FlattenOperator = FlattenOperator; +var FoldOperator = (function () { + function FoldOperator(f, seed, ins) { + this.type = 'fold'; + this.ins = ins; + this.out = NO; + this.f = f; + this.acc = this.seed = seed; + } + FoldOperator.prototype._start = function (out) { + this.out = out; + this.acc = this.seed; + out._n(this.acc); + this.ins._add(this); + }; + FoldOperator.prototype._stop = function () { + this.ins._remove(this); + this.out = NO; + this.acc = this.seed; + }; + FoldOperator.prototype._n = function (t) { + var u = this.out; + if (u === NO) + return; + try { + u._n(this.acc = this.f(this.acc, t)); + } + catch (e) { + u._e(e); + } + }; + FoldOperator.prototype._e = function (err) { + var u = this.out; + if (u === NO) + return; + u._e(err); + }; + FoldOperator.prototype._c = function () { + var u = this.out; + if (u === NO) + return; + u._c(); + }; + return FoldOperator; +}()); +exports.FoldOperator = FoldOperator; +var LastOperator = (function () { + function LastOperator(ins) { + this.type = 'last'; + this.ins = ins; + this.out = NO; + this.has = false; + this.val = NO; + } + LastOperator.prototype._start = function (out) { + this.out = out; + this.has = false; + this.ins._add(this); + }; + LastOperator.prototype._stop = function () { + this.ins._remove(this); + this.out = NO; + this.val = NO; + }; + LastOperator.prototype._n = function (t) { + this.has = true; + this.val = t; + }; + LastOperator.prototype._e = function (err) { + var u = this.out; + if (u === NO) + return; + u._e(err); + }; + LastOperator.prototype._c = function () { + var u = this.out; + if (u === NO) + return; + if (this.has) { + u._n(this.val); + u._c(); + } + else { + u._e('TODO show proper error'); + } + }; + return LastOperator; +}()); +exports.LastOperator = LastOperator; +var MapFlattenInner = (function () { + function MapFlattenInner(out, op) { + this.out = out; + this.op = op; + } + MapFlattenInner.prototype._n = function (r) { + this.out._n(r); + }; + MapFlattenInner.prototype._e = function (err) { + this.out._e(err); + }; + MapFlattenInner.prototype._c = function () { + this.op.inner = NO; + this.op.less(); + }; + return MapFlattenInner; +}()); +var MapFlattenOperator = (function () { + function MapFlattenOperator(mapOp) { + this.type = mapOp.type + "+flatten"; + this.ins = mapOp.ins; + this.out = NO; + this.mapOp = mapOp; + this.inner = NO; + this.il = exports.NO_IL; + this.open = true; + } + MapFlattenOperator.prototype._start = function (out) { + this.out = out; + this.inner = NO; + this.il = exports.NO_IL; + this.open = true; + this.mapOp.ins._add(this); + }; + MapFlattenOperator.prototype._stop = function () { + this.mapOp.ins._remove(this); + if (this.inner !== NO) + this.inner._remove(this.il); + this.out = NO; + this.inner = NO; + this.il = exports.NO_IL; + }; + MapFlattenOperator.prototype.less = function () { + if (!this.open && this.inner === NO) { + var u = this.out; + if (u === NO) + return; + u._c(); + } + }; + MapFlattenOperator.prototype._n = function (v) { + var u = this.out; + if (u === NO) + return; + var _a = this, inner = _a.inner, il = _a.il; + var s; + try { + s = this.mapOp.project(v); + } + catch (e) { + u._e(e); + return; + } + if (s === inner && s._prod !== NO) + s._stopNow(); + if (inner !== NO && il !== exports.NO_IL) + inner._remove(il); + (this.inner = s)._add(this.il = new MapFlattenInner(u, this)); + }; + MapFlattenOperator.prototype._e = function (err) { + var u = this.out; + if (u === NO) + return; + u._e(err); + }; + MapFlattenOperator.prototype._c = function () { + this.open = false; + this.less(); + }; + return MapFlattenOperator; +}()); +exports.MapFlattenOperator = MapFlattenOperator; +var MapOperator = (function () { + function MapOperator(project, ins) { + this.type = 'map'; + this.ins = ins; + this.out = NO; + this.project = project; + } + MapOperator.prototype._start = function (out) { + this.out = out; + this.ins._add(this); + }; + MapOperator.prototype._stop = function () { + this.ins._remove(this); + this.out = NO; + }; + MapOperator.prototype._n = function (t) { + var u = this.out; + if (u === NO) + return; + try { + u._n(this.project(t)); + } + catch (e) { + u._e(e); + } + }; + MapOperator.prototype._e = function (err) { + var u = this.out; + if (u === NO) + return; + u._e(err); + }; + MapOperator.prototype._c = function () { + var u = this.out; + if (u === NO) + return; + u._c(); + }; + return MapOperator; +}()); +exports.MapOperator = MapOperator; +var FilterMapOperator = (function (_super) { + __extends(FilterMapOperator, _super); + function FilterMapOperator(passes, project, ins) { + _super.call(this, project, ins); + this.type = 'filter+map'; + this.passes = passes; + } + FilterMapOperator.prototype._n = function (v) { + if (this.passes(v)) { + _super.prototype._n.call(this, v); + } + ; + }; + return FilterMapOperator; +}(MapOperator)); +exports.FilterMapOperator = FilterMapOperator; +var RememberOperator = (function () { + function RememberOperator(ins) { + this.type = 'remember'; + this.ins = ins; + this.out = NO; + } + RememberOperator.prototype._start = function (out) { + this.out = out; + this.ins._add(out); + }; + RememberOperator.prototype._stop = function () { + this.ins._remove(this.out); + this.out = NO; + }; + return RememberOperator; +}()); +exports.RememberOperator = RememberOperator; +var ReplaceErrorOperator = (function () { + function ReplaceErrorOperator(fn, ins) { + this.type = 'replaceError'; + this.ins = ins; + this.out = NO; + this.fn = fn; + } + ReplaceErrorOperator.prototype._start = function (out) { + this.out = out; + this.ins._add(this); + }; + ReplaceErrorOperator.prototype._stop = function () { + this.ins._remove(this); + this.out = NO; + }; + ReplaceErrorOperator.prototype._n = function (t) { + var u = this.out; + if (u === NO) + return; + u._n(t); + }; + ReplaceErrorOperator.prototype._e = function (err) { + var u = this.out; + if (u === NO) + return; + try { + this.ins._remove(this); + (this.ins = this.fn(err))._add(this); + } + catch (e) { + u._e(e); + } + }; + ReplaceErrorOperator.prototype._c = function () { + var u = this.out; + if (u === NO) + return; + u._c(); + }; + return ReplaceErrorOperator; +}()); +exports.ReplaceErrorOperator = ReplaceErrorOperator; +var StartWithOperator = (function () { + function StartWithOperator(ins, val) { + this.type = 'startWith'; + this.ins = ins; + this.out = NO; + this.val = val; + } + StartWithOperator.prototype._start = function (out) { + this.out = out; + this.out._n(this.val); + this.ins._add(out); + }; + StartWithOperator.prototype._stop = function () { + this.ins._remove(this.out); + this.out = NO; + }; + return StartWithOperator; +}()); +exports.StartWithOperator = StartWithOperator; +var TakeOperator = (function () { + function TakeOperator(max, ins) { + this.type = 'take'; + this.ins = ins; + this.out = NO; + this.max = max; + this.taken = 0; + } + TakeOperator.prototype._start = function (out) { + this.out = out; + this.taken = 0; + this.ins._add(this); + }; + TakeOperator.prototype._stop = function () { + this.ins._remove(this); + this.out = NO; + }; + TakeOperator.prototype._n = function (t) { + var u = this.out; + if (u === NO) + return; + if (this.taken++ < this.max - 1) { + u._n(t); + } + else { + u._n(t); + u._c(); + } + }; + TakeOperator.prototype._e = function (err) { + var u = this.out; + if (u === NO) + return; + u._e(err); + }; + TakeOperator.prototype._c = function () { + var u = this.out; + if (u === NO) + return; + u._c(); + }; + return TakeOperator; +}()); +exports.TakeOperator = TakeOperator; +var Stream = (function () { + function Stream(producer) { + this._prod = producer || NO; + this._ils = []; + this._stopID = NO; + this._target = NO; + this._err = NO; + } + Stream.prototype._n = function (t) { + var a = this._ils; + var L = a.length; + if (L == 1) + a[0]._n(t); + else { + var b = copy(a); + for (var i = 0; i < L; i++) + b[i]._n(t); + } + }; + Stream.prototype._e = function (err) { + if (this._err !== NO) + return; + this._err = err; + var a = this._ils; + var L = a.length; + if (L == 1) + a[0]._e(err); + else { + var b = copy(a); + for (var i = 0; i < L; i++) + b[i]._e(err); + } + this._x(); + }; + Stream.prototype._c = function () { + var a = this._ils; + var L = a.length; + if (L == 1) + a[0]._c(); + else { + var b = copy(a); + for (var i = 0; i < L; i++) + b[i]._c(); + } + this._x(); + }; + Stream.prototype._x = function () { + if (this._ils.length === 0) + return; + if (this._prod !== NO) + this._prod._stop(); + this._err = NO; + this._ils = []; + }; + Stream.prototype._stopNow = function () { + // WARNING: code that calls this method should + // first check if this._prod is valid (not `NO`) + this._prod._stop(); + this._err = NO; + this._stopID = NO; + }; + Stream.prototype._add = function (il) { + var ta = this._target; + if (ta !== NO) + return ta._add(il); + var a = this._ils; + a.push(il); + if (a.length === 1) { + if (this._stopID !== NO) { + clearTimeout(this._stopID); + this._stopID = NO; + } + var p = this._prod; + if (p !== NO) + p._start(this); + } + }; + Stream.prototype._remove = function (il) { + var _this = this; + var ta = this._target; + if (ta !== NO) + return ta._remove(il); + var a = this._ils; + var i = a.indexOf(il); + if (i > -1) { + a.splice(i, 1); + if (this._prod !== NO && a.length <= 0) { + this._err = NO; + this._stopID = setTimeout(function () { return _this._stopNow(); }); + } + else if (a.length === 1) { + this._pruneCycles(); + } + } + }; + // If all paths stemming from `this` stream eventually end at `this` + // stream, then we remove the single listener of `this` stream, to + // force it to end its execution and dispose resources. This method + // assumes as a precondition that this._ils has just one listener. + Stream.prototype._pruneCycles = function () { + if (this._hasNoSinks(this, [])) { + this._remove(this._ils[0]); + } + }; + // Checks whether *there is no* path starting from `x` that leads to an end + // listener (sink) in the stream graph, following edges A->B where B is a + // listener of A. This means these paths constitute a cycle somehow. Is given + // a trace of all visited nodes so far. + Stream.prototype._hasNoSinks = function (x, trace) { + if (trace.indexOf(x) !== -1) { + return true; + } + else if (x.out === this) { + return true; + } + else if (x.out && x.out !== NO) { + return this._hasNoSinks(x.out, trace.concat(x)); + } + else if (x._ils) { + for (var i = 0, N = x._ils.length; i < N; i++) { + if (!this._hasNoSinks(x._ils[i], trace.concat(x))) { + return false; + } + } + return true; + } + else { + return false; + } + }; + Stream.prototype.ctor = function () { + return this instanceof MemoryStream ? MemoryStream : Stream; + }; + /** + * Adds a Listener to the Stream. + * + * @param {Listener} listener + */ + Stream.prototype.addListener = function (listener) { + if (typeof listener.next !== 'function' + || typeof listener.error !== 'function' + || typeof listener.complete !== 'function') { + throw new Error('stream.addListener() requires all three next, error, ' + + 'and complete functions.'); + } + listener._n = listener.next; + listener._e = listener.error; + listener._c = listener.complete; + this._add(listener); + }; + /** + * Removes a Listener from the Stream, assuming the Listener was added to it. + * + * @param {Listener} listener + */ + Stream.prototype.removeListener = function (listener) { + this._remove(listener); + }; + /** + * Creates a new Stream given a Producer. + * + * @factory true + * @param {Producer} producer An optional Producer that dictates how to + * start, generate events, and stop the Stream. + * @return {Stream} + */ + Stream.create = function (producer) { + if (producer) { + if (typeof producer.start !== 'function' + || typeof producer.stop !== 'function') { + throw new Error('producer requires both start and stop functions'); + } + internalizeProducer(producer); // mutates the input + } + return new Stream(producer); + }; + /** + * Creates a new MemoryStream given a Producer. + * + * @factory true + * @param {Producer} producer An optional Producer that dictates how to + * start, generate events, and stop the Stream. + * @return {MemoryStream} + */ + Stream.createWithMemory = function (producer) { + if (producer) { + internalizeProducer(producer); // mutates the input + } + return new MemoryStream(producer); + }; + /** + * Creates a Stream that does nothing when started. It never emits any event. + * + * Marble diagram: + * + * ```text + * never + * ----------------------- + * ``` + * + * @factory true + * @return {Stream} + */ + Stream.never = function () { + return new Stream({ _start: noop, _stop: noop }); + }; + /** + * Creates a Stream that immediately emits the "complete" notification when + * started, and that's it. + * + * Marble diagram: + * + * ```text + * empty + * -| + * ``` + * + * @factory true + * @return {Stream} + */ + Stream.empty = function () { + return new Stream({ + _start: function (il) { il._c(); }, + _stop: noop, + }); + }; + /** + * Creates a Stream that immediately emits an "error" notification with the + * value you passed as the `error` argument when the stream starts, and that's + * it. + * + * Marble diagram: + * + * ```text + * throw(X) + * -X + * ``` + * + * @factory true + * @param error The error event to emit on the created stream. + * @return {Stream} + */ + Stream.throw = function (error) { + return new Stream({ + _start: function (il) { il._e(error); }, + _stop: noop, + }); + }; + /** + * Creates a Stream that immediately emits the arguments that you give to + * *of*, then completes. + * + * Marble diagram: + * + * ```text + * of(1,2,3) + * 123| + * ``` + * + * @factory true + * @param a The first value you want to emit as an event on the stream. + * @param b The second value you want to emit as an event on the stream. One + * or more of these values may be given as arguments. + * @return {Stream} + */ + Stream.of = function () { + var items = []; + for (var _i = 0; _i < arguments.length; _i++) { + items[_i - 0] = arguments[_i]; + } + return Stream.fromArray(items); + }; + /** + * Converts an array to a stream. The returned stream will emit synchronously + * all the items in the array, and then complete. + * + * Marble diagram: + * + * ```text + * fromArray([1,2,3]) + * 123| + * ``` + * + * @factory true + * @param {Array} array The array to be converted as a stream. + * @return {Stream} + */ + Stream.fromArray = function (array) { + return new Stream(new FromArrayProducer(array)); + }; + /** + * Converts a promise to a stream. The returned stream will emit the resolved + * value of the promise, and then complete. However, if the promise is + * rejected, the stream will emit the corresponding error. + * + * Marble diagram: + * + * ```text + * fromPromise( ----42 ) + * -----------------42| + * ``` + * + * @factory true + * @param {Promise} promise The promise to be converted as a stream. + * @return {Stream} + */ + Stream.fromPromise = function (promise) { + return new Stream(new FromPromiseProducer(promise)); + }; + /** + * Creates a stream that periodically emits incremental numbers, every + * `period` milliseconds. + * + * Marble diagram: + * + * ```text + * periodic(1000) + * ---0---1---2---3---4---... + * ``` + * + * @factory true + * @param {number} period The interval in milliseconds to use as a rate of + * emission. + * @return {Stream} + */ + Stream.periodic = function (period) { + return new Stream(new PeriodicProducer(period)); + }; + Stream.prototype._map = function (project) { + var p = this._prod; + var ctor = this.ctor(); + if (p instanceof FilterOperator) { + return new ctor(new FilterMapOperator(p.passes, project, p.ins)); + } + if (p instanceof FilterMapOperator) { + return new ctor(new FilterMapOperator(p.passes, compose2(project, p.project), p.ins)); + } + if (p instanceof MapOperator) { + return new ctor(new MapOperator(compose2(project, p.project), p.ins)); + } + return new ctor(new MapOperator(project, this)); + }; + /** + * Transforms each event from the input Stream through a `project` function, + * to get a Stream that emits those transformed events. + * + * Marble diagram: + * + * ```text + * --1---3--5-----7------ + * map(i => i * 10) + * --10--30-50----70----- + * ``` + * + * @param {Function} project A function of type `(t: T) => U` that takes event + * `t` of type `T` from the input Stream and produces an event of type `U`, to + * be emitted on the output Stream. + * @return {Stream} + */ + Stream.prototype.map = function (project) { + return this._map(project); + }; + /** + * It's like `map`, but transforms each input event to always the same + * constant value on the output Stream. + * + * Marble diagram: + * + * ```text + * --1---3--5-----7----- + * mapTo(10) + * --10--10-10----10---- + * ``` + * + * @param projectedValue A value to emit on the output Stream whenever the + * input Stream emits any value. + * @return {Stream} + */ + Stream.prototype.mapTo = function (projectedValue) { + var s = this.map(function () { return projectedValue; }); + var op = s._prod; + op.type = op.type.replace('map', 'mapTo'); + return s; + }; + /** + * Only allows events that pass the test given by the `passes` argument. + * + * Each event from the input stream is given to the `passes` function. If the + * function returns `true`, the event is forwarded to the output stream, + * otherwise it is ignored and not forwarded. + * + * Marble diagram: + * + * ```text + * --1---2--3-----4-----5---6--7-8-- + * filter(i => i % 2 === 0) + * ------2--------4---------6----8-- + * ``` + * + * @param {Function} passes A function of type `(t: T) +> boolean` that takes + * an event from the input stream and checks if it passes, by returning a + * boolean. + * @return {Stream} + */ + Stream.prototype.filter = function (passes) { + var p = this._prod; + if (p instanceof FilterOperator) { + return new Stream(new FilterOperator(and(p.passes, passes), p.ins)); + } + return new Stream(new FilterOperator(passes, this)); + }; + /** + * Lets the first `amount` many events from the input stream pass to the + * output stream, then makes the output stream complete. + * + * Marble diagram: + * + * ```text + * --a---b--c----d---e-- + * take(3) + * --a---b--c| + * ``` + * + * @param {number} amount How many events to allow from the input stream + * before completing the output stream. + * @return {Stream} + */ + Stream.prototype.take = function (amount) { + return new (this.ctor())(new TakeOperator(amount, this)); + }; + /** + * Ignores the first `amount` many events from the input stream, and then + * after that starts forwarding events from the input stream to the output + * stream. + * + * Marble diagram: + * + * ```text + * --a---b--c----d---e-- + * drop(3) + * --------------d---e-- + * ``` + * + * @param {number} amount How many events to ignore from the input stream + * before forwarding all events from the input stream to the output stream. + * @return {Stream} + */ + Stream.prototype.drop = function (amount) { + return new Stream(new DropOperator(amount, this)); + }; + /** + * When the input stream completes, the output stream will emit the last event + * emitted by the input stream, and then will also complete. + * + * Marble diagram: + * + * ```text + * --a---b--c--d----| + * last() + * -----------------d| + * ``` + * + * @return {Stream} + */ + Stream.prototype.last = function () { + return new Stream(new LastOperator(this)); + }; + /** + * Prepends the given `initial` value to the sequence of events emitted by the + * input stream. The returned stream is a MemoryStream, which means it is + * already `remember()`'d. + * + * Marble diagram: + * + * ```text + * ---1---2-----3--- + * startWith(0) + * 0--1---2-----3--- + * ``` + * + * @param initial The value or event to prepend. + * @return {MemoryStream} + */ + Stream.prototype.startWith = function (initial) { + return new MemoryStream(new StartWithOperator(this, initial)); + }; + /** + * Uses another stream to determine when to complete the current stream. + * + * When the given `other` stream emits an event or completes, the output + * stream will complete. Before that happens, the output stream will behaves + * like the input stream. + * + * Marble diagram: + * + * ```text + * ---1---2-----3--4----5----6--- + * endWhen( --------a--b--| ) + * ---1---2-----3--4--| + * ``` + * + * @param other Some other stream that is used to know when should the output + * stream of this operator complete. + * @return {Stream} + */ + Stream.prototype.endWhen = function (other) { + return new (this.ctor())(new EndWhenOperator(other, this)); + }; + /** + * "Folds" the stream onto itself. + * + * Combines events from the past throughout + * the entire execution of the input stream, allowing you to accumulate them + * together. It's essentially like `Array.prototype.reduce`. The returned + * stream is a MemoryStream, which means it is already `remember()`'d. + * + * The output stream starts by emitting the `seed` which you give as argument. + * Then, when an event happens on the input stream, it is combined with that + * seed value through the `accumulate` function, and the output value is + * emitted on the output stream. `fold` remembers that output value as `acc` + * ("accumulator"), and then when a new input event `t` happens, `acc` will be + * combined with that to produce the new `acc` and so forth. + * + * Marble diagram: + * + * ```text + * ------1-----1--2----1----1------ + * fold((acc, x) => acc + x, 3) + * 3-----4-----5--7----8----9------ + * ``` + * + * @param {Function} accumulate A function of type `(acc: R, t: T) => R` that + * takes the previous accumulated value `acc` and the incoming event from the + * input stream and produces the new accumulated value. + * @param seed The initial accumulated value, of type `R`. + * @return {MemoryStream} + */ + Stream.prototype.fold = function (accumulate, seed) { + return new MemoryStream(new FoldOperator(accumulate, seed, this)); + }; + /** + * Replaces an error with another stream. + * + * When (and if) an error happens on the input stream, instead of forwarding + * that error to the output stream, *replaceError* will call the `replace` + * function which returns the stream that the output stream will replicate. + * And, in case that new stream also emits an error, `replace` will be called + * again to get another stream to start replicating. + * + * Marble diagram: + * + * ```text + * --1---2-----3--4-----X + * replaceError( () => --10--| ) + * --1---2-----3--4--------10--| + * ``` + * + * @param {Function} replace A function of type `(err) => Stream` that takes + * the error that occurred on the input stream or on the previous replacement + * stream and returns a new stream. The output stream will behave like the + * stream that this function returns. + * @return {Stream} + */ + Stream.prototype.replaceError = function (replace) { + return new (this.ctor())(new ReplaceErrorOperator(replace, this)); + }; + /** + * Flattens a "stream of streams", handling only one nested stream at a time + * (no concurrency). + * + * If the input stream is a stream that emits streams, then this operator will + * return an output stream which is a flat stream: emits regular events. The + * flattening happens without concurrency. It works like this: when the input + * stream emits a nested stream, *flatten* will start imitating that nested + * one. However, as soon as the next nested stream is emitted on the input + * stream, *flatten* will forget the previous nested one it was imitating, and + * will start imitating the new nested one. + * + * Marble diagram: + * + * ```text + * --+--------+--------------- + * \ \ + * \ ----1----2---3-- + * --a--b----c----d-------- + * flatten + * -----a--b------1----2---3-- + * ``` + * + * @return {Stream} + */ + Stream.prototype.flatten = function () { + var p = this._prod; + return new Stream(p instanceof MapOperator && !(p instanceof FilterMapOperator) ? + new MapFlattenOperator(p) : + new FlattenOperator(this)); + }; + /** + * Passes the input stream to a custom operator, to produce an output stream. + * + * *compose* is a handy way of using an existing function in a chained style. + * Instead of writing `outStream = f(inStream)` you can write + * `outStream = inStream.compose(f)`. + * + * @param {function} operator A function that takes a stream as input and + * returns a stream as well. + * @return {Stream} + */ + Stream.prototype.compose = function (operator) { + return operator(this); + }; + /** + * Returns an output stream that behaves like the input stream, but also + * remembers the most recent event that happens on the input stream, so that a + * newly added listener will immediately receive that memorised event. + * + * @return {MemoryStream} + */ + Stream.prototype.remember = function () { + return new MemoryStream(new RememberOperator(this)); + }; + /** + * Returns an output stream that identically behaves like the input stream, + * but also runs a `spy` function fo each event, to help you debug your app. + * + * *debug* takes a `spy` function as argument, and runs that for each event + * happening on the input stream. If you don't provide the `spy` argument, + * then *debug* will just `console.log` each event. This helps you to + * understand the flow of events through some operator chain. + * + * Please note that if the output stream has no listeners, then it will not + * start, which means `spy` will never run because no actual event happens in + * that case. + * + * Marble diagram: + * + * ```text + * --1----2-----3-----4-- + * debug + * --1----2-----3-----4-- + * ``` + * + * @param {function} labelOrSpy A string to use as the label when printing + * debug information on the console, or a 'spy' function that takes an event + * as argument, and does not need to return anything. + * @return {Stream} + */ + Stream.prototype.debug = function (labelOrSpy) { + return new (this.ctor())(new DebugOperator(labelOrSpy, this)); + }; + /** + * *imitate* changes this current Stream to emit the same events that the + * `other` given Stream does. This method returns nothing. + * + * This method exists to allow one thing: **circular dependency of streams**. + * For instance, let's imagine that for some reason you need to create a + * circular dependency where stream `first$` depends on stream `second$` + * which in turn depends on `first$`: + * + * + * ```js + * import delay from 'xstream/extra/delay' + * + * var first$ = second$.map(x => x * 10).take(3); + * var second$ = first$.map(x => x + 1).startWith(1).compose(delay(100)); + * ``` + * + * However, that is invalid JavaScript, because `second$` is undefined + * on the first line. This is how *imitate* can help solve it: + * + * ```js + * import delay from 'xstream/extra/delay' + * + * var secondProxy$ = xs.create(); + * var first$ = secondProxy$.map(x => x * 10).take(3); + * var second$ = first$.map(x => x + 1).startWith(1).compose(delay(100)); + * secondProxy$.imitate(second$); + * ``` + * + * We create `secondProxy$` before the others, so it can be used in the + * declaration of `first$`. Then, after both `first$` and `second$` are + * defined, we hook `secondProxy$` with `second$` with `imitate()` to tell + * that they are "the same". `imitate` will not trigger the start of any + * stream, it just binds `secondProxy$` and `second$` together. + * + * The following is an example where `imitate()` is important in Cycle.js + * applications. A parent component contains some child components. A child + * has an action stream which is given to the parent to define its state: + * + * + * ```js + * const childActionProxy$ = xs.create(); + * const parent = Parent({...sources, childAction$: childActionProxy$}); + * const childAction$ = parent.state$.map(s => s.child.action$).flatten(); + * childActionProxy$.imitate(childAction$); + * ``` + * + * Note, though, that **`imitate()` does not support MemoryStreams**. If we + * would attempt to imitate a MemoryStream in a circular dependency, we would + * either get a race condition (where the symptom would be "nothing happens") + * or an infinite cyclic emission of values. It's useful to think about + * MemoryStreams as cells in a spreadsheet. It doesn't make any sense to + * define a spreadsheet cell `A1` with a formula that depends on `B1` and + * cell `B1` defined with a formula that depends on `A1`. + * + * If you find yourself wanting to use `imitate()` with a + * MemoryStream, you should rework your code around `imitate()` to use a + * Stream instead. Look for the stream in the circular dependency that + * represents an event stream, and that would be a candidate for creating a + * proxy Stream which then imitates the target Stream. + * + * @param {Stream} target The other stream to imitate on the current one. Must + * not be a MemoryStream. + */ + Stream.prototype.imitate = function (target) { + if (target instanceof MemoryStream) { + throw new Error('A MemoryStream was given to imitate(), but it only ' + + 'supports a Stream. Read more about this restriction here: ' + + 'https://github.com/staltz/xstream#faq'); + } + this._target = target; + for (var ils = this._ils, N = ils.length, i = 0; i < N; i++) { + target._add(ils[i]); + } + this._ils = []; + }; + /** + * Forces the Stream to emit the given value to its listeners. + * + * As the name indicates, if you use this, you are most likely doing something + * The Wrong Way. Please try to understand the reactive way before using this + * method. Use it only when you know what you are doing. + * + * @param value The "next" value you want to broadcast to all listeners of + * this Stream. + */ + Stream.prototype.shamefullySendNext = function (value) { + this._n(value); + }; + /** + * Forces the Stream to emit the given error to its listeners. + * + * As the name indicates, if you use this, you are most likely doing something + * The Wrong Way. Please try to understand the reactive way before using this + * method. Use it only when you know what you are doing. + * + * @param {any} error The error you want to broadcast to all the listeners of + * this Stream. + */ + Stream.prototype.shamefullySendError = function (error) { + this._e(error); + }; + /** + * Forces the Stream to emit the "completed" event to its listeners. + * + * As the name indicates, if you use this, you are most likely doing something + * The Wrong Way. Please try to understand the reactive way before using this + * method. Use it only when you know what you are doing. + */ + Stream.prototype.shamefullySendComplete = function () { + this._c(); + }; + /** + * Blends multiple streams together, emitting events from all of them + * concurrently. + * + * *merge* takes multiple streams as arguments, and creates a stream that + * behaves like each of the argument streams, in parallel. + * + * Marble diagram: + * + * ```text + * --1----2-----3--------4--- + * ----a-----b----c---d------ + * merge + * --1-a--2--b--3-c---d--4--- + * ``` + * + * @factory true + * @param {Stream} stream1 A stream to merge together with other streams. + * @param {Stream} stream2 A stream to merge together with other streams. Two + * or more streams may be given as arguments. + * @return {Stream} + */ + Stream.merge = function merge() { + var streams = []; + for (var _i = 0; _i < arguments.length; _i++) { + streams[_i - 0] = arguments[_i]; + } + return new Stream(new MergeProducer(streams)); + }; + /** + * Combines multiple input streams together to return a stream whose events + * are arrays that collect the latest events from each input stream. + * + * *combine* internally remembers the most recent event from each of the input + * streams. When any of the input streams emits an event, that event together + * with all the other saved events are combined into an array. That array will + * be emitted on the output stream. It's essentially a way of joining together + * the events from multiple streams. + * + * Marble diagram: + * + * ```text + * --1----2-----3--------4--- + * ----a-----b-----c--d------ + * combine + * ----1a-2a-2b-3b-3c-3d-4d-- + * ``` + * + * @factory true + * @param {Stream} stream1 A stream to combine together with other streams. + * @param {Stream} stream2 A stream to combine together with other streams. + * Multiple streams, not just two, may be given as arguments. + * @return {Stream} + */ + Stream.combine = function combine() { + var streams = []; + for (var _i = 0; _i < arguments.length; _i++) { + streams[_i - 0] = arguments[_i]; + } + return new Stream(new CombineProducer(streams)); + }; + return Stream; +}()); +exports.Stream = Stream; +var MemoryStream = (function (_super) { + __extends(MemoryStream, _super); + function MemoryStream(producer) { + _super.call(this, producer); + this._has = false; + } + MemoryStream.prototype._n = function (x) { + this._v = x; + this._has = true; + _super.prototype._n.call(this, x); + }; + MemoryStream.prototype._add = function (il) { + if (this._has) { + il._n(this._v); + } + _super.prototype._add.call(this, il); + }; + MemoryStream.prototype._stopNow = function () { + this._has = false; + _super.prototype._stopNow.call(this); + }; + MemoryStream.prototype._x = function () { + this._has = false; + _super.prototype._x.call(this); + }; + MemoryStream.prototype.map = function (project) { + return this._map(project); + }; + MemoryStream.prototype.mapTo = function (projectedValue) { + return _super.prototype.mapTo.call(this, projectedValue); + }; + MemoryStream.prototype.take = function (amount) { + return _super.prototype.take.call(this, amount); + }; + MemoryStream.prototype.endWhen = function (other) { + return _super.prototype.endWhen.call(this, other); + }; + MemoryStream.prototype.replaceError = function (replace) { + return _super.prototype.replaceError.call(this, replace); + }; + MemoryStream.prototype.remember = function () { + return this; + }; + MemoryStream.prototype.debug = function (labelOrSpy) { + return _super.prototype.debug.call(this, labelOrSpy); + }; + return MemoryStream; +}(Stream)); +exports.MemoryStream = MemoryStream; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = Stream; + +},{}],112:[function(require,module,exports){ +"use strict"; +var core_1 = require('../core'); +var ConcatProducer = (function () { + function ConcatProducer(streams) { + this.streams = streams; + this.type = 'concat'; + this.out = null; + this.i = 0; + } + ConcatProducer.prototype._start = function (out) { + this.out = out; + this.streams[this.i]._add(this); + }; + ConcatProducer.prototype._stop = function () { + var streams = this.streams; + if (this.i < streams.length) { + streams[this.i]._remove(this); + } + this.i = 0; + this.out = null; + }; + ConcatProducer.prototype._n = function (t) { + var u = this.out; + if (!u) + return; + u._n(t); + }; + ConcatProducer.prototype._e = function (err) { + var u = this.out; + if (!u) + return; + u._e(err); + }; + ConcatProducer.prototype._c = function () { + var u = this.out; + if (!u) + return; + var streams = this.streams; + streams[this.i]._remove(this); + if (++this.i < streams.length) { + streams[this.i]._add(this); + } + else { + u._c(); + } + }; + return ConcatProducer; +}()); +/** + * Puts one stream after the other. *concat* is a factory that takes multiple + * streams as arguments, and starts the `n+1`-th stream only when the `n`-th + * stream has completed. It concatenates those streams together. + * + * Marble diagram: + * + * ```text + * --1--2---3---4-| + * ...............--a-b-c--d-| + * concat + * --1--2---3---4---a-b-c--d-| + * ``` + * + * Example: + * + * ```js + * import concat from 'xstream/extra/concat' + * + * const streamA = xs.of('a', 'b', 'c') + * const streamB = xs.of(10, 20, 30) + * const streamC = xs.of('X', 'Y', 'Z') + * + * const outputStream = concat(streamA, streamB, streamC) + * + * outputStream.addListener({ + * next: (x) => console.log(x), + * error: (err) => console.error(err), + * complete: () => console.log('concat completed'), + * }) + * ``` + * + * @factory true + * @param {Stream} stream1 A stream to concatenate together with other streams. + * @param {Stream} stream2 A stream to concatenate together with other streams. Two + * or more streams may be given as arguments. + * @return {Stream} + */ +function concat() { + var streams = []; + for (var _i = 0; _i < arguments.length; _i++) { + streams[_i - 0] = arguments[_i]; + } + return new core_1.Stream(new ConcatProducer(streams)); +} +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = concat; + +},{"../core":111}],113:[function(require,module,exports){ +"use strict"; +var core_1 = require('../core'); +var DelayOperator = (function () { + function DelayOperator(dt, ins) { + this.dt = dt; + this.ins = ins; + this.type = 'delay'; + this.out = null; + } + DelayOperator.prototype._start = function (out) { + this.out = out; + this.ins._add(this); + }; + DelayOperator.prototype._stop = function () { + this.ins._remove(this); + this.out = null; + }; + DelayOperator.prototype._n = function (t) { + var u = this.out; + if (!u) + return; + var id = setInterval(function () { + u._n(t); + clearInterval(id); + }, this.dt); + }; + DelayOperator.prototype._e = function (err) { + var u = this.out; + if (!u) + return; + var id = setInterval(function () { + u._e(err); + clearInterval(id); + }, this.dt); + }; + DelayOperator.prototype._c = function () { + var u = this.out; + if (!u) + return; + var id = setInterval(function () { + u._c(); + clearInterval(id); + }, this.dt); + }; + return DelayOperator; +}()); +/** + * Delays periodic events by a given time period. + * + * Marble diagram: + * + * ```text + * 1----2--3--4----5| + * delay(60) + * ---1----2--3--4----5| + * ``` + * + * Example: + * + * ```js + * import fromDiagram from 'xstream/extra/fromDiagram' + * import delay from 'xstream/extra/delay' + * + * const stream = fromDiagram('1----2--3--4----5|') + * .compose(delay(60)) + * + * stream.addListener({ + * next: i => console.log(i), + * error: err => console.error(err), + * complete: () => console.log('completed') + * }) + * ``` + * + * ```text + * > 1 (after 60 ms) + * > 2 (after 160 ms) + * > 3 (after 220 ms) + * > 4 (after 280 ms) + * > 5 (after 380 ms) + * > completed + * ``` + * + * @param {number} period The amount of silence required in milliseconds. + * @return {Stream} + */ +function delay(period) { + return function delayOperator(ins) { + return new core_1.Stream(new DelayOperator(period, ins)); + }; +} +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = delay; + +},{"../core":111}],114:[function(require,module,exports){ +"use strict"; +var core_1 = require('../core'); +var empty = {}; +var DropRepeatsOperator = (function () { + function DropRepeatsOperator(fn, ins) { + this.fn = fn; + this.ins = ins; + this.type = 'dropRepeats'; + this.out = null; + this.v = empty; + } + DropRepeatsOperator.prototype._start = function (out) { + this.out = out; + this.ins._add(this); + }; + DropRepeatsOperator.prototype._stop = function () { + this.ins._remove(this); + this.out = null; + this.v = empty; + }; + DropRepeatsOperator.prototype.isEq = function (x, y) { + return this.fn ? this.fn(x, y) : x === y; + }; + DropRepeatsOperator.prototype._n = function (t) { + var u = this.out; + if (!u) + return; + var v = this.v; + if (v === empty || !this.isEq(t, v)) { + u._n(t); + } + this.v = t; + }; + DropRepeatsOperator.prototype._e = function (err) { + var u = this.out; + if (!u) + return; + u._e(err); + }; + DropRepeatsOperator.prototype._c = function () { + var u = this.out; + if (!u) + return; + u._c(); + }; + return DropRepeatsOperator; +}()); +exports.DropRepeatsOperator = DropRepeatsOperator; +/** + * Drops consecutive duplicate values in a stream. + * + * Marble diagram: + * + * ```text + * --1--2--1--1--1--2--3--4--3--3| + * dropRepeats + * --1--2--1--------2--3--4--3---| + * ``` + * + * Example: + * + * ```js + * import dropRepeats from 'xstream/extra/dropRepeats' + * + * const stream = xs.of(1, 2, 1, 1, 1, 2, 3, 4, 3, 3) + * .compose(dropRepeats()) + * + * stream.addListener({ + * next: i => console.log(i), + * error: err => console.error(err), + * complete: () => console.log('completed') + * }) + * ``` + * + * ```text + * > 1 + * > 2 + * > 1 + * > 2 + * > 3 + * > 4 + * > 3 + * > completed + * ``` + * + * Example with a custom isEqual function: + * + * ```js + * import dropRepeats from 'xstream/extra/dropRepeats' + * + * const stream = xs.of('a', 'b', 'a', 'A', 'B', 'b') + * .compose(dropRepeats((x, y) => x.toLowerCase() === y.toLowerCase())) + * + * stream.addListener({ + * next: i => console.log(i), + * error: err => console.error(err), + * complete: () => console.log('completed') + * }) + * ``` + * + * ```text + * > a + * > b + * > a + * > B + * > completed + * ``` + * + * @param {Function} isEqual An optional function of type + * `(x: T, y: T) => boolean` that takes an event from the input stream and + * checks if it is equal to previous event, by returning a boolean. + * @return {Stream} + */ +function dropRepeats(isEqual) { + if (isEqual === void 0) { isEqual = null; } + return function dropRepeatsOperator(ins) { + return new core_1.Stream(new DropRepeatsOperator(isEqual, ins)); + }; +} +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = dropRepeats; + +},{"../core":111}],115:[function(require,module,exports){ +"use strict"; +var core_1 = require('./core'); +exports.Stream = core_1.Stream; +exports.MemoryStream = core_1.MemoryStream; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = core_1.Stream; + +},{"./core":111}],116:[function(require,module,exports){ +'use strict'; + +var _xstreamRun = require('@cycle/xstream-run'); + +var _dom = require('@cycle/dom'); + +var _history = require('@cycle/history'); + +var _history2 = require('history'); + +var _storage = require('@cycle/storage'); + +var _storage2 = _interopRequireDefault(_storage); + +var _index = require('./components/TaskList/index'); + +var _index2 = _interopRequireDefault(_index); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var main = _index2.default; + +// THE ENTRY POINT +// This is where the whole story starts. +// `run` receives a main function and an object +// with the drivers. + +// THE MAIN FUNCTION +// This is the todo list component. +(0, _xstreamRun.run)(main, { + // THE DOM DRIVER + // `makeDOMDriver(container)` from Cycle DOM returns a + // driver function to interact with the DOM. + DOM: (0, _dom.makeDOMDriver)('.todoapp', { transposition: true }), + // THE HISTORY DRIVER + // A driver to interact with browser history + History: (0, _history.makeHistoryDriver)((0, _history2.createHistory)(), { capture: true }), + // THE STORAGE DRIVER + // The storage driver which can be used to access values for + // local- and sessionStorage keys as streams. + storage: _storage2.default +}); + +},{"./components/TaskList/index":121,"@cycle/dom":11,"@cycle/history":70,"@cycle/storage":75,"@cycle/xstream-run":83,"history":100}],117:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _intent = require('./intent'); + +var _intent2 = _interopRequireDefault(_intent); + +var _model = require('./model'); + +var _model2 = _interopRequireDefault(_model); + +var _view = require('./view'); + +var _view2 = _interopRequireDefault(_view); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// THE TODO ITEM FUNCTION +// This is a simple todo item component, +// structured with the MVI-pattern. +function Task(sources) { + var action$ = (0, _intent2.default)(sources); + var state$ = (0, _model2.default)(sources.props$, action$); + var vtree$ = (0, _view2.default)(state$); + + return { + DOM: vtree$, + action$: action$, + state$: state$ + }; +} + +exports.default = Task; + +},{"./intent":118,"./model":119,"./view":120}],118:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _xstream = require('xstream'); + +var _xstream2 = _interopRequireDefault(_xstream); + +var _utils = require('../../utils'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// THE TODO ITEM INTENT +// This intent function returns a stream of all the different, +// actions that can be taken on a todo. +function intent(sources) { + // THE INTENT MERGE + // Merge all actions into one stream. + return _xstream2.default.merge( + // THE DESTROY ACTION STREAM + sources.DOM.select('.destroy').events('click').mapTo({ type: 'destroy' }), + + // THE TOGGLE ACTION STREAM + sources.DOM.select('.toggle').events('change').map(function (ev) { + return ev.target.checked; + }).map(function (payload) { + return { type: 'toggle', payload: payload }; + }), sources.action$.filter(function (action) { + return action.type === 'toggleAll'; + }).map(function (action) { + return _extends({}, action, { type: 'toggle' }); + }), + + // THE START EDIT ACTION STREAM + sources.DOM.select('label').events('dblclick').mapTo({ type: 'startEdit' }), + + // THE ESC KEY ACTION STREAM + sources.DOM.select('.edit').events('keyup').filter(function (ev) { + return ev.keyCode === _utils.ESC_KEY; + }).mapTo({ type: 'cancelEdit' }), + + // THE ENTER KEY ACTION STREAM + sources.DOM.select('.edit').events('keyup').filter(function (ev) { + return ev.keyCode === _utils.ENTER_KEY; + }).compose(function (s) { + return _xstream2.default.merge(s, sources.DOM.select('.edit').events('blur', true)); + }).map(function (ev) { + return { title: ev.target.value, type: 'doneEdit' }; + })); +} + +exports.default = intent; + +},{"../../utils":127,"xstream":115}],119:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _xstream = require('xstream'); + +var _xstream2 = _interopRequireDefault(_xstream); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function makeReducer$(action$) { + var startEditReducer$ = action$.filter(function (action) { + return action.type === 'startEdit'; + }).mapTo(function startEditReducer(data) { + return _extends({}, data, { + editing: true + }); + }); + + var doneEditReducer$ = action$.filter(function (action) { + return action.type === 'doneEdit'; + }).map(function (action) { + return function doneEditReducer(data) { + return _extends({}, data, { + title: action.payload, + editing: false + }); + }; + }); + + var cancelEditReducer$ = action$.filter(function (action) { + return action.type === 'cancelEdit'; + }).mapTo(function cancelEditReducer(data) { + return _extends({}, data, { + editing: false + }); + }); + + var toggleReducer$ = action$.filter(function (action) { + return action.type === 'toggle'; + }).map(function (action) { + return function toggleReducer(data) { + return _extends({}, data, { + completed: action.payload + }); + }; + }); + + return _xstream2.default.merge(startEditReducer$, doneEditReducer$, cancelEditReducer$, toggleReducer$); +} + +function model(props$, action$) { + // THE SANITIZED PROPERTIES + // If the list item has no data set it as empty and not completed. + var sanitizedProps$ = props$.startWith({ title: '', completed: false }); + var reducer$ = makeReducer$(action$); + + return sanitizedProps$.map(function (props) { + return reducer$.fold(function (data, reducer) { + return reducer(data); + }, props); + }).flatten().remember(); +} + +exports.default = model; + +},{"xstream":115}],120:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _dom = require('@cycle/dom'); + +function view(state$) { + return state$.map(function (_ref) { + var title = _ref.title; + var completed = _ref.completed; + var editing = _ref.editing; + + var todoRootClasses = { + completed: completed, + editing: editing + }; + + return (0, _dom.li)('.todoRoot', { class: todoRootClasses }, [(0, _dom.div)('.view', [(0, _dom.input)('.toggle', { + props: { type: 'checkbox', checked: completed } + }), (0, _dom.label)(title), (0, _dom.button)('.destroy')]), (0, _dom.input)('.edit', { + props: { type: 'text' }, + hook: { + update: function update(oldVNode, _ref2) { + var elm = _ref2.elm; + + elm.value = title; + if (editing) { + elm.focus(); + elm.selectionStart = elm.value.length; + } + } + } + })]); + }); +} + +exports.default = view; + +},{"@cycle/dom":11}],121:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); + +var _xstream = require('xstream'); + +var _xstream2 = _interopRequireDefault(_xstream); + +var _isolate = require('@cycle/isolate'); + +var _isolate2 = _interopRequireDefault(_isolate); + +var _intent = require('./intent'); + +var _intent2 = _interopRequireDefault(_intent); + +var _model = require('./model'); + +var _model2 = _interopRequireDefault(_model); + +var _view = require('./view'); + +var _view2 = _interopRequireDefault(_view); + +var _storageSource = require('./storage-source'); + +var _storageSource2 = _interopRequireDefault(_storageSource); + +var _storageSink = require('./storage-sink'); + +var _storageSink2 = _interopRequireDefault(_storageSink); + +var _index = require('../Task/index'); + +var _index2 = _interopRequireDefault(_index); + +var _collection = require('@cycle/collection'); + +var _collection2 = _interopRequireDefault(_collection); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// THE TASKLIST COMPONENT +// This is the TaskList component which is being exported below. +function TaskList(sources) { + // THE LOCALSTORAGE STREAM + // Here we create a localStorage stream that only streams + // the first value read from localStorage in order to + // supply the application with initial state. + var localStorage$ = sources.storage.local.getItem('todos-cycle').take(1); + // THE INITIAL TODO DATA + // The `deserialize` function takes the serialized JSON stored in localStorage + // and turns it into a stream sending a JSON object. + var sourceTodosData$ = (0, _storageSource2.default)(localStorage$); + // THE INTENT (MVI PATTERN) + // Pass relevant sources to the intent function, which set up + // streams that model the users actions. + var action$ = (0, _intent2.default)(sources.DOM, sources.History); + // THE MODEL (MVI PATTERN) + // Actions get passed to the model function which transforms the data + // coming through and prepares the data for the view. + var state$ = (0, _model2.default)(action$, sourceTodosData$); + // THE ITEM ADDITION STREAM + // Emits objects of sources specific to each item. + // Merges stored items with new items + var add$ = _xstream2.default.merge(sourceTodosData$.map(function (data) { + return data.list.map(function (props) { + return { props$: _xstream2.default.of(props) }; + }); + }), action$.filter(function (action) { + return action.type === 'insertTodo'; + }).map(function (action) { + return { + props$: _xstream2.default.of({ + title: action.payload, + completed: false + }) + }; + })); + // THE ITEM REMOVAL SELECTOR FUNCTION + // This function takes item's sinks and returns a stream representing + // its removal. Merges internal removals and `deleteCompleteds` actions + function removeSelector(itemSinks) { + var deleteCompleteds$ = action$.filter(function (action) { + return action.type === 'deleteCompleteds'; + }); + return _xstream2.default.merge( + // Consider deleteCompleteds$ only if the task is completed. + // analogue of rx pausable + itemSinks.state$.map(function (state) { + return deleteCompleteds$.filter(function () { + return state.completed; + }); + }).flatten(), itemSinks.action$.filter(function (action) { + return action.type === 'destroy'; + })); + } + // THE COLLECTION STREAM + // Collection function takes a component function, a common sources object, + // a stream of item additions, and a selector function from item sinks to + // a stream of removals + var list$ = (0, _collection2.default)(_index2.default, { + DOM: sources.DOM, + action$: action$.filter(function (action) { + return action.type === 'toggleAll'; + }) + }, add$, removeSelector); + // THE COMBINED CHILDREN VTREE AND STATE STREAMS + var todoVtrees$ = _collection2.default.pluck(list$, function (itemSinks) { + return itemSinks.DOM; + }); + var todoStates$ = _collection2.default.pluck(list$, function (itemSinks) { + return itemSinks.state$; + }); + + var amendedState$ = _xstream2.default.combine(state$, todoVtrees$, todoStates$).map(function (_ref) { + var _ref2 = _slicedToArray(_ref, 3); + + var parentState = _ref2[0]; + var todoVtrees = _ref2[1]; + var todoStates = _ref2[2]; + return _extends({}, parentState, { + list: todoStates.map(function (state, i) { + return _extends({}, state, { + todoItem: { DOM: todoVtrees[i] } + }); + }) + }); + }); + // THE VIEW (MVI PATTERN) + // We render state as markup for the DOM. + var vdom$ = (0, _view2.default)(amendedState$); + // WRITE TO LOCALSTORAGE + // The latest state is written to localStorage. + var storage$ = (0, _storageSink2.default)(amendedState$).map(function (state) { + return { + key: 'todos-cycle', value: state + }; + }); + // COMPLETE THE CYCLE + // Write the virtual dom stream to the DOM and write the + // storage stream to localStorage. + var sinks = { + DOM: vdom$, + storage: storage$ + }; + return sinks; +} + +exports.default = TaskList; + +},{"../Task/index":117,"./intent":122,"./model":123,"./storage-sink":124,"./storage-source":125,"./view":126,"@cycle/collection":1,"@cycle/isolate":74,"xstream":115}],122:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = intent; + +var _xstream = require('xstream'); + +var _xstream2 = _interopRequireDefault(_xstream); + +var _dropRepeats = require('xstream/extra/dropRepeats'); + +var _dropRepeats2 = _interopRequireDefault(_dropRepeats); + +var _utils = require('../../utils'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// THE INTENT FOR THE LIST +function intent(DOMSource, History) { + return _xstream2.default.merge( + // THE ROUTE STREAM + // A stream that provides the path whenever the route changes. + History.startWith({ pathname: '/' }).map(function (location) { + return location.pathname; + }).compose((0, _dropRepeats2.default)()).map(function (payload) { + return { type: 'changeRoute', payload: payload }; + }), + + // THE URL STREAM + // A stream of URL clicks in the app + DOMSource.select('a').events('click').map(function (event) { + return event.target.hash.replace('#', ''); + }).map(function (payload) { + return { type: 'url', payload: payload }; + }), + + // CLEAR INPUT STREAM + // A stream of ESC key strokes in the `.new-todo` field. + DOMSource.select('.new-todo').events('keydown').filter(function (ev) { + return ev.keyCode === _utils.ESC_KEY; + }).map(function (payload) { + return { type: 'clearInput', payload: payload }; + }), + + // ENTER KEY STREAM + // A stream of ENTER key strokes in the `.new-todo` field. + DOMSource.select('.new-todo').events('keydown') + // Trim value and only let the data through when there + // is anything but whitespace in the field and the ENTER key was hit. + .filter(function (ev) { + var trimmedVal = String(ev.target.value).trim(); + return ev.keyCode === _utils.ENTER_KEY && trimmedVal; + }) + // Return the trimmed value. + .map(function (ev) { + return String(ev.target.value).trim(); + }).map(function (payload) { + return { type: 'insertTodo', payload: payload }; + }), + + // TOGGLE ALL STREAM + // Create a stream out of the clicks on the `.toggle-all` button. + DOMSource.select('.toggle-all').events('click').map(function (ev) { + return ev.target.checked; + }).map(function (payload) { + return { type: 'toggleAll', payload: payload }; + }), + + // DELETE COMPLETED TODOS STREAM + // A stream of click events on the `.clear-completed` element. + DOMSource.select('.clear-completed').events('click').mapTo({ type: 'deleteCompleteds' })); +}; + +},{"../../utils":127,"xstream":115,"xstream/extra/dropRepeats":114}],123:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _xstream = require('xstream'); + +var _xstream2 = _interopRequireDefault(_xstream); + +var _concat = require('xstream/extra/concat'); + +var _concat2 = _interopRequireDefault(_concat); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// A helper function that provides filter functions +// depending on the route value. +function getFilterFn(route) { + switch (route) { + case '/active': + return function (task) { + return task.completed === false; + }; + case '/completed': + return function (task) { + return task.completed === true; + }; + default: + return function () { + return true; + }; // allow anything + } +} + +// MAKE REDUCER STREAM +// A function that takes the actions on the todo list +// and returns a stream of "reducers": functions that expect the current +// todosData (the state) and return a new version of todosData. +function makeReducer$(action$) { + var clearInputReducer$ = action$.filter(function (a) { + return a.type === 'clearInput'; + }).mapTo(function clearInputReducer(todosData) { + return todosData; + }); + + var changeRouteReducer$ = action$.filter(function (a) { + return a.type === 'changeRoute'; + }).map(function (a) { + return a.payload; + }).startWith('/').map(function (path) { + var filterFn = getFilterFn(path); + return function changeRouteReducer(todosData) { + todosData.filter = path.replace('/', '').trim(); + todosData.filterFn = filterFn; + return todosData; + }; + }); + + return _xstream2.default.merge(clearInputReducer$, changeRouteReducer$); +} + +// THIS IS THE MODEL FUNCTION +// It expects the actions coming in from the sources +function model(action$, sourceTodosData$) { + // THE BUSINESS LOGIC + // Actions are passed to the `makeReducer$` function + // which creates a stream of reducer functions that needs + // to be applied on the todoData when an action happens. + var reducer$ = makeReducer$(action$); + + // RETURN THE MODEL DATA + return sourceTodosData$.map(function (sourceTodosData) { + return reducer$.fold(function (todosData, reducer) { + return reducer(todosData); + }, sourceTodosData); + }).flatten() + // Make this remember its latest event, so late listeners + // will be updated with the latest state. + .remember(); +} + +exports.default = model; + +},{"xstream":115,"xstream/extra/concat":112}],124:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = serialize; +// Turn the data object that contains +// the todos into a string for localStorage. +function serialize(todos$) { + return todos$.map(function (todosData) { + return JSON.stringify({ + list: todosData.list.map(function (todoData) { + return { + title: todoData.title, + completed: todoData.completed + }; + }) + }); + }); +}; + +},{}],125:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = deserialize; +function merge() { + var result = {}; + for (var i = 0; i < arguments.length; i++) { + var object = arguments[i]; + for (var key in object) { + if (object.hasOwnProperty(key)) { + result[key] = object[key]; + } + } + } + return result; +} + +var safeJSONParse = function safeJSONParse(str) { + return JSON.parse(str) || {}; +}; + +var mergeWithDefaultTodosData = function mergeWithDefaultTodosData(todosData) { + return merge({ + list: [], + filter: '', + filterFn: function filterFn() { + return true; + } }, todosData); +}; + +// Take localStorage todoData stream and transform into +// a JavaScript object. Set default data. +function deserialize(localStorageValue$) { + return localStorageValue$.map(safeJSONParse).map(mergeWithDefaultTodosData); +}; + +},{}],126:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = view; + +var _dom = require('@cycle/dom'); + +function renderHeader() { + return (0, _dom.header)('.header', [(0, _dom.h1)('todos'), (0, _dom.input)('.new-todo', { + props: { + type: 'text', + placeholder: 'What needs to be done?', + autofocus: true, + name: 'newTodo' + }, + hook: { + update: function update(oldVNode, _ref) { + var elm = _ref.elm; + + elm.value = ''; + } + } + })]); +} + +function renderMainSection(todosData) { + var allCompleted = todosData.list.reduce(function (x, y) { + return x && y.completed; + }, true); + var sectionStyle = { 'display': todosData.list.length ? '' : 'none' }; + + return (0, _dom.section)('.main', { style: sectionStyle }, [(0, _dom.input)('.toggle-all', { + props: { type: 'checkbox', checked: allCompleted } + }), (0, _dom.ul)('.todo-list', todosData.list.filter(todosData.filterFn).map(function (data) { + return data.todoItem.DOM; + }))]); +} + +function renderFilterButton(todosData, filterTag, path, label) { + return (0, _dom.li)([(0, _dom.a)({ + props: { href: path }, + class: { selected: todosData.filter === filterTag } + }, label)]); +} + +function renderFooter(todosData) { + var amountCompleted = todosData.list.filter(function (todoData) { + return todoData.completed; + }).length; + var amountActive = todosData.list.length - amountCompleted; + var footerStyle = { 'display': todosData.list.length ? '' : 'none' }; + + return (0, _dom.footer)('.footer', { style: footerStyle }, [(0, _dom.span)('.todo-count', [(0, _dom.strong)(String(amountActive)), ' item' + (amountActive !== 1 ? 's' : '') + ' left']), (0, _dom.ul)('.filters', [renderFilterButton(todosData, '', '/', 'All'), renderFilterButton(todosData, 'active', '/active', 'Active'), renderFilterButton(todosData, 'completed', '/completed', 'Completed')]), amountCompleted > 0 ? (0, _dom.button)('.clear-completed', 'Clear completed (' + amountCompleted + ')') : null]); +} + +// THE VIEW +// This function expects the stream of todosData +// from the model function and turns it into a +// virtual DOM stream that is then ultimately returned into +// the DOM sink in the index.js. +function view(todos$) { + return todos$.map(function (todos) { + return (0, _dom.div)([renderHeader(), renderMainSection(todos), renderFooter(todos)]); + }); +}; + +},{"@cycle/dom":11}],127:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var ENTER_KEY = 13; +var ESC_KEY = 27; + +exports.ENTER_KEY = ENTER_KEY; +exports.ESC_KEY = ESC_KEY; + +},{}]},{},[116]) +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy93YXRjaGlmeS9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvYnJvd3Nlci1wYWNrL19wcmVsdWRlLmpzIiwibm9kZV9tb2R1bGVzL0BjeWNsZS9jb2xsZWN0aW9uL2xpYi9jb2xsZWN0aW9uLmpzIiwibm9kZV9tb2R1bGVzL0BjeWNsZS9kb20vbGliL0VsZW1lbnRGaW5kZXIuanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9saWIvRXZlbnREZWxlZ2F0b3IuanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9saWIvSFRNTFNvdXJjZS5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvZG9tL2xpYi9NYWluRE9NU291cmNlLmpzIiwibm9kZV9tb2R1bGVzL0BjeWNsZS9kb20vbGliL1Njb3BlQ2hlY2tlci5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvZG9tL2xpYi9WTm9kZVdyYXBwZXIuanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9saWIvZnJvbUV2ZW50LmpzIiwibm9kZV9tb2R1bGVzL0BjeWNsZS9kb20vbGliL2h5cGVyc2NyaXB0LWhlbHBlcnMuanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9saWIvaHlwZXJzY3JpcHQuanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9saWIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9saWIvaXNvbGF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvZG9tL2xpYi9pc29sYXRlTW9kdWxlLmpzIiwibm9kZV9tb2R1bGVzL0BjeWNsZS9kb20vbGliL21ha2VET01Ecml2ZXIuanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9saWIvbWFrZUhUTUxEcml2ZXIuanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9saWIvbW9ja0RPTVNvdXJjZS5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvZG9tL2xpYi9tb2R1bGVzLmpzIiwibm9kZV9tb2R1bGVzL0BjeWNsZS9kb20vbGliL3RyYW5zcG9zaXRpb24uanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9saWIvdXRpbHMuanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9ub2RlX21vZHVsZXMvQGN5Y2xlL3hzdHJlYW0tYWRhcHRlci9saWIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9ub2RlX21vZHVsZXMvbWF0Y2hlcy1zZWxlY3Rvci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvZG9tL25vZGVfbW9kdWxlcy9zbmFiYmRvbS1zZWxlY3Rvci9saWIvY2xhc3NOYW1lRnJvbVZOb2RlLmpzIiwibm9kZV9tb2R1bGVzL0BjeWNsZS9kb20vbm9kZV9tb2R1bGVzL3NuYWJiZG9tLXNlbGVjdG9yL2xpYi9zZWxlY3RvclBhcnNlci5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvZG9tL25vZGVfbW9kdWxlcy9zbmFiYmRvbS1zZWxlY3Rvci9ub2RlX21vZHVsZXMvYnJvd3Nlci1zcGxpdC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvZG9tL25vZGVfbW9kdWxlcy9zbmFiYmRvbS10by1odG1sL2xpYi9jb250YWluZXItZWxlbWVudHMuanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9ub2RlX21vZHVsZXMvc25hYmJkb20tdG8taHRtbC9saWIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9ub2RlX21vZHVsZXMvc25hYmJkb20tdG8taHRtbC9saWIvaW5pdC5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvZG9tL25vZGVfbW9kdWxlcy9zbmFiYmRvbS10by1odG1sL2xpYi9tb2R1bGVzL2F0dHJpYnV0ZXMuanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9ub2RlX21vZHVsZXMvc25hYmJkb20tdG8taHRtbC9saWIvbW9kdWxlcy9zdHlsZS5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvZG9tL25vZGVfbW9kdWxlcy9zbmFiYmRvbS10by1odG1sL2xpYi9wYXJzZS1zZWxlY3Rvci5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvZG9tL25vZGVfbW9kdWxlcy9zbmFiYmRvbS10by1odG1sL2xpYi92b2lkLWVsZW1lbnRzLmpzIiwibm9kZV9tb2R1bGVzL0BjeWNsZS9kb20vbm9kZV9tb2R1bGVzL3NuYWJiZG9tLXRvLWh0bWwvbm9kZV9tb2R1bGVzL2xvZGFzaC5lc2NhcGUvaW5kZXguanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9ub2RlX21vZHVsZXMvc25hYmJkb20tdG8taHRtbC9ub2RlX21vZHVsZXMvbG9kYXNoLmVzY2FwZS9ub2RlX21vZHVsZXMvbG9kYXNoLl9yb290L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL0BjeWNsZS9kb20vbm9kZV9tb2R1bGVzL3NuYWJiZG9tLXRvLWh0bWwvbm9kZV9tb2R1bGVzL2xvZGFzaC5mb3Jvd24vaW5kZXguanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9ub2RlX21vZHVsZXMvc25hYmJkb20tdG8taHRtbC9ub2RlX21vZHVsZXMvbG9kYXNoLmZvcm93bi9ub2RlX21vZHVsZXMvbG9kYXNoLl9iYXNlZm9yL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL0BjeWNsZS9kb20vbm9kZV9tb2R1bGVzL3NuYWJiZG9tLXRvLWh0bWwvbm9kZV9tb2R1bGVzL2xvZGFzaC5mb3Jvd24vbm9kZV9tb2R1bGVzL2xvZGFzaC5fYmluZGNhbGxiYWNrL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL0BjeWNsZS9kb20vbm9kZV9tb2R1bGVzL3NuYWJiZG9tLXRvLWh0bWwvbm9kZV9tb2R1bGVzL2xvZGFzaC5mb3Jvd24vbm9kZV9tb2R1bGVzL2xvZGFzaC5rZXlzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL0BjeWNsZS9kb20vbm9kZV9tb2R1bGVzL3NuYWJiZG9tLXRvLWh0bWwvbm9kZV9tb2R1bGVzL2xvZGFzaC5mb3Jvd24vbm9kZV9tb2R1bGVzL2xvZGFzaC5rZXlzL25vZGVfbW9kdWxlcy9sb2Rhc2guX2dldG5hdGl2ZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvZG9tL25vZGVfbW9kdWxlcy9zbmFiYmRvbS10by1odG1sL25vZGVfbW9kdWxlcy9sb2Rhc2guZm9yb3duL25vZGVfbW9kdWxlcy9sb2Rhc2gua2V5cy9ub2RlX21vZHVsZXMvbG9kYXNoLmlzYXJndW1lbnRzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL0BjeWNsZS9kb20vbm9kZV9tb2R1bGVzL3NuYWJiZG9tLXRvLWh0bWwvbm9kZV9tb2R1bGVzL2xvZGFzaC5mb3Jvd24vbm9kZV9tb2R1bGVzL2xvZGFzaC5rZXlzL25vZGVfbW9kdWxlcy9sb2Rhc2guaXNhcnJheS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvZG9tL25vZGVfbW9kdWxlcy9zbmFiYmRvbS10by1odG1sL25vZGVfbW9kdWxlcy9sb2Rhc2gua2ViYWJjYXNlL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL0BjeWNsZS9kb20vbm9kZV9tb2R1bGVzL3NuYWJiZG9tLXRvLWh0bWwvbm9kZV9tb2R1bGVzL2xvZGFzaC5rZWJhYmNhc2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC5kZWJ1cnIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9ub2RlX21vZHVsZXMvc25hYmJkb20tdG8taHRtbC9ub2RlX21vZHVsZXMvbG9kYXNoLmtlYmFiY2FzZS9ub2RlX21vZHVsZXMvbG9kYXNoLmRlYnVyci9ub2RlX21vZHVsZXMvbG9kYXNoLl9yb290L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL0BjeWNsZS9kb20vbm9kZV9tb2R1bGVzL3NuYWJiZG9tLXRvLWh0bWwvbm9kZV9tb2R1bGVzL2xvZGFzaC5rZWJhYmNhc2Uvbm9kZV9tb2R1bGVzL2xvZGFzaC53b3Jkcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvZG9tL25vZGVfbW9kdWxlcy9zbmFiYmRvbS10by1odG1sL25vZGVfbW9kdWxlcy9sb2Rhc2gua2ViYWJjYXNlL25vZGVfbW9kdWxlcy9sb2Rhc2gud29yZHMvbm9kZV9tb2R1bGVzL2xvZGFzaC5fcm9vdC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvZG9tL25vZGVfbW9kdWxlcy9zbmFiYmRvbS10by1odG1sL25vZGVfbW9kdWxlcy9sb2Rhc2gudW5pb24vaW5kZXguanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9ub2RlX21vZHVsZXMvc25hYmJkb20tdG8taHRtbC9ub2RlX21vZHVsZXMvbG9kYXNoLnVuaW9uL25vZGVfbW9kdWxlcy9sb2Rhc2guX2Jhc2VmbGF0dGVuL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL0BjeWNsZS9kb20vbm9kZV9tb2R1bGVzL3NuYWJiZG9tLXRvLWh0bWwvbm9kZV9tb2R1bGVzL2xvZGFzaC51bmlvbi9ub2RlX21vZHVsZXMvbG9kYXNoLl9iYXNldW5pcS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvZG9tL25vZGVfbW9kdWxlcy9zbmFiYmRvbS10by1odG1sL25vZGVfbW9kdWxlcy9sb2Rhc2gudW5pb24vbm9kZV9tb2R1bGVzL2xvZGFzaC5fYmFzZXVuaXEvbm9kZV9tb2R1bGVzL2xvZGFzaC5fYmFzZWluZGV4b2YvaW5kZXguanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9ub2RlX21vZHVsZXMvc25hYmJkb20tdG8taHRtbC9ub2RlX21vZHVsZXMvbG9kYXNoLnVuaW9uL25vZGVfbW9kdWxlcy9sb2Rhc2guX2Jhc2V1bmlxL25vZGVfbW9kdWxlcy9sb2Rhc2guX2NhY2hlaW5kZXhvZi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvZG9tL25vZGVfbW9kdWxlcy9zbmFiYmRvbS10by1odG1sL25vZGVfbW9kdWxlcy9sb2Rhc2gudW5pb24vbm9kZV9tb2R1bGVzL2xvZGFzaC5fYmFzZXVuaXEvbm9kZV9tb2R1bGVzL2xvZGFzaC5fY3JlYXRlY2FjaGUvaW5kZXguanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9ub2RlX21vZHVsZXMvc25hYmJkb20tdG8taHRtbC9ub2RlX21vZHVsZXMvbG9kYXNoLnVuaW9uL25vZGVfbW9kdWxlcy9sb2Rhc2gucmVzdHBhcmFtL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL0BjeWNsZS9kb20vbm9kZV9tb2R1bGVzL3NuYWJiZG9tL2guanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9ub2RlX21vZHVsZXMvc25hYmJkb20vaHRtbGRvbWFwaS5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvZG9tL25vZGVfbW9kdWxlcy9zbmFiYmRvbS9pcy5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvZG9tL25vZGVfbW9kdWxlcy9zbmFiYmRvbS9tb2R1bGVzL2F0dHJpYnV0ZXMuanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9ub2RlX21vZHVsZXMvc25hYmJkb20vbW9kdWxlcy9jbGFzcy5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvZG9tL25vZGVfbW9kdWxlcy9zbmFiYmRvbS9tb2R1bGVzL2V2ZW50bGlzdGVuZXJzLmpzIiwibm9kZV9tb2R1bGVzL0BjeWNsZS9kb20vbm9kZV9tb2R1bGVzL3NuYWJiZG9tL21vZHVsZXMvaGVyby5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvZG9tL25vZGVfbW9kdWxlcy9zbmFiYmRvbS9tb2R1bGVzL3Byb3BzLmpzIiwibm9kZV9tb2R1bGVzL0BjeWNsZS9kb20vbm9kZV9tb2R1bGVzL3NuYWJiZG9tL21vZHVsZXMvc3R5bGUuanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9ub2RlX21vZHVsZXMvc25hYmJkb20vc25hYmJkb20uanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9ub2RlX21vZHVsZXMvc25hYmJkb20vdGh1bmsuanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2RvbS9ub2RlX21vZHVsZXMvc25hYmJkb20vdm5vZGUuanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2hpc3RvcnkvbGliL2NhcHR1cmVDbGlja3MuanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL2hpc3RvcnkvbGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL0BjeWNsZS9oaXN0b3J5L2xpYi9tYWtlSGlzdG9yeURyaXZlci5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvaGlzdG9yeS9saWIvc2VydmVySGlzdG9yeS5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvaGlzdG9yeS9saWIvdXRpbC5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvaXNvbGF0ZS9saWIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL3N0b3JhZ2UvbGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL0BjeWNsZS9zdG9yYWdlL2xpYi9yZXNwb25zZUNvbGxlY3Rpb24uanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL3N0b3JhZ2UvbGliL3V0aWwuanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL3N0b3JhZ2UvbGliL3dyaXRlVG9TdG9yZS5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvc3RvcmFnZS9ub2RlX21vZHVsZXMvQGN5Y2xlL3hzdHJlYW0tYWRhcHRlci9saWIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvQGN5Y2xlL3N0b3JhZ2Uvbm9kZV9tb2R1bGVzL3hzdHJlYW0vY29yZS5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvc3RvcmFnZS9ub2RlX21vZHVsZXMveHN0cmVhbS9leHRyYS9kcm9wUmVwZWF0cy5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUvc3RvcmFnZS9ub2RlX21vZHVsZXMveHN0cmVhbS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9AY3ljbGUveHN0cmVhbS1ydW4vbGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL0BjeWNsZS94c3RyZWFtLXJ1bi9ub2RlX21vZHVsZXMvQGN5Y2xlL2Jhc2UvbGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2hpc3RvcnkvbGliL0FjdGlvbnMuanMiLCJub2RlX21vZHVsZXMvaGlzdG9yeS9saWIvQXN5bmNVdGlscy5qcyIsIm5vZGVfbW9kdWxlcy9oaXN0b3J5L2xpYi9Ccm93c2VyUHJvdG9jb2wuanMiLCJub2RlX21vZHVsZXMvaGlzdG9yeS9saWIvRE9NU3RhdGVTdG9yYWdlLmpzIiwibm9kZV9tb2R1bGVzL2hpc3RvcnkvbGliL0RPTVV0aWxzLmpzIiwibm9kZV9tb2R1bGVzL2hpc3RvcnkvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50LmpzIiwibm9kZV9tb2R1bGVzL2hpc3RvcnkvbGliL0hhc2hQcm90b2NvbC5qcyIsIm5vZGVfbW9kdWxlcy9oaXN0b3J5L2xpYi9Mb2NhdGlvblV0aWxzLmpzIiwibm9kZV9tb2R1bGVzL2hpc3RvcnkvbGliL1BhdGhVdGlscy5qcyIsIm5vZGVfbW9kdWxlcy9oaXN0b3J5L2xpYi9SZWZyZXNoUHJvdG9jb2wuanMiLCJub2RlX21vZHVsZXMvaGlzdG9yeS9saWIvY3JlYXRlQnJvd3Nlckhpc3RvcnkuanMiLCJub2RlX21vZHVsZXMvaGlzdG9yeS9saWIvY3JlYXRlSGFzaEhpc3RvcnkuanMiLCJub2RlX21vZHVsZXMvaGlzdG9yeS9saWIvY3JlYXRlSGlzdG9yeS5qcyIsIm5vZGVfbW9kdWxlcy9oaXN0b3J5L2xpYi9jcmVhdGVNZW1vcnlIaXN0b3J5LmpzIiwibm9kZV9tb2R1bGVzL2hpc3RvcnkvbGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2hpc3RvcnkvbGliL3J1blRyYW5zaXRpb25Ib29rLmpzIiwibm9kZV9tb2R1bGVzL2hpc3RvcnkvbGliL3VzZUJhc2VuYW1lLmpzIiwibm9kZV9tb2R1bGVzL2hpc3RvcnkvbGliL3VzZUJlZm9yZVVubG9hZC5qcyIsIm5vZGVfbW9kdWxlcy9oaXN0b3J5L2xpYi91c2VRdWVyaWVzLmpzIiwibm9kZV9tb2R1bGVzL2hpc3Rvcnkvbm9kZV9tb2R1bGVzL2ludmFyaWFudC9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2hpc3Rvcnkvbm9kZV9tb2R1bGVzL3F1ZXJ5LXN0cmluZy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9oaXN0b3J5L25vZGVfbW9kdWxlcy9xdWVyeS1zdHJpbmcvbm9kZV9tb2R1bGVzL29iamVjdC1hc3NpZ24vaW5kZXguanMiLCJub2RlX21vZHVsZXMvaGlzdG9yeS9ub2RlX21vZHVsZXMvcXVlcnktc3RyaW5nL25vZGVfbW9kdWxlcy9zdHJpY3QtdXJpLWVuY29kZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9oaXN0b3J5L25vZGVfbW9kdWxlcy93YXJuaW5nL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvd2F0Y2hpZnkvbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnkvbm9kZV9tb2R1bGVzL3Byb2Nlc3MvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy94c3RyZWFtL2NvcmUuanMiLCJub2RlX21vZHVsZXMveHN0cmVhbS9leHRyYS9jb25jYXQuanMiLCJub2RlX21vZHVsZXMveHN0cmVhbS9leHRyYS9kZWxheS5qcyIsIm5vZGVfbW9kdWxlcy94c3RyZWFtL2V4dHJhL2Ryb3BSZXBlYXRzLmpzIiwibm9kZV9tb2R1bGVzL3hzdHJlYW0vaW5kZXguanMiLCJzcmMvYXBwLmpzIiwic3JjL2NvbXBvbmVudHMvVGFzay9pbmRleC5qcyIsInNyYy9jb21wb25lbnRzL1Rhc2svaW50ZW50LmpzIiwic3JjL2NvbXBvbmVudHMvVGFzay9tb2RlbC5qcyIsInNyYy9jb21wb25lbnRzL1Rhc2svdmlldy5qcyIsInNyYy9jb21wb25lbnRzL1Rhc2tMaXN0L2luZGV4LmpzIiwic3JjL2NvbXBvbmVudHMvVGFza0xpc3QvaW50ZW50LmpzIiwic3JjL2NvbXBvbmVudHMvVGFza0xpc3QvbW9kZWwuanMiLCJzcmMvY29tcG9uZW50cy9UYXNrTGlzdC9zdG9yYWdlLXNpbmsuanMiLCJzcmMvY29tcG9uZW50cy9UYXNrTGlzdC9zdG9yYWdlLXNvdXJjZS5qcyIsInNyYy9jb21wb25lbnRzL1Rhc2tMaXN0L3ZpZXcuanMiLCJzcmMvdXRpbHMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3pDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDckJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDekRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDOUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JCQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNuQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3BMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUMzREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDNU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUN2TEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDM0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUN0TUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDM0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNuSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNyREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDM0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbkVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN2Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3hKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDM1FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDNURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3pFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDNUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDckNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6RkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDM0VBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN2QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDOUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbkVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3hxREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3hEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbkVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUMxR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDckZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ2hGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUN2SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ25GQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDMUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDdENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDOUZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNoSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNuTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQzNJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNwREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUN4QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUM5R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQy9FQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQzFIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ25EQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbEdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDNURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzlyREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQy9GQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDNUZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDekhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDTkE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFHQTs7Ozs7O0FBRUEsSUFBTSxzQkFBTjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFUQTtBQUNBO0FBU0EscUJBQUksSUFBSixFQUFVO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsT0FBSyx3QkFBYyxVQUFkLEVBQTBCLEVBQUMsZUFBZSxJ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QXdDLEdBQW5FLENBREQsR0FFRyxJQVp5QyxDQUF4QyxDQUFQO0FBZUQ7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLFNBQVMsSUFBVCxDQUFjLE1BQWQsRUFBc0I7QUFDbkMsU0FBTyxPQUFPLEdBQVAsQ0FBVztBQUFBLFdBQ2hCLGNBQUksQ0FDRixjQURFLEVBRUYsa0JBQWtCLEtBQWxCLENBRkUsRUFHRixhQUFhLEtBQWIsQ0FIRSxDQUFKLENBRGdCO0FBQUEsR0FBWCxDQUFQO0FBT0Q7Ozs7Ozs7O0FDbkZELElBQU0sWUFBWSxFQUFsQjtBQUNBLElBQU0sVUFBVSxFQUFoQjs7UUFFUSxTLEdBQUEsUztRQUFXLE8sR0FBQSxPIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblxudmFyIF94c3RyZWFtID0gcmVxdWlyZSgneHN0cmVhbScpO1xuXG52YXIgX3hzdHJlYW0yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfeHN0cmVhbSk7XG5cbnZhciBfZGVsYXkgPSByZXF1aXJlKCd4c3RyZWFtL2V4dHJhL2RlbGF5Jyk7XG5cbnZhciBfZGVsYXkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGVsYXkpO1xuXG52YXIgX2Ryb3BSZXBlYXRzID0gcmVxdWlyZSgneHN0cmVhbS9leHRyYS9kcm9wUmVwZWF0cycpO1xuXG52YXIgX2Ryb3BSZXBlYXRzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Ryb3BSZXBlYXRzKTtcblxudmFyIF9pc29sYXRlID0gcmVxdWlyZSgnQGN5Y2xlL2lzb2xhdGUnKTtcblxudmFyIF9pc29sYXRlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzb2xhdGUpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBBcnJheShhcnIubGVuZ3RoKTsgaSA8IGFyci5sZW5ndGg7IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9IGVsc2UgeyByZXR1cm4gQXJyYXkuZnJvbShhcnIpOyB9IH1cblxudmFyIG5vb3AgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbmZ1bmN0aW9uIGlzVnRyZWUoeCkge1xuICByZXR1cm4geCAmJiB0eXBlb2YgeC5zZWwgPT09ICdzdHJpbmcnO1xufVxuXG52YXIgX2lkID0gMDtcblxuZnVuY3Rpb24gaWQoKSB7XG4gIHJldHVybiBfaWQrKztcbn1cblxuZnVuY3Rpb24gbWFrZUl0ZW0oY29tcG9uZW50LCBzb3VyY2VzKSB7XG4gIHZhciBuZXdJZCA9IGlkKCk7XG5cbiAgdmFyIG5ld0l0ZW0gPSAoMCwgX2lzb2xhdGUyLmRlZmF1bHQpKGNvbXBvbmVudCwgbmV3SWQudG9TdHJpbmcoKSkoc291cmNlcyk7XG5cbiAgbmV3SXRlbS5faWQgPSBuZXdJZDtcbiAgbmV3SXRlbS5fbmFtZSA9IGNvbXBvbmVudC5uYW1lO1xuXG4gIHJldHVybiBuZXdJdGVtO1xufVxuXG5mdW5jdGlvbiBjb2xsZWN0aW9uKG9wdGlvbnMpIHtcbiAgdmFyIGl0ZW1zID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gW10gOiBhcmd1bWVudHNbMV07XG4gIHZhciBjb21wb25lbnQgPSBvcHRpb25zLmNvbXBvbmVudDtcbiAgdmFyIHNvdXJjZXMgPSBvcHRpb25zLnNvdXJjZXM7XG4gIHZhciByZW1vdmVTZWxlY3RvciA9IG9wdGlvbnMucmVtb3ZlU2VsZWN0b3I7XG5cblxuICByZXR1cm4ge1xuICAgIGFkZDogZnVuY3Rpb24gYWRkKCkge1xuICAgICAgdmFyIGFkZGl0aW9uYWxTb3VyY2VzID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMF07XG5cbiAgICAgIHZhciBuZXdJdGVtID0gbWFrZUl0ZW0oY29tcG9uZW50LCBfZXh0ZW5kcyh7fSwgc291cmNlcywgYWRkaXRpb25hbFNvdXJjZXMpKTtcbiAgICAgIHZhciByZW1vdmVTaW5rID0gcmVtb3ZlU2VsZWN0b3IobmV3SXRlbSkgfHwgX3hzdHJlYW0yLmRlZmF1bHQuZW1wdHkoKTtcbiAgICAgIG5ld0l0ZW0uX3JlbW92ZSQgPSByZW1vdmVTaW5rLnRha2UoMSkubWFwVG8obmV3SXRlbSk7XG5cbiAgICAgIHJldHVybiBjb2xsZWN0aW9uKG9wdGlvbnMsIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoaXRlbXMpLCBbbmV3SXRlbV0pKTtcbiAgICB9LFxuICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKGl0ZW1Gb3JSZW1vdmFsKSB7XG4gICAgICByZXR1cm4gY29sbGVjdGlvbihvcHRpb25zLCBpdGVtcy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0gIT09IGl0ZW1Gb3JSZW1vdmFsO1xuICAgICAgfSkpO1xuICAgIH0sXG4gICAgYXNBcnJheTogZnVuY3Rpb24gYXNBcnJheSgpIHtcbiAgICAgIHJldHVybiBpdGVtcy5zbGljZSgpOyAvLyByZXR1cm5zIGEgY29weSBvZiBpdGVtcyB0byBhdm9pZCBtdXRhdGlvblxuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gQ29sbGVjdGlvbihjb21wb25lbnQpIHtcbiAgdmFyIHNvdXJjZXMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1sxXTtcbiAgdmFyIGFkZCQgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDIgfHwgYXJndW1lbnRzWzJdID09PSB1bmRlZmluZWQgPyBfeHN0cmVhbTIuZGVmYXVsdC5lbXB0eSgpIDogYXJndW1lbnRzWzJdO1xuICB2YXIgcmVtb3ZlU2VsZWN0b3IgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDMgfHwgYXJndW1lbnRzWzNdID09PSB1bmRlZmluZWQgPyBub29wIDogYXJndW1lbnRzWzNdO1xuXG4gIHZhciByZW1vdmVQcm94eSQgPSBfeHN0cmVhbTIuZGVmYXVsdC5jcmVhdGUoKTtcbiAgdmFyIGFkZFJlZHVjZXIkID0gYWRkJC5tYXAoZnVuY3Rpb24gKHNvdXJjZXNMaXN0KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChjb2xsZWN0aW9uKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2VzTGlzdCkpIHtcbiAgICAgICAgLy8gbXVsdGlwbGUgaXRlbXNcbiAgICAgICAgcmV0dXJuIHNvdXJjZXNMaXN0LnJlZHVjZShmdW5jdGlvbiAoY29sbGVjdGlvbiwgc291cmNlcykge1xuICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uLmFkZChzb3VyY2VzKTtcbiAgICAgICAgfSwgY29sbGVjdGlvbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBzaW5nbGUgaXRlbVxuICAgICAgICByZXR1cm4gY29sbGVjdGlvbi5hZGQoc291cmNlc0xpc3QpO1xuICAgICAgfVxuICAgIH07XG4gIH0pO1xuICB2YXIgcmVtb3ZlUmVkdWNlciQgPSByZW1vdmVQcm94eSQubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChjb2xsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gY29sbGVjdGlvbi5yZW1vdmUoaXRlbSk7XG4gICAgfTtcbiAgfSk7XG4gIHZhciByZWR1Y2VyJCA9IF94c3RyZWFtMi5kZWZhdWx0Lm1lcmdlKGFkZFJlZHVjZXIkLCByZW1vdmVSZWR1Y2VyJCk7XG5cbiAgdmFyIGVtcHR5Q29sbGVjdGlvbiA9IGNvbGxlY3Rpb24oeyBjb21wb25lbnQ6IGNvbXBvbmVudCwgc291cmNlczogc291cmNlcywgcmVtb3ZlU2VsZWN0b3I6IHJlbW92ZVNlbGVjdG9yIH0pO1xuICB2YXIgY29sbGVjdGlvbiQgPSByZWR1Y2VyJC5mb2xkKGZ1bmN0aW9uIChjb2xsZWN0aW9uLCByZWR1Y2VyKSB7XG4gICAgcmV0dXJuIHJlZHVjZXIoY29sbGVjdGlvbik7XG4gIH0sIGVtcHR5Q29sbGVjdGlvbikubWFwKGZ1bmN0aW9uIChjb2xsZWN0aW9uKSB7XG4gICAgcmV0dXJuIGNvbGxlY3Rpb24uYXNBcnJheSgpO1xuICB9KTtcblxuICB2YXIgcmVtb3ZlJCA9IENvbGxlY3Rpb24ubWVyZ2UoY29sbGVjdGlvbiQsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgcmV0dXJuIGl0ZW0uX3JlbW92ZSQ7XG4gIH0pO1xuICByZW1vdmVQcm94eSQuaW1pdGF0ZShyZW1vdmUkKTtcblxuICByZXR1cm4gY29sbGVjdGlvbiQ7XG59XG5cbkNvbGxlY3Rpb24ucGx1Y2sgPSBmdW5jdGlvbiBwbHVjayhjb2xsZWN0aW9uJCwgcGx1Y2tTZWxlY3Rvcikge1xuICB2YXIgc2lua3MgPSB7fTtcblxuICBmdW5jdGlvbiBzaW5rJChpdGVtKSB7XG4gICAgdmFyIGtleSA9IGl0ZW0uX2lkO1xuXG4gICAgaWYgKHNpbmtzW2tleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIHNpbmsgPSBwbHVja1NlbGVjdG9yKGl0ZW0pLm1hcChmdW5jdGlvbiAoeCkge1xuICAgICAgICByZXR1cm4gaXNWdHJlZSh4KSAmJiB4LmtleSA9PSBudWxsID8gX2V4dGVuZHMoe30sIHgsIHsga2V5OiBrZXkgfSkgOiB4O1xuICAgICAgfSk7XG4gICAgICBzaW5rc1trZXldID0gc2luay5yZW1lbWJlcigpO1xuICAgIH1cblxuICAgIHJldHVybiBzaW5rc1trZXldO1xuICB9XG5cbiAgcmV0dXJuIGNvbGxlY3Rpb24kLm1hcChmdW5jdGlvbiAoaXRlbXMpIHtcbiAgICByZXR1cm4gaXRlbXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4gc2luayQoaXRlbSk7XG4gICAgfSk7XG4gIH0pLm1hcChmdW5jdGlvbiAoc2lua1N0cmVhbXMpIHtcbiAgICByZXR1cm4gX3hzdHJlYW0yLmRlZmF1bHQuY29tYmluZS5hcHBseShfeHN0cmVhbTIuZGVmYXVsdCwgX3RvQ29uc3VtYWJsZUFycmF5KHNpbmtTdHJlYW1zKSk7XG4gIH0pLmZsYXR0ZW4oKS5zdGFydFdpdGgoW10pO1xufTtcblxuQ29sbGVjdGlvbi5tZXJnZSA9IGZ1bmN0aW9uIG1lcmdlKGNvbGxlY3Rpb24kLCBtZXJnZVNlbGVjdG9yKSB7XG4gIHZhciBzaW5rcyA9IHt9O1xuXG4gIGZ1bmN0aW9uIHNpbmskKGl0ZW0pIHtcbiAgICB2YXIga2V5ID0gaXRlbS5faWQ7XG5cbiAgICBpZiAoc2lua3Nba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgc2luayA9IG1lcmdlU2VsZWN0b3IoaXRlbSkubWFwKGZ1bmN0aW9uICh4KSB7XG4gICAgICAgIHJldHVybiBpc1Z0cmVlKHgpICYmIHgua2V5ID09IG51bGwgPyBfZXh0ZW5kcyh7fSwgeCwgeyBrZXk6IGtleSB9KSA6IHg7XG4gICAgICB9KTtcbiAgICAgIC8vIHByZXZlbnQgc2luayBmcm9tIGVhcmx5IGNvbXBsZXRpb24gYW5kIHJlaW5pdGlhbGl6YXRpb25cbiAgICAgIHNpbmtzW2tleV0gPSBfeHN0cmVhbTIuZGVmYXVsdC5tZXJnZShzaW5rLCBfeHN0cmVhbTIuZGVmYXVsdC5uZXZlcigpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2lua3Nba2V5XTtcbiAgfVxuXG4gIHJldHVybiBjb2xsZWN0aW9uJC5tYXAoZnVuY3Rpb24gKGl0ZW1zKSB7XG4gICAgcmV0dXJuIGl0ZW1zLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIHNpbmskKGl0ZW0pO1xuICAgIH0pO1xuICB9KS5tYXAoZnVuY3Rpb24gKHNpbmtTdHJlYW1zKSB7XG4gICAgcmV0dXJuIF94c3RyZWFtMi5kZWZhdWx0Lm1lcmdlLmFwcGx5KF94c3RyZWFtMi5kZWZhdWx0LCBfdG9Db25zdW1hYmxlQXJyYXkoc2lua1N0cmVhbXMpKTtcbiAgfSkuZmxhdHRlbigpO1xufTtcblxuLy8gY29udmVydCBhIHN0cmVhbSBvZiBpdGVtcycgc291cmNlcyBzbmFwc2hvdHMgaW50byBhIHN0cmVhbSBvZiBjb2xsZWN0aW9uc1xuQ29sbGVjdGlvbi5nYXRoZXIgPSBmdW5jdGlvbiBnYXRoZXIoY29tcG9uZW50LCBzb3VyY2VzLCBpdGVtcyQpIHtcbiAgdmFyIGlkQXR0cmlidXRlID0gYXJndW1lbnRzLmxlbmd0aCA8PSAzIHx8IGFyZ3VtZW50c1szXSA9PT0gdW5kZWZpbmVkID8gJ2lkJyA6IGFyZ3VtZW50c1szXTtcblxuICBmdW5jdGlvbiBtYWtlRGVzdHJveWFibGUoY29tcG9uZW50KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChzb3VyY2VzKSB7XG4gICAgICByZXR1cm4gX2V4dGVuZHMoe30sIGNvbXBvbmVudChzb3VyY2VzKSwge1xuICAgICAgICBfZGVzdHJveSQ6IHNvdXJjZXMuX2Rlc3Ryb3kkXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG5cbiAgLy8gZmluZHMgaXRlbXMgbm90IHByZXNlbnQgaW4gcHJldmlvdXMgc25hcHNob3RcbiAgZnVuY3Rpb24gZmluZE5ld0l0ZW1zKF9yZWYsIGl0ZW1zKSB7XG4gICAgdmFyIHByZXZJZHMgPSBfcmVmLnByZXZJZHM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcHJldklkczogaXRlbXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHJldHVybiBpdGVtW2lkQXR0cmlidXRlXTtcbiAgICAgIH0pLFxuICAgICAgYWRkZWRJdGVtczogaXRlbXMuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHJldHVybiBwcmV2SWRzLmluZGV4T2YoaXRlbVtpZEF0dHJpYnV0ZV0pID09PSAtMTtcbiAgICAgIH0pXG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbXBhcmVKU09OKHZhbHVlLCBuZXh0VmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPT09IG5leHRWYWx1ZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBpZiAoSlNPTi5zdHJpbmdpZnkodmFsdWUpID09PSBKU09OLnN0cmluZ2lmeShuZXh0VmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgLy8gaWYgbm90IGVxdWFsIG9yIG5vdCBzZXJpYWxpemFibGVcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyB0dXJuIGEgbmV3IGl0ZW0gaW50byBhIGhhc2ggb2Ygc291cmNlIHN0cmVhbXMsIHRyYWNraW5nIGFsbCB0aGUgZnV0dXJlIHVwZGF0ZXNcbiAgZnVuY3Rpb24gaXRlbVRvU291cmNlU3RyZWFtcyhhZGRlZEl0ZW0sIGl0ZW1zU3RhdGUkKSB7XG4gICAgdmFyIGl0ZW1TdGF0ZUluZmluaXRlJCA9IGl0ZW1zU3RhdGUkLm1hcChmdW5jdGlvbiAoaXRlbXMpIHtcbiAgICAgIHJldHVybiBpdGVtcy5maW5kKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHJldHVybiBpdGVtW2lkQXR0cmlidXRlXSA9PT0gYWRkZWRJdGVtW2lkQXR0cmlidXRlXTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vIGlmIGFuIGl0ZW0gaXNuJ3QgcHJlc2VudCBpZiBhIG5ldyBzbmFwc2hvdCwgaXQgc2hhbGwgYmUgZGVzdHJveWVkXG4gICAgdmFyIF9kZXN0cm95JCA9IGl0ZW1TdGF0ZUluZmluaXRlJC5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiAhaXRlbTtcbiAgICB9KS50YWtlKDEpO1xuICAgIHZhciBpdGVtU3RhdGUkID0gaXRlbVN0YXRlSW5maW5pdGUkLmVuZFdoZW4oX2Rlc3Ryb3kkLmNvbXBvc2UoKDAsIF9kZWxheTIuZGVmYXVsdCkoKSkpO1xuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGFkZGVkSXRlbSkucmVkdWNlKGZ1bmN0aW9uIChzb3VyY2VzLCBrZXkpIHtcbiAgICAgIC8vIHNraXAgaWRBdHRyaWJ1dGVcbiAgICAgIGlmIChrZXkgPT09IGlkQXR0cmlidXRlKSB7XG4gICAgICAgIHJldHVybiBzb3VyY2VzO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gX2V4dGVuZHMoe30sIHNvdXJjZXMsIF9kZWZpbmVQcm9wZXJ0eSh7fSwga2V5LCBpdGVtU3RhdGUkLm1hcChmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlW2tleV07XG4gICAgICB9KS5zdGFydFdpdGgoYWRkZWRJdGVtW2tleV0pXG4gICAgICAvLyBza2lwIHRoZSBzbmFwc2hvdCBpZiB0aGUgdmFsdWUgZGlkbid0IGNoYW5nZVxuICAgICAgLmNvbXBvc2UoKDAsIF9kcm9wUmVwZWF0czIuZGVmYXVsdCkoY29tcGFyZUpTT04pKS5yZW1lbWJlcigpKSk7XG4gICAgfSwge1xuICAgICAgX2Rlc3Ryb3kkOiBfZGVzdHJveSRcbiAgICB9KTtcbiAgfVxuXG4gIHZhciBpdGVtc1N0YXRlJCA9IGl0ZW1zJC5yZW1lbWJlcigpO1xuXG4gIHZhciBhZGQkID0gaXRlbXNTdGF0ZSRcbiAgLy8gZ2V0IHRoZSBhZGRlZCBpdGVtcyBhdCBlYWNoIHN0ZXBcbiAgLmZvbGQoZmluZE5ld0l0ZW1zLCB7IHByZXZJZHM6IFtdLCBhZGRlZEl0ZW1zOiBbXSB9KS5tYXAoZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgdmFyIGFkZGVkSXRlbXMgPSBfcmVmMi5hZGRlZEl0ZW1zO1xuICAgIHJldHVybiBhZGRlZEl0ZW1zO1xuICB9KS5maWx0ZXIoZnVuY3Rpb24gKGFkZGVkSXRlbXMpIHtcbiAgICByZXR1cm4gYWRkZWRJdGVtcy5sZW5ndGg7XG4gIH0pLm1hcChmdW5jdGlvbiAoYWRkZWRJdGVtcykge1xuICAgIHJldHVybiBhZGRlZEl0ZW1zLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGl0ZW1Ub1NvdXJjZVN0cmVhbXMoaXRlbSwgaXRlbXNTdGF0ZSQpO1xuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gQ29sbGVjdGlvbihtYWtlRGVzdHJveWFibGUoY29tcG9uZW50KSwgc291cmNlcywgYWRkJCwgZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICByZXR1cm4gaXRlbS5fZGVzdHJveSQ7XG4gIH0pO1xufTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gQ29sbGVjdGlvbjsiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBTY29wZUNoZWNrZXJfMSA9IHJlcXVpcmUoJy4vU2NvcGVDaGVja2VyJyk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcbnZhciBtYXRjaGVzU2VsZWN0b3I7XG50cnkge1xuICAgIG1hdGNoZXNTZWxlY3RvciA9IHJlcXVpcmUoXCJtYXRjaGVzLXNlbGVjdG9yXCIpO1xufVxuY2F0Y2ggKGUpIHtcbiAgICBtYXRjaGVzU2VsZWN0b3IgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG59XG5mdW5jdGlvbiB0b0VsQXJyYXkoaW5wdXQpIHtcbiAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoaW5wdXQpO1xufVxudmFyIEVsZW1lbnRGaW5kZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEVsZW1lbnRGaW5kZXIobmFtZXNwYWNlLCBpc29sYXRlTW9kdWxlKSB7XG4gICAgICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICAgICAgICB0aGlzLmlzb2xhdGVNb2R1bGUgPSBpc29sYXRlTW9kdWxlO1xuICAgIH1cbiAgICBFbGVtZW50RmluZGVyLnByb3RvdHlwZS5jYWxsID0gZnVuY3Rpb24gKHJvb3RFbGVtZW50KSB7XG4gICAgICAgIHZhciBuYW1lc3BhY2UgPSB0aGlzLm5hbWVzcGFjZTtcbiAgICAgICAgaWYgKG5hbWVzcGFjZS5qb2luKFwiXCIpID09PSBcIlwiKSB7XG4gICAgICAgICAgICByZXR1cm4gcm9vdEVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNjb3BlID0gdXRpbHNfMS5nZXRTY29wZShuYW1lc3BhY2UpO1xuICAgICAgICB2YXIgc2NvcGVDaGVja2VyID0gbmV3IFNjb3BlQ2hlY2tlcl8xLlNjb3BlQ2hlY2tlcihzY29wZSwgdGhpcy5pc29sYXRlTW9kdWxlKTtcbiAgICAgICAgdmFyIHNlbGVjdG9yID0gdXRpbHNfMS5nZXRTZWxlY3RvcnMobmFtZXNwYWNlKTtcbiAgICAgICAgdmFyIHRvcE5vZGUgPSByb290RWxlbWVudDtcbiAgICAgICAgdmFyIHRvcE5vZGVNYXRjaGVzID0gW107XG4gICAgICAgIGlmIChzY29wZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0b3BOb2RlID0gdGhpcy5pc29sYXRlTW9kdWxlLmdldElzb2xhdGVkRWxlbWVudChzY29wZSkgfHwgcm9vdEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoc2VsZWN0b3IgJiYgbWF0Y2hlc1NlbGVjdG9yKHRvcE5vZGUsIHNlbGVjdG9yKSkge1xuICAgICAgICAgICAgICAgIHRvcE5vZGVNYXRjaGVzLnB1c2godG9wTm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRvRWxBcnJheSh0b3BOb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKVxuICAgICAgICAgICAgLmZpbHRlcihzY29wZUNoZWNrZXIuaXNTdHJpY3RseUluUm9vdFNjb3BlLCBzY29wZUNoZWNrZXIpXG4gICAgICAgICAgICAuY29uY2F0KHRvcE5vZGVNYXRjaGVzKTtcbiAgICB9O1xuICAgIHJldHVybiBFbGVtZW50RmluZGVyO1xufSgpKTtcbmV4cG9ydHMuRWxlbWVudEZpbmRlciA9IEVsZW1lbnRGaW5kZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1FbGVtZW50RmluZGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIFNjb3BlQ2hlY2tlcl8xID0gcmVxdWlyZSgnLi9TY29wZUNoZWNrZXInKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIG1hdGNoZXNTZWxlY3RvcjtcbnRyeSB7XG4gICAgbWF0Y2hlc1NlbGVjdG9yID0gcmVxdWlyZShcIm1hdGNoZXMtc2VsZWN0b3JcIik7XG59XG5jYXRjaCAoZSkge1xuICAgIG1hdGNoZXNTZWxlY3RvciA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbn1cbi8qKlxuICogQXR0YWNoZXMgYW4gYWN0dWFsIGV2ZW50IGxpc3RlbmVyIHRvIHRoZSBET00gcm9vdCBlbGVtZW50LFxuICogaGFuZGxlcyBcImRlc3RpbmF0aW9uc1wiIChpbnRlcmVzdGVkIERPTVNvdXJjZSBvdXRwdXQgc3ViamVjdHMpLCBhbmQgYnViYmxpbmcuXG4gKi9cbnZhciBFdmVudERlbGVnYXRvciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRXZlbnREZWxlZ2F0b3IodG9wRWxlbWVudCwgZXZlbnRUeXBlLCB1c2VDYXB0dXJlLCBpc29sYXRlTW9kdWxlKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHRoaXMudG9wRWxlbWVudCA9IHRvcEVsZW1lbnQ7XG4gICAgICAgIHRoaXMuZXZlbnRUeXBlID0gZXZlbnRUeXBlO1xuICAgICAgICB0aGlzLnVzZUNhcHR1cmUgPSB1c2VDYXB0dXJlO1xuICAgICAgICB0aGlzLmlzb2xhdGVNb2R1bGUgPSBpc29sYXRlTW9kdWxlO1xuICAgICAgICB0aGlzLmRlc3RpbmF0aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLnJvb2YgPSB0b3BFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIGlmICh1c2VDYXB0dXJlKSB7XG4gICAgICAgICAgICB0aGlzLmRvbUxpc3RlbmVyID0gZnVuY3Rpb24gKGV2KSB7IHJldHVybiBfdGhpcy5jYXB0dXJlKGV2KTsgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZG9tTGlzdGVuZXIgPSBmdW5jdGlvbiAoZXYpIHsgcmV0dXJuIF90aGlzLmJ1YmJsZShldik7IH07XG4gICAgICAgIH1cbiAgICAgICAgdG9wRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgdGhpcy5kb21MaXN0ZW5lciwgdXNlQ2FwdHVyZSk7XG4gICAgfVxuICAgIEV2ZW50RGVsZWdhdG9yLnByb3RvdHlwZS5idWJibGUgPSBmdW5jdGlvbiAocmF3RXZlbnQpIHtcbiAgICAgICAgaWYgKCFkb2N1bWVudC5ib2R5LmNvbnRhaW5zKHJhd0V2ZW50LmN1cnJlbnRUYXJnZXQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGV2ID0gdGhpcy5wYXRjaEV2ZW50KHJhd0V2ZW50KTtcbiAgICAgICAgZm9yICh2YXIgZWwgPSBldi50YXJnZXQ7IGVsICYmIGVsICE9PSB0aGlzLnJvb2Y7IGVsID0gZWwucGFyZW50RWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKGV2LnByb3BhZ2F0aW9uSGFzQmVlblN0b3BwZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm1hdGNoRXZlbnRBZ2FpbnN0RGVzdGluYXRpb25zKGVsLCBldik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEV2ZW50RGVsZWdhdG9yLnByb3RvdHlwZS5tYXRjaEV2ZW50QWdhaW5zdERlc3RpbmF0aW9ucyA9IGZ1bmN0aW9uIChlbCwgZXYpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSB0aGlzLmRlc3RpbmF0aW9ucy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBkZXN0ID0gdGhpcy5kZXN0aW5hdGlvbnNbaV07XG4gICAgICAgICAgICBpZiAoIWRlc3Quc2NvcGVDaGVja2VyLmlzU3RyaWN0bHlJblJvb3RTY29wZShlbCkpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtYXRjaGVzU2VsZWN0b3IoZWwsIGRlc3Quc2VsZWN0b3IpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tdXRhdGVFdmVudEN1cnJlbnRUYXJnZXQoZXYsIGVsKTtcbiAgICAgICAgICAgICAgICBkZXN0LnN1YmplY3QuX24oZXYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBFdmVudERlbGVnYXRvci5wcm90b3R5cGUuY2FwdHVyZSA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICBmb3IgKHZhciBpID0gMCwgbiA9IHRoaXMuZGVzdGluYXRpb25zLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgdmFyIGRlc3QgPSB0aGlzLmRlc3RpbmF0aW9uc1tpXTtcbiAgICAgICAgICAgIGlmIChtYXRjaGVzU2VsZWN0b3IoZXYudGFyZ2V0LCBkZXN0LnNlbGVjdG9yKSkge1xuICAgICAgICAgICAgICAgIGRlc3Quc3ViamVjdC5fbihldik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEV2ZW50RGVsZWdhdG9yLnByb3RvdHlwZS5hZGREZXN0aW5hdGlvbiA9IGZ1bmN0aW9uIChzdWJqZWN0LCBuYW1lc3BhY2UpIHtcbiAgICAgICAgdmFyIHNjb3BlID0gdXRpbHNfMS5nZXRTY29wZShuYW1lc3BhY2UpO1xuICAgICAgICB2YXIgc2VsZWN0b3IgPSB1dGlsc18xLmdldFNlbGVjdG9ycyhuYW1lc3BhY2UpO1xuICAgICAgICB2YXIgc2NvcGVDaGVja2VyID0gbmV3IFNjb3BlQ2hlY2tlcl8xLlNjb3BlQ2hlY2tlcihzY29wZSwgdGhpcy5pc29sYXRlTW9kdWxlKTtcbiAgICAgICAgdGhpcy5kZXN0aW5hdGlvbnMucHVzaCh7IHN1YmplY3Q6IHN1YmplY3QsIHNjb3BlQ2hlY2tlcjogc2NvcGVDaGVja2VyLCBzZWxlY3Rvcjogc2VsZWN0b3IgfSk7XG4gICAgfTtcbiAgICBFdmVudERlbGVnYXRvci5wcm90b3R5cGUucGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICB2YXIgcEV2ZW50ID0gZXZlbnQ7XG4gICAgICAgIHBFdmVudC5wcm9wYWdhdGlvbkhhc0JlZW5TdG9wcGVkID0gZmFsc2U7XG4gICAgICAgIHZhciBvbGRTdG9wUHJvcGFnYXRpb24gPSBwRXZlbnQuc3RvcFByb3BhZ2F0aW9uO1xuICAgICAgICBwRXZlbnQuc3RvcFByb3BhZ2F0aW9uID0gZnVuY3Rpb24gc3RvcFByb3BhZ2F0aW9uKCkge1xuICAgICAgICAgICAgb2xkU3RvcFByb3BhZ2F0aW9uLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB0aGlzLnByb3BhZ2F0aW9uSGFzQmVlblN0b3BwZWQgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcEV2ZW50O1xuICAgIH07XG4gICAgRXZlbnREZWxlZ2F0b3IucHJvdG90eXBlLm11dGF0ZUV2ZW50Q3VycmVudFRhcmdldCA9IGZ1bmN0aW9uIChldmVudCwgY3VycmVudFRhcmdldEVsZW1lbnQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldmVudCwgXCJjdXJyZW50VGFyZ2V0XCIsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogY3VycmVudFRhcmdldEVsZW1lbnQsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJwbGVhc2UgdXNlIGV2ZW50Lm93bmVyVGFyZ2V0XCIpO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50Lm93bmVyVGFyZ2V0ID0gY3VycmVudFRhcmdldEVsZW1lbnQ7XG4gICAgfTtcbiAgICBFdmVudERlbGVnYXRvci5wcm90b3R5cGUudXBkYXRlVG9wRWxlbWVudCA9IGZ1bmN0aW9uIChuZXdUb3BFbGVtZW50KSB7XG4gICAgICAgIHRoaXMudG9wRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHRoaXMuZXZlbnRUeXBlLCB0aGlzLmRvbUxpc3RlbmVyLCB0aGlzLnVzZUNhcHR1cmUpO1xuICAgICAgICBuZXdUb3BFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodGhpcy5ldmVudFR5cGUsIHRoaXMuZG9tTGlzdGVuZXIsIHRoaXMudXNlQ2FwdHVyZSk7XG4gICAgICAgIHRoaXMudG9wRWxlbWVudCA9IG5ld1RvcEVsZW1lbnQ7XG4gICAgfTtcbiAgICByZXR1cm4gRXZlbnREZWxlZ2F0b3I7XG59KCkpO1xuZXhwb3J0cy5FdmVudERlbGVnYXRvciA9IEV2ZW50RGVsZWdhdG9yO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RXZlbnREZWxlZ2F0b3IuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgeHN0cmVhbV8xID0gcmVxdWlyZSgneHN0cmVhbScpO1xudmFyIHhzdHJlYW1fYWRhcHRlcl8xID0gcmVxdWlyZSgnQGN5Y2xlL3hzdHJlYW0tYWRhcHRlcicpO1xudmFyIEhUTUxTb3VyY2UgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEhUTUxTb3VyY2UoaHRtbCQsIHJ1blNBKSB7XG4gICAgICAgIHRoaXMucnVuU0EgPSBydW5TQTtcbiAgICAgICAgdGhpcy5faHRtbCQgPSBodG1sJDtcbiAgICAgICAgdGhpcy5fZW1wdHkkID0gcnVuU0EuYWRhcHQoeHN0cmVhbV8xLmRlZmF1bHQuZW1wdHkoKSwgeHN0cmVhbV9hZGFwdGVyXzEuZGVmYXVsdC5zdHJlYW1TdWJzY3JpYmUpO1xuICAgIH1cbiAgICBIVE1MU291cmNlLnByb3RvdHlwZS5lbGVtZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucnVuU0EuYWRhcHQodGhpcy5faHRtbCQsIHhzdHJlYW1fYWRhcHRlcl8xLmRlZmF1bHQuc3RyZWFtU3Vic2NyaWJlKTtcbiAgICB9O1xuICAgIEhUTUxTb3VyY2UucHJvdG90eXBlLnNlbGVjdCA9IGZ1bmN0aW9uIChzZWxlY3Rvcikge1xuICAgICAgICByZXR1cm4gbmV3IEhUTUxTb3VyY2UoeHN0cmVhbV8xLmRlZmF1bHQuZW1wdHkoKSwgdGhpcy5ydW5TQSk7XG4gICAgfTtcbiAgICBIVE1MU291cmNlLnByb3RvdHlwZS5ldmVudHMgPSBmdW5jdGlvbiAoZXZlbnRUeXBlLCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbXB0eSQ7XG4gICAgfTtcbiAgICByZXR1cm4gSFRNTFNvdXJjZTtcbn0oKSk7XG5leHBvcnRzLkhUTUxTb3VyY2UgPSBIVE1MU291cmNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SFRNTFNvdXJjZS5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciB4c3RyZWFtX2FkYXB0ZXJfMSA9IHJlcXVpcmUoJ0BjeWNsZS94c3RyZWFtLWFkYXB0ZXInKTtcbnZhciB4c3RyZWFtXzEgPSByZXF1aXJlKCd4c3RyZWFtJyk7XG52YXIgRWxlbWVudEZpbmRlcl8xID0gcmVxdWlyZSgnLi9FbGVtZW50RmluZGVyJyk7XG52YXIgZnJvbUV2ZW50XzEgPSByZXF1aXJlKCcuL2Zyb21FdmVudCcpO1xudmFyIGlzb2xhdGVfMSA9IHJlcXVpcmUoJy4vaXNvbGF0ZScpO1xudmFyIEV2ZW50RGVsZWdhdG9yXzEgPSByZXF1aXJlKCcuL0V2ZW50RGVsZWdhdG9yJyk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcbnZhciBtYXRjaGVzU2VsZWN0b3I7XG50cnkge1xuICAgIG1hdGNoZXNTZWxlY3RvciA9IHJlcXVpcmUoXCJtYXRjaGVzLXNlbGVjdG9yXCIpO1xufVxuY2F0Y2ggKGUpIHtcbiAgICBtYXRjaGVzU2VsZWN0b3IgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG59XG52YXIgZXZlbnRUeXBlc1RoYXREb250QnViYmxlID0gW1xuICAgIFwibG9hZFwiLFxuICAgIFwidW5sb2FkXCIsXG4gICAgXCJmb2N1c1wiLFxuICAgIFwiYmx1clwiLFxuICAgIFwibW91c2VlbnRlclwiLFxuICAgIFwibW91c2VsZWF2ZVwiLFxuICAgIFwic3VibWl0XCIsXG4gICAgXCJjaGFuZ2VcIixcbiAgICBcInJlc2V0XCIsXG4gICAgXCJ0aW1ldXBkYXRlXCIsXG4gICAgXCJwbGF5aW5nXCIsXG4gICAgXCJ3YWl0aW5nXCIsXG4gICAgXCJzZWVraW5nXCIsXG4gICAgXCJzZWVrZWRcIixcbiAgICBcImVuZGVkXCIsXG4gICAgXCJsb2FkZWRtZXRhZGF0YVwiLFxuICAgIFwibG9hZGVkZGF0YVwiLFxuICAgIFwiY2FucGxheVwiLFxuICAgIFwiY2FucGxheXRocm91Z2hcIixcbiAgICBcImR1cmF0aW9uY2hhbmdlXCIsXG4gICAgXCJwbGF5XCIsXG4gICAgXCJwYXVzZVwiLFxuICAgIFwicmF0ZWNoYW5nZVwiLFxuICAgIFwidm9sdW1lY2hhbmdlXCIsXG4gICAgXCJzdXNwZW5kXCIsXG4gICAgXCJlbXB0aWVkXCIsXG4gICAgXCJzdGFsbGVkXCIsXG5dO1xuZnVuY3Rpb24gZGV0ZXJtaW5lVXNlQ2FwdHVyZShldmVudFR5cGUsIG9wdGlvbnMpIHtcbiAgICB2YXIgcmVzdWx0ID0gZmFsc2U7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLnVzZUNhcHR1cmUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgIHJlc3VsdCA9IG9wdGlvbnMudXNlQ2FwdHVyZTtcbiAgICB9XG4gICAgaWYgKGV2ZW50VHlwZXNUaGF0RG9udEJ1YmJsZS5pbmRleE9mKGV2ZW50VHlwZSkgIT09IC0xKSB7XG4gICAgICAgIHJlc3VsdCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG52YXIgTWFpbkRPTVNvdXJjZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gTWFpbkRPTVNvdXJjZShfcm9vdEVsZW1lbnQkLCBfcnVuU3RyZWFtQWRhcHRlciwgX25hbWVzcGFjZSwgX2lzb2xhdGVNb2R1bGUsIF9kZWxlZ2F0b3JzKSB7XG4gICAgICAgIGlmIChfbmFtZXNwYWNlID09PSB2b2lkIDApIHsgX25hbWVzcGFjZSA9IFtdOyB9XG4gICAgICAgIHRoaXMuX3Jvb3RFbGVtZW50JCA9IF9yb290RWxlbWVudCQ7XG4gICAgICAgIHRoaXMuX3J1blN0cmVhbUFkYXB0ZXIgPSBfcnVuU3RyZWFtQWRhcHRlcjtcbiAgICAgICAgdGhpcy5fbmFtZXNwYWNlID0gX25hbWVzcGFjZTtcbiAgICAgICAgdGhpcy5faXNvbGF0ZU1vZHVsZSA9IF9pc29sYXRlTW9kdWxlO1xuICAgICAgICB0aGlzLl9kZWxlZ2F0b3JzID0gX2RlbGVnYXRvcnM7XG4gICAgICAgIHRoaXMuaXNvbGF0ZVNvdXJjZSA9IGlzb2xhdGVfMS5pc29sYXRlU291cmNlO1xuICAgICAgICB0aGlzLmlzb2xhdGVTaW5rID0gaXNvbGF0ZV8xLmlzb2xhdGVTaW5rO1xuICAgIH1cbiAgICBNYWluRE9NU291cmNlLnByb3RvdHlwZS5lbGVtZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG91dHB1dCQ7XG4gICAgICAgIGlmICh0aGlzLl9uYW1lc3BhY2UubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBvdXRwdXQkID0gdGhpcy5fcm9vdEVsZW1lbnQkO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIGVsZW1lbnRGaW5kZXJfMSA9IG5ldyBFbGVtZW50RmluZGVyXzEuRWxlbWVudEZpbmRlcih0aGlzLl9uYW1lc3BhY2UsIHRoaXMuX2lzb2xhdGVNb2R1bGUpO1xuICAgICAgICAgICAgb3V0cHV0JCA9IHRoaXMuX3Jvb3RFbGVtZW50JC5tYXAoZnVuY3Rpb24gKGVsKSB7IHJldHVybiBlbGVtZW50RmluZGVyXzEuY2FsbChlbCk7IH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBydW5TQSA9IHRoaXMuX3J1blN0cmVhbUFkYXB0ZXI7XG4gICAgICAgIHJldHVybiBydW5TQS5yZW1lbWJlcihydW5TQS5hZGFwdChvdXRwdXQkLCB4c3RyZWFtX2FkYXB0ZXJfMS5kZWZhdWx0LnN0cmVhbVN1YnNjcmliZSkpO1xuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE1haW5ET01Tb3VyY2UucHJvdG90eXBlLCBcIm5hbWVzcGFjZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX25hbWVzcGFjZTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgTWFpbkRPTVNvdXJjZS5wcm90b3R5cGUuc2VsZWN0ID0gZnVuY3Rpb24gKHNlbGVjdG9yKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2VsZWN0b3IgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJET00gZHJpdmVyJ3Mgc2VsZWN0KCkgZXhwZWN0cyB0aGUgYXJndW1lbnQgdG8gYmUgYSBcIiArXG4gICAgICAgICAgICAgICAgXCJzdHJpbmcgYXMgYSBDU1Mgc2VsZWN0b3JcIik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRyaW1tZWRTZWxlY3RvciA9IHNlbGVjdG9yLnRyaW0oKTtcbiAgICAgICAgdmFyIGNoaWxkTmFtZXNwYWNlID0gdHJpbW1lZFNlbGVjdG9yID09PSBcIjpyb290XCIgP1xuICAgICAgICAgICAgdGhpcy5fbmFtZXNwYWNlIDpcbiAgICAgICAgICAgIHRoaXMuX25hbWVzcGFjZS5jb25jYXQodHJpbW1lZFNlbGVjdG9yKTtcbiAgICAgICAgcmV0dXJuIG5ldyBNYWluRE9NU291cmNlKHRoaXMuX3Jvb3RFbGVtZW50JCwgdGhpcy5fcnVuU3RyZWFtQWRhcHRlciwgY2hpbGROYW1lc3BhY2UsIHRoaXMuX2lzb2xhdGVNb2R1bGUsIHRoaXMuX2RlbGVnYXRvcnMpO1xuICAgIH07XG4gICAgTWFpbkRPTVNvdXJjZS5wcm90b3R5cGUuZXZlbnRzID0gZnVuY3Rpb24gKGV2ZW50VHlwZSwgb3B0aW9ucykge1xuICAgICAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7fTsgfVxuICAgICAgICBpZiAodHlwZW9mIGV2ZW50VHlwZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRE9NIGRyaXZlcidzIGV2ZW50cygpIGV4cGVjdHMgYXJndW1lbnQgdG8gYmUgYSBcIiArXG4gICAgICAgICAgICAgICAgXCJzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBldmVudCB0eXBlIHRvIGxpc3RlbiBmb3IuXCIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB1c2VDYXB0dXJlID0gZGV0ZXJtaW5lVXNlQ2FwdHVyZShldmVudFR5cGUsIG9wdGlvbnMpO1xuICAgICAgICB2YXIgbmFtZXNwYWNlID0gdGhpcy5fbmFtZXNwYWNlO1xuICAgICAgICB2YXIgc2NvcGUgPSB1dGlsc18xLmdldFNjb3BlKG5hbWVzcGFjZSk7XG4gICAgICAgIHZhciBrZXlQYXJ0cyA9IFtldmVudFR5cGUsIHVzZUNhcHR1cmVdO1xuICAgICAgICBpZiAoc2NvcGUpIHtcbiAgICAgICAgICAgIGtleVBhcnRzLnB1c2goc2NvcGUpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBrZXkgPSBrZXlQYXJ0cy5qb2luKCd+Jyk7XG4gICAgICAgIHZhciBkb21Tb3VyY2UgPSB0aGlzO1xuICAgICAgICB2YXIgcm9vdEVsZW1lbnQkO1xuICAgICAgICBpZiAoc2NvcGUpIHtcbiAgICAgICAgICAgIHZhciBoYWRJc29sYXRlZF9tdXRhYmxlXzEgPSBmYWxzZTtcbiAgICAgICAgICAgIHJvb3RFbGVtZW50JCA9IHRoaXMuX3Jvb3RFbGVtZW50JFxuICAgICAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHJvb3RFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdmFyIGhhc0lzb2xhdGVkID0gISFkb21Tb3VyY2UuX2lzb2xhdGVNb2R1bGUuZ2V0SXNvbGF0ZWRFbGVtZW50KHNjb3BlKTtcbiAgICAgICAgICAgICAgICB2YXIgc2hvdWxkUGFzcyA9IGhhc0lzb2xhdGVkICYmICFoYWRJc29sYXRlZF9tdXRhYmxlXzE7XG4gICAgICAgICAgICAgICAgaGFkSXNvbGF0ZWRfbXV0YWJsZV8xID0gaGFzSXNvbGF0ZWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZFBhc3M7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJvb3RFbGVtZW50JCA9IHRoaXMuX3Jvb3RFbGVtZW50JC50YWtlKDIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBldmVudCQgPSByb290RWxlbWVudCRcbiAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gc2V0dXBFdmVudERlbGVnYXRvck9uVG9wRWxlbWVudChyb290RWxlbWVudCkge1xuICAgICAgICAgICAgLy8gRXZlbnQgbGlzdGVuZXIganVzdCBmb3IgdGhlIHJvb3QgZWxlbWVudFxuICAgICAgICAgICAgaWYgKCFuYW1lc3BhY2UgfHwgbmFtZXNwYWNlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmcm9tRXZlbnRfMS5mcm9tRXZlbnQocm9vdEVsZW1lbnQsIGV2ZW50VHlwZSwgdXNlQ2FwdHVyZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBFdmVudCBsaXN0ZW5lciBvbiB0aGUgdG9wIGVsZW1lbnQgYXMgYW4gRXZlbnREZWxlZ2F0b3JcbiAgICAgICAgICAgIHZhciBkZWxlZ2F0b3JzID0gZG9tU291cmNlLl9kZWxlZ2F0b3JzO1xuICAgICAgICAgICAgdmFyIHRvcCA9IHNjb3BlXG4gICAgICAgICAgICAgICAgPyBkb21Tb3VyY2UuX2lzb2xhdGVNb2R1bGUuZ2V0SXNvbGF0ZWRFbGVtZW50KHNjb3BlKVxuICAgICAgICAgICAgICAgIDogcm9vdEVsZW1lbnQ7XG4gICAgICAgICAgICB2YXIgZGVsZWdhdG9yO1xuICAgICAgICAgICAgaWYgKGRlbGVnYXRvcnMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgICBkZWxlZ2F0b3IgPSBkZWxlZ2F0b3JzLmdldChrZXkpO1xuICAgICAgICAgICAgICAgIGRlbGVnYXRvci51cGRhdGVUb3BFbGVtZW50KHRvcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBkZWxlZ2F0b3IgPSBuZXcgRXZlbnREZWxlZ2F0b3JfMS5FdmVudERlbGVnYXRvcih0b3AsIGV2ZW50VHlwZSwgdXNlQ2FwdHVyZSwgZG9tU291cmNlLl9pc29sYXRlTW9kdWxlKTtcbiAgICAgICAgICAgICAgICBkZWxlZ2F0b3JzLnNldChrZXksIGRlbGVnYXRvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgc3ViamVjdCA9IHhzdHJlYW1fMS5kZWZhdWx0LmNyZWF0ZSgpO1xuICAgICAgICAgICAgaWYgKHNjb3BlKSB7XG4gICAgICAgICAgICAgICAgZG9tU291cmNlLl9pc29sYXRlTW9kdWxlLmFkZEV2ZW50RGVsZWdhdG9yKHNjb3BlLCBkZWxlZ2F0b3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVsZWdhdG9yLmFkZERlc3RpbmF0aW9uKHN1YmplY3QsIG5hbWVzcGFjZSk7XG4gICAgICAgICAgICByZXR1cm4gc3ViamVjdDtcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5mbGF0dGVuKCk7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5TdHJlYW1BZGFwdGVyLmFkYXB0KGV2ZW50JCwgeHN0cmVhbV9hZGFwdGVyXzEuZGVmYXVsdC5zdHJlYW1TdWJzY3JpYmUpO1xuICAgIH07XG4gICAgTWFpbkRPTVNvdXJjZS5wcm90b3R5cGUuZGlzcG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5faXNvbGF0ZU1vZHVsZS5yZXNldCgpO1xuICAgIH07XG4gICAgcmV0dXJuIE1haW5ET01Tb3VyY2U7XG59KCkpO1xuZXhwb3J0cy5NYWluRE9NU291cmNlID0gTWFpbkRPTVNvdXJjZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU1haW5ET01Tb3VyY2UuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgU2NvcGVDaGVja2VyID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBTY29wZUNoZWNrZXIoc2NvcGUsIGlzb2xhdGVNb2R1bGUpIHtcbiAgICAgICAgdGhpcy5zY29wZSA9IHNjb3BlO1xuICAgICAgICB0aGlzLmlzb2xhdGVNb2R1bGUgPSBpc29sYXRlTW9kdWxlO1xuICAgIH1cbiAgICBTY29wZUNoZWNrZXIucHJvdG90eXBlLmlzU3RyaWN0bHlJblJvb3RTY29wZSA9IGZ1bmN0aW9uIChsZWFmKSB7XG4gICAgICAgIGZvciAodmFyIGVsID0gbGVhZjsgZWw7IGVsID0gZWwucGFyZW50RWxlbWVudCkge1xuICAgICAgICAgICAgdmFyIHNjb3BlID0gdGhpcy5pc29sYXRlTW9kdWxlLmlzSXNvbGF0ZWRFbGVtZW50KGVsKTtcbiAgICAgICAgICAgIGlmIChzY29wZSAmJiBzY29wZSAhPT0gdGhpcy5zY29wZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzY29wZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgcmV0dXJuIFNjb3BlQ2hlY2tlcjtcbn0oKSk7XG5leHBvcnRzLlNjb3BlQ2hlY2tlciA9IFNjb3BlQ2hlY2tlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNjb3BlQ2hlY2tlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBoeXBlcnNjcmlwdF8xID0gcmVxdWlyZSgnLi9oeXBlcnNjcmlwdCcpO1xudmFyIGNsYXNzTmFtZUZyb21WTm9kZV8xID0gcmVxdWlyZSgnc25hYmJkb20tc2VsZWN0b3IvbGliL2NsYXNzTmFtZUZyb21WTm9kZScpO1xudmFyIHNlbGVjdG9yUGFyc2VyXzEgPSByZXF1aXJlKCdzbmFiYmRvbS1zZWxlY3Rvci9saWIvc2VsZWN0b3JQYXJzZXInKTtcbnZhciBWTm9kZVdyYXBwZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFZOb2RlV3JhcHBlcihyb290RWxlbWVudCkge1xuICAgICAgICB0aGlzLnJvb3RFbGVtZW50ID0gcm9vdEVsZW1lbnQ7XG4gICAgfVxuICAgIFZOb2RlV3JhcHBlci5wcm90b3R5cGUuY2FsbCA9IGZ1bmN0aW9uICh2bm9kZSkge1xuICAgICAgICB2YXIgX2EgPSBzZWxlY3RvclBhcnNlcl8xLmRlZmF1bHQodm5vZGUuc2VsKSwgc2VsZWN0b3JUYWdOYW1lID0gX2EudGFnTmFtZSwgc2VsZWN0b3JJZCA9IF9hLmlkO1xuICAgICAgICB2YXIgdk5vZGVDbGFzc05hbWUgPSBjbGFzc05hbWVGcm9tVk5vZGVfMS5kZWZhdWx0KHZub2RlKTtcbiAgICAgICAgdmFyIHZOb2RlRGF0YSA9IHZub2RlLmRhdGEgfHwge307XG4gICAgICAgIHZhciB2Tm9kZURhdGFQcm9wcyA9IHZOb2RlRGF0YS5wcm9wcyB8fCB7fTtcbiAgICAgICAgdmFyIF9iID0gdk5vZGVEYXRhUHJvcHMuaWQsIHZOb2RlSWQgPSBfYiA9PT0gdm9pZCAwID8gc2VsZWN0b3JJZCA6IF9iO1xuICAgICAgICB2YXIgaXNWTm9kZUFuZFJvb3RFbGVtZW50SWRlbnRpY2FsID0gdk5vZGVJZC50b1VwcGVyQ2FzZSgpID09PSB0aGlzLnJvb3RFbGVtZW50LmlkLnRvVXBwZXJDYXNlKCkgJiZcbiAgICAgICAgICAgIHNlbGVjdG9yVGFnTmFtZS50b1VwcGVyQ2FzZSgpID09PSB0aGlzLnJvb3RFbGVtZW50LnRhZ05hbWUudG9VcHBlckNhc2UoKSAmJlxuICAgICAgICAgICAgdk5vZGVDbGFzc05hbWUudG9VcHBlckNhc2UoKSA9PT0gdGhpcy5yb290RWxlbWVudC5jbGFzc05hbWUudG9VcHBlckNhc2UoKTtcbiAgICAgICAgaWYgKGlzVk5vZGVBbmRSb290RWxlbWVudElkZW50aWNhbCkge1xuICAgICAgICAgICAgcmV0dXJuIHZub2RlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfYyA9IHRoaXMucm9vdEVsZW1lbnQsIHRhZ05hbWUgPSBfYy50YWdOYW1lLCBpZCA9IF9jLmlkLCBjbGFzc05hbWUgPSBfYy5jbGFzc05hbWU7XG4gICAgICAgIHZhciBlbGVtZW50SWQgPSBpZCA/IFwiI1wiICsgaWQgOiBcIlwiO1xuICAgICAgICB2YXIgZWxlbWVudENsYXNzTmFtZSA9IGNsYXNzTmFtZSA/XG4gICAgICAgICAgICBcIi5cIiArIGNsYXNzTmFtZS5zcGxpdChcIiBcIikuam9pbihcIi5cIikgOiBcIlwiO1xuICAgICAgICByZXR1cm4gaHlwZXJzY3JpcHRfMS5oKFwiXCIgKyB0YWdOYW1lICsgZWxlbWVudElkICsgZWxlbWVudENsYXNzTmFtZSwge30sIFt2bm9kZV0pO1xuICAgIH07XG4gICAgcmV0dXJuIFZOb2RlV3JhcHBlcjtcbn0oKSk7XG5leHBvcnRzLlZOb2RlV3JhcHBlciA9IFZOb2RlV3JhcHBlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVZOb2RlV3JhcHBlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciB4c3RyZWFtXzEgPSByZXF1aXJlKCd4c3RyZWFtJyk7XG5mdW5jdGlvbiBmcm9tRXZlbnQoZWxlbWVudCwgZXZlbnROYW1lLCB1c2VDYXB0dXJlKSB7XG4gICAgaWYgKHVzZUNhcHR1cmUgPT09IHZvaWQgMCkgeyB1c2VDYXB0dXJlID0gZmFsc2U7IH1cbiAgICByZXR1cm4geHN0cmVhbV8xLlN0cmVhbS5jcmVhdGUoe1xuICAgICAgICBlbGVtZW50OiBlbGVtZW50LFxuICAgICAgICBuZXh0OiBudWxsLFxuICAgICAgICBzdGFydDogZnVuY3Rpb24gc3RhcnQobGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMubmV4dCA9IGZ1bmN0aW9uIG5leHQoZXZlbnQpIHsgbGlzdGVuZXIubmV4dChldmVudCk7IH07XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHRoaXMubmV4dCwgdXNlQ2FwdHVyZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHN0b3A6IGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHRoaXMubmV4dCwgdXNlQ2FwdHVyZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmV4cG9ydHMuZnJvbUV2ZW50ID0gZnJvbUV2ZW50O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZnJvbUV2ZW50LmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIGh5cGVyc2NyaXB0XzEgPSByZXF1aXJlKCcuL2h5cGVyc2NyaXB0Jyk7XG5mdW5jdGlvbiBpc1ZhbGlkU3RyaW5nKHBhcmFtKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBwYXJhbSA9PT0gJ3N0cmluZycgJiYgcGFyYW0ubGVuZ3RoID4gMDtcbn1cbmZ1bmN0aW9uIGlzU2VsZWN0b3IocGFyYW0pIHtcbiAgICByZXR1cm4gaXNWYWxpZFN0cmluZyhwYXJhbSkgJiYgKHBhcmFtWzBdID09PSAnLicgfHwgcGFyYW1bMF0gPT09ICcjJyk7XG59XG5mdW5jdGlvbiBjcmVhdGVUYWdGdW5jdGlvbih0YWdOYW1lKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGh5cGVyc2NyaXB0KGZpcnN0LCBiLCBjKSB7XG4gICAgICAgIGlmIChpc1NlbGVjdG9yKGZpcnN0KSkge1xuICAgICAgICAgICAgaWYgKCEhYiAmJiAhIWMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaHlwZXJzY3JpcHRfMS5oKHRhZ05hbWUgKyBmaXJzdCwgYiwgYyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghIWIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaHlwZXJzY3JpcHRfMS5oKHRhZ05hbWUgKyBmaXJzdCwgYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaHlwZXJzY3JpcHRfMS5oKHRhZ05hbWUgKyBmaXJzdCwge30pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCEhYikge1xuICAgICAgICAgICAgcmV0dXJuIGh5cGVyc2NyaXB0XzEuaCh0YWdOYW1lLCBmaXJzdCwgYik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoISFmaXJzdCkge1xuICAgICAgICAgICAgcmV0dXJuIGh5cGVyc2NyaXB0XzEuaCh0YWdOYW1lLCBmaXJzdCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gaHlwZXJzY3JpcHRfMS5oKHRhZ05hbWUsIHt9KTtcbiAgICAgICAgfVxuICAgIH07XG59XG52YXIgU1ZHX1RBR19OQU1FUyA9IFtcbiAgICAnYScsICdhbHRHbHlwaCcsICdhbHRHbHlwaERlZicsICdhbHRHbHlwaEl0ZW0nLCAnYW5pbWF0ZScsICdhbmltYXRlQ29sb3InLFxuICAgICdhbmltYXRlTW90aW9uJywgJ2FuaW1hdGVUcmFuc2Zvcm0nLCAnY2lyY2xlJywgJ2NsaXBQYXRoJywgJ2NvbG9yUHJvZmlsZScsXG4gICAgJ2N1cnNvcicsICdkZWZzJywgJ2Rlc2MnLCAnZWxsaXBzZScsICdmZUJsZW5kJywgJ2ZlQ29sb3JNYXRyaXgnLFxuICAgICdmZUNvbXBvbmVudFRyYW5zZmVyJywgJ2ZlQ29tcG9zaXRlJywgJ2ZlQ29udm9sdmVNYXRyaXgnLCAnZmVEaWZmdXNlTGlnaHRpbmcnLFxuICAgICdmZURpc3BsYWNlbWVudE1hcCcsICdmZURpc3RhbnRMaWdodCcsICdmZUZsb29kJywgJ2ZlRnVuY0EnLCAnZmVGdW5jQicsXG4gICAgJ2ZlRnVuY0cnLCAnZmVGdW5jUicsICdmZUdhdXNzaWFuQmx1cicsICdmZUltYWdlJywgJ2ZlTWVyZ2UnLCAnZmVNZXJnZU5vZGUnLFxuICAgICdmZU1vcnBob2xvZ3knLCAnZmVPZmZzZXQnLCAnZmVQb2ludExpZ2h0JywgJ2ZlU3BlY3VsYXJMaWdodGluZycsXG4gICAgJ2ZlU3BvdGxpZ2h0JywgJ2ZlVGlsZScsICdmZVR1cmJ1bGVuY2UnLCAnZmlsdGVyJywgJ2ZvbnQnLCAnZm9udEZhY2UnLFxuICAgICdmb250RmFjZUZvcm1hdCcsICdmb250RmFjZU5hbWUnLCAnZm9udEZhY2VTcmMnLCAnZm9udEZhY2VVcmknLFxuICAgICdmb3JlaWduT2JqZWN0JywgJ2cnLCAnZ2x5cGgnLCAnZ2x5cGhSZWYnLCAnaGtlcm4nLCAnaW1hZ2UnLCAnbGluZScsXG4gICAgJ2xpbmVhckdyYWRpZW50JywgJ21hcmtlcicsICdtYXNrJywgJ21ldGFkYXRhJywgJ21pc3NpbmdHbHlwaCcsICdtcGF0aCcsXG4gICAgJ3BhdGgnLCAncGF0dGVybicsICdwb2x5Z29uJywgJ3BvbHlsaW5nJywgJ3JhZGlhbEdyYWRpZW50JywgJ3JlY3QnLCAnc2NyaXB0JyxcbiAgICAnc2V0JywgJ3N0b3AnLCAnc3R5bGUnLCAnc3dpdGNoJywgJ3N5bWJvbCcsICd0ZXh0JywgJ3RleHRQYXRoJywgJ3RpdGxlJyxcbiAgICAndHJlZicsICd0c3BhbicsICd1c2UnLCAndmlldycsICd2a2Vybidcbl07XG52YXIgc3ZnID0gY3JlYXRlVGFnRnVuY3Rpb24oJ3N2ZycpO1xuU1ZHX1RBR19OQU1FUy5mb3JFYWNoKGZ1bmN0aW9uICh0YWcpIHtcbiAgICBzdmdbdGFnXSA9IGNyZWF0ZVRhZ0Z1bmN0aW9uKHRhZyk7XG59KTtcbnZhciBUQUdfTkFNRVMgPSBbXG4gICAgJ2EnLCAnYWJicicsICdhZGRyZXNzJywgJ2FyZWEnLCAnYXJ0aWNsZScsICdhc2lkZScsICdhdWRpbycsICdiJywgJ2Jhc2UnLFxuICAgICdiZGknLCAnYmRvJywgJ2Jsb2NrcXVvdGUnLCAnYm9keScsICdicicsICdidXR0b24nLCAnY2FudmFzJywgJ2NhcHRpb24nLFxuICAgICdjaXRlJywgJ2NvZGUnLCAnY29sJywgJ2NvbGdyb3VwJywgJ2RkJywgJ2RlbCcsICdkZm4nLCAnZGlyJywgJ2RpdicsICdkbCcsXG4gICAgJ2R0JywgJ2VtJywgJ2VtYmVkJywgJ2ZpZWxkc2V0JywgJ2ZpZ2NhcHRpb24nLCAnZmlndXJlJywgJ2Zvb3RlcicsICdmb3JtJyxcbiAgICAnaDEnLCAnaDInLCAnaDMnLCAnaDQnLCAnaDUnLCAnaDYnLCAnaGVhZCcsICdoZWFkZXInLCAnaGdyb3VwJywgJ2hyJywgJ2h0bWwnLFxuICAgICdpJywgJ2lmcmFtZScsICdpbWcnLCAnaW5wdXQnLCAnaW5zJywgJ2tiZCcsICdrZXlnZW4nLCAnbGFiZWwnLCAnbGVnZW5kJyxcbiAgICAnbGknLCAnbGluaycsICdtYWluJywgJ21hcCcsICdtYXJrJywgJ21lbnUnLCAnbWV0YScsICduYXYnLCAnbm9zY3JpcHQnLFxuICAgICdvYmplY3QnLCAnb2wnLCAnb3B0Z3JvdXAnLCAnb3B0aW9uJywgJ3AnLCAncGFyYW0nLCAncHJlJywgJ3Byb2dyZXNzJywgJ3EnLFxuICAgICdycCcsICdydCcsICdydWJ5JywgJ3MnLCAnc2FtcCcsICdzY3JpcHQnLCAnc2VjdGlvbicsICdzZWxlY3QnLCAnc21hbGwnLFxuICAgICdzb3VyY2UnLCAnc3BhbicsICdzdHJvbmcnLCAnc3R5bGUnLCAnc3ViJywgJ3N1cCcsICd0YWJsZScsICd0Ym9keScsICd0ZCcsXG4gICAgJ3RleHRhcmVhJywgJ3Rmb290JywgJ3RoJywgJ3RoZWFkJywgJ3RpdGxlJywgJ3RyJywgJ3UnLCAndWwnLCAndmlkZW8nXG5dO1xudmFyIGV4cG9ydGVkID0geyBTVkdfVEFHX05BTUVTOiBTVkdfVEFHX05BTUVTLCBUQUdfTkFNRVM6IFRBR19OQU1FUywgc3ZnOiBzdmcsIGlzU2VsZWN0b3I6IGlzU2VsZWN0b3IsIGNyZWF0ZVRhZ0Z1bmN0aW9uOiBjcmVhdGVUYWdGdW5jdGlvbiB9O1xuVEFHX05BTUVTLmZvckVhY2goZnVuY3Rpb24gKG4pIHtcbiAgICBleHBvcnRlZFtuXSA9IGNyZWF0ZVRhZ0Z1bmN0aW9uKG4pO1xufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRlZDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWh5cGVyc2NyaXB0LWhlbHBlcnMuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgaXMgPSByZXF1aXJlKCdzbmFiYmRvbS9pcycpO1xudmFyIHZub2RlID0gcmVxdWlyZSgnc25hYmJkb20vdm5vZGUnKTtcbmZ1bmN0aW9uIGlzR2VuZXJpY1N0cmVhbSh4KSB7XG4gICAgcmV0dXJuICFBcnJheS5pc0FycmF5KHgpICYmIHR5cGVvZiB4Lm1hcCA9PT0gXCJmdW5jdGlvblwiO1xufVxuZnVuY3Rpb24gbXV0YXRlU3RyZWFtV2l0aE5TKHZOb2RlKSB7XG4gICAgYWRkTlModk5vZGUuZGF0YSwgdk5vZGUuY2hpbGRyZW4pO1xuICAgIHJldHVybiB2Tm9kZTtcbn1cbmZ1bmN0aW9uIGFkZE5TKGRhdGEsIGNoaWxkcmVuKSB7XG4gICAgZGF0YS5ucyA9IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIjtcbiAgICBpZiAodHlwZW9mIGNoaWxkcmVuICE9PSBcInVuZGVmaW5lZFwiICYmIGlzLmFycmF5KGNoaWxkcmVuKSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBpZiAoaXNHZW5lcmljU3RyZWFtKGNoaWxkcmVuW2ldKSkge1xuICAgICAgICAgICAgICAgIGNoaWxkcmVuW2ldID0gY2hpbGRyZW5baV0ubWFwKG11dGF0ZVN0cmVhbVdpdGhOUyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhZGROUyhjaGlsZHJlbltpXS5kYXRhLCBjaGlsZHJlbltpXS5jaGlsZHJlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBoKHNlbCwgYiwgYykge1xuICAgIHZhciBkYXRhID0ge307XG4gICAgdmFyIGNoaWxkcmVuO1xuICAgIHZhciB0ZXh0O1xuICAgIHZhciBpO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIGRhdGEgPSBiO1xuICAgICAgICBpZiAoaXMuYXJyYXkoYykpIHtcbiAgICAgICAgICAgIGNoaWxkcmVuID0gYztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpcy5wcmltaXRpdmUoYykpIHtcbiAgICAgICAgICAgIHRleHQgPSBjO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgaWYgKGlzLmFycmF5KGIpKSB7XG4gICAgICAgICAgICBjaGlsZHJlbiA9IGI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXMucHJpbWl0aXZlKGIpKSB7XG4gICAgICAgICAgICB0ZXh0ID0gYjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRhdGEgPSBiO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChpcy5hcnJheShjaGlsZHJlbikpIHtcbiAgICAgICAgY2hpbGRyZW4gPSBjaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHg7IH0pO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGlmIChpcy5wcmltaXRpdmUoY2hpbGRyZW5baV0pKSB7XG4gICAgICAgICAgICAgICAgY2hpbGRyZW5baV0gPSB2bm9kZSh1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjaGlsZHJlbltpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNlbFswXSA9PT0gJ3MnICYmIHNlbFsxXSA9PT0gJ3YnICYmIHNlbFsyXSA9PT0gJ2cnKSB7XG4gICAgICAgIGFkZE5TKGRhdGEsIGNoaWxkcmVuKTtcbiAgICB9XG4gICAgcmV0dXJuIHZub2RlKHNlbCwgZGF0YSwgY2hpbGRyZW4sIHRleHQsIHVuZGVmaW5lZCk7XG59XG5leHBvcnRzLmggPSBoO1xuO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aHlwZXJzY3JpcHQuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgdGh1bmsgPSByZXF1aXJlKCdzbmFiYmRvbS90aHVuaycpO1xuZXhwb3J0cy50aHVuayA9IHRodW5rO1xudmFyIG1ha2VET01Ecml2ZXJfMSA9IHJlcXVpcmUoJy4vbWFrZURPTURyaXZlcicpO1xuZXhwb3J0cy5tYWtlRE9NRHJpdmVyID0gbWFrZURPTURyaXZlcl8xLm1ha2VET01Ecml2ZXI7XG52YXIgbWFrZUhUTUxEcml2ZXJfMSA9IHJlcXVpcmUoJy4vbWFrZUhUTUxEcml2ZXInKTtcbmV4cG9ydHMubWFrZUhUTUxEcml2ZXIgPSBtYWtlSFRNTERyaXZlcl8xLm1ha2VIVE1MRHJpdmVyO1xudmFyIG1vY2tET01Tb3VyY2VfMSA9IHJlcXVpcmUoJy4vbW9ja0RPTVNvdXJjZScpO1xuZXhwb3J0cy5tb2NrRE9NU291cmNlID0gbW9ja0RPTVNvdXJjZV8xLm1vY2tET01Tb3VyY2U7XG52YXIgaHlwZXJzY3JpcHRfMSA9IHJlcXVpcmUoJy4vaHlwZXJzY3JpcHQnKTtcbmV4cG9ydHMuaCA9IGh5cGVyc2NyaXB0XzEuaDtcbnZhciBoeXBlcnNjcmlwdF9oZWxwZXJzXzEgPSByZXF1aXJlKCcuL2h5cGVyc2NyaXB0LWhlbHBlcnMnKTtcbmV4cG9ydHMuc3ZnID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQuc3ZnO1xuZXhwb3J0cy5hID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQuYTtcbmV4cG9ydHMuYWJiciA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0LmFiYnI7XG5leHBvcnRzLmFkZHJlc3MgPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5hZGRyZXNzO1xuZXhwb3J0cy5hcmVhID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQuYXJlYTtcbmV4cG9ydHMuYXJ0aWNsZSA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0LmFydGljbGU7XG5leHBvcnRzLmFzaWRlID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQuYXNpZGU7XG5leHBvcnRzLmF1ZGlvID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQuYXVkaW87XG5leHBvcnRzLmIgPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5iO1xuZXhwb3J0cy5iYXNlID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQuYmFzZTtcbmV4cG9ydHMuYmRpID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQuYmRpO1xuZXhwb3J0cy5iZG8gPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5iZG87XG5leHBvcnRzLmJsb2NrcXVvdGUgPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5ibG9ja3F1b3RlO1xuZXhwb3J0cy5ib2R5ID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQuYm9keTtcbmV4cG9ydHMuYnIgPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5icjtcbmV4cG9ydHMuYnV0dG9uID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQuYnV0dG9uO1xuZXhwb3J0cy5jYW52YXMgPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5jYW52YXM7XG5leHBvcnRzLmNhcHRpb24gPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5jYXB0aW9uO1xuZXhwb3J0cy5jaXRlID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQuY2l0ZTtcbmV4cG9ydHMuY29kZSA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0LmNvZGU7XG5leHBvcnRzLmNvbCA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0LmNvbDtcbmV4cG9ydHMuY29sZ3JvdXAgPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5jb2xncm91cDtcbmV4cG9ydHMuZGQgPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5kZDtcbmV4cG9ydHMuZGVsID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQuZGVsO1xuZXhwb3J0cy5kZm4gPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5kZm47XG5leHBvcnRzLmRpciA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0LmRpcjtcbmV4cG9ydHMuZGl2ID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQuZGl2O1xuZXhwb3J0cy5kbCA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0LmRsO1xuZXhwb3J0cy5kdCA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0LmR0O1xuZXhwb3J0cy5lbSA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0LmVtO1xuZXhwb3J0cy5lbWJlZCA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0LmVtYmVkO1xuZXhwb3J0cy5maWVsZHNldCA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0LmZpZWxkc2V0O1xuZXhwb3J0cy5maWdjYXB0aW9uID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQuZmlnY2FwdGlvbjtcbmV4cG9ydHMuZmlndXJlID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQuZmlndXJlO1xuZXhwb3J0cy5mb290ZXIgPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5mb290ZXI7XG5leHBvcnRzLmZvcm0gPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5mb3JtO1xuZXhwb3J0cy5oMSA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0LmgxO1xuZXhwb3J0cy5oMiA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0LmgyO1xuZXhwb3J0cy5oMyA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0LmgzO1xuZXhwb3J0cy5oNCA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0Lmg0O1xuZXhwb3J0cy5oNSA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0Lmg1O1xuZXhwb3J0cy5oNiA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0Lmg2O1xuZXhwb3J0cy5oZWFkID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQuaGVhZDtcbmV4cG9ydHMuaGVhZGVyID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQuaGVhZGVyO1xuZXhwb3J0cy5oZ3JvdXAgPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5oZ3JvdXA7XG5leHBvcnRzLmhyID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQuaHI7XG5leHBvcnRzLmh0bWwgPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5odG1sO1xuZXhwb3J0cy5pID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQuaTtcbmV4cG9ydHMuaWZyYW1lID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQuaWZyYW1lO1xuZXhwb3J0cy5pbWcgPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5pbWc7XG5leHBvcnRzLmlucHV0ID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQuaW5wdXQ7XG5leHBvcnRzLmlucyA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0LmlucztcbmV4cG9ydHMua2JkID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQua2JkO1xuZXhwb3J0cy5rZXlnZW4gPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5rZXlnZW47XG5leHBvcnRzLmxhYmVsID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQubGFiZWw7XG5leHBvcnRzLmxlZ2VuZCA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0LmxlZ2VuZDtcbmV4cG9ydHMubGkgPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5saTtcbmV4cG9ydHMubGluayA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0Lmxpbms7XG5leHBvcnRzLm1haW4gPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5tYWluO1xuZXhwb3J0cy5tYXAgPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5tYXA7XG5leHBvcnRzLm1hcmsgPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5tYXJrO1xuZXhwb3J0cy5tZW51ID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQubWVudTtcbmV4cG9ydHMubWV0YSA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0Lm1ldGE7XG5leHBvcnRzLm5hdiA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0Lm5hdjtcbmV4cG9ydHMubm9zY3JpcHQgPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5ub3NjcmlwdDtcbmV4cG9ydHMub2JqZWN0ID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQub2JqZWN0O1xuZXhwb3J0cy5vbCA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0Lm9sO1xuZXhwb3J0cy5vcHRncm91cCA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0Lm9wdGdyb3VwO1xuZXhwb3J0cy5vcHRpb24gPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5vcHRpb247XG5leHBvcnRzLnAgPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5wO1xuZXhwb3J0cy5wYXJhbSA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0LnBhcmFtO1xuZXhwb3J0cy5wcmUgPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5wcmU7XG5leHBvcnRzLnByb2dyZXNzID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQucHJvZ3Jlc3M7XG5leHBvcnRzLnEgPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5xO1xuZXhwb3J0cy5ycCA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0LnJwO1xuZXhwb3J0cy5ydCA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0LnJ0O1xuZXhwb3J0cy5ydWJ5ID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQucnVieTtcbmV4cG9ydHMucyA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0LnM7XG5leHBvcnRzLnNhbXAgPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5zYW1wO1xuZXhwb3J0cy5zY3JpcHQgPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5zY3JpcHQ7XG5leHBvcnRzLnNlY3Rpb24gPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5zZWN0aW9uO1xuZXhwb3J0cy5zZWxlY3QgPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5zZWxlY3Q7XG5leHBvcnRzLnNtYWxsID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQuc21hbGw7XG5leHBvcnRzLnNvdXJjZSA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0LnNvdXJjZTtcbmV4cG9ydHMuc3BhbiA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0LnNwYW47XG5leHBvcnRzLnN0cm9uZyA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0LnN0cm9uZztcbmV4cG9ydHMuc3R5bGUgPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5zdHlsZTtcbmV4cG9ydHMuc3ViID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQuc3ViO1xuZXhwb3J0cy5zdXAgPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC5zdXA7XG5leHBvcnRzLnRhYmxlID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQudGFibGU7XG5leHBvcnRzLnRib2R5ID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQudGJvZHk7XG5leHBvcnRzLnRkID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQudGQ7XG5leHBvcnRzLnRleHRhcmVhID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQudGV4dGFyZWE7XG5leHBvcnRzLnRmb290ID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQudGZvb3Q7XG5leHBvcnRzLnRoID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQudGg7XG5leHBvcnRzLnRoZWFkID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQudGhlYWQ7XG5leHBvcnRzLnRpdGxlID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQudGl0bGU7XG5leHBvcnRzLnRyID0gaHlwZXJzY3JpcHRfaGVscGVyc18xLmRlZmF1bHQudHI7XG5leHBvcnRzLnUgPSBoeXBlcnNjcmlwdF9oZWxwZXJzXzEuZGVmYXVsdC51O1xuZXhwb3J0cy51bCA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0LnVsO1xuZXhwb3J0cy52aWRlbyA9IGh5cGVyc2NyaXB0X2hlbHBlcnNfMS5kZWZhdWx0LnZpZGVvO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcbmZ1bmN0aW9uIGlzb2xhdGVTb3VyY2Uoc291cmNlLCBzY29wZSkge1xuICAgIHJldHVybiBzb3VyY2Uuc2VsZWN0KHV0aWxzXzEuU0NPUEVfUFJFRklYICsgc2NvcGUpO1xufVxuZXhwb3J0cy5pc29sYXRlU291cmNlID0gaXNvbGF0ZVNvdXJjZTtcbmZ1bmN0aW9uIGlzb2xhdGVTaW5rKHNpbmssIHNjb3BlKSB7XG4gICAgcmV0dXJuIHNpbmsubWFwKGZ1bmN0aW9uICh2VHJlZSkge1xuICAgICAgICBpZiAodlRyZWUuZGF0YS5pc29sYXRlKSB7XG4gICAgICAgICAgICB2YXIgZXhpc3RpbmdTY29wZSA9IHBhcnNlSW50KHZUcmVlLmRhdGEuaXNvbGF0ZS5zcGxpdCh1dGlsc18xLlNDT1BFX1BSRUZJWCArICdjeWNsZScpWzFdKTtcbiAgICAgICAgICAgIHZhciBfc2NvcGUgPSBwYXJzZUludChzY29wZS5zcGxpdCgnY3ljbGUnKVsxXSk7XG4gICAgICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKGV4aXN0aW5nU2NvcGUpIHx8XG4gICAgICAgICAgICAgICAgTnVtYmVyLmlzTmFOKF9zY29wZSkgfHxcbiAgICAgICAgICAgICAgICBleGlzdGluZ1Njb3BlID4gX3Njb3BlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZUcmVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZUcmVlLmRhdGEuaXNvbGF0ZSA9IHV0aWxzXzEuU0NPUEVfUFJFRklYICsgc2NvcGU7XG4gICAgICAgIHJldHVybiB2VHJlZTtcbiAgICB9KTtcbn1cbmV4cG9ydHMuaXNvbGF0ZVNpbmsgPSBpc29sYXRlU2luaztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzb2xhdGUuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgSXNvbGF0ZU1vZHVsZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gSXNvbGF0ZU1vZHVsZShpc29sYXRlZEVsZW1lbnRzKSB7XG4gICAgICAgIHRoaXMuaXNvbGF0ZWRFbGVtZW50cyA9IGlzb2xhdGVkRWxlbWVudHM7XG4gICAgICAgIHRoaXMuZXZlbnREZWxlZ2F0b3JzID0gbmV3IE1hcCgpO1xuICAgIH1cbiAgICBJc29sYXRlTW9kdWxlLnByb3RvdHlwZS5zZXRTY29wZSA9IGZ1bmN0aW9uIChlbG0sIHNjb3BlKSB7XG4gICAgICAgIHRoaXMuaXNvbGF0ZWRFbGVtZW50cy5zZXQoc2NvcGUsIGVsbSk7XG4gICAgfTtcbiAgICBJc29sYXRlTW9kdWxlLnByb3RvdHlwZS5yZW1vdmVTY29wZSA9IGZ1bmN0aW9uIChzY29wZSkge1xuICAgICAgICB0aGlzLmlzb2xhdGVkRWxlbWVudHMuZGVsZXRlKHNjb3BlKTtcbiAgICB9O1xuICAgIElzb2xhdGVNb2R1bGUucHJvdG90eXBlLmdldElzb2xhdGVkRWxlbWVudCA9IGZ1bmN0aW9uIChzY29wZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc29sYXRlZEVsZW1lbnRzLmdldChzY29wZSk7XG4gICAgfTtcbiAgICBJc29sYXRlTW9kdWxlLnByb3RvdHlwZS5pc0lzb2xhdGVkRWxlbWVudCA9IGZ1bmN0aW9uIChlbG0pIHtcbiAgICAgICAgdmFyIGVsZW1lbnRzID0gQXJyYXkuZnJvbSh0aGlzLmlzb2xhdGVkRWxlbWVudHMuZW50cmllcygpKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgaWYgKGVsbSA9PT0gZWxlbWVudHNbaV1bMV0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudHNbaV1bMF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgSXNvbGF0ZU1vZHVsZS5wcm90b3R5cGUuYWRkRXZlbnREZWxlZ2F0b3IgPSBmdW5jdGlvbiAoc2NvcGUsIGV2ZW50RGVsZWdhdG9yKSB7XG4gICAgICAgIHZhciBkZWxlZ2F0b3JzID0gdGhpcy5ldmVudERlbGVnYXRvcnMuZ2V0KHNjb3BlKTtcbiAgICAgICAgaWYgKCFkZWxlZ2F0b3JzKSB7XG4gICAgICAgICAgICBkZWxlZ2F0b3JzID0gW107XG4gICAgICAgICAgICB0aGlzLmV2ZW50RGVsZWdhdG9ycy5zZXQoc2NvcGUsIGRlbGVnYXRvcnMpO1xuICAgICAgICB9XG4gICAgICAgIGRlbGVnYXRvcnNbZGVsZWdhdG9ycy5sZW5ndGhdID0gZXZlbnREZWxlZ2F0b3I7XG4gICAgfTtcbiAgICBJc29sYXRlTW9kdWxlLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5pc29sYXRlZEVsZW1lbnRzLmNsZWFyKCk7XG4gICAgfTtcbiAgICBJc29sYXRlTW9kdWxlLnByb3RvdHlwZS5jcmVhdGVNb2R1bGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNyZWF0ZTogZnVuY3Rpb24gKG9sZFZOb2RlLCB2Tm9kZSkge1xuICAgICAgICAgICAgICAgIHZhciBfYSA9IG9sZFZOb2RlLmRhdGEsIG9sZERhdGEgPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcbiAgICAgICAgICAgICAgICB2YXIgZWxtID0gdk5vZGUuZWxtLCBfYiA9IHZOb2RlLmRhdGEsIGRhdGEgPSBfYiA9PT0gdm9pZCAwID8ge30gOiBfYjtcbiAgICAgICAgICAgICAgICB2YXIgb2xkU2NvcGUgPSBvbGREYXRhLmlzb2xhdGUgfHwgXCJcIjtcbiAgICAgICAgICAgICAgICB2YXIgc2NvcGUgPSBkYXRhLmlzb2xhdGUgfHwgXCJcIjtcbiAgICAgICAgICAgICAgICBpZiAoc2NvcGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9sZFNjb3BlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlbW92ZVNjb3BlKG9sZFNjb3BlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzZWxmLnNldFNjb3BlKGVsbSwgc2NvcGUpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGVsZWdhdG9ycyA9IHNlbGYuZXZlbnREZWxlZ2F0b3JzLmdldChzY29wZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWxlZ2F0b3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gZGVsZWdhdG9ycy5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRvcnNbaV0udXBkYXRlVG9wRWxlbWVudChlbG0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRlbGVnYXRvcnMgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ldmVudERlbGVnYXRvcnMuc2V0KHNjb3BlLCBbXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG9sZFNjb3BlICYmICFzY29wZSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLnJlbW92ZVNjb3BlKHNjb3BlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXBkYXRlOiBmdW5jdGlvbiAob2xkVk5vZGUsIHZOb2RlKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hID0gb2xkVk5vZGUuZGF0YSwgb2xkRGF0YSA9IF9hID09PSB2b2lkIDAgPyB7fSA6IF9hO1xuICAgICAgICAgICAgICAgIHZhciBlbG0gPSB2Tm9kZS5lbG0sIF9iID0gdk5vZGUuZGF0YSwgZGF0YSA9IF9iID09PSB2b2lkIDAgPyB7fSA6IF9iO1xuICAgICAgICAgICAgICAgIHZhciBvbGRTY29wZSA9IG9sZERhdGEuaXNvbGF0ZSB8fCBcIlwiO1xuICAgICAgICAgICAgICAgIHZhciBzY29wZSA9IGRhdGEuaXNvbGF0ZSB8fCBcIlwiO1xuICAgICAgICAgICAgICAgIGlmIChzY29wZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAob2xkU2NvcGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVtb3ZlU2NvcGUob2xkU2NvcGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0U2NvcGUoZWxtLCBzY29wZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChvbGRTY29wZSAmJiAhc2NvcGUpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5yZW1vdmVTY29wZShzY29wZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlbW92ZTogZnVuY3Rpb24gKF9hLCBjYikge1xuICAgICAgICAgICAgICAgIHZhciBkYXRhID0gX2EuZGF0YTtcbiAgICAgICAgICAgICAgICBkYXRhID0gZGF0YSB8fCB7fTtcbiAgICAgICAgICAgICAgICB2YXIgc2NvcGUgPSBkYXRhLmlzb2xhdGU7XG4gICAgICAgICAgICAgICAgaWYgKHNjb3BlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYucmVtb3ZlU2NvcGUoc2NvcGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5ldmVudERlbGVnYXRvcnMuZ2V0KHNjb3BlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ldmVudERlbGVnYXRvcnMuc2V0KHNjb3BlLCBbXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2IoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZXN0cm95OiBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IF9hLmRhdGE7XG4gICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEgfHwge307XG4gICAgICAgICAgICAgICAgdmFyIHNjb3BlID0gZGF0YS5pc29sYXRlO1xuICAgICAgICAgICAgICAgIGlmIChzY29wZSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLnJlbW92ZVNjb3BlKHNjb3BlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuZXZlbnREZWxlZ2F0b3JzLmdldChzY29wZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXZlbnREZWxlZ2F0b3JzLnNldChzY29wZSwgW10pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG4gICAgcmV0dXJuIElzb2xhdGVNb2R1bGU7XG59KCkpO1xuZXhwb3J0cy5Jc29sYXRlTW9kdWxlID0gSXNvbGF0ZU1vZHVsZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzb2xhdGVNb2R1bGUuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgc25hYmJkb21fMSA9IHJlcXVpcmUoJ3NuYWJiZG9tJyk7XG52YXIgeHN0cmVhbV8xID0gcmVxdWlyZSgneHN0cmVhbScpO1xudmFyIE1haW5ET01Tb3VyY2VfMSA9IHJlcXVpcmUoJy4vTWFpbkRPTVNvdXJjZScpO1xudmFyIFZOb2RlV3JhcHBlcl8xID0gcmVxdWlyZSgnLi9WTm9kZVdyYXBwZXInKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIG1vZHVsZXNfMSA9IHJlcXVpcmUoJy4vbW9kdWxlcycpO1xudmFyIGlzb2xhdGVNb2R1bGVfMSA9IHJlcXVpcmUoJy4vaXNvbGF0ZU1vZHVsZScpO1xudmFyIHRyYW5zcG9zaXRpb25fMSA9IHJlcXVpcmUoJy4vdHJhbnNwb3NpdGlvbicpO1xudmFyIHhzdHJlYW1fYWRhcHRlcl8xID0gcmVxdWlyZSgnQGN5Y2xlL3hzdHJlYW0tYWRhcHRlcicpO1xuZnVuY3Rpb24gbWFrZURPTURyaXZlcklucHV0R3VhcmQobW9kdWxlcykge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShtb2R1bGVzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJPcHRpb25hbCBtb2R1bGVzIG9wdGlvbiBtdXN0IGJlIFwiICtcbiAgICAgICAgICAgIFwiYW4gYXJyYXkgZm9yIHNuYWJiZG9tIG1vZHVsZXNcIik7XG4gICAgfVxufVxuZnVuY3Rpb24gZG9tRHJpdmVySW5wdXRHdWFyZCh2aWV3JCkge1xuICAgIGlmICghdmlldyRcbiAgICAgICAgfHwgdHlwZW9mIHZpZXckLmFkZExpc3RlbmVyICE9PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgfHwgdHlwZW9mIHZpZXckLmZvbGQgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgRE9NIGRyaXZlciBmdW5jdGlvbiBleHBlY3RzIGFzIGlucHV0IGEgU3RyZWFtIG9mIFwiICtcbiAgICAgICAgICAgIFwidmlydHVhbCBET00gZWxlbWVudHNcIik7XG4gICAgfVxufVxuZnVuY3Rpb24gbWFrZURPTURyaXZlcihjb250YWluZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgICAgb3B0aW9ucyA9IHt9O1xuICAgIH1cbiAgICB2YXIgdHJhbnNwb3NpdGlvbiA9IG9wdGlvbnMudHJhbnNwb3NpdGlvbiB8fCBmYWxzZTtcbiAgICB2YXIgbW9kdWxlcyA9IG9wdGlvbnMubW9kdWxlcyB8fCBtb2R1bGVzXzEuZGVmYXVsdDtcbiAgICB2YXIgaXNvbGF0ZU1vZHVsZSA9IG5ldyBpc29sYXRlTW9kdWxlXzEuSXNvbGF0ZU1vZHVsZSgobmV3IE1hcCgpKSk7XG4gICAgdmFyIHBhdGNoID0gc25hYmJkb21fMS5pbml0KFtpc29sYXRlTW9kdWxlLmNyZWF0ZU1vZHVsZSgpXS5jb25jYXQobW9kdWxlcykpO1xuICAgIHZhciByb290RWxlbWVudCA9IHV0aWxzXzEuZ2V0RWxlbWVudChjb250YWluZXIpO1xuICAgIHZhciB2bm9kZVdyYXBwZXIgPSBuZXcgVk5vZGVXcmFwcGVyXzEuVk5vZGVXcmFwcGVyKHJvb3RFbGVtZW50KTtcbiAgICB2YXIgZGVsZWdhdG9ycyA9IG5ldyBNYXAoKTtcbiAgICBtYWtlRE9NRHJpdmVySW5wdXRHdWFyZChtb2R1bGVzKTtcbiAgICBmdW5jdGlvbiBET01Ecml2ZXIodm5vZGUkLCBydW5TdHJlYW1BZGFwdGVyKSB7XG4gICAgICAgIGRvbURyaXZlcklucHV0R3VhcmQodm5vZGUkKTtcbiAgICAgICAgdmFyIHRyYW5zcG9zZVZOb2RlID0gdHJhbnNwb3NpdGlvbl8xLm1ha2VUcmFuc3Bvc2VWTm9kZShydW5TdHJlYW1BZGFwdGVyKTtcbiAgICAgICAgdmFyIHByZXByb2Nlc3NlZFZOb2RlJCA9ICh0cmFuc3Bvc2l0aW9uID8gdm5vZGUkLm1hcCh0cmFuc3Bvc2VWTm9kZSkuZmxhdHRlbigpIDogdm5vZGUkKTtcbiAgICAgICAgdmFyIHJvb3RFbGVtZW50JCA9IHByZXByb2Nlc3NlZFZOb2RlJFxuICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAodm5vZGUpIHsgcmV0dXJuIHZub2RlV3JhcHBlci5jYWxsKHZub2RlKTsgfSlcbiAgICAgICAgICAgIC5mb2xkKHBhdGNoLCByb290RWxlbWVudClcbiAgICAgICAgICAgIC5kcm9wKDEpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIHVud3JhcEVsZW1lbnRGcm9tVk5vZGUodm5vZGUpIHsgcmV0dXJuIHZub2RlLmVsbTsgfSlcbiAgICAgICAgICAgIC5jb21wb3NlKGZ1bmN0aW9uIChzdHJlYW0pIHsgcmV0dXJuIHhzdHJlYW1fMS5kZWZhdWx0Lm1lcmdlKHN0cmVhbSwgeHN0cmVhbV8xLmRlZmF1bHQubmV2ZXIoKSk7IH0pIC8vIGRvbid0IGNvbXBsZXRlIHRoaXMgc3RyZWFtXG4gICAgICAgICAgICAuc3RhcnRXaXRoKHJvb3RFbGVtZW50KTtcbiAgICAgICAgLyogdHNsaW50OmRpc2FibGU6bm8tZW1wdHkgKi9cbiAgICAgICAgcm9vdEVsZW1lbnQkLmFkZExpc3RlbmVyKHsgbmV4dDogZnVuY3Rpb24gKCkgeyB9LCBlcnJvcjogZnVuY3Rpb24gKCkgeyB9LCBjb21wbGV0ZTogZnVuY3Rpb24gKCkgeyB9IH0pO1xuICAgICAgICAvKiB0c2xpbnQ6ZW5hYmxlOm5vLWVtcHR5ICovXG4gICAgICAgIHJldHVybiBuZXcgTWFpbkRPTVNvdXJjZV8xLk1haW5ET01Tb3VyY2Uocm9vdEVsZW1lbnQkLCBydW5TdHJlYW1BZGFwdGVyLCBbXSwgaXNvbGF0ZU1vZHVsZSwgZGVsZWdhdG9ycyk7XG4gICAgfVxuICAgIDtcbiAgICBET01Ecml2ZXIuc3RyZWFtQWRhcHRlciA9IHhzdHJlYW1fYWRhcHRlcl8xLmRlZmF1bHQ7XG4gICAgcmV0dXJuIERPTURyaXZlcjtcbn1cbmV4cG9ydHMubWFrZURPTURyaXZlciA9IG1ha2VET01Ecml2ZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tYWtlRE9NRHJpdmVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIHhzdHJlYW1fYWRhcHRlcl8xID0gcmVxdWlyZSgnQGN5Y2xlL3hzdHJlYW0tYWRhcHRlcicpO1xudmFyIHRyYW5zcG9zaXRpb25fMSA9IHJlcXVpcmUoJy4vdHJhbnNwb3NpdGlvbicpO1xudmFyIEhUTUxTb3VyY2VfMSA9IHJlcXVpcmUoJy4vSFRNTFNvdXJjZScpO1xudmFyIHRvSFRNTCA9IHJlcXVpcmUoJ3NuYWJiZG9tLXRvLWh0bWwnKTtcbi8qIHRzbGludDpkaXNhYmxlOm5vLWVtcHR5ICovXG52YXIgbm9vcCA9IGZ1bmN0aW9uICgpIHsgfTtcbi8qIHRzbGludDplbmFibGU6bm8tZW1wdHkgKi9cbmZ1bmN0aW9uIG1ha2VIVE1MRHJpdmVyKGVmZmVjdCwgb3B0aW9ucykge1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgICBvcHRpb25zID0ge307XG4gICAgfVxuICAgIHZhciB0cmFuc3Bvc2l0aW9uID0gb3B0aW9ucy50cmFuc3Bvc2l0aW9uIHx8IGZhbHNlO1xuICAgIGZ1bmN0aW9uIGh0bWxEcml2ZXIodm5vZGUkLCBydW5TdHJlYW1BZGFwdGVyKSB7XG4gICAgICAgIHZhciB0cmFuc3Bvc2VWTm9kZSA9IHRyYW5zcG9zaXRpb25fMS5tYWtlVHJhbnNwb3NlVk5vZGUocnVuU3RyZWFtQWRhcHRlcik7XG4gICAgICAgIHZhciBwcmVwcm9jZXNzZWRWTm9kZSQgPSAodHJhbnNwb3NpdGlvbiA/IHZub2RlJC5tYXAodHJhbnNwb3NlVk5vZGUpLmZsYXR0ZW4oKSA6IHZub2RlJCk7XG4gICAgICAgIHZhciBodG1sJCA9IHByZXByb2Nlc3NlZFZOb2RlJC5sYXN0KCkubWFwKHRvSFRNTCk7XG4gICAgICAgIGh0bWwkLmFkZExpc3RlbmVyKHtcbiAgICAgICAgICAgIG5leHQ6IGVmZmVjdCB8fCBub29wLFxuICAgICAgICAgICAgZXJyb3I6IG5vb3AsXG4gICAgICAgICAgICBjb21wbGV0ZTogbm9vcCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXcgSFRNTFNvdXJjZV8xLkhUTUxTb3VyY2UoaHRtbCQsIHJ1blN0cmVhbUFkYXB0ZXIpO1xuICAgIH1cbiAgICA7XG4gICAgaHRtbERyaXZlci5zdHJlYW1BZGFwdGVyID0geHN0cmVhbV9hZGFwdGVyXzEuZGVmYXVsdDtcbiAgICByZXR1cm4gaHRtbERyaXZlcjtcbn1cbmV4cG9ydHMubWFrZUhUTUxEcml2ZXIgPSBtYWtlSFRNTERyaXZlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1ha2VIVE1MRHJpdmVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIHhzdHJlYW1fYWRhcHRlcl8xID0gcmVxdWlyZSgnQGN5Y2xlL3hzdHJlYW0tYWRhcHRlcicpO1xudmFyIHhzdHJlYW1fMSA9IHJlcXVpcmUoJ3hzdHJlYW0nKTtcbnZhciBNb2NrZWRET01Tb3VyY2UgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE1vY2tlZERPTVNvdXJjZShfc3RyZWFtQWRhcHRlciwgX21vY2tDb25maWcpIHtcbiAgICAgICAgdGhpcy5fc3RyZWFtQWRhcHRlciA9IF9zdHJlYW1BZGFwdGVyO1xuICAgICAgICB0aGlzLl9tb2NrQ29uZmlnID0gX21vY2tDb25maWc7XG4gICAgICAgIGlmIChfbW9ja0NvbmZpZy5lbGVtZW50cykge1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudHMgPSBfbW9ja0NvbmZpZy5lbGVtZW50cztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRzID0gX3N0cmVhbUFkYXB0ZXIuYWRhcHQoeHN0cmVhbV8xLmRlZmF1bHQuZW1wdHkoKSwgeHN0cmVhbV9hZGFwdGVyXzEuZGVmYXVsdC5zdHJlYW1TdWJzY3JpYmUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIE1vY2tlZERPTVNvdXJjZS5wcm90b3R5cGUuZWxlbWVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50cztcbiAgICB9O1xuICAgIE1vY2tlZERPTVNvdXJjZS5wcm90b3R5cGUuZXZlbnRzID0gZnVuY3Rpb24gKGV2ZW50VHlwZSwgb3B0aW9ucykge1xuICAgICAgICB2YXIgbW9ja0NvbmZpZyA9IHRoaXMuX21vY2tDb25maWc7XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMobW9ja0NvbmZpZyk7XG4gICAgICAgIHZhciBrZXlzTGVuID0ga2V5cy5sZW5ndGg7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5c0xlbjsgaSsrKSB7XG4gICAgICAgICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgICAgIGlmIChrZXkgPT09IGV2ZW50VHlwZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb2NrQ29uZmlnW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0cmVhbUFkYXB0ZXIuYWRhcHQoeHN0cmVhbV8xLmRlZmF1bHQuZW1wdHkoKSwgeHN0cmVhbV9hZGFwdGVyXzEuZGVmYXVsdC5zdHJlYW1TdWJzY3JpYmUpO1xuICAgIH07XG4gICAgTW9ja2VkRE9NU291cmNlLnByb3RvdHlwZS5zZWxlY3QgPSBmdW5jdGlvbiAoc2VsZWN0b3IpIHtcbiAgICAgICAgdmFyIG1vY2tDb25maWcgPSB0aGlzLl9tb2NrQ29uZmlnO1xuICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG1vY2tDb25maWcpO1xuICAgICAgICB2YXIga2V5c0xlbiA9IGtleXMubGVuZ3RoO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXNMZW47IGkrKykge1xuICAgICAgICAgICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgICAgICAgICBpZiAoa2V5ID09PSBzZWxlY3Rvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTW9ja2VkRE9NU291cmNlKHRoaXMuX3N0cmVhbUFkYXB0ZXIsIG1vY2tDb25maWdba2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBNb2NrZWRET01Tb3VyY2UodGhpcy5fc3RyZWFtQWRhcHRlciwge30pO1xuICAgIH07XG4gICAgcmV0dXJuIE1vY2tlZERPTVNvdXJjZTtcbn0oKSk7XG5leHBvcnRzLk1vY2tlZERPTVNvdXJjZSA9IE1vY2tlZERPTVNvdXJjZTtcbmZ1bmN0aW9uIG1vY2tET01Tb3VyY2Uoc3RyZWFtQWRhcHRlciwgbW9ja0NvbmZpZykge1xuICAgIHJldHVybiBuZXcgTW9ja2VkRE9NU291cmNlKHN0cmVhbUFkYXB0ZXIsIG1vY2tDb25maWcpO1xufVxuZXhwb3J0cy5tb2NrRE9NU291cmNlID0gbW9ja0RPTVNvdXJjZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1vY2tET01Tb3VyY2UuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgQ2xhc3NNb2R1bGUgPSByZXF1aXJlKCdzbmFiYmRvbS9tb2R1bGVzL2NsYXNzJyk7XG5leHBvcnRzLkNsYXNzTW9kdWxlID0gQ2xhc3NNb2R1bGU7XG52YXIgUHJvcHNNb2R1bGUgPSByZXF1aXJlKCdzbmFiYmRvbS9tb2R1bGVzL3Byb3BzJyk7XG5leHBvcnRzLlByb3BzTW9kdWxlID0gUHJvcHNNb2R1bGU7XG52YXIgQXR0cnNNb2R1bGUgPSByZXF1aXJlKCdzbmFiYmRvbS9tb2R1bGVzL2F0dHJpYnV0ZXMnKTtcbmV4cG9ydHMuQXR0cnNNb2R1bGUgPSBBdHRyc01vZHVsZTtcbnZhciBFdmVudHNNb2R1bGUgPSByZXF1aXJlKCdzbmFiYmRvbS9tb2R1bGVzL2V2ZW50bGlzdGVuZXJzJyk7XG5leHBvcnRzLkV2ZW50c01vZHVsZSA9IEV2ZW50c01vZHVsZTtcbnZhciBTdHlsZU1vZHVsZSA9IHJlcXVpcmUoJ3NuYWJiZG9tL21vZHVsZXMvc3R5bGUnKTtcbmV4cG9ydHMuU3R5bGVNb2R1bGUgPSBTdHlsZU1vZHVsZTtcbnZhciBIZXJvTW9kdWxlID0gcmVxdWlyZSgnc25hYmJkb20vbW9kdWxlcy9oZXJvJyk7XG5leHBvcnRzLkhlcm9Nb2R1bGUgPSBIZXJvTW9kdWxlO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gW1N0eWxlTW9kdWxlLCBDbGFzc01vZHVsZSwgUHJvcHNNb2R1bGUsIEF0dHJzTW9kdWxlXTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1vZHVsZXMuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgeHN0cmVhbV9hZGFwdGVyXzEgPSByZXF1aXJlKCdAY3ljbGUveHN0cmVhbS1hZGFwdGVyJyk7XG52YXIgeHN0cmVhbV8xID0gcmVxdWlyZSgneHN0cmVhbScpO1xuZnVuY3Rpb24gY3JlYXRlVlRyZWUodm5vZGUsIGNoaWxkcmVuKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc2VsOiB2bm9kZS5zZWwsXG4gICAgICAgIGRhdGE6IHZub2RlLmRhdGEsXG4gICAgICAgIHRleHQ6IHZub2RlLnRleHQsXG4gICAgICAgIGVsbTogdm5vZGUuZWxtLFxuICAgICAgICBrZXk6IHZub2RlLmtleSxcbiAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgIH07XG59XG5mdW5jdGlvbiBtYWtlVHJhbnNwb3NlVk5vZGUocnVuU3RyZWFtQWRhcHRlcikge1xuICAgIHJldHVybiBmdW5jdGlvbiB0cmFuc3Bvc2VWTm9kZSh2bm9kZSkge1xuICAgICAgICBpZiAoIXZub2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2bm9kZSAmJiB0eXBlb2Ygdm5vZGUuZGF0YSA9PT0gXCJvYmplY3RcIiAmJiB2bm9kZS5kYXRhLnN0YXRpYykge1xuICAgICAgICAgICAgcmV0dXJuIHhzdHJlYW1fMS5kZWZhdWx0Lm9mKHZub2RlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChydW5TdHJlYW1BZGFwdGVyLmlzVmFsaWRTdHJlYW0odm5vZGUpKSB7XG4gICAgICAgICAgICB2YXIgeHNTdHJlYW0gPSB4c3RyZWFtX2FkYXB0ZXJfMS5kZWZhdWx0LmFkYXB0KHZub2RlLCBydW5TdHJlYW1BZGFwdGVyLnN0cmVhbVN1YnNjcmliZSk7XG4gICAgICAgICAgICByZXR1cm4geHNTdHJlYW0ubWFwKHRyYW5zcG9zZVZOb2RlKS5mbGF0dGVuKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIHZub2RlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICBpZiAoIXZub2RlLmNoaWxkcmVuIHx8IHZub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB4c3RyZWFtXzEuZGVmYXVsdC5vZih2bm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgdm5vZGVDaGlsZHJlbiA9IHZub2RlLmNoaWxkcmVuXG4gICAgICAgICAgICAgICAgLm1hcCh0cmFuc3Bvc2VWTm9kZSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4ICE9PSBudWxsOyB9KTtcbiAgICAgICAgICAgIGlmICh2bm9kZUNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB4c3RyZWFtXzEuZGVmYXVsdC5vZihjcmVhdGVWVHJlZSh2bm9kZSwgW10pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB4c3RyZWFtXzEuZGVmYXVsdC5jb21iaW5lLmFwcGx5KHhzdHJlYW1fMS5kZWZhdWx0LCB2bm9kZUNoaWxkcmVuKVxuICAgICAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChjaGlsZHJlbikgeyByZXR1cm4gY3JlYXRlVlRyZWUodm5vZGUsIGNoaWxkcmVuLnNsaWNlKCkpOyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuaGFuZGxlZCB2VHJlZSBWYWx1ZVwiKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5leHBvcnRzLm1ha2VUcmFuc3Bvc2VWTm9kZSA9IG1ha2VUcmFuc3Bvc2VWTm9kZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRyYW5zcG9zaXRpb24uanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5mdW5jdGlvbiBpc0VsZW1lbnQob2JqKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBIVE1MRWxlbWVudCA9PT0gXCJvYmplY3RcIiA/XG4gICAgICAgIG9iaiBpbnN0YW5jZW9mIEhUTUxFbGVtZW50IHx8IG9iaiBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQgOlxuICAgICAgICBvYmogJiYgdHlwZW9mIG9iaiA9PT0gXCJvYmplY3RcIiAmJiBvYmogIT09IG51bGwgJiZcbiAgICAgICAgICAgIChvYmoubm9kZVR5cGUgPT09IDEgfHwgb2JqLm5vZGVUeXBlID09PSAxMSkgJiZcbiAgICAgICAgICAgIHR5cGVvZiBvYmoubm9kZU5hbWUgPT09IFwic3RyaW5nXCI7XG59XG5leHBvcnRzLlNDT1BFX1BSRUZJWCA9IFwiJCRDWUNMRURPTSQkLVwiO1xuZnVuY3Rpb24gZ2V0RWxlbWVudChzZWxlY3RvcnMpIHtcbiAgICB2YXIgZG9tRWxlbWVudCA9ICh0eXBlb2Ygc2VsZWN0b3JzID09PSBcInN0cmluZ1wiID9cbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3RvcnMpIDpcbiAgICAgICAgc2VsZWN0b3JzKTtcbiAgICBpZiAodHlwZW9mIHNlbGVjdG9ycyA9PT0gXCJzdHJpbmdcIiAmJiBkb21FbGVtZW50ID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCByZW5kZXIgaW50byB1bmtub3duIGVsZW1lbnQgYFwiICsgc2VsZWN0b3JzICsgXCJgXCIpO1xuICAgIH1cbiAgICBlbHNlIGlmICghaXNFbGVtZW50KGRvbUVsZW1lbnQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkdpdmVuIGNvbnRhaW5lciBpcyBub3QgYSBET00gZWxlbWVudCBuZWl0aGVyIGEgXCIgK1xuICAgICAgICAgICAgXCJzZWxlY3RvciBzdHJpbmcuXCIpO1xuICAgIH1cbiAgICByZXR1cm4gZG9tRWxlbWVudDtcbn1cbmV4cG9ydHMuZ2V0RWxlbWVudCA9IGdldEVsZW1lbnQ7XG5mdW5jdGlvbiBnZXRTY29wZShuYW1lc3BhY2UpIHtcbiAgICByZXR1cm4gbmFtZXNwYWNlXG4gICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGMuaW5kZXhPZihleHBvcnRzLlNDT1BFX1BSRUZJWCkgPiAtMTsgfSlcbiAgICAgICAgLnNsaWNlKC0xKSAvLyBvbmx5IG5lZWQgdGhlIGxhdGVzdCwgbW9zdCBzcGVjaWZpYywgaXNvbGF0ZWQgYm91bmRhcnlcbiAgICAgICAgLmpvaW4oXCJcIik7XG59XG5leHBvcnRzLmdldFNjb3BlID0gZ2V0U2NvcGU7XG5mdW5jdGlvbiBnZXRTZWxlY3RvcnMobmFtZXNwYWNlKSB7XG4gICAgcmV0dXJuIG5hbWVzcGFjZS5maWx0ZXIoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGMuaW5kZXhPZihleHBvcnRzLlNDT1BFX1BSRUZJWCkgPT09IC0xOyB9KS5qb2luKFwiIFwiKTtcbn1cbmV4cG9ydHMuZ2V0U2VsZWN0b3JzID0gZ2V0U2VsZWN0b3JzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbHMuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgeHN0cmVhbV8xID0gcmVxdWlyZSgneHN0cmVhbScpO1xudmFyIFhTdHJlYW1BZGFwdGVyID0ge1xuICAgIGFkYXB0OiBmdW5jdGlvbiAob3JpZ2luU3RyZWFtLCBvcmlnaW5TdHJlYW1TdWJzY3JpYmUpIHtcbiAgICAgICAgaWYgKFhTdHJlYW1BZGFwdGVyLmlzVmFsaWRTdHJlYW0ob3JpZ2luU3RyZWFtKSkge1xuICAgICAgICAgICAgcmV0dXJuIG9yaWdpblN0cmVhbTtcbiAgICAgICAgfVxuICAgICAgICA7XG4gICAgICAgIHZhciBkaXNwb3NlID0gbnVsbDtcbiAgICAgICAgcmV0dXJuIHhzdHJlYW1fMS5kZWZhdWx0LmNyZWF0ZSh7XG4gICAgICAgICAgICBzdGFydDogZnVuY3Rpb24gKG91dCkge1xuICAgICAgICAgICAgICAgIHZhciBvYnNlcnZlciA9IG91dDtcbiAgICAgICAgICAgICAgICBkaXNwb3NlID0gb3JpZ2luU3RyZWFtU3Vic2NyaWJlKG9yaWdpblN0cmVhbSwgb2JzZXJ2ZXIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN0b3A6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRpc3Bvc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBtYWtlU3ViamVjdDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc3RyZWFtID0geHN0cmVhbV8xLmRlZmF1bHQuY3JlYXRlKCk7XG4gICAgICAgIHZhciBvYnNlcnZlciA9IHtcbiAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uICh4KSB7IHN0cmVhbS5zaGFtZWZ1bGx5U2VuZE5leHQoeCk7IH0sXG4gICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKGVycikgeyBzdHJlYW0uc2hhbWVmdWxseVNlbmRFcnJvcihlcnIpOyB9LFxuICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHsgc3RyZWFtLnNoYW1lZnVsbHlTZW5kQ29tcGxldGUoKTsgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4geyBvYnNlcnZlcjogb2JzZXJ2ZXIsIHN0cmVhbTogc3RyZWFtIH07XG4gICAgfSxcbiAgICByZW1lbWJlcjogZnVuY3Rpb24gKHN0cmVhbSkge1xuICAgICAgICByZXR1cm4gc3RyZWFtLnJlbWVtYmVyKCk7XG4gICAgfSxcbiAgICBpc1ZhbGlkU3RyZWFtOiBmdW5jdGlvbiAoc3RyZWFtKSB7XG4gICAgICAgIHJldHVybiAodHlwZW9mIHN0cmVhbS5hZGRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgICAgICAgdHlwZW9mIHN0cmVhbS5zaGFtZWZ1bGx5U2VuZE5leHQgPT09ICdmdW5jdGlvbicpO1xuICAgIH0sXG4gICAgc3RyZWFtU3Vic2NyaWJlOiBmdW5jdGlvbiAoc3RyZWFtLCBvYnNlcnZlcikge1xuICAgICAgICBzdHJlYW0uYWRkTGlzdGVuZXIob2JzZXJ2ZXIpO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RyZWFtLnJlbW92ZUxpc3RlbmVyKG9ic2VydmVyKTsgfTtcbiAgICB9XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gWFN0cmVhbUFkYXB0ZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCIndXNlIHN0cmljdCc7XG5cbnZhciBwcm90byA9IEVsZW1lbnQucHJvdG90eXBlO1xudmFyIHZlbmRvciA9IHByb3RvLm1hdGNoZXNcbiAgfHwgcHJvdG8ubWF0Y2hlc1NlbGVjdG9yXG4gIHx8IHByb3RvLndlYmtpdE1hdGNoZXNTZWxlY3RvclxuICB8fCBwcm90by5tb3pNYXRjaGVzU2VsZWN0b3JcbiAgfHwgcHJvdG8ubXNNYXRjaGVzU2VsZWN0b3JcbiAgfHwgcHJvdG8ub01hdGNoZXNTZWxlY3RvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBtYXRjaDtcblxuLyoqXG4gKiBNYXRjaCBgZWxgIHRvIGBzZWxlY3RvcmAuXG4gKlxuICogQHBhcmFtIHtFbGVtZW50fSBlbFxuICogQHBhcmFtIHtTdHJpbmd9IHNlbGVjdG9yXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBtYXRjaChlbCwgc2VsZWN0b3IpIHtcbiAgaWYgKHZlbmRvcikgcmV0dXJuIHZlbmRvci5jYWxsKGVsLCBzZWxlY3Rvcik7XG4gIHZhciBub2RlcyA9IGVsLnBhcmVudE5vZGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAobm9kZXNbaV0gPT0gZWwpIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn0iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBjbGFzc05hbWVGcm9tVk5vZGU7XG5cbnZhciBfc2VsZWN0b3JQYXJzZXIyID0gcmVxdWlyZSgnLi9zZWxlY3RvclBhcnNlcicpO1xuXG52YXIgX3NlbGVjdG9yUGFyc2VyMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3NlbGVjdG9yUGFyc2VyMik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGNsYXNzTmFtZUZyb21WTm9kZSh2Tm9kZSkge1xuICB2YXIgX3NlbGVjdG9yUGFyc2VyID0gKDAsIF9zZWxlY3RvclBhcnNlcjMuZGVmYXVsdCkodk5vZGUuc2VsKTtcblxuICB2YXIgY24gPSBfc2VsZWN0b3JQYXJzZXIuY2xhc3NOYW1lO1xuXG4gIGlmICghdk5vZGUuZGF0YSkge1xuICAgIHJldHVybiBjbjtcbiAgfVxuXG4gIHZhciBfdk5vZGUkZGF0YSA9IHZOb2RlLmRhdGE7XG4gIHZhciBkYXRhQ2xhc3MgPSBfdk5vZGUkZGF0YS5jbGFzcztcbiAgdmFyIHByb3BzID0gX3ZOb2RlJGRhdGEucHJvcHM7XG5cbiAgaWYgKGRhdGFDbGFzcykge1xuICAgIHZhciBjID0gT2JqZWN0LmtleXModk5vZGUuZGF0YS5jbGFzcykuZmlsdGVyKGZ1bmN0aW9uIChjbCkge1xuICAgICAgcmV0dXJuIHZOb2RlLmRhdGEuY2xhc3NbY2xdO1xuICAgIH0pO1xuICAgIGNuICs9ICcgJyArIGMuam9pbignICcpO1xuICB9XG5cbiAgaWYgKHByb3BzICYmIHByb3BzLmNsYXNzTmFtZSkge1xuICAgIGNuICs9ICcgJyArIHByb3BzLmNsYXNzTmFtZTtcbiAgfVxuXG4gIHJldHVybiBjbi50cmltKCk7XG59IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gc2VsZWN0b3JQYXJzZXI7XG5cbnZhciBfYnJvd3NlclNwbGl0ID0gcmVxdWlyZSgnYnJvd3Nlci1zcGxpdCcpO1xuXG52YXIgX2Jyb3dzZXJTcGxpdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9icm93c2VyU3BsaXQpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgY2xhc3NJZFNwbGl0ID0gLyhbXFwuI10/W2EtekEtWjAtOVxcdTAwN0YtXFx1RkZGRl86LV0rKS87XG52YXIgbm90Q2xhc3NJZCA9IC9eXFwufCMvO1xuXG5mdW5jdGlvbiBzZWxlY3RvclBhcnNlcigpIHtcbiAgdmFyIHNlbGVjdG9yID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gJycgOiBhcmd1bWVudHNbMF07XG5cbiAgdmFyIHRhZ05hbWUgPSB1bmRlZmluZWQ7XG4gIHZhciBpZCA9ICcnO1xuICB2YXIgY2xhc3NlcyA9IFtdO1xuXG4gIHZhciB0YWdQYXJ0cyA9ICgwLCBfYnJvd3NlclNwbGl0Mi5kZWZhdWx0KShzZWxlY3RvciwgY2xhc3NJZFNwbGl0KTtcblxuICBpZiAobm90Q2xhc3NJZC50ZXN0KHRhZ1BhcnRzWzFdKSB8fCBzZWxlY3RvciA9PT0gJycpIHtcbiAgICB0YWdOYW1lID0gJ2Rpdic7XG4gIH1cblxuICB2YXIgcGFydCA9IHVuZGVmaW5lZDtcbiAgdmFyIHR5cGUgPSB1bmRlZmluZWQ7XG4gIHZhciBpID0gdW5kZWZpbmVkO1xuXG4gIGZvciAoaSA9IDA7IGkgPCB0YWdQYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgIHBhcnQgPSB0YWdQYXJ0c1tpXTtcblxuICAgIGlmICghcGFydCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdHlwZSA9IHBhcnQuY2hhckF0KDApO1xuXG4gICAgaWYgKCF0YWdOYW1lKSB7XG4gICAgICB0YWdOYW1lID0gcGFydDtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICcuJykge1xuICAgICAgY2xhc3Nlcy5wdXNoKHBhcnQuc3Vic3RyaW5nKDEsIHBhcnQubGVuZ3RoKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnIycpIHtcbiAgICAgIGlkID0gcGFydC5zdWJzdHJpbmcoMSwgcGFydC5sZW5ndGgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdGFnTmFtZTogdGFnTmFtZSxcbiAgICBpZDogaWQsXG4gICAgY2xhc3NOYW1lOiBjbGFzc2VzLmpvaW4oJyAnKVxuICB9O1xufSIsIi8qIVxuICogQ3Jvc3MtQnJvd3NlciBTcGxpdCAxLjEuMVxuICogQ29weXJpZ2h0IDIwMDctMjAxMiBTdGV2ZW4gTGV2aXRoYW4gPHN0ZXZlbmxldml0aGFuLmNvbT5cbiAqIEF2YWlsYWJsZSB1bmRlciB0aGUgTUlUIExpY2Vuc2VcbiAqIEVDTUFTY3JpcHQgY29tcGxpYW50LCB1bmlmb3JtIGNyb3NzLWJyb3dzZXIgc3BsaXQgbWV0aG9kXG4gKi9cblxuLyoqXG4gKiBTcGxpdHMgYSBzdHJpbmcgaW50byBhbiBhcnJheSBvZiBzdHJpbmdzIHVzaW5nIGEgcmVnZXggb3Igc3RyaW5nIHNlcGFyYXRvci4gTWF0Y2hlcyBvZiB0aGVcbiAqIHNlcGFyYXRvciBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHQgYXJyYXkuIEhvd2V2ZXIsIGlmIGBzZXBhcmF0b3JgIGlzIGEgcmVnZXggdGhhdCBjb250YWluc1xuICogY2FwdHVyaW5nIGdyb3VwcywgYmFja3JlZmVyZW5jZXMgYXJlIHNwbGljZWQgaW50byB0aGUgcmVzdWx0IGVhY2ggdGltZSBgc2VwYXJhdG9yYCBpcyBtYXRjaGVkLlxuICogRml4ZXMgYnJvd3NlciBidWdzIGNvbXBhcmVkIHRvIHRoZSBuYXRpdmUgYFN0cmluZy5wcm90b3R5cGUuc3BsaXRgIGFuZCBjYW4gYmUgdXNlZCByZWxpYWJseVxuICogY3Jvc3MtYnJvd3Nlci5cbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgU3RyaW5nIHRvIHNwbGl0LlxuICogQHBhcmFtIHtSZWdFeHB8U3RyaW5nfSBzZXBhcmF0b3IgUmVnZXggb3Igc3RyaW5nIHRvIHVzZSBmb3Igc2VwYXJhdGluZyB0aGUgc3RyaW5nLlxuICogQHBhcmFtIHtOdW1iZXJ9IFtsaW1pdF0gTWF4aW11bSBudW1iZXIgb2YgaXRlbXMgdG8gaW5jbHVkZSBpbiB0aGUgcmVzdWx0IGFycmF5LlxuICogQHJldHVybnMge0FycmF5fSBBcnJheSBvZiBzdWJzdHJpbmdzLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBCYXNpYyB1c2VcbiAqIHNwbGl0KCdhIGIgYyBkJywgJyAnKTtcbiAqIC8vIC0+IFsnYScsICdiJywgJ2MnLCAnZCddXG4gKlxuICogLy8gV2l0aCBsaW1pdFxuICogc3BsaXQoJ2EgYiBjIGQnLCAnICcsIDIpO1xuICogLy8gLT4gWydhJywgJ2InXVxuICpcbiAqIC8vIEJhY2tyZWZlcmVuY2VzIGluIHJlc3VsdCBhcnJheVxuICogc3BsaXQoJy4ud29yZDEgd29yZDIuLicsIC8oW2Etel0rKShcXGQrKS9pKTtcbiAqIC8vIC0+IFsnLi4nLCAnd29yZCcsICcxJywgJyAnLCAnd29yZCcsICcyJywgJy4uJ11cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSAoZnVuY3Rpb24gc3BsaXQodW5kZWYpIHtcblxuICB2YXIgbmF0aXZlU3BsaXQgPSBTdHJpbmcucHJvdG90eXBlLnNwbGl0LFxuICAgIGNvbXBsaWFudEV4ZWNOcGNnID0gLygpPz8vLmV4ZWMoXCJcIilbMV0gPT09IHVuZGVmLFxuICAgIC8vIE5QQ0c6IG5vbnBhcnRpY2lwYXRpbmcgY2FwdHVyaW5nIGdyb3VwXG4gICAgc2VsZjtcblxuICBzZWxmID0gZnVuY3Rpb24oc3RyLCBzZXBhcmF0b3IsIGxpbWl0KSB7XG4gICAgLy8gSWYgYHNlcGFyYXRvcmAgaXMgbm90IGEgcmVnZXgsIHVzZSBgbmF0aXZlU3BsaXRgXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChzZXBhcmF0b3IpICE9PSBcIltvYmplY3QgUmVnRXhwXVwiKSB7XG4gICAgICByZXR1cm4gbmF0aXZlU3BsaXQuY2FsbChzdHIsIHNlcGFyYXRvciwgbGltaXQpO1xuICAgIH1cbiAgICB2YXIgb3V0cHV0ID0gW10sXG4gICAgICBmbGFncyA9IChzZXBhcmF0b3IuaWdub3JlQ2FzZSA/IFwiaVwiIDogXCJcIikgKyAoc2VwYXJhdG9yLm11bHRpbGluZSA/IFwibVwiIDogXCJcIikgKyAoc2VwYXJhdG9yLmV4dGVuZGVkID8gXCJ4XCIgOiBcIlwiKSArIC8vIFByb3Bvc2VkIGZvciBFUzZcbiAgICAgIChzZXBhcmF0b3Iuc3RpY2t5ID8gXCJ5XCIgOiBcIlwiKSxcbiAgICAgIC8vIEZpcmVmb3ggMytcbiAgICAgIGxhc3RMYXN0SW5kZXggPSAwLFxuICAgICAgLy8gTWFrZSBgZ2xvYmFsYCBhbmQgYXZvaWQgYGxhc3RJbmRleGAgaXNzdWVzIGJ5IHdvcmtpbmcgd2l0aCBhIGNvcHlcbiAgICAgIHNlcGFyYXRvciA9IG5ldyBSZWdFeHAoc2VwYXJhdG9yLnNvdXJjZSwgZmxhZ3MgKyBcImdcIiksXG4gICAgICBzZXBhcmF0b3IyLCBtYXRjaCwgbGFzdEluZGV4LCBsYXN0TGVuZ3RoO1xuICAgIHN0ciArPSBcIlwiOyAvLyBUeXBlLWNvbnZlcnRcbiAgICBpZiAoIWNvbXBsaWFudEV4ZWNOcGNnKSB7XG4gICAgICAvLyBEb2Vzbid0IG5lZWQgZmxhZ3MgZ3ksIGJ1dCB0aGV5IGRvbid0IGh1cnRcbiAgICAgIHNlcGFyYXRvcjIgPSBuZXcgUmVnRXhwKFwiXlwiICsgc2VwYXJhdG9yLnNvdXJjZSArIFwiJCg/IVxcXFxzKVwiLCBmbGFncyk7XG4gICAgfVxuICAgIC8qIFZhbHVlcyBmb3IgYGxpbWl0YCwgcGVyIHRoZSBzcGVjOlxuICAgICAqIElmIHVuZGVmaW5lZDogNDI5NDk2NzI5NSAvLyBNYXRoLnBvdygyLCAzMikgLSAxXG4gICAgICogSWYgMCwgSW5maW5pdHksIG9yIE5hTjogMFxuICAgICAqIElmIHBvc2l0aXZlIG51bWJlcjogbGltaXQgPSBNYXRoLmZsb29yKGxpbWl0KTsgaWYgKGxpbWl0ID4gNDI5NDk2NzI5NSkgbGltaXQgLT0gNDI5NDk2NzI5NjtcbiAgICAgKiBJZiBuZWdhdGl2ZSBudW1iZXI6IDQyOTQ5NjcyOTYgLSBNYXRoLmZsb29yKE1hdGguYWJzKGxpbWl0KSlcbiAgICAgKiBJZiBvdGhlcjogVHlwZS1jb252ZXJ0LCB0aGVuIHVzZSB0aGUgYWJvdmUgcnVsZXNcbiAgICAgKi9cbiAgICBsaW1pdCA9IGxpbWl0ID09PSB1bmRlZiA/IC0xID4+PiAwIDogLy8gTWF0aC5wb3coMiwgMzIpIC0gMVxuICAgIGxpbWl0ID4+PiAwOyAvLyBUb1VpbnQzMihsaW1pdClcbiAgICB3aGlsZSAobWF0Y2ggPSBzZXBhcmF0b3IuZXhlYyhzdHIpKSB7XG4gICAgICAvLyBgc2VwYXJhdG9yLmxhc3RJbmRleGAgaXMgbm90IHJlbGlhYmxlIGNyb3NzLWJyb3dzZXJcbiAgICAgIGxhc3RJbmRleCA9IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoO1xuICAgICAgaWYgKGxhc3RJbmRleCA+IGxhc3RMYXN0SW5kZXgpIHtcbiAgICAgICAgb3V0cHV0LnB1c2goc3RyLnNsaWNlKGxhc3RMYXN0SW5kZXgsIG1hdGNoLmluZGV4KSk7XG4gICAgICAgIC8vIEZpeCBicm93c2VycyB3aG9zZSBgZXhlY2AgbWV0aG9kcyBkb24ndCBjb25zaXN0ZW50bHkgcmV0dXJuIGB1bmRlZmluZWRgIGZvclxuICAgICAgICAvLyBub25wYXJ0aWNpcGF0aW5nIGNhcHR1cmluZyBncm91cHNcbiAgICAgICAgaWYgKCFjb21wbGlhbnRFeGVjTnBjZyAmJiBtYXRjaC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgbWF0Y2hbMF0ucmVwbGFjZShzZXBhcmF0b3IyLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aCAtIDI7IGkrKykge1xuICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzW2ldID09PSB1bmRlZikge1xuICAgICAgICAgICAgICAgIG1hdGNoW2ldID0gdW5kZWY7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWF0Y2gubGVuZ3RoID4gMSAmJiBtYXRjaC5pbmRleCA8IHN0ci5sZW5ndGgpIHtcbiAgICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShvdXRwdXQsIG1hdGNoLnNsaWNlKDEpKTtcbiAgICAgICAgfVxuICAgICAgICBsYXN0TGVuZ3RoID0gbWF0Y2hbMF0ubGVuZ3RoO1xuICAgICAgICBsYXN0TGFzdEluZGV4ID0gbGFzdEluZGV4O1xuICAgICAgICBpZiAob3V0cHV0Lmxlbmd0aCA+PSBsaW1pdCkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc2VwYXJhdG9yLmxhc3RJbmRleCA9PT0gbWF0Y2guaW5kZXgpIHtcbiAgICAgICAgc2VwYXJhdG9yLmxhc3RJbmRleCsrOyAvLyBBdm9pZCBhbiBpbmZpbml0ZSBsb29wXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChsYXN0TGFzdEluZGV4ID09PSBzdHIubGVuZ3RoKSB7XG4gICAgICBpZiAobGFzdExlbmd0aCB8fCAhc2VwYXJhdG9yLnRlc3QoXCJcIikpIHtcbiAgICAgICAgb3V0cHV0LnB1c2goXCJcIik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dHB1dC5wdXNoKHN0ci5zbGljZShsYXN0TGFzdEluZGV4KSk7XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQubGVuZ3RoID4gbGltaXQgPyBvdXRwdXQuc2xpY2UoMCwgbGltaXQpIDogb3V0cHV0O1xuICB9O1xuXG4gIHJldHVybiBzZWxmO1xufSkoKTtcbiIsIlxuLy8gQWxsIFNWRyBjaGlsZHJlbiBlbGVtZW50cywgbm90IGluIHRoaXMgbGlzdCwgc2hvdWxkIHNlbGYtY2xvc2VcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9pbnRyby5odG1sI1Rlcm1Db250YWluZXJFbGVtZW50XG4gICdhJzogdHJ1ZSxcbiAgJ2RlZnMnOiB0cnVlLFxuICAnZ2x5cGgnOiB0cnVlLFxuICAnZyc6IHRydWUsXG4gICdtYXJrZXInOiB0cnVlLFxuICAnbWFzayc6IHRydWUsXG4gICdtaXNzaW5nLWdseXBoJzogdHJ1ZSxcbiAgJ3BhdHRlcm4nOiB0cnVlLFxuICAnc3ZnJzogdHJ1ZSxcbiAgJ3N3aXRjaCc6IHRydWUsXG4gICdzeW1ib2wnOiB0cnVlLFxuXG4gIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9pbnRyby5odG1sI1Rlcm1EZXNjcmlwdGl2ZUVsZW1lbnRcbiAgJ2Rlc2MnOiB0cnVlLFxuICAnbWV0YWRhdGEnOiB0cnVlLFxuICAndGl0bGUnOiB0cnVlXG59OyIsIlxudmFyIGluaXQgPSByZXF1aXJlKCcuL2luaXQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBpbml0KFtyZXF1aXJlKCcuL21vZHVsZXMvYXR0cmlidXRlcycpLCByZXF1aXJlKCcuL21vZHVsZXMvc3R5bGUnKV0pOyIsIlxudmFyIHBhcnNlU2VsZWN0b3IgPSByZXF1aXJlKCcuL3BhcnNlLXNlbGVjdG9yJyk7XG52YXIgVk9JRF9FTEVNRU5UUyA9IHJlcXVpcmUoJy4vdm9pZC1lbGVtZW50cycpO1xudmFyIENPTlRBSU5FUl9FTEVNRU5UUyA9IHJlcXVpcmUoJy4vY29udGFpbmVyLWVsZW1lbnRzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5pdChtb2R1bGVzKSB7XG4gIGZ1bmN0aW9uIHBhcnNlKGRhdGEpIHtcbiAgICByZXR1cm4gbW9kdWxlcy5yZWR1Y2UoZnVuY3Rpb24gKGFyciwgZm4pIHtcbiAgICAgIGFyci5wdXNoKGZuKGRhdGEpKTtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfSwgW10pLmZpbHRlcihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICE9PSAnJztcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiByZW5kZXJUb1N0cmluZyh2bm9kZSkge1xuICAgIGlmICghdm5vZGUuc2VsICYmIHZub2RlLnRleHQpIHtcbiAgICAgIHJldHVybiB2bm9kZS50ZXh0O1xuICAgIH1cblxuICAgIHZub2RlLmRhdGEgPSB2bm9kZS5kYXRhIHx8IHt9O1xuXG4gICAgLy8gU3VwcG9ydCB0aHVua3NcbiAgICBpZiAodHlwZW9mIHZub2RlLnNlbCA9PT0gJ3N0cmluZycgJiYgdm5vZGUuc2VsLnNsaWNlKDAsIDUpID09PSAndGh1bmsnKSB7XG4gICAgICB2bm9kZSA9IHZub2RlLmRhdGEuZm4uYXBwbHkobnVsbCwgdm5vZGUuZGF0YS5hcmdzKTtcbiAgICB9XG5cbiAgICB2YXIgdGFnTmFtZSA9IHBhcnNlU2VsZWN0b3Iodm5vZGUuc2VsKS50YWdOYW1lO1xuICAgIHZhciBhdHRyaWJ1dGVzID0gcGFyc2Uodm5vZGUpO1xuICAgIHZhciBzdmcgPSB2bm9kZS5kYXRhLm5zID09PSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuICAgIHZhciB0YWcgPSBbXTtcblxuICAgIC8vIE9wZW4gdGFnXG4gICAgdGFnLnB1c2goJzwnICsgdGFnTmFtZSk7XG4gICAgaWYgKGF0dHJpYnV0ZXMubGVuZ3RoKSB7XG4gICAgICB0YWcucHVzaCgnICcgKyBhdHRyaWJ1dGVzLmpvaW4oJyAnKSk7XG4gICAgfVxuICAgIGlmIChzdmcgJiYgQ09OVEFJTkVSX0VMRU1FTlRTW3RhZ05hbWVdICE9PSB0cnVlKSB7XG4gICAgICB0YWcucHVzaCgnIC8nKTtcbiAgICB9XG4gICAgdGFnLnB1c2goJz4nKTtcblxuICAgIC8vIENsb3NlIHRhZywgaWYgbmVlZGVkXG4gICAgaWYgKFZPSURfRUxFTUVOVFNbdGFnTmFtZV0gIT09IHRydWUgJiYgIXN2ZyB8fCBzdmcgJiYgQ09OVEFJTkVSX0VMRU1FTlRTW3RhZ05hbWVdID09PSB0cnVlKSB7XG4gICAgICBpZiAodm5vZGUuZGF0YS5wcm9wcyAmJiB2bm9kZS5kYXRhLnByb3BzLmlubmVySFRNTCkge1xuICAgICAgICB0YWcucHVzaCh2bm9kZS5kYXRhLnByb3BzLmlubmVySFRNTCk7XG4gICAgICB9IGVsc2UgaWYgKHZub2RlLnRleHQpIHtcbiAgICAgICAgdGFnLnB1c2godm5vZGUudGV4dCk7XG4gICAgICB9IGVsc2UgaWYgKHZub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgIHZub2RlLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgdGFnLnB1c2gocmVuZGVyVG9TdHJpbmcoY2hpbGQpKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0YWcucHVzaCgnPC8nICsgdGFnTmFtZSArICc+Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhZy5qb2luKCcnKTtcbiAgfTtcbn07IiwiXG52YXIgZm9yT3duID0gcmVxdWlyZSgnbG9kYXNoLmZvcm93bicpO1xudmFyIGVzY2FwZSA9IHJlcXVpcmUoJ2xvZGFzaC5lc2NhcGUnKTtcbnZhciB1bmlvbiA9IHJlcXVpcmUoJ2xvZGFzaC51bmlvbicpO1xuXG52YXIgcGFyc2VTZWxlY3RvciA9IHJlcXVpcmUoJy4uL3BhcnNlLXNlbGVjdG9yJyk7XG5cbi8vIGRhdGEuYXR0cnMsIGRhdGEucHJvcHMsIGRhdGEuY2xhc3NcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBhdHRyaWJ1dGVzKHZub2RlKSB7XG4gIHZhciBzZWxlY3RvciA9IHBhcnNlU2VsZWN0b3Iodm5vZGUuc2VsKTtcbiAgdmFyIHBhcnNlZENsYXNzZXMgPSBzZWxlY3Rvci5jbGFzc05hbWUuc3BsaXQoJyAnKTtcblxuICB2YXIgYXR0cmlidXRlcyA9IFtdO1xuICB2YXIgY2xhc3NlcyA9IFtdO1xuICB2YXIgdmFsdWVzID0ge307XG5cbiAgaWYgKHNlbGVjdG9yLmlkKSB7XG4gICAgdmFsdWVzLmlkID0gc2VsZWN0b3IuaWQ7XG4gIH1cblxuICBzZXRBdHRyaWJ1dGVzKHZub2RlLmRhdGEucHJvcHMsIHZhbHVlcyk7XG4gIHNldEF0dHJpYnV0ZXModm5vZGUuZGF0YS5hdHRycywgdmFsdWVzKTsgLy8gYGF0dHJzYCBvdmVycmlkZSBgcHJvcHNgLCBub3Qgc3VyZSBpZiB0aGlzIGlzIGdvb2Qgc29cblxuICBpZiAodm5vZGUuZGF0YS5jbGFzcykge1xuICAgIC8vIE9taXQgYGNsYXNzTmFtZWAgYXR0cmlidXRlIGlmIGBjbGFzc2AgaXMgc2V0IG9uIHZub2RlXG4gICAgdmFsdWVzLmNsYXNzID0gdW5kZWZpbmVkO1xuICB9XG4gIGZvck93bih2bm9kZS5kYXRhLmNsYXNzLCBmdW5jdGlvbiAodmFsdWUsIGtleSkge1xuICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgY2xhc3Nlcy5wdXNoKGtleSk7XG4gICAgfVxuICB9KTtcbiAgY2xhc3NlcyA9IHVuaW9uKGNsYXNzZXMsIHZhbHVlcy5jbGFzcywgcGFyc2VkQ2xhc3NlcykuZmlsdGVyKGZ1bmN0aW9uICh4KSB7XG4gICAgcmV0dXJuIHggIT09ICcnO1xuICB9KTtcblxuICBpZiAoY2xhc3Nlcy5sZW5ndGgpIHtcbiAgICB2YWx1ZXMuY2xhc3MgPSBjbGFzc2VzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIGZvck93bih2YWx1ZXMsIGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgYXR0cmlidXRlcy5wdXNoKHZhbHVlID09PSB0cnVlID8ga2V5IDoga2V5ICsgJz1cIicgKyBlc2NhcGUodmFsdWUpICsgJ1wiJyk7XG4gIH0pO1xuXG4gIHJldHVybiBhdHRyaWJ1dGVzLmxlbmd0aCA/IGF0dHJpYnV0ZXMuam9pbignICcpIDogJyc7XG59O1xuXG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGVzKHZhbHVlcywgdGFyZ2V0KSB7XG4gIGZvck93bih2YWx1ZXMsIGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgaWYgKGtleSA9PT0gJ2h0bWxGb3InKSB7XG4gICAgICB0YXJnZXRbJ2ZvciddID0gdmFsdWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChrZXkgPT09ICdjbGFzc05hbWUnKSB7XG4gICAgICB0YXJnZXRbJ2NsYXNzJ10gPSB2YWx1ZS5zcGxpdCgnICcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoa2V5ID09PSAnaW5uZXJIVE1MJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0YXJnZXRba2V5XSA9IHZhbHVlO1xuICB9KTtcbn0iLCJ2YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXG52YXIgZm9yT3duID0gcmVxdWlyZSgnbG9kYXNoLmZvcm93bicpO1xudmFyIGVzY2FwZSA9IHJlcXVpcmUoJ2xvZGFzaC5lc2NhcGUnKTtcbnZhciBrZWJhYkNhc2UgPSByZXF1aXJlKCdsb2Rhc2gua2ViYWJjYXNlJyk7XG5cbi8vIGRhdGEuc3R5bGVcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzdHlsZSh2bm9kZSkge1xuICB2YXIgc3R5bGVzID0gW107XG4gIHZhciBzdHlsZSA9IHZub2RlLmRhdGEuc3R5bGUgfHwge307XG5cbiAgLy8gbWVyZ2UgaW4gYGRlbGF5ZWRgIHByb3BlcnRpZXNcbiAgaWYgKHN0eWxlLmRlbGF5ZWQpIHtcbiAgICBfZXh0ZW5kcyhzdHlsZSwgc3R5bGUuZGVsYXllZCk7XG4gIH1cblxuICBmb3JPd24oc3R5bGUsIGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgLy8gb21pdCBob29rIG9iamVjdHNcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgc3R5bGVzLnB1c2goa2ViYWJDYXNlKGtleSkgKyAnOiAnICsgZXNjYXBlKHZhbHVlKSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gc3R5bGVzLmxlbmd0aCA/ICdzdHlsZT1cIicgKyBzdHlsZXMuam9pbignOyAnKSArICdcIicgOiAnJztcbn07IiwiXG4vLyBodHRwczovL2dpdGh1Yi5jb20vTWF0dC1Fc2NoL3ZpcnR1YWwtZG9tL2Jsb2IvbWFzdGVyL3ZpcnR1YWwtaHlwZXJzY3JpcHQvcGFyc2UtdGFnLmpzXG5cbnZhciBzcGxpdCA9IHJlcXVpcmUoJ2Jyb3dzZXItc3BsaXQnKTtcblxudmFyIGNsYXNzSWRTcGxpdCA9IC8oW1xcLiNdP1thLXpBLVowLTlcXHUwMDdGLVxcdUZGRkZfOi1dKykvO1xudmFyIG5vdENsYXNzSWQgPSAvXlxcLnwjLztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwYXJzZVNlbGVjdG9yKHNlbGVjdG9yLCB1cHBlcikge1xuICBzZWxlY3RvciA9IHNlbGVjdG9yIHx8ICcnO1xuICB2YXIgdGFnTmFtZTtcbiAgdmFyIGlkID0gJyc7XG4gIHZhciBjbGFzc2VzID0gW107XG5cbiAgdmFyIHRhZ1BhcnRzID0gc3BsaXQoc2VsZWN0b3IsIGNsYXNzSWRTcGxpdCk7XG5cbiAgaWYgKG5vdENsYXNzSWQudGVzdCh0YWdQYXJ0c1sxXSkgfHwgc2VsZWN0b3IgPT09ICcnKSB7XG4gICAgdGFnTmFtZSA9ICdkaXYnO1xuICB9XG5cbiAgdmFyIHBhcnQsIHR5cGUsIGk7XG5cbiAgZm9yIChpID0gMDsgaSA8IHRhZ1BhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgcGFydCA9IHRhZ1BhcnRzW2ldO1xuXG4gICAgaWYgKCFwYXJ0KSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB0eXBlID0gcGFydC5jaGFyQXQoMCk7XG5cbiAgICBpZiAoIXRhZ05hbWUpIHtcbiAgICAgIHRhZ05hbWUgPSBwYXJ0O1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJy4nKSB7XG4gICAgICBjbGFzc2VzLnB1c2gocGFydC5zdWJzdHJpbmcoMSwgcGFydC5sZW5ndGgpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICcjJykge1xuICAgICAgaWQgPSBwYXJ0LnN1YnN0cmluZygxLCBwYXJ0Lmxlbmd0aCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0YWdOYW1lOiB1cHBlciA9PT0gdHJ1ZSA/IHRhZ05hbWUudG9VcHBlckNhc2UoKSA6IHRhZ05hbWUsXG4gICAgaWQ6IGlkLFxuICAgIGNsYXNzTmFtZTogY2xhc3Nlcy5qb2luKCcgJylcbiAgfTtcbn07IiwiXG4vLyBodHRwOi8vd3d3LnczLm9yZy9odG1sL3dnL2RyYWZ0cy9odG1sL21hc3Rlci9zeW50YXguaHRtbCN2b2lkLWVsZW1lbnRzXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBhcmVhOiB0cnVlLFxuICBiYXNlOiB0cnVlLFxuICBicjogdHJ1ZSxcbiAgY29sOiB0cnVlLFxuICBlbWJlZDogdHJ1ZSxcbiAgaHI6IHRydWUsXG4gIGltZzogdHJ1ZSxcbiAgaW5wdXQ6IHRydWUsXG4gIGtleWdlbjogdHJ1ZSxcbiAgbGluazogdHJ1ZSxcbiAgbWV0YTogdHJ1ZSxcbiAgcGFyYW06IHRydWUsXG4gIHNvdXJjZTogdHJ1ZSxcbiAgdHJhY2s6IHRydWUsXG4gIHdicjogdHJ1ZVxufTsiLCIvKipcbiAqIGxvZGFzaCAzLjIuMCAoQ3VzdG9tIEJ1aWxkKSA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIEJ1aWxkOiBgbG9kYXNoIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IDIwMTItMjAxNiBUaGUgRG9qbyBGb3VuZGF0aW9uIDxodHRwOi8vZG9qb2ZvdW5kYXRpb24ub3JnLz5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgMjAwOS0yMDE2IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKiBBdmFpbGFibGUgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICovXG52YXIgcm9vdCA9IHJlcXVpcmUoJ2xvZGFzaC5fcm9vdCcpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIEhUTUwgZW50aXRpZXMgYW5kIEhUTUwgY2hhcmFjdGVycy4gKi9cbnZhciByZVVuZXNjYXBlZEh0bWwgPSAvWyY8PlwiJ2BdL2csXG4gICAgcmVIYXNVbmVzY2FwZWRIdG1sID0gUmVnRXhwKHJlVW5lc2NhcGVkSHRtbC5zb3VyY2UpO1xuXG4vKiogVXNlZCB0byBtYXAgY2hhcmFjdGVycyB0byBIVE1MIGVudGl0aWVzLiAqL1xudmFyIGh0bWxFc2NhcGVzID0ge1xuICAnJic6ICcmYW1wOycsXG4gICc8JzogJyZsdDsnLFxuICAnPic6ICcmZ3Q7JyxcbiAgJ1wiJzogJyZxdW90OycsXG4gIFwiJ1wiOiAnJiMzOTsnLFxuICAnYCc6ICcmIzk2Oydcbn07XG5cbi8qKlxuICogVXNlZCBieSBgXy5lc2NhcGVgIHRvIGNvbnZlcnQgY2hhcmFjdGVycyB0byBIVE1MIGVudGl0aWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gY2hyIFRoZSBtYXRjaGVkIGNoYXJhY3RlciB0byBlc2NhcGUuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIGNoYXJhY3Rlci5cbiAqL1xuZnVuY3Rpb24gZXNjYXBlSHRtbENoYXIoY2hyKSB7XG4gIHJldHVybiBodG1sRXNjYXBlc1tjaHJdO1xufVxuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBvYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBTeW1ib2wgPSByb290LlN5bWJvbDtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFRvU3RyaW5nID0gU3ltYm9sID8gc3ltYm9sUHJvdG8udG9TdHJpbmcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN5bWJvbGAgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgY29ycmVjdGx5IGNsYXNzaWZpZWQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1N5bWJvbChTeW1ib2wuaXRlcmF0b3IpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTeW1ib2woJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIG9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpID09IHN5bWJvbFRhZyk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZyBpZiBpdCdzIG5vdCBvbmUuIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZFxuICogZm9yIGBudWxsYCBhbmQgYHVuZGVmaW5lZGAgdmFsdWVzLiBUaGUgc2lnbiBvZiBgLTBgIGlzIHByZXNlcnZlZC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzdHJpbmcuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9TdHJpbmcobnVsbCk7XG4gKiAvLyA9PiAnJ1xuICpcbiAqIF8udG9TdHJpbmcoLTApO1xuICogLy8gPT4gJy0wJ1xuICpcbiAqIF8udG9TdHJpbmcoWzEsIDIsIDNdKTtcbiAqIC8vID0+ICcxLDIsMydcbiAqL1xuZnVuY3Rpb24gdG9TdHJpbmcodmFsdWUpIHtcbiAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5ncyB0byBhdm9pZCBhIHBlcmZvcm1hbmNlIGhpdCBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIFN5bWJvbCA/IHN5bWJvbFRvU3RyaW5nLmNhbGwodmFsdWUpIDogJyc7XG4gIH1cbiAgdmFyIHJlc3VsdCA9ICh2YWx1ZSArICcnKTtcbiAgcmV0dXJuIChyZXN1bHQgPT0gJzAnICYmICgxIC8gdmFsdWUpID09IC1JTkZJTklUWSkgPyAnLTAnIDogcmVzdWx0O1xufVxuXG4vKipcbiAqIENvbnZlcnRzIHRoZSBjaGFyYWN0ZXJzIFwiJlwiLCBcIjxcIiwgXCI+XCIsICdcIicsIFwiJ1wiLCBhbmQgXCJcXGBcIiBpbiBgc3RyaW5nYCB0b1xuICogdGhlaXIgY29ycmVzcG9uZGluZyBIVE1MIGVudGl0aWVzLlxuICpcbiAqICoqTm90ZToqKiBObyBvdGhlciBjaGFyYWN0ZXJzIGFyZSBlc2NhcGVkLiBUbyBlc2NhcGUgYWRkaXRpb25hbFxuICogY2hhcmFjdGVycyB1c2UgYSB0aGlyZC1wYXJ0eSBsaWJyYXJ5IGxpa2UgW19oZV9dKGh0dHBzOi8vbXRocy5iZS9oZSkuXG4gKlxuICogVGhvdWdoIHRoZSBcIj5cIiBjaGFyYWN0ZXIgaXMgZXNjYXBlZCBmb3Igc3ltbWV0cnksIGNoYXJhY3RlcnMgbGlrZVxuICogXCI+XCIgYW5kIFwiL1wiIGRvbid0IG5lZWQgZXNjYXBpbmcgaW4gSFRNTCBhbmQgaGF2ZSBubyBzcGVjaWFsIG1lYW5pbmdcbiAqIHVubGVzcyB0aGV5J3JlIHBhcnQgb2YgYSB0YWcgb3IgdW5xdW90ZWQgYXR0cmlidXRlIHZhbHVlLlxuICogU2VlIFtNYXRoaWFzIEJ5bmVucydzIGFydGljbGVdKGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9hbWJpZ3VvdXMtYW1wZXJzYW5kcylcbiAqICh1bmRlciBcInNlbWktcmVsYXRlZCBmdW4gZmFjdFwiKSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIEJhY2t0aWNrcyBhcmUgZXNjYXBlZCBiZWNhdXNlIGluIElFIDwgOSwgdGhleSBjYW4gYnJlYWsgb3V0IG9mXG4gKiBhdHRyaWJ1dGUgdmFsdWVzIG9yIEhUTUwgY29tbWVudHMuIFNlZSBbIzU5XShodHRwczovL2h0bWw1c2VjLm9yZy8jNTkpLFxuICogWyMxMDJdKGh0dHBzOi8vaHRtbDVzZWMub3JnLyMxMDIpLCBbIzEwOF0oaHR0cHM6Ly9odG1sNXNlYy5vcmcvIzEwOCksIGFuZFxuICogWyMxMzNdKGh0dHBzOi8vaHRtbDVzZWMub3JnLyMxMzMpIG9mIHRoZSBbSFRNTDUgU2VjdXJpdHkgQ2hlYXRzaGVldF0oaHR0cHM6Ly9odG1sNXNlYy5vcmcvKVxuICogZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBXaGVuIHdvcmtpbmcgd2l0aCBIVE1MIHlvdSBzaG91bGQgYWx3YXlzIFtxdW90ZSBhdHRyaWJ1dGUgdmFsdWVzXShodHRwOi8vd29ua28uY29tL3Bvc3QvaHRtbC1lc2NhcGluZylcbiAqIHRvIHJlZHVjZSBYU1MgdmVjdG9ycy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IFN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gZXNjYXBlLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZXNjYXBlZCBzdHJpbmcuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZXNjYXBlKCdmcmVkLCBiYXJuZXksICYgcGViYmxlcycpO1xuICogLy8gPT4gJ2ZyZWQsIGJhcm5leSwgJmFtcDsgcGViYmxlcydcbiAqL1xuZnVuY3Rpb24gZXNjYXBlKHN0cmluZykge1xuICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICByZXR1cm4gKHN0cmluZyAmJiByZUhhc1VuZXNjYXBlZEh0bWwudGVzdChzdHJpbmcpKVxuICAgID8gc3RyaW5nLnJlcGxhY2UocmVVbmVzY2FwZWRIdG1sLCBlc2NhcGVIdG1sQ2hhcilcbiAgICA6IHN0cmluZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlc2NhcGU7XG4iLCIvKipcbiAqIGxvZGFzaCAzLjAuMSAoQ3VzdG9tIEJ1aWxkKSA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIEJ1aWxkOiBgbG9kYXNoIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IDIwMTItMjAxNiBUaGUgRG9qbyBGb3VuZGF0aW9uIDxodHRwOi8vZG9qb2ZvdW5kYXRpb24ub3JnLz5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgMjAwOS0yMDE2IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKiBBdmFpbGFibGUgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICovXG5cbi8qKiBVc2VkIHRvIGRldGVybWluZSBpZiB2YWx1ZXMgYXJlIG9mIHRoZSBsYW5ndWFnZSB0eXBlIGBPYmplY3RgLiAqL1xudmFyIG9iamVjdFR5cGVzID0ge1xuICAnZnVuY3Rpb24nOiB0cnVlLFxuICAnb2JqZWN0JzogdHJ1ZVxufTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IChvYmplY3RUeXBlc1t0eXBlb2YgZXhwb3J0c10gJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSlcbiAgPyBleHBvcnRzXG4gIDogdW5kZWZpbmVkO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IChvYmplY3RUeXBlc1t0eXBlb2YgbW9kdWxlXSAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSlcbiAgPyBtb2R1bGVcbiAgOiB1bmRlZmluZWQ7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZUdsb2JhbCA9IGNoZWNrR2xvYmFsKGZyZWVFeHBvcnRzICYmIGZyZWVNb2R1bGUgJiYgdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHNlbGZgLiAqL1xudmFyIGZyZWVTZWxmID0gY2hlY2tHbG9iYWwob2JqZWN0VHlwZXNbdHlwZW9mIHNlbGZdICYmIHNlbGYpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHdpbmRvd2AuICovXG52YXIgZnJlZVdpbmRvdyA9IGNoZWNrR2xvYmFsKG9iamVjdFR5cGVzW3R5cGVvZiB3aW5kb3ddICYmIHdpbmRvdyk7XG5cbi8qKiBEZXRlY3QgYHRoaXNgIGFzIHRoZSBnbG9iYWwgb2JqZWN0LiAqL1xudmFyIHRoaXNHbG9iYWwgPSBjaGVja0dsb2JhbChvYmplY3RUeXBlc1t0eXBlb2YgdGhpc10gJiYgdGhpcyk7XG5cbi8qKlxuICogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC5cbiAqXG4gKiBUaGUgYHRoaXNgIHZhbHVlIGlzIHVzZWQgaWYgaXQncyB0aGUgZ2xvYmFsIG9iamVjdCB0byBhdm9pZCBHcmVhc2Vtb25rZXknc1xuICogcmVzdHJpY3RlZCBgd2luZG93YCBvYmplY3QsIG90aGVyd2lzZSB0aGUgYHdpbmRvd2Agb2JqZWN0IGlzIHVzZWQuXG4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fFxuICAoKGZyZWVXaW5kb3cgIT09ICh0aGlzR2xvYmFsICYmIHRoaXNHbG9iYWwud2luZG93KSkgJiYgZnJlZVdpbmRvdykgfHxcbiAgICBmcmVlU2VsZiB8fCB0aGlzR2xvYmFsIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBnbG9iYWwgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtudWxsfE9iamVjdH0gUmV0dXJucyBgdmFsdWVgIGlmIGl0J3MgYSBnbG9iYWwgb2JqZWN0LCBlbHNlIGBudWxsYC5cbiAqL1xuZnVuY3Rpb24gY2hlY2tHbG9iYWwodmFsdWUpIHtcbiAgcmV0dXJuICh2YWx1ZSAmJiB2YWx1ZS5PYmplY3QgPT09IE9iamVjdCkgPyB2YWx1ZSA6IG51bGw7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcm9vdDtcbiIsIi8qKlxuICogbG9kYXNoIDMuMC4yIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kZXJuIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IDIwMTItMjAxNSBUaGUgRG9qbyBGb3VuZGF0aW9uIDxodHRwOi8vZG9qb2ZvdW5kYXRpb24ub3JnLz5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgMjAwOS0yMDE1IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKiBBdmFpbGFibGUgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICovXG52YXIgYmFzZUZvciA9IHJlcXVpcmUoJ2xvZGFzaC5fYmFzZWZvcicpLFxuICAgIGJpbmRDYWxsYmFjayA9IHJlcXVpcmUoJ2xvZGFzaC5fYmluZGNhbGxiYWNrJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJ2xvZGFzaC5rZXlzJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yT3duYCB3aXRob3V0IHN1cHBvcnQgZm9yIGNhbGxiYWNrXG4gKiBzaG9ydGhhbmRzIGFuZCBgdGhpc2AgYmluZGluZy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlRm9yT3duKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgcmV0dXJuIGJhc2VGb3Iob2JqZWN0LCBpdGVyYXRlZSwga2V5cyk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGZvciBgXy5mb3JPd25gIG9yIGBfLmZvck93blJpZ2h0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gb2JqZWN0RnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGFuIG9iamVjdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGVhY2ggZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUZvck93bihvYmplY3RGdW5jKSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlLCB0aGlzQXJnKSB7XG4gICAgaWYgKHR5cGVvZiBpdGVyYXRlZSAhPSAnZnVuY3Rpb24nIHx8IHRoaXNBcmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaXRlcmF0ZWUgPSBiaW5kQ2FsbGJhY2soaXRlcmF0ZWUsIHRoaXNBcmcsIDMpO1xuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0RnVuYyhvYmplY3QsIGl0ZXJhdGVlKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBJdGVyYXRlcyBvdmVyIG93biBlbnVtZXJhYmxlIHByb3BlcnRpZXMgb2YgYW4gb2JqZWN0IGludm9raW5nIGBpdGVyYXRlZWBcbiAqIGZvciBlYWNoIHByb3BlcnR5LiBUaGUgYGl0ZXJhdGVlYCBpcyBib3VuZCB0byBgdGhpc0FyZ2AgYW5kIGludm9rZWQgd2l0aFxuICogdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGtleSwgb2JqZWN0KS4gSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvblxuICogZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHsqfSBbdGhpc0FyZ10gVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBpdGVyYXRlZWAuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmZvck93bihuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gKiAgIGNvbnNvbGUubG9nKGtleSk7XG4gKiB9KTtcbiAqIC8vID0+IGxvZ3MgJ2EnIGFuZCAnYicgKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xudmFyIGZvck93biA9IGNyZWF0ZUZvck93bihiYXNlRm9yT3duKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmb3JPd247XG4iLCIvKipcbiAqIGxvZGFzaCAzLjAuMyAoQ3VzdG9tIEJ1aWxkKSA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIEJ1aWxkOiBgbG9kYXNoIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IDIwMTItMjAxNiBUaGUgRG9qbyBGb3VuZGF0aW9uIDxodHRwOi8vZG9qb2ZvdW5kYXRpb24ub3JnLz5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgMjAwOS0yMDE2IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKiBBdmFpbGFibGUgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICovXG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGJhc2VGb3JJbmAgYW5kIGBiYXNlRm9yT3duYCB3aGljaCBpdGVyYXRlc1xuICogb3ZlciBgb2JqZWN0YCBwcm9wZXJ0aWVzIHJldHVybmVkIGJ5IGBrZXlzRnVuY2AgaW52b2tpbmcgYGl0ZXJhdGVlYCBmb3JcbiAqIGVhY2ggcHJvcGVydHkuIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseVxuICogcmV0dXJuaW5nIGBmYWxzZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBgb2JqZWN0YC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbnZhciBiYXNlRm9yID0gY3JlYXRlQmFzZUZvcigpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBiYXNlIGZ1bmN0aW9uIGZvciBtZXRob2RzIGxpa2UgYF8uZm9ySW5gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJhc2UgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VGb3IoZnJvbVJpZ2h0KSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzRnVuYykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChvYmplY3QpLFxuICAgICAgICBwcm9wcyA9IGtleXNGdW5jKG9iamVjdCksXG4gICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgdmFyIGtleSA9IHByb3BzW2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdO1xuICAgICAgaWYgKGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sIGtleSwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRm9yO1xuIiwiLyoqXG4gKiBsb2Rhc2ggMy4wLjEgKEN1c3RvbSBCdWlsZCkgPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBCdWlsZDogYGxvZGFzaCBtb2Rlcm4gbW9kdWxhcml6ZSBleHBvcnRzPVwibnBtXCIgLW8gLi9gXG4gKiBDb3B5cmlnaHQgMjAxMi0yMDE1IFRoZSBEb2pvIEZvdW5kYXRpb24gPGh0dHA6Ly9kb2pvZm91bmRhdGlvbi5vcmcvPlxuICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMyA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT5cbiAqIENvcHlyaWdodCAyMDA5LTIwMTUgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnNcbiAqIEF2YWlsYWJsZSB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKi9cblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VDYWxsYmFja2Agd2hpY2ggb25seSBzdXBwb3J0cyBgdGhpc2AgYmluZGluZ1xuICogYW5kIHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgdG8gcHJvdmlkZSB0byBgZnVuY2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGJpbmQuXG4gKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbYXJnQ291bnRdIFRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHRvIHByb3ZpZGUgdG8gYGZ1bmNgLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBjYWxsYmFjay5cbiAqL1xuZnVuY3Rpb24gYmluZENhbGxiYWNrKGZ1bmMsIHRoaXNBcmcsIGFyZ0NvdW50KSB7XG4gIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGlkZW50aXR5O1xuICB9XG4gIGlmICh0aGlzQXJnID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gZnVuYztcbiAgfVxuICBzd2l0Y2ggKGFyZ0NvdW50KSB7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgdmFsdWUpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gICAgfTtcbiAgICBjYXNlIDQ6IHJldHVybiBmdW5jdGlvbihhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pO1xuICAgIH07XG4gICAgY2FzZSA1OiByZXR1cm4gZnVuY3Rpb24odmFsdWUsIG90aGVyLCBrZXksIG9iamVjdCwgc291cmNlKSB7XG4gICAgICByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIHZhbHVlLCBvdGhlciwga2V5LCBvYmplY3QsIHNvdXJjZSk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpc0FyZywgYXJndW1lbnRzKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBmaXJzdCBhcmd1bWVudCBwcm92aWRlZCB0byBpdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IFV0aWxpdHlcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgQW55IHZhbHVlLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgYHZhbHVlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ3VzZXInOiAnZnJlZCcgfTtcbiAqXG4gKiBfLmlkZW50aXR5KG9iamVjdCkgPT09IG9iamVjdDtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaWRlbnRpdHkodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJpbmRDYWxsYmFjaztcbiIsIi8qKlxuICogbG9kYXNoIDMuMS4yIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kZXJuIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IDIwMTItMjAxNSBUaGUgRG9qbyBGb3VuZGF0aW9uIDxodHRwOi8vZG9qb2ZvdW5kYXRpb24ub3JnLz5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgMjAwOS0yMDE1IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKiBBdmFpbGFibGUgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICovXG52YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnbG9kYXNoLl9nZXRuYXRpdmUnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJ2xvZGFzaC5pc2FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCdsb2Rhc2guaXNhcnJheScpO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMuICovXG52YXIgcmVJc1VpbnQgPSAvXlxcZCskLztcblxuLyoqIFVzZWQgZm9yIG5hdGl2ZSBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qIE5hdGl2ZSBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlS2V5cyA9IGdldE5hdGl2ZShPYmplY3QsICdrZXlzJyk7XG5cbi8qKlxuICogVXNlZCBhcyB0aGUgW21heGltdW0gbGVuZ3RoXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1udW1iZXIubWF4X3NhZmVfaW50ZWdlcilcbiAqIG9mIGFuIGFycmF5LWxpa2UgdmFsdWUuXG4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wcm9wZXJ0eWAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlUHJvcGVydHkoa2V5KSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgfTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IHZhbHVlIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gYXZvaWQgYSBbSklUIGJ1Z10oaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjc5MilcbiAqIHRoYXQgYWZmZWN0cyBTYWZhcmkgb24gYXQgbGVhc3QgaU9TIDguMS04LjMgQVJNNjQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBcImxlbmd0aFwiIHZhbHVlLlxuICovXG52YXIgZ2V0TGVuZ3RoID0gYmFzZVByb3BlcnR5KCdsZW5ndGgnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgaXNMZW5ndGgoZ2V0TGVuZ3RoKHZhbHVlKSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPU1BWF9TQUZFX0lOVEVHRVJdIFRoZSB1cHBlciBib3VuZHMgb2YgYSB2YWxpZCBpbmRleC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJbmRleCh2YWx1ZSwgbGVuZ3RoKSB7XG4gIHZhbHVlID0gKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyB8fCByZUlzVWludC50ZXN0KHZhbHVlKSkgPyArdmFsdWUgOiAtMTtcbiAgbGVuZ3RoID0gbGVuZ3RoID09IG51bGwgPyBNQVhfU0FGRV9JTlRFR0VSIDogbGVuZ3RoO1xuICByZXR1cm4gdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8IGxlbmd0aDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIGlzIGJhc2VkIG9uIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy10b2xlbmd0aCkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJiB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbi8qKlxuICogQSBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBvZiBgT2JqZWN0LmtleXNgIHdoaWNoIGNyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlXG4gKiBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gc2hpbUtleXMob2JqZWN0KSB7XG4gIHZhciBwcm9wcyA9IGtleXNJbihvYmplY3QpLFxuICAgICAgcHJvcHNMZW5ndGggPSBwcm9wcy5sZW5ndGgsXG4gICAgICBsZW5ndGggPSBwcm9wc0xlbmd0aCAmJiBvYmplY3QubGVuZ3RoO1xuXG4gIHZhciBhbGxvd0luZGV4ZXMgPSAhIWxlbmd0aCAmJiBpc0xlbmd0aChsZW5ndGgpICYmXG4gICAgKGlzQXJyYXkob2JqZWN0KSB8fCBpc0FyZ3VtZW50cyhvYmplY3QpKTtcblxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgcHJvcHNMZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gcHJvcHNbaW5kZXhdO1xuICAgIGlmICgoYWxsb3dJbmRleGVzICYmIGlzSW5kZXgoa2V5LCBsZW5ndGgpKSB8fCBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGUgW2xhbmd1YWdlIHR5cGVdKGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDgpIG9mIGBPYmplY3RgLlxuICogKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0KHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdCgxKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIC8vIEF2b2lkIGEgVjggSklUIGJ1ZyBpbiBDaHJvbWUgMTktMjAuXG4gIC8vIFNlZSBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MjI5MSBmb3IgbW9yZSBkZXRhaWxzLlxuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuICEhdmFsdWUgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy4gU2VlIHRoZVxuICogW0VTIHNwZWNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW9iamVjdC5rZXlzKVxuICogZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8ua2V5cygnaGknKTtcbiAqIC8vID0+IFsnMCcsICcxJ11cbiAqL1xudmFyIGtleXMgPSAhbmF0aXZlS2V5cyA/IHNoaW1LZXlzIDogZnVuY3Rpb24ob2JqZWN0KSB7XG4gIHZhciBDdG9yID0gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3QuY29uc3RydWN0b3I7XG4gIGlmICgodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSA9PT0gb2JqZWN0KSB8fFxuICAgICAgKHR5cGVvZiBvYmplY3QgIT0gJ2Z1bmN0aW9uJyAmJiBpc0FycmF5TGlrZShvYmplY3QpKSkge1xuICAgIHJldHVybiBzaGltS2V5cyhvYmplY3QpO1xuICB9XG4gIHJldHVybiBpc09iamVjdChvYmplY3QpID8gbmF0aXZlS2V5cyhvYmplY3QpIDogW107XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8ua2V5c0luKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InLCAnYyddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKi9cbmZ1bmN0aW9uIGtleXNJbihvYmplY3QpIHtcbiAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICB9XG4gIHZhciBsZW5ndGggPSBvYmplY3QubGVuZ3RoO1xuICBsZW5ndGggPSAobGVuZ3RoICYmIGlzTGVuZ3RoKGxlbmd0aCkgJiZcbiAgICAoaXNBcnJheShvYmplY3QpIHx8IGlzQXJndW1lbnRzKG9iamVjdCkpICYmIGxlbmd0aCkgfHwgMDtcblxuICB2YXIgQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcixcbiAgICAgIGluZGV4ID0gLTEsXG4gICAgICBpc1Byb3RvID0gdHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSA9PT0gb2JqZWN0LFxuICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKSxcbiAgICAgIHNraXBJbmRleGVzID0gbGVuZ3RoID4gMDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdFtpbmRleF0gPSAoaW5kZXggKyAnJyk7XG4gIH1cbiAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgIGlmICghKHNraXBJbmRleGVzICYmIGlzSW5kZXgoa2V5LCBsZW5ndGgpKSAmJlxuICAgICAgICAhKGtleSA9PSAnY29uc3RydWN0b3InICYmIChpc1Byb3RvIHx8ICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGtleXM7XG4iLCIvKipcbiAqIGxvZGFzaCAzLjkuMSAoQ3VzdG9tIEJ1aWxkKSA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIEJ1aWxkOiBgbG9kYXNoIG1vZGVybiBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAqIENvcHlyaWdodCAyMDEyLTIwMTUgVGhlIERvam8gRm91bmRhdGlvbiA8aHR0cDovL2Rvam9mb3VuZGF0aW9uLm9yZy8+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IDIwMDktMjAxNSBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICogQXZhaWxhYmxlIHVuZGVyIE1JVCBsaWNlbnNlIDxodHRwczovL2xvZGFzaC5jb20vbGljZW5zZT5cbiAqL1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBob3N0IGNvbnN0cnVjdG9ycyAoU2FmYXJpID4gNSkuICovXG52YXIgcmVJc0hvc3RDdG9yID0gL15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuICEhdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG4vKiogVXNlZCBmb3IgbmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZuVG9TdHJpbmcgPSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZSBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG9ialRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBpZiBhIG1ldGhvZCBpcyBuYXRpdmUuICovXG52YXIgcmVJc05hdGl2ZSA9IFJlZ0V4cCgnXicgK1xuICBmblRvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UoL1tcXFxcXiQuKis/KClbXFxde318XS9nLCAnXFxcXCQmJylcbiAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4pO1xuXG4vKipcbiAqIEdldHMgdGhlIG5hdGl2ZSBmdW5jdGlvbiBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LCBrZXkpIHtcbiAgdmFyIHZhbHVlID0gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgcmV0dXJuIGlzTmF0aXZlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgY29ycmVjdGx5IGNsYXNzaWZpZWQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Z1bmN0aW9uKF8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAvLyBpbiBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaSB3aGljaCByZXR1cm4gJ2Z1bmN0aW9uJyBmb3IgcmVnZXhlc1xuICAvLyBhbmQgU2FmYXJpIDggZXF1aXZhbGVudHMgd2hpY2ggcmV0dXJuICdvYmplY3QnIGZvciB0eXBlZCBhcnJheSBjb25zdHJ1Y3RvcnMuXG4gIHJldHVybiBpc09iamVjdCh2YWx1ZSkgJiYgb2JqVG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT0gZnVuY1RhZztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGUgW2xhbmd1YWdlIHR5cGVdKGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDgpIG9mIGBPYmplY3RgLlxuICogKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0KHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdCgxKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIC8vIEF2b2lkIGEgVjggSklUIGJ1ZyBpbiBDaHJvbWUgMTktMjAuXG4gIC8vIFNlZSBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MjI5MSBmb3IgbW9yZSBkZXRhaWxzLlxuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuICEhdmFsdWUgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc05hdGl2ZShBcnJheS5wcm90b3R5cGUucHVzaCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc05hdGl2ZShfKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTmF0aXZlKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xuICAgIHJldHVybiByZUlzTmF0aXZlLnRlc3QoZm5Ub1N0cmluZy5jYWxsKHZhbHVlKSk7XG4gIH1cbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgcmVJc0hvc3RDdG9yLnRlc3QodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE5hdGl2ZTtcbiIsIi8qKlxuICogbG9kYXNoIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kdWxhcml6ZSBleHBvcnRzPVwibnBtXCIgLW8gLi9gXG4gKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyA8aHR0cHM6Ly9qcXVlcnkub3JnLz5cbiAqIFJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlIDxodHRwczovL2xvZGFzaC5jb20vbGljZW5zZT5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnNcbiAqL1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnByb3BlcnR5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VQcm9wZXJ0eShrZXkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xuICB9O1xufVxuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuLyoqXG4gKiBHZXRzIHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IHZhbHVlIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gYXZvaWQgYVxuICogW0pJVCBidWddKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI3OTIpIHRoYXQgYWZmZWN0c1xuICogU2FmYXJpIG9uIGF0IGxlYXN0IGlPUyA4LjEtOC4zIEFSTTY0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgXCJsZW5ndGhcIiB2YWx1ZS5cbiAqL1xudmFyIGdldExlbmd0aCA9IGJhc2VQcm9wZXJ0eSgnbGVuZ3RoJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJndW1lbnRzKHZhbHVlKSB7XG4gIC8vIFNhZmFyaSA4LjEgaW5jb3JyZWN0bHkgbWFrZXMgYGFyZ3VtZW50cy5jYWxsZWVgIGVudW1lcmFibGUgaW4gc3RyaWN0IG1vZGUuXG4gIHJldHVybiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkgJiYgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpICYmXG4gICAgKCFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgfHwgb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT0gYXJnc1RhZyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZS4gQSB2YWx1ZSBpcyBjb25zaWRlcmVkIGFycmF5LWxpa2UgaWYgaXQnc1xuICogbm90IGEgZnVuY3Rpb24gYW5kIGhhcyBhIGB2YWx1ZS5sZW5ndGhgIHRoYXQncyBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvclxuICogZXF1YWwgdG8gYDBgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE51bWJlci5NQVhfU0FGRV9JTlRFR0VSYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKGdldExlbmd0aCh2YWx1ZSkpICYmICFpc0Z1bmN0aW9uKHZhbHVlKTtcbn1cblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzQXJyYXlMaWtlYCBleGNlcHQgdGhhdCBpdCBhbHNvIGNoZWNrcyBpZiBgdmFsdWVgXG4gKiBpcyBhbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXktbGlrZSBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2VPYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaXNBcnJheUxpa2UodmFsdWUpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGZ1bmN0aW9uLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNGdW5jdGlvbihfKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oL2FiYy8pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICAvLyBUaGUgdXNlIG9mIGBPYmplY3QjdG9TdHJpbmdgIGF2b2lkcyBpc3N1ZXMgd2l0aCB0aGUgYHR5cGVvZmAgb3BlcmF0b3JcbiAgLy8gaW4gU2FmYXJpIDggd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXkgYW5kIHdlYWsgbWFwIGNvbnN0cnVjdG9ycyxcbiAgLy8gYW5kIFBoYW50b21KUyAxLjkgd2hpY2ggcmV0dXJucyAnZnVuY3Rpb24nIGZvciBgTm9kZUxpc3RgIGluc3RhbmNlcy5cbiAgdmFyIHRhZyA9IGlzT2JqZWN0KHZhbHVlKSA/IG9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpIDogJyc7XG4gIHJldHVybiB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBsZW5ndGguXG4gKlxuICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gaXMgbG9vc2VseSBiYXNlZCBvblxuICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLXRvbGVuZ3RoKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGxlbmd0aCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNMZW5ndGgoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0FyZ3VtZW50cztcbiIsIi8qKlxuICogbG9kYXNoIDMuMC40IChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kZXJuIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IDIwMTItMjAxNSBUaGUgRG9qbyBGb3VuZGF0aW9uIDxodHRwOi8vZG9qb2ZvdW5kYXRpb24ub3JnLz5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgMjAwOS0yMDE1IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKiBBdmFpbGFibGUgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICovXG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBob3N0IGNvbnN0cnVjdG9ycyAoU2FmYXJpID4gNSkuICovXG52YXIgcmVJc0hvc3RDdG9yID0gL15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuICEhdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG4vKiogVXNlZCBmb3IgbmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZuVG9TdHJpbmcgPSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZSBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG9ialRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBpZiBhIG1ldGhvZCBpcyBuYXRpdmUuICovXG52YXIgcmVJc05hdGl2ZSA9IFJlZ0V4cCgnXicgK1xuICBmblRvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UoL1tcXFxcXiQuKis/KClbXFxde318XS9nLCAnXFxcXCQmJylcbiAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4pO1xuXG4vKiBOYXRpdmUgbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUlzQXJyYXkgPSBnZXROYXRpdmUoQXJyYXksICdpc0FycmF5Jyk7XG5cbi8qKlxuICogVXNlZCBhcyB0aGUgW21heGltdW0gbGVuZ3RoXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1udW1iZXIubWF4X3NhZmVfaW50ZWdlcilcbiAqIG9mIGFuIGFycmF5LWxpa2UgdmFsdWUuXG4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqXG4gKiBHZXRzIHRoZSBuYXRpdmUgZnVuY3Rpb24gYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgbWV0aG9kIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBpZiBpdCdzIG5hdGl2ZSwgZWxzZSBgdW5kZWZpbmVkYC5cbiAqL1xuZnVuY3Rpb24gZ2V0TmF0aXZlKG9iamVjdCwga2V5KSB7XG4gIHZhciB2YWx1ZSA9IG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gIHJldHVybiBpc05hdGl2ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIGlzIGJhc2VkIG9uIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy10b2xlbmd0aCkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJiB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgY29ycmVjdGx5IGNsYXNzaWZpZWQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5KGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJyYXkgPSBuYXRpdmVJc0FycmF5IHx8IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgb2JqVG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT0gYXJyYXlUYWc7XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgY29ycmVjdGx5IGNsYXNzaWZpZWQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Z1bmN0aW9uKF8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAvLyBpbiBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaSB3aGljaCByZXR1cm4gJ2Z1bmN0aW9uJyBmb3IgcmVnZXhlc1xuICAvLyBhbmQgU2FmYXJpIDggZXF1aXZhbGVudHMgd2hpY2ggcmV0dXJuICdvYmplY3QnIGZvciB0eXBlZCBhcnJheSBjb25zdHJ1Y3RvcnMuXG4gIHJldHVybiBpc09iamVjdCh2YWx1ZSkgJiYgb2JqVG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT0gZnVuY1RhZztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGUgW2xhbmd1YWdlIHR5cGVdKGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDgpIG9mIGBPYmplY3RgLlxuICogKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0KHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdCgxKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIC8vIEF2b2lkIGEgVjggSklUIGJ1ZyBpbiBDaHJvbWUgMTktMjAuXG4gIC8vIFNlZSBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MjI5MSBmb3IgbW9yZSBkZXRhaWxzLlxuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuICEhdmFsdWUgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc05hdGl2ZShBcnJheS5wcm90b3R5cGUucHVzaCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc05hdGl2ZShfKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTmF0aXZlKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xuICAgIHJldHVybiByZUlzTmF0aXZlLnRlc3QoZm5Ub1N0cmluZy5jYWxsKHZhbHVlKSk7XG4gIH1cbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgcmVJc0hvc3RDdG9yLnRlc3QodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXk7XG4iLCIvKipcbiAqIGxvZGFzaCAzLjEuMSAoQ3VzdG9tIEJ1aWxkKSA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIEJ1aWxkOiBgbG9kYXNoIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IDIwMTItMjAxNiBUaGUgRG9qbyBGb3VuZGF0aW9uIDxodHRwOi8vZG9qb2ZvdW5kYXRpb24ub3JnLz5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgMjAwOS0yMDE2IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKiBBdmFpbGFibGUgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICovXG52YXIgZGVidXJyID0gcmVxdWlyZSgnbG9kYXNoLmRlYnVycicpLFxuICAgIHdvcmRzID0gcmVxdWlyZSgnbG9kYXNoLndvcmRzJyk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnJlZHVjZWAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2luaXRBY2N1bV0gU3BlY2lmeSB1c2luZyB0aGUgZmlyc3QgZWxlbWVudCBvZiBgYXJyYXlgIGFzIHRoZSBpbml0aWFsIHZhbHVlLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBhcnJheVJlZHVjZShhcnJheSwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0pIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgaWYgKGluaXRBY2N1bSAmJiBsZW5ndGgpIHtcbiAgICBhY2N1bXVsYXRvciA9IGFycmF5WysraW5kZXhdO1xuICB9XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYWNjdW11bGF0b3IgPSBpdGVyYXRlZShhY2N1bXVsYXRvciwgYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpO1xuICB9XG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5jYW1lbENhc2VgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdG8gY29tYmluZSBlYWNoIHdvcmQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb21wb3VuZGVyIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVDb21wb3VuZGVyKGNhbGxiYWNrKSB7XG4gIHJldHVybiBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICByZXR1cm4gYXJyYXlSZWR1Y2Uod29yZHMoZGVidXJyKHN0cmluZykpLCBjYWxsYmFjaywgJycpO1xuICB9O1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIFtrZWJhYiBjYXNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MZXR0ZXJfY2FzZSNTcGVjaWFsX2Nhc2Vfc3R5bGVzKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IFN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGtlYmFiIGNhc2VkIHN0cmluZy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5rZWJhYkNhc2UoJ0ZvbyBCYXInKTtcbiAqIC8vID0+ICdmb28tYmFyJ1xuICpcbiAqIF8ua2ViYWJDYXNlKCdmb29CYXInKTtcbiAqIC8vID0+ICdmb28tYmFyJ1xuICpcbiAqIF8ua2ViYWJDYXNlKCdfX2Zvb19iYXJfXycpO1xuICogLy8gPT4gJ2Zvby1iYXInXG4gKi9cbnZhciBrZWJhYkNhc2UgPSBjcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCwgd29yZCwgaW5kZXgpIHtcbiAgcmV0dXJuIHJlc3VsdCArIChpbmRleCA/ICctJyA6ICcnKSArIHdvcmQudG9Mb3dlckNhc2UoKTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGtlYmFiQ2FzZTtcbiIsIi8qKlxuICogbG9kYXNoIDMuMi4wIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kdWxhcml6ZSBleHBvcnRzPVwibnBtXCIgLW8gLi9gXG4gKiBDb3B5cmlnaHQgMjAxMi0yMDE2IFRoZSBEb2pvIEZvdW5kYXRpb24gPGh0dHA6Ly9kb2pvZm91bmRhdGlvbi5vcmcvPlxuICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMyA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT5cbiAqIENvcHlyaWdodCAyMDA5LTIwMTYgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnNcbiAqIEF2YWlsYWJsZSB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKi9cbnZhciByb290ID0gcmVxdWlyZSgnbG9kYXNoLl9yb290Jyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDA7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxuLyoqIFVzZWQgdG8gbWF0Y2ggbGF0aW4tMSBzdXBwbGVtZW50YXJ5IGxldHRlcnMgKGV4Y2x1ZGluZyBtYXRoZW1hdGljYWwgb3BlcmF0b3JzKS4gKi9cbnZhciByZUxhdGluMSA9IC9bXFx4YzAtXFx4ZDZcXHhkOC1cXHhkZVxceGRmLVxceGY2XFx4ZjgtXFx4ZmZdL2c7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjaGFyYWN0ZXIgY2xhc3Nlcy4gKi9cbnZhciByc0NvbWJvTWFya3NSYW5nZSA9ICdcXFxcdTAzMDAtXFxcXHUwMzZmXFxcXHVmZTIwLVxcXFx1ZmUyMycsXG4gICAgcnNDb21ib1N5bWJvbHNSYW5nZSA9ICdcXFxcdTIwZDAtXFxcXHUyMGYwJztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNhcHR1cmUgZ3JvdXBzLiAqL1xudmFyIHJzQ29tYm8gPSAnWycgKyByc0NvbWJvTWFya3NSYW5nZSArIHJzQ29tYm9TeW1ib2xzUmFuZ2UgKyAnXSc7XG5cbi8qKlxuICogVXNlZCB0byBtYXRjaCBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3MpIGFuZFxuICogW2NvbWJpbmluZyBkaWFjcml0aWNhbCBtYXJrcyBmb3Igc3ltYm9sc10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tYmluaW5nX0RpYWNyaXRpY2FsX01hcmtzX2Zvcl9TeW1ib2xzKS5cbiAqL1xudmFyIHJlQ29tYm9NYXJrID0gUmVnRXhwKHJzQ29tYm8sICdnJyk7XG5cbi8qKiBVc2VkIHRvIG1hcCBsYXRpbi0xIHN1cHBsZW1lbnRhcnkgbGV0dGVycyB0byBiYXNpYyBsYXRpbiBsZXR0ZXJzLiAqL1xudmFyIGRlYnVycmVkTGV0dGVycyA9IHtcbiAgJ1xceGMwJzogJ0EnLCAgJ1xceGMxJzogJ0EnLCAnXFx4YzInOiAnQScsICdcXHhjMyc6ICdBJywgJ1xceGM0JzogJ0EnLCAnXFx4YzUnOiAnQScsXG4gICdcXHhlMCc6ICdhJywgICdcXHhlMSc6ICdhJywgJ1xceGUyJzogJ2EnLCAnXFx4ZTMnOiAnYScsICdcXHhlNCc6ICdhJywgJ1xceGU1JzogJ2EnLFxuICAnXFx4YzcnOiAnQycsICAnXFx4ZTcnOiAnYycsXG4gICdcXHhkMCc6ICdEJywgICdcXHhmMCc6ICdkJyxcbiAgJ1xceGM4JzogJ0UnLCAgJ1xceGM5JzogJ0UnLCAnXFx4Y2EnOiAnRScsICdcXHhjYic6ICdFJyxcbiAgJ1xceGU4JzogJ2UnLCAgJ1xceGU5JzogJ2UnLCAnXFx4ZWEnOiAnZScsICdcXHhlYic6ICdlJyxcbiAgJ1xceGNDJzogJ0knLCAgJ1xceGNkJzogJ0knLCAnXFx4Y2UnOiAnSScsICdcXHhjZic6ICdJJyxcbiAgJ1xceGVDJzogJ2knLCAgJ1xceGVkJzogJ2knLCAnXFx4ZWUnOiAnaScsICdcXHhlZic6ICdpJyxcbiAgJ1xceGQxJzogJ04nLCAgJ1xceGYxJzogJ24nLFxuICAnXFx4ZDInOiAnTycsICAnXFx4ZDMnOiAnTycsICdcXHhkNCc6ICdPJywgJ1xceGQ1JzogJ08nLCAnXFx4ZDYnOiAnTycsICdcXHhkOCc6ICdPJyxcbiAgJ1xceGYyJzogJ28nLCAgJ1xceGYzJzogJ28nLCAnXFx4ZjQnOiAnbycsICdcXHhmNSc6ICdvJywgJ1xceGY2JzogJ28nLCAnXFx4ZjgnOiAnbycsXG4gICdcXHhkOSc6ICdVJywgICdcXHhkYSc6ICdVJywgJ1xceGRiJzogJ1UnLCAnXFx4ZGMnOiAnVScsXG4gICdcXHhmOSc6ICd1JywgICdcXHhmYSc6ICd1JywgJ1xceGZiJzogJ3UnLCAnXFx4ZmMnOiAndScsXG4gICdcXHhkZCc6ICdZJywgICdcXHhmZCc6ICd5JywgJ1xceGZmJzogJ3knLFxuICAnXFx4YzYnOiAnQWUnLCAnXFx4ZTYnOiAnYWUnLFxuICAnXFx4ZGUnOiAnVGgnLCAnXFx4ZmUnOiAndGgnLFxuICAnXFx4ZGYnOiAnc3MnXG59O1xuXG4vKipcbiAqIFVzZWQgYnkgYF8uZGVidXJyYCB0byBjb252ZXJ0IGxhdGluLTEgc3VwcGxlbWVudGFyeSBsZXR0ZXJzIHRvIGJhc2ljIGxhdGluIGxldHRlcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBsZXR0ZXIgVGhlIG1hdGNoZWQgbGV0dGVyIHRvIGRlYnVyci5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGRlYnVycmVkIGxldHRlci5cbiAqL1xuZnVuY3Rpb24gZGVidXJyTGV0dGVyKGxldHRlcikge1xuICByZXR1cm4gZGVidXJyZWRMZXR0ZXJzW2xldHRlcl07XG59XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZSBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFN5bWJvbCA9IHJvb3QuU3ltYm9sO1xuXG4vKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbnZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgc3ltYm9sVG9TdHJpbmcgPSBTeW1ib2wgPyBzeW1ib2xQcm90by50b1N0cmluZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuICEhdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3ltYm9sYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBjb3JyZWN0bHkgY2xhc3NpZmllZCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3ltYm9sKFN5bWJvbC5pdGVyYXRvcik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1N5bWJvbCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzeW1ib2wnIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT0gc3ltYm9sVGFnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIGlmIGl0J3Mgbm90IG9uZS4gQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkXG4gKiBmb3IgYG51bGxgIGFuZCBgdW5kZWZpbmVkYCB2YWx1ZXMuIFRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0cmluZy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b1N0cmluZyhudWxsKTtcbiAqIC8vID0+ICcnXG4gKlxuICogXy50b1N0cmluZygtMCk7XG4gKiAvLyA9PiAnLTAnXG4gKlxuICogXy50b1N0cmluZyhbMSwgMiwgM10pO1xuICogLy8gPT4gJzEsMiwzJ1xuICovXG5mdW5jdGlvbiB0b1N0cmluZyh2YWx1ZSkge1xuICAvLyBFeGl0IGVhcmx5IGZvciBzdHJpbmdzIHRvIGF2b2lkIGEgcGVyZm9ybWFuY2UgaGl0IGluIHNvbWUgZW52aXJvbm1lbnRzLlxuICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gU3ltYm9sID8gc3ltYm9sVG9TdHJpbmcuY2FsbCh2YWx1ZSkgOiAnJztcbiAgfVxuICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG59XG5cbi8qKlxuICogRGVidXJycyBgc3RyaW5nYCBieSBjb252ZXJ0aW5nIFtsYXRpbi0xIHN1cHBsZW1lbnRhcnkgbGV0dGVyc10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGF0aW4tMV9TdXBwbGVtZW50XyhVbmljb2RlX2Jsb2NrKSNDaGFyYWN0ZXJfdGFibGUpXG4gKiB0byBiYXNpYyBsYXRpbiBsZXR0ZXJzIGFuZCByZW1vdmluZyBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3MpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgU3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBkZWJ1cnIuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBkZWJ1cnJlZCBzdHJpbmcuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZGVidXJyKCdkw6lqw6AgdnUnKTtcbiAqIC8vID0+ICdkZWphIHZ1J1xuICovXG5mdW5jdGlvbiBkZWJ1cnIoc3RyaW5nKSB7XG4gIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gIHJldHVybiBzdHJpbmcgJiYgc3RyaW5nLnJlcGxhY2UocmVMYXRpbjEsIGRlYnVyckxldHRlcikucmVwbGFjZShyZUNvbWJvTWFyaywgJycpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRlYnVycjtcbiIsIi8qKlxuICogbG9kYXNoIDMuMC4xIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kdWxhcml6ZSBleHBvcnRzPVwibnBtXCIgLW8gLi9gXG4gKiBDb3B5cmlnaHQgMjAxMi0yMDE2IFRoZSBEb2pvIEZvdW5kYXRpb24gPGh0dHA6Ly9kb2pvZm91bmRhdGlvbi5vcmcvPlxuICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMyA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT5cbiAqIENvcHlyaWdodCAyMDA5LTIwMTYgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnNcbiAqIEF2YWlsYWJsZSB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKi9cblxuLyoqIFVzZWQgdG8gZGV0ZXJtaW5lIGlmIHZhbHVlcyBhcmUgb2YgdGhlIGxhbmd1YWdlIHR5cGUgYE9iamVjdGAuICovXG52YXIgb2JqZWN0VHlwZXMgPSB7XG4gICdmdW5jdGlvbic6IHRydWUsXG4gICdvYmplY3QnOiB0cnVlXG59O1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gKG9iamVjdFR5cGVzW3R5cGVvZiBleHBvcnRzXSAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlKVxuICA/IGV4cG9ydHNcbiAgOiB1bmRlZmluZWQ7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gKG9iamVjdFR5cGVzW3R5cGVvZiBtb2R1bGVdICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlKVxuICA/IG1vZHVsZVxuICA6IHVuZGVmaW5lZDtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gY2hlY2tHbG9iYWwoZnJlZUV4cG9ydHMgJiYgZnJlZU1vZHVsZSAmJiB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovXG52YXIgZnJlZVNlbGYgPSBjaGVja0dsb2JhbChvYmplY3RUeXBlc1t0eXBlb2Ygc2VsZl0gJiYgc2VsZik7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgd2luZG93YC4gKi9cbnZhciBmcmVlV2luZG93ID0gY2hlY2tHbG9iYWwob2JqZWN0VHlwZXNbdHlwZW9mIHdpbmRvd10gJiYgd2luZG93KTtcblxuLyoqIERldGVjdCBgdGhpc2AgYXMgdGhlIGdsb2JhbCBvYmplY3QuICovXG52YXIgdGhpc0dsb2JhbCA9IGNoZWNrR2xvYmFsKG9iamVjdFR5cGVzW3R5cGVvZiB0aGlzXSAmJiB0aGlzKTtcblxuLyoqXG4gKiBVc2VkIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgb2JqZWN0LlxuICpcbiAqIFRoZSBgdGhpc2AgdmFsdWUgaXMgdXNlZCBpZiBpdCdzIHRoZSBnbG9iYWwgb2JqZWN0IHRvIGF2b2lkIEdyZWFzZW1vbmtleSdzXG4gKiByZXN0cmljdGVkIGB3aW5kb3dgIG9iamVjdCwgb3RoZXJ3aXNlIHRoZSBgd2luZG93YCBvYmplY3QgaXMgdXNlZC5cbiAqL1xudmFyIHJvb3QgPSBmcmVlR2xvYmFsIHx8XG4gICgoZnJlZVdpbmRvdyAhPT0gKHRoaXNHbG9iYWwgJiYgdGhpc0dsb2JhbC53aW5kb3cpKSAmJiBmcmVlV2luZG93KSB8fFxuICAgIGZyZWVTZWxmIHx8IHRoaXNHbG9iYWwgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGdsb2JhbCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge251bGx8T2JqZWN0fSBSZXR1cm5zIGB2YWx1ZWAgaWYgaXQncyBhIGdsb2JhbCBvYmplY3QsIGVsc2UgYG51bGxgLlxuICovXG5mdW5jdGlvbiBjaGVja0dsb2JhbCh2YWx1ZSkge1xuICByZXR1cm4gKHZhbHVlICYmIHZhbHVlLk9iamVjdCA9PT0gT2JqZWN0KSA/IHZhbHVlIDogbnVsbDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByb290O1xuIiwiLyoqXG4gKiBsb2Rhc2ggMy4yLjAgKEN1c3RvbSBCdWlsZCkgPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBCdWlsZDogYGxvZGFzaCBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAqIENvcHlyaWdodCAyMDEyLTIwMTYgVGhlIERvam8gRm91bmRhdGlvbiA8aHR0cDovL2Rvam9mb3VuZGF0aW9uLm9yZy8+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IDIwMDktMjAxNiBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICogQXZhaWxhYmxlIHVuZGVyIE1JVCBsaWNlbnNlIDxodHRwczovL2xvZGFzaC5jb20vbGljZW5zZT5cbiAqL1xudmFyIHJvb3QgPSByZXF1aXJlKCdsb2Rhc2guX3Jvb3QnKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG52YXIgcnNBc3RyYWxSYW5nZSA9ICdcXFxcdWQ4MDAtXFxcXHVkZmZmJyxcbiAgICByc0NvbWJvTWFya3NSYW5nZSA9ICdcXFxcdTAzMDAtXFxcXHUwMzZmXFxcXHVmZTIwLVxcXFx1ZmUyMycsXG4gICAgcnNDb21ib1N5bWJvbHNSYW5nZSA9ICdcXFxcdTIwZDAtXFxcXHUyMGYwJyxcbiAgICByc0RpbmdiYXRSYW5nZSA9ICdcXFxcdTI3MDAtXFxcXHUyN2JmJyxcbiAgICByc0xvd2VyUmFuZ2UgPSAnYS16XFxcXHhkZi1cXFxceGY2XFxcXHhmOC1cXFxceGZmJyxcbiAgICByc01hdGhPcFJhbmdlID0gJ1xcXFx4YWNcXFxceGIxXFxcXHhkN1xcXFx4ZjcnLFxuICAgIHJzTm9uQ2hhclJhbmdlID0gJ1xcXFx4MDAtXFxcXHgyZlxcXFx4M2EtXFxcXHg0MFxcXFx4NWItXFxcXHg2MFxcXFx4N2ItXFxcXHhiZicsXG4gICAgcnNRdW90ZVJhbmdlID0gJ1xcXFx1MjAxOFxcXFx1MjAxOVxcXFx1MjAxY1xcXFx1MjAxZCcsXG4gICAgcnNTcGFjZVJhbmdlID0gJyBcXFxcdFxcXFx4MGJcXFxcZlxcXFx4YTBcXFxcdWZlZmZcXFxcblxcXFxyXFxcXHUyMDI4XFxcXHUyMDI5XFxcXHUxNjgwXFxcXHUxODBlXFxcXHUyMDAwXFxcXHUyMDAxXFxcXHUyMDAyXFxcXHUyMDAzXFxcXHUyMDA0XFxcXHUyMDA1XFxcXHUyMDA2XFxcXHUyMDA3XFxcXHUyMDA4XFxcXHUyMDA5XFxcXHUyMDBhXFxcXHUyMDJmXFxcXHUyMDVmXFxcXHUzMDAwJyxcbiAgICByc1VwcGVyUmFuZ2UgPSAnQS1aXFxcXHhjMC1cXFxceGQ2XFxcXHhkOC1cXFxceGRlJyxcbiAgICByc1ZhclJhbmdlID0gJ1xcXFx1ZmUwZVxcXFx1ZmUwZicsXG4gICAgcnNCcmVha1JhbmdlID0gcnNNYXRoT3BSYW5nZSArIHJzTm9uQ2hhclJhbmdlICsgcnNRdW90ZVJhbmdlICsgcnNTcGFjZVJhbmdlO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2FwdHVyZSBncm91cHMuICovXG52YXIgcnNCcmVhayA9ICdbJyArIHJzQnJlYWtSYW5nZSArICddJyxcbiAgICByc0NvbWJvID0gJ1snICsgcnNDb21ib01hcmtzUmFuZ2UgKyByc0NvbWJvU3ltYm9sc1JhbmdlICsgJ10nLFxuICAgIHJzRGlnaXRzID0gJ1xcXFxkKycsXG4gICAgcnNEaW5nYmF0ID0gJ1snICsgcnNEaW5nYmF0UmFuZ2UgKyAnXScsXG4gICAgcnNMb3dlciA9ICdbJyArIHJzTG93ZXJSYW5nZSArICddJyxcbiAgICByc01pc2MgPSAnW14nICsgcnNBc3RyYWxSYW5nZSArIHJzQnJlYWtSYW5nZSArIHJzRGlnaXRzICsgcnNEaW5nYmF0UmFuZ2UgKyByc0xvd2VyUmFuZ2UgKyByc1VwcGVyUmFuZ2UgKyAnXScsXG4gICAgcnNGaXR6ID0gJ1xcXFx1ZDgzY1tcXFxcdWRmZmItXFxcXHVkZmZmXScsXG4gICAgcnNNb2RpZmllciA9ICcoPzonICsgcnNDb21ibyArICd8JyArIHJzRml0eiArICcpJyxcbiAgICByc05vbkFzdHJhbCA9ICdbXicgKyByc0FzdHJhbFJhbmdlICsgJ10nLFxuICAgIHJzUmVnaW9uYWwgPSAnKD86XFxcXHVkODNjW1xcXFx1ZGRlNi1cXFxcdWRkZmZdKXsyfScsXG4gICAgcnNTdXJyUGFpciA9ICdbXFxcXHVkODAwLVxcXFx1ZGJmZl1bXFxcXHVkYzAwLVxcXFx1ZGZmZl0nLFxuICAgIHJzVXBwZXIgPSAnWycgKyByc1VwcGVyUmFuZ2UgKyAnXScsXG4gICAgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIHJlZ2V4ZXMuICovXG52YXIgcnNMb3dlck1pc2MgPSAnKD86JyArIHJzTG93ZXIgKyAnfCcgKyByc01pc2MgKyAnKScsXG4gICAgcnNVcHBlck1pc2MgPSAnKD86JyArIHJzVXBwZXIgKyAnfCcgKyByc01pc2MgKyAnKScsXG4gICAgcmVPcHRNb2QgPSByc01vZGlmaWVyICsgJz8nLFxuICAgIHJzT3B0VmFyID0gJ1snICsgcnNWYXJSYW5nZSArICddPycsXG4gICAgcnNPcHRKb2luID0gJyg/OicgKyByc1pXSiArICcoPzonICsgW3JzTm9uQXN0cmFsLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyXS5qb2luKCd8JykgKyAnKScgKyByc09wdFZhciArIHJlT3B0TW9kICsgJykqJyxcbiAgICByc1NlcSA9IHJzT3B0VmFyICsgcmVPcHRNb2QgKyByc09wdEpvaW4sXG4gICAgcnNFbW9qaSA9ICcoPzonICsgW3JzRGluZ2JhdCwgcnNSZWdpb25hbCwgcnNTdXJyUGFpcl0uam9pbignfCcpICsgJyknICsgcnNTZXE7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIG5vbi1jb21wb3VuZCB3b3JkcyBjb21wb3NlZCBvZiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4gKi9cbnZhciByZUJhc2ljV29yZCA9IC9bYS16QS1aMC05XSsvZztcblxuLyoqIFVzZWQgdG8gbWF0Y2ggY29tcGxleCBvciBjb21wb3VuZCB3b3Jkcy4gKi9cbnZhciByZUNvbXBsZXhXb3JkID0gUmVnRXhwKFtcbiAgcnNVcHBlciArICc/JyArIHJzTG93ZXIgKyAnKyg/PScgKyBbcnNCcmVhaywgcnNVcHBlciwgJyQnXS5qb2luKCd8JykgKyAnKScsXG4gIHJzVXBwZXJNaXNjICsgJysoPz0nICsgW3JzQnJlYWssIHJzVXBwZXIgKyByc0xvd2VyTWlzYywgJyQnXS5qb2luKCd8JykgKyAnKScsXG4gIHJzVXBwZXIgKyAnPycgKyByc0xvd2VyTWlzYyArICcrJyxcbiAgcnNVcHBlciArICcrJyxcbiAgcnNEaWdpdHMsXG4gIHJzRW1vamlcbl0uam9pbignfCcpLCAnZycpO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgc3RyaW5ncyB0aGF0IG5lZWQgYSBtb3JlIHJvYnVzdCByZWdleHAgdG8gbWF0Y2ggd29yZHMuICovXG52YXIgcmVIYXNDb21wbGV4V29yZCA9IC9bYS16XVtBLVpdfFswLTldW2EtekEtWl18W2EtekEtWl1bMC05XXxbXmEtekEtWjAtOSBdLztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgU3ltYm9sID0gcm9vdC5TeW1ib2w7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICBzeW1ib2xUb1N0cmluZyA9IFN5bWJvbCA/IHN5bWJvbFByb3RvLnRvU3RyaW5nIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZSh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gISF2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGNvcnJlY3RseSBjbGFzc2lmaWVkLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTeW1ib2woU3ltYm9sLml0ZXJhdG9yKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3ltYm9sKCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N5bWJvbCcgfHxcbiAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBvYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKSA9PSBzeW1ib2xUYWcpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgaWYgaXQncyBub3Qgb25lLiBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWRcbiAqIGZvciBgbnVsbGAgYW5kIGB1bmRlZmluZWRgIHZhbHVlcy4gVGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvU3RyaW5nKG51bGwpO1xuICogLy8gPT4gJydcbiAqXG4gKiBfLnRvU3RyaW5nKC0wKTtcbiAqIC8vID0+ICctMCdcbiAqXG4gKiBfLnRvU3RyaW5nKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiAnMSwyLDMnXG4gKi9cbmZ1bmN0aW9uIHRvU3RyaW5nKHZhbHVlKSB7XG4gIC8vIEV4aXQgZWFybHkgZm9yIHN0cmluZ3MgdG8gYXZvaWQgYSBwZXJmb3JtYW5jZSBoaXQgaW4gc29tZSBlbnZpcm9ubWVudHMuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiBTeW1ib2wgPyBzeW1ib2xUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxuLyoqXG4gKiBTcGxpdHMgYHN0cmluZ2AgaW50byBhbiBhcnJheSBvZiBpdHMgd29yZHMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBTdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IFtwYXR0ZXJuXSBUaGUgcGF0dGVybiB0byBtYXRjaCB3b3Jkcy5cbiAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgZnVuY3Rpb25zIGxpa2UgYF8ubWFwYC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgd29yZHMgb2YgYHN0cmluZ2AuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8ud29yZHMoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJyk7XG4gKiAvLyA9PiBbJ2ZyZWQnLCAnYmFybmV5JywgJ3BlYmJsZXMnXVxuICpcbiAqIF8ud29yZHMoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJywgL1teLCBdKy9nKTtcbiAqIC8vID0+IFsnZnJlZCcsICdiYXJuZXknLCAnJicsICdwZWJibGVzJ11cbiAqL1xuZnVuY3Rpb24gd29yZHMoc3RyaW5nLCBwYXR0ZXJuLCBndWFyZCkge1xuICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICBwYXR0ZXJuID0gZ3VhcmQgPyB1bmRlZmluZWQgOiBwYXR0ZXJuO1xuXG4gIGlmIChwYXR0ZXJuID09PSB1bmRlZmluZWQpIHtcbiAgICBwYXR0ZXJuID0gcmVIYXNDb21wbGV4V29yZC50ZXN0KHN0cmluZykgPyByZUNvbXBsZXhXb3JkIDogcmVCYXNpY1dvcmQ7XG4gIH1cbiAgcmV0dXJuIHN0cmluZy5tYXRjaChwYXR0ZXJuKSB8fCBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB3b3JkcztcbiIsIi8qKlxuICogbG9kYXNoIDMuMC4xIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kdWxhcml6ZSBleHBvcnRzPVwibnBtXCIgLW8gLi9gXG4gKiBDb3B5cmlnaHQgMjAxMi0yMDE2IFRoZSBEb2pvIEZvdW5kYXRpb24gPGh0dHA6Ly9kb2pvZm91bmRhdGlvbi5vcmcvPlxuICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMyA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT5cbiAqIENvcHlyaWdodCAyMDA5LTIwMTYgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnNcbiAqIEF2YWlsYWJsZSB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKi9cblxuLyoqIFVzZWQgdG8gZGV0ZXJtaW5lIGlmIHZhbHVlcyBhcmUgb2YgdGhlIGxhbmd1YWdlIHR5cGUgYE9iamVjdGAuICovXG52YXIgb2JqZWN0VHlwZXMgPSB7XG4gICdmdW5jdGlvbic6IHRydWUsXG4gICdvYmplY3QnOiB0cnVlXG59O1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gKG9iamVjdFR5cGVzW3R5cGVvZiBleHBvcnRzXSAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlKVxuICA/IGV4cG9ydHNcbiAgOiB1bmRlZmluZWQ7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gKG9iamVjdFR5cGVzW3R5cGVvZiBtb2R1bGVdICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlKVxuICA/IG1vZHVsZVxuICA6IHVuZGVmaW5lZDtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gY2hlY2tHbG9iYWwoZnJlZUV4cG9ydHMgJiYgZnJlZU1vZHVsZSAmJiB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovXG52YXIgZnJlZVNlbGYgPSBjaGVja0dsb2JhbChvYmplY3RUeXBlc1t0eXBlb2Ygc2VsZl0gJiYgc2VsZik7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgd2luZG93YC4gKi9cbnZhciBmcmVlV2luZG93ID0gY2hlY2tHbG9iYWwob2JqZWN0VHlwZXNbdHlwZW9mIHdpbmRvd10gJiYgd2luZG93KTtcblxuLyoqIERldGVjdCBgdGhpc2AgYXMgdGhlIGdsb2JhbCBvYmplY3QuICovXG52YXIgdGhpc0dsb2JhbCA9IGNoZWNrR2xvYmFsKG9iamVjdFR5cGVzW3R5cGVvZiB0aGlzXSAmJiB0aGlzKTtcblxuLyoqXG4gKiBVc2VkIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgb2JqZWN0LlxuICpcbiAqIFRoZSBgdGhpc2AgdmFsdWUgaXMgdXNlZCBpZiBpdCdzIHRoZSBnbG9iYWwgb2JqZWN0IHRvIGF2b2lkIEdyZWFzZW1vbmtleSdzXG4gKiByZXN0cmljdGVkIGB3aW5kb3dgIG9iamVjdCwgb3RoZXJ3aXNlIHRoZSBgd2luZG93YCBvYmplY3QgaXMgdXNlZC5cbiAqL1xudmFyIHJvb3QgPSBmcmVlR2xvYmFsIHx8XG4gICgoZnJlZVdpbmRvdyAhPT0gKHRoaXNHbG9iYWwgJiYgdGhpc0dsb2JhbC53aW5kb3cpKSAmJiBmcmVlV2luZG93KSB8fFxuICAgIGZyZWVTZWxmIHx8IHRoaXNHbG9iYWwgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGdsb2JhbCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge251bGx8T2JqZWN0fSBSZXR1cm5zIGB2YWx1ZWAgaWYgaXQncyBhIGdsb2JhbCBvYmplY3QsIGVsc2UgYG51bGxgLlxuICovXG5mdW5jdGlvbiBjaGVja0dsb2JhbCh2YWx1ZSkge1xuICByZXR1cm4gKHZhbHVlICYmIHZhbHVlLk9iamVjdCA9PT0gT2JqZWN0KSA/IHZhbHVlIDogbnVsbDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByb290O1xuIiwiLyoqXG4gKiBsb2Rhc2ggMy4xLjAgKEN1c3RvbSBCdWlsZCkgPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBCdWlsZDogYGxvZGFzaCBtb2Rlcm4gbW9kdWxhcml6ZSBleHBvcnRzPVwibnBtXCIgLW8gLi9gXG4gKiBDb3B5cmlnaHQgMjAxMi0yMDE1IFRoZSBEb2pvIEZvdW5kYXRpb24gPGh0dHA6Ly9kb2pvZm91bmRhdGlvbi5vcmcvPlxuICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMiA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT5cbiAqIENvcHlyaWdodCAyMDA5LTIwMTUgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnNcbiAqIEF2YWlsYWJsZSB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKi9cbnZhciBiYXNlRmxhdHRlbiA9IHJlcXVpcmUoJ2xvZGFzaC5fYmFzZWZsYXR0ZW4nKSxcbiAgICBiYXNlVW5pcSA9IHJlcXVpcmUoJ2xvZGFzaC5fYmFzZXVuaXEnKSxcbiAgICByZXN0UGFyYW0gPSByZXF1aXJlKCdsb2Rhc2gucmVzdHBhcmFtJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzLCBpbiBvcmRlciwgb2YgdGhlIHByb3ZpZGVkIGFycmF5cyB1c2luZ1xuICogYFNhbWVWYWx1ZVplcm9gIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAqXG4gKiAqKk5vdGU6KiogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBjb21wYXJpc29ucyBhcmUgbGlrZSBzdHJpY3QgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGUuZy4gYD09PWAsIGV4Y2VwdCB0aGF0XG4gKiBgTmFOYCBtYXRjaGVzIGBOYU5gLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbWJpbmVkIHZhbHVlcy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy51bmlvbihbMSwgMl0sIFs0LCAyXSwgWzIsIDFdKTtcbiAqIC8vID0+IFsxLCAyLCA0XVxuICovXG52YXIgdW5pb24gPSByZXN0UGFyYW0oZnVuY3Rpb24oYXJyYXlzKSB7XG4gIHJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihhcnJheXMsIGZhbHNlLCB0cnVlKSk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSB1bmlvbjtcbiIsIi8qKlxuICogbG9kYXNoIDMuMS40IChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kZXJuIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IDIwMTItMjAxNSBUaGUgRG9qbyBGb3VuZGF0aW9uIDxodHRwOi8vZG9qb2ZvdW5kYXRpb24ub3JnLz5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgMjAwOS0yMDE1IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKiBBdmFpbGFibGUgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICovXG52YXIgaXNBcmd1bWVudHMgPSByZXF1aXJlKCdsb2Rhc2guaXNhcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnbG9kYXNoLmlzYXJyYXknKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuICEhdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG4vKipcbiAqIFVzZWQgYXMgdGhlIFttYXhpbXVtIGxlbmd0aF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbnVtYmVyLm1heF9zYWZlX2ludGVnZXIpXG4gKiBvZiBhbiBhcnJheS1saWtlIHZhbHVlLlxuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKlxuICogQXBwZW5kcyB0aGUgZWxlbWVudHMgb2YgYHZhbHVlc2AgdG8gYGFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGFwcGVuZC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBhcnJheVB1c2goYXJyYXksIHZhbHVlcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICBvZmZzZXQgPSBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBhcnJheVtvZmZzZXQgKyBpbmRleF0gPSB2YWx1ZXNbaW5kZXhdO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mbGF0dGVuYCB3aXRoIGFkZGVkIHN1cHBvcnQgZm9yIHJlc3RyaWN0aW5nXG4gKiBmbGF0dGVuaW5nIGFuZCBzcGVjaWZ5aW5nIHRoZSBzdGFydCBpbmRleC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGZsYXR0ZW4uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc1N0cmljdF0gUmVzdHJpY3QgZmxhdHRlbmluZyB0byBhcnJheXMtbGlrZSBvYmplY3RzLlxuICogQHBhcmFtIHtBcnJheX0gW3Jlc3VsdD1bXV0gVGhlIGluaXRpYWwgcmVzdWx0IHZhbHVlLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlRmxhdHRlbihhcnJheSwgaXNEZWVwLCBpc1N0cmljdCwgcmVzdWx0KSB7XG4gIHJlc3VsdCB8fCAocmVzdWx0ID0gW10pO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgIGlmIChpc09iamVjdExpa2UodmFsdWUpICYmIGlzQXJyYXlMaWtlKHZhbHVlKSAmJlxuICAgICAgICAoaXNTdHJpY3QgfHwgaXNBcnJheSh2YWx1ZSkgfHwgaXNBcmd1bWVudHModmFsdWUpKSkge1xuICAgICAgaWYgKGlzRGVlcCkge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBmbGF0dGVuIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBiYXNlRmxhdHRlbih2YWx1ZSwgaXNEZWVwLCBpc1N0cmljdCwgcmVzdWx0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFycmF5UHVzaChyZXN1bHQsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFpc1N0cmljdCkge1xuICAgICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVByb3BlcnR5KGtleSkge1xuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gIH07XG59XG5cbi8qKlxuICogR2V0cyB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSB2YWx1ZSBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGF2b2lkIGEgW0pJVCBidWddKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI3OTIpXG4gKiB0aGF0IGFmZmVjdHMgU2FmYXJpIG9uIGF0IGxlYXN0IGlPUyA4LjEtOC4zIEFSTTY0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgXCJsZW5ndGhcIiB2YWx1ZS5cbiAqL1xudmFyIGdldExlbmd0aCA9IGJhc2VQcm9wZXJ0eSgnbGVuZ3RoJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKGdldExlbmd0aCh2YWx1ZSkpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBsZW5ndGguXG4gKlxuICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gaXMgYmFzZWQgb24gW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLXRvbGVuZ3RoKS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGxlbmd0aCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRmxhdHRlbjtcbiIsIi8qKlxuICogbG9kYXNoIDMuMC4zIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kZXJuIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IDIwMTItMjAxNSBUaGUgRG9qbyBGb3VuZGF0aW9uIDxodHRwOi8vZG9qb2ZvdW5kYXRpb24ub3JnLz5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgMjAwOS0yMDE1IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKiBBdmFpbGFibGUgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICovXG52YXIgYmFzZUluZGV4T2YgPSByZXF1aXJlKCdsb2Rhc2guX2Jhc2VpbmRleG9mJyksXG4gICAgY2FjaGVJbmRleE9mID0gcmVxdWlyZSgnbG9kYXNoLl9jYWNoZWluZGV4b2YnKSxcbiAgICBjcmVhdGVDYWNoZSA9IHJlcXVpcmUoJ2xvZGFzaC5fY3JlYXRlY2FjaGUnKTtcblxuLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG52YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmlxYCB3aXRob3V0IHN1cHBvcnQgZm9yIGNhbGxiYWNrIHNob3J0aGFuZHNcbiAqIGFuZCBgdGhpc2AgYmluZGluZy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUtdmFsdWUtZnJlZSBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZVVuaXEoYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgaW5kZXhPZiA9IGJhc2VJbmRleE9mLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgaXNDb21tb24gPSB0cnVlLFxuICAgICAgaXNMYXJnZSA9IGlzQ29tbW9uICYmIGxlbmd0aCA+PSBMQVJHRV9BUlJBWV9TSVpFLFxuICAgICAgc2VlbiA9IGlzTGFyZ2UgPyBjcmVhdGVDYWNoZSgpIDogbnVsbCxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIGlmIChzZWVuKSB7XG4gICAgaW5kZXhPZiA9IGNhY2hlSW5kZXhPZjtcbiAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIGlzTGFyZ2UgPSBmYWxzZTtcbiAgICBzZWVuID0gaXRlcmF0ZWUgPyBbXSA6IHJlc3VsdDtcbiAgfVxuICBvdXRlcjpcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSwgaW5kZXgsIGFycmF5KSA6IHZhbHVlO1xuXG4gICAgaWYgKGlzQ29tbW9uICYmIHZhbHVlID09PSB2YWx1ZSkge1xuICAgICAgdmFyIHNlZW5JbmRleCA9IHNlZW4ubGVuZ3RoO1xuICAgICAgd2hpbGUgKHNlZW5JbmRleC0tKSB7XG4gICAgICAgIGlmIChzZWVuW3NlZW5JbmRleF0gPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpdGVyYXRlZSkge1xuICAgICAgICBzZWVuLnB1c2goY29tcHV0ZWQpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGlmIChpbmRleE9mKHNlZW4sIGNvbXB1dGVkLCAwKSA8IDApIHtcbiAgICAgIGlmIChpdGVyYXRlZSB8fCBpc0xhcmdlKSB7XG4gICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICB9XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVVuaXE7XG4iLCIvKipcbiAqIGxvZGFzaCAzLjEuMCAoQ3VzdG9tIEJ1aWxkKSA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIEJ1aWxkOiBgbG9kYXNoIG1vZGVybiBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAqIENvcHlyaWdodCAyMDEyLTIwMTUgVGhlIERvam8gRm91bmRhdGlvbiA8aHR0cDovL2Rvam9mb3VuZGF0aW9uLm9yZy8+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4yIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IDIwMDktMjAxNSBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICogQXZhaWxhYmxlIHVuZGVyIE1JVCBsaWNlbnNlIDxodHRwczovL2xvZGFzaC5jb20vbGljZW5zZT5cbiAqL1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmluZGV4T2ZgIHdpdGhvdXQgc3VwcG9ydCBmb3IgYmluYXJ5IHNlYXJjaGVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2VhcmNoLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgaWYgKHZhbHVlICE9PSB2YWx1ZSkge1xuICAgIHJldHVybiBpbmRleE9mTmFOKGFycmF5LCBmcm9tSW5kZXgpO1xuICB9XG4gIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoYXJyYXlbaW5kZXhdID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYE5hTmAgaXMgZm91bmQgaW4gYGFycmF5YC5cbiAqIElmIGBmcm9tUmlnaHRgIGlzIHByb3ZpZGVkIGVsZW1lbnRzIG9mIGBhcnJheWAgYXJlIGl0ZXJhdGVkIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNlYXJjaC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCBgTmFOYCwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBpbmRleE9mTmFOKGFycmF5LCBmcm9tSW5kZXgsIGZyb21SaWdodCkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgaW5kZXggPSBmcm9tSW5kZXggKyAoZnJvbVJpZ2h0ID8gMCA6IC0xKTtcblxuICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgIHZhciBvdGhlciA9IGFycmF5W2luZGV4XTtcbiAgICBpZiAob3RoZXIgIT09IG90aGVyKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSW5kZXhPZjtcbiIsIi8qKlxuICogbG9kYXNoIDMuMC4yIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kZXJuIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IDIwMTItMjAxNSBUaGUgRG9qbyBGb3VuZGF0aW9uIDxodHRwOi8vZG9qb2ZvdW5kYXRpb24ub3JnLz5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgMjAwOS0yMDE1IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKiBBdmFpbGFibGUgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICovXG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgaW4gYGNhY2hlYCBtaW1pY2tpbmcgdGhlIHJldHVybiBzaWduYXR1cmUgb2ZcbiAqIGBfLmluZGV4T2ZgIGJ5IHJldHVybmluZyBgMGAgaWYgdGhlIHZhbHVlIGlzIGZvdW5kLCBlbHNlIGAtMWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBjYWNoZSBUaGUgY2FjaGUgdG8gc2VhcmNoLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgYDBgIGlmIGB2YWx1ZWAgaXMgZm91bmQsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gY2FjaGVJbmRleE9mKGNhY2hlLCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IGNhY2hlLmRhdGEsXG4gICAgICByZXN1bHQgPSAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IGlzT2JqZWN0KHZhbHVlKSkgPyBkYXRhLnNldC5oYXModmFsdWUpIDogZGF0YS5oYXNoW3ZhbHVlXTtcblxuICByZXR1cm4gcmVzdWx0ID8gMCA6IC0xO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZSBbbGFuZ3VhZ2UgdHlwZV0oaHR0cHM6Ly9lczUuZ2l0aHViLmlvLyN4OCkgb2YgYE9iamVjdGAuXG4gKiAoZS5nLiBhcnJheXMsIGZ1bmN0aW9ucywgb2JqZWN0cywgcmVnZXhlcywgYG5ldyBOdW1iZXIoMClgLCBhbmQgYG5ldyBTdHJpbmcoJycpYClcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KDEpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgLy8gQXZvaWQgYSBWOCBKSVQgYnVnIGluIENocm9tZSAxOS0yMC5cbiAgLy8gU2VlIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0yMjkxIGZvciBtb3JlIGRldGFpbHMuXG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhY2hlSW5kZXhPZjtcbiIsIi8qKlxuICogbG9kYXNoIDMuMS4yIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kZXJuIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IDIwMTItMjAxNSBUaGUgRG9qbyBGb3VuZGF0aW9uIDxodHRwOi8vZG9qb2ZvdW5kYXRpb24ub3JnLz5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgMjAwOS0yMDE1IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKiBBdmFpbGFibGUgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICovXG52YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnbG9kYXNoLl9nZXRuYXRpdmUnKTtcblxuLyoqIE5hdGl2ZSBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBTZXQgPSBnZXROYXRpdmUoZ2xvYmFsLCAnU2V0Jyk7XG5cbi8qIE5hdGl2ZSBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlQ3JlYXRlID0gZ2V0TmF0aXZlKE9iamVjdCwgJ2NyZWF0ZScpO1xuXG4vKipcbiAqXG4gKiBDcmVhdGVzIGEgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIHVuaXF1ZSB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIFNldENhY2hlKHZhbHVlcykge1xuICB2YXIgbGVuZ3RoID0gdmFsdWVzID8gdmFsdWVzLmxlbmd0aCA6IDA7XG5cbiAgdGhpcy5kYXRhID0geyAnaGFzaCc6IG5hdGl2ZUNyZWF0ZShudWxsKSwgJ3NldCc6IG5ldyBTZXQgfTtcbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgdGhpcy5wdXNoKHZhbHVlc1tsZW5ndGhdKTtcbiAgfVxufVxuXG4vKipcbiAqIEFkZHMgYHZhbHVlYCB0byB0aGUgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHB1c2hcbiAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIGNhY2hlUHVzaCh2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuZGF0YTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCBpc09iamVjdCh2YWx1ZSkpIHtcbiAgICBkYXRhLnNldC5hZGQodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIGRhdGEuaGFzaFt2YWx1ZV0gPSB0cnVlO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGBTZXRgIGNhY2hlIG9iamVjdCB0byBvcHRpbWl6ZSBsaW5lYXIgc2VhcmNoZXMgb2YgbGFyZ2UgYXJyYXlzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNhY2hlLlxuICogQHJldHVybnMge251bGx8T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgY2FjaGUgb2JqZWN0IGlmIGBTZXRgIGlzIHN1cHBvcnRlZCwgZWxzZSBgbnVsbGAuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNhY2hlKHZhbHVlcykge1xuICByZXR1cm4gKG5hdGl2ZUNyZWF0ZSAmJiBTZXQpID8gbmV3IFNldENhY2hlKHZhbHVlcykgOiBudWxsO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZSBbbGFuZ3VhZ2UgdHlwZV0oaHR0cHM6Ly9lczUuZ2l0aHViLmlvLyN4OCkgb2YgYE9iamVjdGAuXG4gKiAoZS5nLiBhcnJheXMsIGZ1bmN0aW9ucywgb2JqZWN0cywgcmVnZXhlcywgYG5ldyBOdW1iZXIoMClgLCBhbmQgYG5ldyBTdHJpbmcoJycpYClcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KDEpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgLy8gQXZvaWQgYSBWOCBKSVQgYnVnIGluIENocm9tZSAxOS0yMC5cbiAgLy8gU2VlIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0yMjkxIGZvciBtb3JlIGRldGFpbHMuXG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG4vLyBBZGQgZnVuY3Rpb25zIHRvIHRoZSBgU2V0YCBjYWNoZS5cblNldENhY2hlLnByb3RvdHlwZS5wdXNoID0gY2FjaGVQdXNoO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUNhY2hlO1xuIiwiLyoqXG4gKiBsb2Rhc2ggMy42LjEgKEN1c3RvbSBCdWlsZCkgPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBCdWlsZDogYGxvZGFzaCBtb2Rlcm4gbW9kdWxhcml6ZSBleHBvcnRzPVwibnBtXCIgLW8gLi9gXG4gKiBDb3B5cmlnaHQgMjAxMi0yMDE1IFRoZSBEb2pvIEZvdW5kYXRpb24gPGh0dHA6Ly9kb2pvZm91bmRhdGlvbi5vcmcvPlxuICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMyA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT5cbiAqIENvcHlyaWdodCAyMDA5LTIwMTUgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnNcbiAqIEF2YWlsYWJsZSB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKi9cblxuLyoqIFVzZWQgYXMgdGhlIGBUeXBlRXJyb3JgIG1lc3NhZ2UgZm9yIFwiRnVuY3Rpb25zXCIgbWV0aG9kcy4gKi9cbnZhciBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbi8qIE5hdGl2ZSBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXg7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlXG4gKiBjcmVhdGVkIGZ1bmN0aW9uIGFuZCBhcmd1bWVudHMgZnJvbSBgc3RhcnRgIGFuZCBiZXlvbmQgcHJvdmlkZWQgYXMgYW4gYXJyYXkuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBbcmVzdCBwYXJhbWV0ZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0Z1bmN0aW9ucy9yZXN0X3BhcmFtZXRlcnMpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHNheSA9IF8ucmVzdFBhcmFtKGZ1bmN0aW9uKHdoYXQsIG5hbWVzKSB7XG4gKiAgIHJldHVybiB3aGF0ICsgJyAnICsgXy5pbml0aWFsKG5hbWVzKS5qb2luKCcsICcpICtcbiAqICAgICAoXy5zaXplKG5hbWVzKSA+IDEgPyAnLCAmICcgOiAnJykgKyBfLmxhc3QobmFtZXMpO1xuICogfSk7XG4gKlxuICogc2F5KCdoZWxsbycsICdmcmVkJywgJ2Jhcm5leScsICdwZWJibGVzJyk7XG4gKiAvLyA9PiAnaGVsbG8gZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnXG4gKi9cbmZ1bmN0aW9uIHJlc3RQYXJhbShmdW5jLCBzdGFydCkge1xuICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgfVxuICBzdGFydCA9IG5hdGl2ZU1heChzdGFydCA9PT0gdW5kZWZpbmVkID8gKGZ1bmMubGVuZ3RoIC0gMSkgOiAoK3N0YXJ0IHx8IDApLCAwKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBuYXRpdmVNYXgoYXJncy5sZW5ndGggLSBzdGFydCwgMCksXG4gICAgICAgIHJlc3QgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHJlc3RbaW5kZXhdID0gYXJnc1tzdGFydCArIGluZGV4XTtcbiAgICB9XG4gICAgc3dpdGNoIChzdGFydCkge1xuICAgICAgY2FzZSAwOiByZXR1cm4gZnVuYy5jYWxsKHRoaXMsIHJlc3QpO1xuICAgICAgY2FzZSAxOiByZXR1cm4gZnVuYy5jYWxsKHRoaXMsIGFyZ3NbMF0sIHJlc3QpO1xuICAgICAgY2FzZSAyOiByZXR1cm4gZnVuYy5jYWxsKHRoaXMsIGFyZ3NbMF0sIGFyZ3NbMV0sIHJlc3QpO1xuICAgIH1cbiAgICB2YXIgb3RoZXJBcmdzID0gQXJyYXkoc3RhcnQgKyAxKTtcbiAgICBpbmRleCA9IC0xO1xuICAgIHdoaWxlICgrK2luZGV4IDwgc3RhcnQpIHtcbiAgICAgIG90aGVyQXJnc1tpbmRleF0gPSBhcmdzW2luZGV4XTtcbiAgICB9XG4gICAgb3RoZXJBcmdzW3N0YXJ0XSA9IHJlc3Q7XG4gICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgb3RoZXJBcmdzKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZXN0UGFyYW07XG4iLCJ2YXIgVk5vZGUgPSByZXF1aXJlKCcuL3Zub2RlJyk7XG52YXIgaXMgPSByZXF1aXJlKCcuL2lzJyk7XG5cbmZ1bmN0aW9uIGFkZE5TKGRhdGEsIGNoaWxkcmVuKSB7XG4gIGRhdGEubnMgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuICBpZiAoY2hpbGRyZW4gIT09IHVuZGVmaW5lZCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHtcbiAgICAgIGFkZE5TKGNoaWxkcmVuW2ldLmRhdGEsIGNoaWxkcmVuW2ldLmNoaWxkcmVuKTtcbiAgICB9XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBoKHNlbCwgYiwgYykge1xuICB2YXIgZGF0YSA9IHt9LCBjaGlsZHJlbiwgdGV4dCwgaTtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMpIHtcbiAgICBkYXRhID0gYjtcbiAgICBpZiAoaXMuYXJyYXkoYykpIHsgY2hpbGRyZW4gPSBjOyB9XG4gICAgZWxzZSBpZiAoaXMucHJpbWl0aXZlKGMpKSB7IHRleHQgPSBjOyB9XG4gIH0gZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgIGlmIChpcy5hcnJheShiKSkgeyBjaGlsZHJlbiA9IGI7IH1cbiAgICBlbHNlIGlmIChpcy5wcmltaXRpdmUoYikpIHsgdGV4dCA9IGI7IH1cbiAgICBlbHNlIHsgZGF0YSA9IGI7IH1cbiAgfVxuICBpZiAoaXMuYXJyYXkoY2hpbGRyZW4pKSB7XG4gICAgZm9yIChpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgKytpKSB7XG4gICAgICBpZiAoaXMucHJpbWl0aXZlKGNoaWxkcmVuW2ldKSkgY2hpbGRyZW5baV0gPSBWTm9kZSh1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjaGlsZHJlbltpXSk7XG4gICAgfVxuICB9XG4gIGlmIChzZWxbMF0gPT09ICdzJyAmJiBzZWxbMV0gPT09ICd2JyAmJiBzZWxbMl0gPT09ICdnJykge1xuICAgIGFkZE5TKGRhdGEsIGNoaWxkcmVuKTtcbiAgfVxuICByZXR1cm4gVk5vZGUoc2VsLCBkYXRhLCBjaGlsZHJlbiwgdGV4dCwgdW5kZWZpbmVkKTtcbn07XG4iLCJmdW5jdGlvbiBjcmVhdGVFbGVtZW50KHRhZ05hbWUpe1xuICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSl7XG4gIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlVGV4dE5vZGUodGV4dCl7XG4gIHJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KTtcbn1cblxuXG5mdW5jdGlvbiBpbnNlcnRCZWZvcmUocGFyZW50Tm9kZSwgbmV3Tm9kZSwgcmVmZXJlbmNlTm9kZSl7XG4gIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG5ld05vZGUsIHJlZmVyZW5jZU5vZGUpO1xufVxuXG5cbmZ1bmN0aW9uIHJlbW92ZUNoaWxkKG5vZGUsIGNoaWxkKXtcbiAgbm9kZS5yZW1vdmVDaGlsZChjaGlsZCk7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZENoaWxkKG5vZGUsIGNoaWxkKXtcbiAgbm9kZS5hcHBlbmRDaGlsZChjaGlsZCk7XG59XG5cbmZ1bmN0aW9uIHBhcmVudE5vZGUobm9kZSl7XG4gIHJldHVybiBub2RlLnBhcmVudEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIG5leHRTaWJsaW5nKG5vZGUpe1xuICByZXR1cm4gbm9kZS5uZXh0U2libGluZztcbn1cblxuZnVuY3Rpb24gdGFnTmFtZShub2RlKXtcbiAgcmV0dXJuIG5vZGUudGFnTmFtZTtcbn1cblxuZnVuY3Rpb24gc2V0VGV4dENvbnRlbnQobm9kZSwgdGV4dCl7XG4gIG5vZGUudGV4dENvbnRlbnQgPSB0ZXh0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgY3JlYXRlRWxlbWVudDogY3JlYXRlRWxlbWVudCxcbiAgY3JlYXRlRWxlbWVudE5TOiBjcmVhdGVFbGVtZW50TlMsXG4gIGNyZWF0ZVRleHROb2RlOiBjcmVhdGVUZXh0Tm9kZSxcbiAgYXBwZW5kQ2hpbGQ6IGFwcGVuZENoaWxkLFxuICByZW1vdmVDaGlsZDogcmVtb3ZlQ2hpbGQsXG4gIGluc2VydEJlZm9yZTogaW5zZXJ0QmVmb3JlLFxuICBwYXJlbnROb2RlOiBwYXJlbnROb2RlLFxuICBuZXh0U2libGluZzogbmV4dFNpYmxpbmcsXG4gIHRhZ05hbWU6IHRhZ05hbWUsXG4gIHNldFRleHRDb250ZW50OiBzZXRUZXh0Q29udGVudFxufTtcbiIsIm1vZHVsZS5leHBvcnRzID0ge1xuICBhcnJheTogQXJyYXkuaXNBcnJheSxcbiAgcHJpbWl0aXZlOiBmdW5jdGlvbihzKSB7IHJldHVybiB0eXBlb2YgcyA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHMgPT09ICdudW1iZXInOyB9LFxufTtcbiIsInZhciBib29sZWFuQXR0cnMgPSBbXCJhbGxvd2Z1bGxzY3JlZW5cIiwgXCJhc3luY1wiLCBcImF1dG9mb2N1c1wiLCBcImF1dG9wbGF5XCIsIFwiY2hlY2tlZFwiLCBcImNvbXBhY3RcIiwgXCJjb250cm9sc1wiLCBcImRlY2xhcmVcIiwgXG4gICAgICAgICAgICAgICAgXCJkZWZhdWx0XCIsIFwiZGVmYXVsdGNoZWNrZWRcIiwgXCJkZWZhdWx0bXV0ZWRcIiwgXCJkZWZhdWx0c2VsZWN0ZWRcIiwgXCJkZWZlclwiLCBcImRpc2FibGVkXCIsIFwiZHJhZ2dhYmxlXCIsIFxuICAgICAgICAgICAgICAgIFwiZW5hYmxlZFwiLCBcImZvcm1ub3ZhbGlkYXRlXCIsIFwiaGlkZGVuXCIsIFwiaW5kZXRlcm1pbmF0ZVwiLCBcImluZXJ0XCIsIFwiaXNtYXBcIiwgXCJpdGVtc2NvcGVcIiwgXCJsb29wXCIsIFwibXVsdGlwbGVcIiwgXG4gICAgICAgICAgICAgICAgXCJtdXRlZFwiLCBcIm5vaHJlZlwiLCBcIm5vcmVzaXplXCIsIFwibm9zaGFkZVwiLCBcIm5vdmFsaWRhdGVcIiwgXCJub3dyYXBcIiwgXCJvcGVuXCIsIFwicGF1c2VvbmV4aXRcIiwgXCJyZWFkb25seVwiLCBcbiAgICAgICAgICAgICAgICBcInJlcXVpcmVkXCIsIFwicmV2ZXJzZWRcIiwgXCJzY29wZWRcIiwgXCJzZWFtbGVzc1wiLCBcInNlbGVjdGVkXCIsIFwic29ydGFibGVcIiwgXCJzcGVsbGNoZWNrXCIsIFwidHJhbnNsYXRlXCIsIFxuICAgICAgICAgICAgICAgIFwidHJ1ZXNwZWVkXCIsIFwidHlwZW11c3RtYXRjaFwiLCBcInZpc2libGVcIl07XG4gICAgXG52YXIgYm9vbGVhbkF0dHJzRGljdCA9IHt9O1xuZm9yKHZhciBpPTAsIGxlbiA9IGJvb2xlYW5BdHRycy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICBib29sZWFuQXR0cnNEaWN0W2Jvb2xlYW5BdHRyc1tpXV0gPSB0cnVlO1xufVxuICAgIFxuZnVuY3Rpb24gdXBkYXRlQXR0cnMob2xkVm5vZGUsIHZub2RlKSB7XG4gIHZhciBrZXksIGN1ciwgb2xkLCBlbG0gPSB2bm9kZS5lbG0sXG4gICAgICBvbGRBdHRycyA9IG9sZFZub2RlLmRhdGEuYXR0cnMgfHwge30sIGF0dHJzID0gdm5vZGUuZGF0YS5hdHRycyB8fCB7fTtcbiAgXG4gIC8vIHVwZGF0ZSBtb2RpZmllZCBhdHRyaWJ1dGVzLCBhZGQgbmV3IGF0dHJpYnV0ZXNcbiAgZm9yIChrZXkgaW4gYXR0cnMpIHtcbiAgICBjdXIgPSBhdHRyc1trZXldO1xuICAgIG9sZCA9IG9sZEF0dHJzW2tleV07XG4gICAgaWYgKG9sZCAhPT0gY3VyKSB7XG4gICAgICAvLyBUT0RPOiBhZGQgc3VwcG9ydCB0byBuYW1lc3BhY2VkIGF0dHJpYnV0ZXMgKHNldEF0dHJpYnV0ZU5TKVxuICAgICAgaWYoIWN1ciAmJiBib29sZWFuQXR0cnNEaWN0W2tleV0pXG4gICAgICAgIGVsbS5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcbiAgICAgIGVsc2VcbiAgICAgICAgZWxtLnNldEF0dHJpYnV0ZShrZXksIGN1cik7XG4gICAgfVxuICB9XG4gIC8vcmVtb3ZlIHJlbW92ZWQgYXR0cmlidXRlc1xuICAvLyB1c2UgYGluYCBvcGVyYXRvciBzaW5jZSB0aGUgcHJldmlvdXMgYGZvcmAgaXRlcmF0aW9uIHVzZXMgaXQgKC5pLmUuIGFkZCBldmVuIGF0dHJpYnV0ZXMgd2l0aCB1bmRlZmluZWQgdmFsdWUpXG4gIC8vIHRoZSBvdGhlciBvcHRpb24gaXMgdG8gcmVtb3ZlIGFsbCBhdHRyaWJ1dGVzIHdpdGggdmFsdWUgPT0gdW5kZWZpbmVkXG4gIGZvciAoa2V5IGluIG9sZEF0dHJzKSB7XG4gICAgaWYgKCEoa2V5IGluIGF0dHJzKSkge1xuICAgICAgZWxtLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtjcmVhdGU6IHVwZGF0ZUF0dHJzLCB1cGRhdGU6IHVwZGF0ZUF0dHJzfTtcbiIsImZ1bmN0aW9uIHVwZGF0ZUNsYXNzKG9sZFZub2RlLCB2bm9kZSkge1xuICB2YXIgY3VyLCBuYW1lLCBlbG0gPSB2bm9kZS5lbG0sXG4gICAgICBvbGRDbGFzcyA9IG9sZFZub2RlLmRhdGEuY2xhc3MgfHwge30sXG4gICAgICBrbGFzcyA9IHZub2RlLmRhdGEuY2xhc3MgfHwge307XG4gIGZvciAobmFtZSBpbiBvbGRDbGFzcykge1xuICAgIGlmICgha2xhc3NbbmFtZV0pIHtcbiAgICAgIGVsbS5jbGFzc0xpc3QucmVtb3ZlKG5hbWUpO1xuICAgIH1cbiAgfVxuICBmb3IgKG5hbWUgaW4ga2xhc3MpIHtcbiAgICBjdXIgPSBrbGFzc1tuYW1lXTtcbiAgICBpZiAoY3VyICE9PSBvbGRDbGFzc1tuYW1lXSkge1xuICAgICAgZWxtLmNsYXNzTGlzdFtjdXIgPyAnYWRkJyA6ICdyZW1vdmUnXShuYW1lKTtcbiAgICB9XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7Y3JlYXRlOiB1cGRhdGVDbGFzcywgdXBkYXRlOiB1cGRhdGVDbGFzc307XG4iLCJ2YXIgaXMgPSByZXF1aXJlKCcuLi9pcycpO1xuXG5mdW5jdGlvbiBhcnJJbnZva2VyKGFycikge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgLy8gU3BlY2lhbCBjYXNlIHdoZW4gbGVuZ3RoIGlzIHR3bywgZm9yIHBlcmZvcm1hbmNlXG4gICAgYXJyLmxlbmd0aCA9PT0gMiA/IGFyclswXShhcnJbMV0pIDogYXJyWzBdLmFwcGx5KHVuZGVmaW5lZCwgYXJyLnNsaWNlKDEpKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZm5JbnZva2VyKG8pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGV2KSB7IG8uZm4oZXYpOyB9O1xufVxuXG5mdW5jdGlvbiB1cGRhdGVFdmVudExpc3RlbmVycyhvbGRWbm9kZSwgdm5vZGUpIHtcbiAgdmFyIG5hbWUsIGN1ciwgb2xkLCBlbG0gPSB2bm9kZS5lbG0sXG4gICAgICBvbGRPbiA9IG9sZFZub2RlLmRhdGEub24gfHwge30sIG9uID0gdm5vZGUuZGF0YS5vbjtcbiAgaWYgKCFvbikgcmV0dXJuO1xuICBmb3IgKG5hbWUgaW4gb24pIHtcbiAgICBjdXIgPSBvbltuYW1lXTtcbiAgICBvbGQgPSBvbGRPbltuYW1lXTtcbiAgICBpZiAob2xkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChpcy5hcnJheShjdXIpKSB7XG4gICAgICAgIGVsbS5hZGRFdmVudExpc3RlbmVyKG5hbWUsIGFyckludm9rZXIoY3VyKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdXIgPSB7Zm46IGN1cn07XG4gICAgICAgIG9uW25hbWVdID0gY3VyO1xuICAgICAgICBlbG0uYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCBmbkludm9rZXIoY3VyKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpcy5hcnJheShvbGQpKSB7XG4gICAgICAvLyBEZWxpYmVyYXRlbHkgbW9kaWZ5IG9sZCBhcnJheSBzaW5jZSBpdCdzIGNhcHR1cmVkIGluIGNsb3N1cmUgY3JlYXRlZCB3aXRoIGBhcnJJbnZva2VyYFxuICAgICAgb2xkLmxlbmd0aCA9IGN1ci5sZW5ndGg7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9sZC5sZW5ndGg7ICsraSkgb2xkW2ldID0gY3VyW2ldO1xuICAgICAgb25bbmFtZV0gID0gb2xkO1xuICAgIH0gZWxzZSB7XG4gICAgICBvbGQuZm4gPSBjdXI7XG4gICAgICBvbltuYW1lXSA9IG9sZDtcbiAgICB9XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7Y3JlYXRlOiB1cGRhdGVFdmVudExpc3RlbmVycywgdXBkYXRlOiB1cGRhdGVFdmVudExpc3RlbmVyc307XG4iLCJ2YXIgcmFmID0gKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpIHx8IHNldFRpbWVvdXQ7XG52YXIgbmV4dEZyYW1lID0gZnVuY3Rpb24oZm4pIHsgcmFmKGZ1bmN0aW9uKCkgeyByYWYoZm4pOyB9KTsgfTtcblxuZnVuY3Rpb24gc2V0TmV4dEZyYW1lKG9iaiwgcHJvcCwgdmFsKSB7XG4gIG5leHRGcmFtZShmdW5jdGlvbigpIHsgb2JqW3Byb3BdID0gdmFsOyB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0VGV4dE5vZGVSZWN0KHRleHROb2RlKSB7XG4gIHZhciByZWN0O1xuICBpZiAoZG9jdW1lbnQuY3JlYXRlUmFuZ2UpIHtcbiAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyh0ZXh0Tm9kZSk7XG4gICAgaWYgKHJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCkge1xuICAgICAgICByZWN0ID0gcmFuZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZWN0O1xufVxuXG5mdW5jdGlvbiBjYWxjVHJhbnNmb3JtT3JpZ2luKGlzVGV4dE5vZGUsIHRleHRSZWN0LCBib3VuZGluZ1JlY3QpIHtcbiAgaWYgKGlzVGV4dE5vZGUpIHtcbiAgICBpZiAodGV4dFJlY3QpIHtcbiAgICAgIC8vY2FsY3VsYXRlIHBpeGVscyB0byBjZW50ZXIgb2YgdGV4dCBmcm9tIGxlZnQgZWRnZSBvZiBib3VuZGluZyBib3hcbiAgICAgIHZhciByZWxhdGl2ZUNlbnRlclggPSB0ZXh0UmVjdC5sZWZ0ICsgdGV4dFJlY3Qud2lkdGgvMiAtIGJvdW5kaW5nUmVjdC5sZWZ0O1xuICAgICAgdmFyIHJlbGF0aXZlQ2VudGVyWSA9IHRleHRSZWN0LnRvcCArIHRleHRSZWN0LmhlaWdodC8yIC0gYm91bmRpbmdSZWN0LnRvcDtcbiAgICAgIHJldHVybiByZWxhdGl2ZUNlbnRlclggKyAncHggJyArIHJlbGF0aXZlQ2VudGVyWSArICdweCc7XG4gICAgfVxuICB9XG4gIHJldHVybiAnMCAwJzsgLy90b3AgbGVmdFxufVxuXG5mdW5jdGlvbiBnZXRUZXh0RHgob2xkVGV4dFJlY3QsIG5ld1RleHRSZWN0KSB7XG4gIGlmIChvbGRUZXh0UmVjdCAmJiBuZXdUZXh0UmVjdCkge1xuICAgIHJldHVybiAoKG9sZFRleHRSZWN0LmxlZnQgKyBvbGRUZXh0UmVjdC53aWR0aC8yKSAtIChuZXdUZXh0UmVjdC5sZWZ0ICsgbmV3VGV4dFJlY3Qud2lkdGgvMikpO1xuICB9XG4gIHJldHVybiAwO1xufVxuZnVuY3Rpb24gZ2V0VGV4dER5KG9sZFRleHRSZWN0LCBuZXdUZXh0UmVjdCkge1xuICBpZiAob2xkVGV4dFJlY3QgJiYgbmV3VGV4dFJlY3QpIHtcbiAgICByZXR1cm4gKChvbGRUZXh0UmVjdC50b3AgKyBvbGRUZXh0UmVjdC5oZWlnaHQvMikgLSAobmV3VGV4dFJlY3QudG9wICsgbmV3VGV4dFJlY3QuaGVpZ2h0LzIpKTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuZnVuY3Rpb24gaXNUZXh0RWxlbWVudChlbG0pIHtcbiAgcmV0dXJuIGVsbS5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSAmJiBlbG0uY2hpbGROb2Rlc1swXS5ub2RlVHlwZSA9PT0gMztcbn1cblxudmFyIHJlbW92ZWQsIGNyZWF0ZWQ7XG5cbmZ1bmN0aW9uIHByZShvbGRWbm9kZSwgdm5vZGUpIHtcbiAgcmVtb3ZlZCA9IHt9O1xuICBjcmVhdGVkID0gW107XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZShvbGRWbm9kZSwgdm5vZGUpIHtcbiAgdmFyIGhlcm8gPSB2bm9kZS5kYXRhLmhlcm87XG4gIGlmIChoZXJvICYmIGhlcm8uaWQpIHtcbiAgICBjcmVhdGVkLnB1c2goaGVyby5pZCk7XG4gICAgY3JlYXRlZC5wdXNoKHZub2RlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZXN0cm95KHZub2RlKSB7XG4gIHZhciBoZXJvID0gdm5vZGUuZGF0YS5oZXJvO1xuICBpZiAoaGVybyAmJiBoZXJvLmlkKSB7XG4gICAgdmFyIGVsbSA9IHZub2RlLmVsbTtcbiAgICB2bm9kZS5pc1RleHROb2RlID0gaXNUZXh0RWxlbWVudChlbG0pOyAvL2lzIHRoaXMgYSB0ZXh0IG5vZGU/XG4gICAgdm5vZGUuYm91bmRpbmdSZWN0ID0gZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOyAvL3NhdmUgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSB0byBhIG5ldyBwcm9wZXJ0eSBvbiB0aGUgdm5vZGVcbiAgICB2bm9kZS50ZXh0UmVjdCA9IHZub2RlLmlzVGV4dE5vZGUgPyBnZXRUZXh0Tm9kZVJlY3QoZWxtLmNoaWxkTm9kZXNbMF0pIDogbnVsbDsgLy9zYXZlIGJvdW5kaW5nIHJlY3Qgb2YgaW5uZXIgdGV4dCBub2RlXG4gICAgdmFyIGNvbXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbG0sIG51bGwpOyAvL2dldCBjdXJyZW50IHN0eWxlcyAoaW5jbHVkZXMgaW5oZXJpdGVkIHByb3BlcnRpZXMpXG4gICAgdm5vZGUuc2F2ZWRTdHlsZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY29tcHV0ZWRTdHlsZSkpOyAvL3NhdmUgYSBjb3B5IG9mIGNvbXB1dGVkIHN0eWxlIHZhbHVlc1xuICAgIHJlbW92ZWRbaGVyby5pZF0gPSB2bm9kZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwb3N0KCkge1xuICB2YXIgaSwgaWQsIG5ld0VsbSwgb2xkVm5vZGUsIG9sZEVsbSwgaFJhdGlvLCB3UmF0aW8sXG4gICAgICBvbGRSZWN0LCBuZXdSZWN0LCBkeCwgZHksIG9yaWdUcmFuc2Zvcm0sIG9yaWdUcmFuc2l0aW9uLFxuICAgICAgbmV3U3R5bGUsIG9sZFN0eWxlLCBuZXdDb21wdXRlZFN0eWxlLCBpc1RleHROb2RlLFxuICAgICAgbmV3VGV4dFJlY3QsIG9sZFRleHRSZWN0O1xuICBmb3IgKGkgPSAwOyBpIDwgY3JlYXRlZC5sZW5ndGg7IGkgKz0gMikge1xuICAgIGlkID0gY3JlYXRlZFtpXTtcbiAgICBuZXdFbG0gPSBjcmVhdGVkW2krMV0uZWxtO1xuICAgIG9sZFZub2RlID0gcmVtb3ZlZFtpZF07XG4gICAgaWYgKG9sZFZub2RlKSB7XG4gICAgICBpc1RleHROb2RlID0gb2xkVm5vZGUuaXNUZXh0Tm9kZSAmJiBpc1RleHRFbGVtZW50KG5ld0VsbSk7IC8vQXJlIG9sZCAmIG5ldyBib3RoIHRleHQ/XG4gICAgICBuZXdTdHlsZSA9IG5ld0VsbS5zdHlsZTtcbiAgICAgIG5ld0NvbXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShuZXdFbG0sIG51bGwpOyAvL2dldCBmdWxsIGNvbXB1dGVkIHN0eWxlIGZvciBuZXcgZWxlbWVudFxuICAgICAgb2xkRWxtID0gb2xkVm5vZGUuZWxtO1xuICAgICAgb2xkU3R5bGUgPSBvbGRFbG0uc3R5bGU7XG4gICAgICAvL092ZXJhbGwgZWxlbWVudCBib3VuZGluZyBib3hlc1xuICAgICAgbmV3UmVjdCA9IG5ld0VsbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIG9sZFJlY3QgPSBvbGRWbm9kZS5ib3VuZGluZ1JlY3Q7IC8vcHJldmlvdXNseSBzYXZlZCBib3VuZGluZyByZWN0XG4gICAgICAvL1RleHQgbm9kZSBib3VuZGluZyBib3hlcyAmIGRpc3RhbmNlc1xuICAgICAgaWYgKGlzVGV4dE5vZGUpIHtcbiAgICAgICAgbmV3VGV4dFJlY3QgPSBnZXRUZXh0Tm9kZVJlY3QobmV3RWxtLmNoaWxkTm9kZXNbMF0pO1xuICAgICAgICBvbGRUZXh0UmVjdCA9IG9sZFZub2RlLnRleHRSZWN0O1xuICAgICAgICBkeCA9IGdldFRleHREeChvbGRUZXh0UmVjdCwgbmV3VGV4dFJlY3QpO1xuICAgICAgICBkeSA9IGdldFRleHREeShvbGRUZXh0UmVjdCwgbmV3VGV4dFJlY3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy9DYWxjdWxhdGUgZGlzdGFuY2VzIGJldHdlZW4gb2xkICYgbmV3IHBvc2l0aW9uc1xuICAgICAgICBkeCA9IG9sZFJlY3QubGVmdCAtIG5ld1JlY3QubGVmdDtcbiAgICAgICAgZHkgPSBvbGRSZWN0LnRvcCAtIG5ld1JlY3QudG9wO1xuICAgICAgfVxuICAgICAgaFJhdGlvID0gbmV3UmVjdC5oZWlnaHQgLyAoTWF0aC5tYXgob2xkUmVjdC5oZWlnaHQsIDEpKTtcbiAgICAgIHdSYXRpbyA9IGlzVGV4dE5vZGUgPyBoUmF0aW8gOiBuZXdSZWN0LndpZHRoIC8gKE1hdGgubWF4KG9sZFJlY3Qud2lkdGgsIDEpKTsgLy90ZXh0IHNjYWxlcyBiYXNlZCBvbiBoUmF0aW9cbiAgICAgIC8vIEFuaW1hdGUgbmV3IGVsZW1lbnRcbiAgICAgIG9yaWdUcmFuc2Zvcm0gPSBuZXdTdHlsZS50cmFuc2Zvcm07XG4gICAgICBvcmlnVHJhbnNpdGlvbiA9IG5ld1N0eWxlLnRyYW5zaXRpb247XG4gICAgICBpZiAobmV3Q29tcHV0ZWRTdHlsZS5kaXNwbGF5ID09PSAnaW5saW5lJykgLy9pbmxpbmUgZWxlbWVudHMgY2Fubm90IGJlIHRyYW5zZm9ybWVkXG4gICAgICAgIG5ld1N0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJzsgICAgICAgIC8vdGhpcyBkb2VzIG5vdCBhcHBlYXIgdG8gaGF2ZSBhbnkgbmVnYXRpdmUgc2lkZSBlZmZlY3RzXG4gICAgICBuZXdTdHlsZS50cmFuc2l0aW9uID0gb3JpZ1RyYW5zaXRpb24gKyAndHJhbnNmb3JtIDBzJztcbiAgICAgIG5ld1N0eWxlLnRyYW5zZm9ybU9yaWdpbiA9IGNhbGNUcmFuc2Zvcm1PcmlnaW4oaXNUZXh0Tm9kZSwgbmV3VGV4dFJlY3QsIG5ld1JlY3QpO1xuICAgICAgbmV3U3R5bGUub3BhY2l0eSA9ICcwJztcbiAgICAgIG5ld1N0eWxlLnRyYW5zZm9ybSA9IG9yaWdUcmFuc2Zvcm0gKyAndHJhbnNsYXRlKCcrZHgrJ3B4LCAnK2R5KydweCkgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjYWxlKCcrMS93UmF0aW8rJywgJysxL2hSYXRpbysnKSc7XG4gICAgICBzZXROZXh0RnJhbWUobmV3U3R5bGUsICd0cmFuc2l0aW9uJywgb3JpZ1RyYW5zaXRpb24pO1xuICAgICAgc2V0TmV4dEZyYW1lKG5ld1N0eWxlLCAndHJhbnNmb3JtJywgb3JpZ1RyYW5zZm9ybSk7XG4gICAgICBzZXROZXh0RnJhbWUobmV3U3R5bGUsICdvcGFjaXR5JywgJzEnKTtcbiAgICAgIC8vIEFuaW1hdGUgb2xkIGVsZW1lbnRcbiAgICAgIGZvciAodmFyIGtleSBpbiBvbGRWbm9kZS5zYXZlZFN0eWxlKSB7IC8vcmUtYXBwbHkgc2F2ZWQgaW5oZXJpdGVkIHByb3BlcnRpZXNcbiAgICAgICAgaWYgKHBhcnNlSW50KGtleSkgIT0ga2V5KSB7XG4gICAgICAgICAgdmFyIG1zID0ga2V5LnN1YnN0cmluZygwLDIpID09PSAnbXMnO1xuICAgICAgICAgIHZhciBtb3ogPSBrZXkuc3Vic3RyaW5nKDAsMykgPT09ICdtb3onO1xuICAgICAgICAgIHZhciB3ZWJraXQgPSBrZXkuc3Vic3RyaW5nKDAsNikgPT09ICd3ZWJraXQnO1xuICAgICAgXHQgIGlmICghbXMgJiYgIW1veiAmJiAhd2Via2l0KSAvL2lnbm9yZSBwcmVmaXhlZCBzdHlsZSBwcm9wZXJ0aWVzXG4gICAgICAgIFx0ICBvbGRTdHlsZVtrZXldID0gb2xkVm5vZGUuc2F2ZWRTdHlsZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBvbGRTdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICBvbGRTdHlsZS50b3AgPSBvbGRSZWN0LnRvcCArICdweCc7IC8vc3RhcnQgYXQgZXhpc3RpbmcgcG9zaXRpb25cbiAgICAgIG9sZFN0eWxlLmxlZnQgPSBvbGRSZWN0LmxlZnQgKyAncHgnO1xuICAgICAgb2xkU3R5bGUud2lkdGggPSBvbGRSZWN0LndpZHRoICsgJ3B4JzsgLy9OZWVkZWQgZm9yIGVsZW1lbnRzIHdobyB3ZXJlIHNpemVkIHJlbGF0aXZlIHRvIHRoZWlyIHBhcmVudHNcbiAgICAgIG9sZFN0eWxlLmhlaWdodCA9IG9sZFJlY3QuaGVpZ2h0ICsgJ3B4JzsgLy9OZWVkZWQgZm9yIGVsZW1lbnRzIHdobyB3ZXJlIHNpemVkIHJlbGF0aXZlIHRvIHRoZWlyIHBhcmVudHNcbiAgICAgIG9sZFN0eWxlLm1hcmdpbiA9IDA7IC8vTWFyZ2luIG9uIGhlcm8gZWxlbWVudCBsZWFkcyB0byBpbmNvcnJlY3QgcG9zaXRpb25pbmdcbiAgICAgIG9sZFN0eWxlLnRyYW5zZm9ybU9yaWdpbiA9IGNhbGNUcmFuc2Zvcm1PcmlnaW4oaXNUZXh0Tm9kZSwgb2xkVGV4dFJlY3QsIG9sZFJlY3QpO1xuICAgICAgb2xkU3R5bGUudHJhbnNmb3JtID0gJyc7XG4gICAgICBvbGRTdHlsZS5vcGFjaXR5ID0gJzEnO1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvbGRFbG0pO1xuICAgICAgc2V0TmV4dEZyYW1lKG9sZFN0eWxlLCAndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZSgnKyAtZHggKydweCwgJysgLWR5ICsncHgpIHNjYWxlKCcrd1JhdGlvKycsICcraFJhdGlvKycpJyk7IC8vc2NhbGUgbXVzdCBiZSBvbiBmYXIgcmlnaHQgZm9yIHRyYW5zbGF0ZSB0byBiZSBjb3JyZWN0XG4gICAgICBzZXROZXh0RnJhbWUob2xkU3R5bGUsICdvcGFjaXR5JywgJzAnKTtcbiAgICAgIG9sZEVsbS5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgZnVuY3Rpb24oZXYpIHtcbiAgICAgICAgaWYgKGV2LnByb3BlcnR5TmFtZSA9PT0gJ3RyYW5zZm9ybScpXG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChldi50YXJnZXQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJlbW92ZWQgPSBjcmVhdGVkID0gdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtwcmU6IHByZSwgY3JlYXRlOiBjcmVhdGUsIGRlc3Ryb3k6IGRlc3Ryb3ksIHBvc3Q6IHBvc3R9O1xuIiwiZnVuY3Rpb24gdXBkYXRlUHJvcHMob2xkVm5vZGUsIHZub2RlKSB7XG4gIHZhciBrZXksIGN1ciwgb2xkLCBlbG0gPSB2bm9kZS5lbG0sXG4gICAgICBvbGRQcm9wcyA9IG9sZFZub2RlLmRhdGEucHJvcHMgfHwge30sIHByb3BzID0gdm5vZGUuZGF0YS5wcm9wcyB8fCB7fTtcbiAgZm9yIChrZXkgaW4gb2xkUHJvcHMpIHtcbiAgICBpZiAoIXByb3BzW2tleV0pIHtcbiAgICAgIGRlbGV0ZSBlbG1ba2V5XTtcbiAgICB9XG4gIH1cbiAgZm9yIChrZXkgaW4gcHJvcHMpIHtcbiAgICBjdXIgPSBwcm9wc1trZXldO1xuICAgIG9sZCA9IG9sZFByb3BzW2tleV07XG4gICAgaWYgKG9sZCAhPT0gY3VyICYmIChrZXkgIT09ICd2YWx1ZScgfHwgZWxtW2tleV0gIT09IGN1cikpIHtcbiAgICAgIGVsbVtrZXldID0gY3VyO1xuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtjcmVhdGU6IHVwZGF0ZVByb3BzLCB1cGRhdGU6IHVwZGF0ZVByb3BzfTtcbiIsInZhciByYWYgPSAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSkgfHwgc2V0VGltZW91dDtcbnZhciBuZXh0RnJhbWUgPSBmdW5jdGlvbihmbikgeyByYWYoZnVuY3Rpb24oKSB7IHJhZihmbik7IH0pOyB9O1xuXG5mdW5jdGlvbiBzZXROZXh0RnJhbWUob2JqLCBwcm9wLCB2YWwpIHtcbiAgbmV4dEZyYW1lKGZ1bmN0aW9uKCkgeyBvYmpbcHJvcF0gPSB2YWw7IH0pO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVTdHlsZShvbGRWbm9kZSwgdm5vZGUpIHtcbiAgdmFyIGN1ciwgbmFtZSwgZWxtID0gdm5vZGUuZWxtLFxuICAgICAgb2xkU3R5bGUgPSBvbGRWbm9kZS5kYXRhLnN0eWxlIHx8IHt9LFxuICAgICAgc3R5bGUgPSB2bm9kZS5kYXRhLnN0eWxlIHx8IHt9LFxuICAgICAgb2xkSGFzRGVsID0gJ2RlbGF5ZWQnIGluIG9sZFN0eWxlO1xuICBmb3IgKG5hbWUgaW4gb2xkU3R5bGUpIHtcbiAgICBpZiAoIXN0eWxlW25hbWVdKSB7XG4gICAgICBlbG0uc3R5bGVbbmFtZV0gPSAnJztcbiAgICB9XG4gIH1cbiAgZm9yIChuYW1lIGluIHN0eWxlKSB7XG4gICAgY3VyID0gc3R5bGVbbmFtZV07XG4gICAgaWYgKG5hbWUgPT09ICdkZWxheWVkJykge1xuICAgICAgZm9yIChuYW1lIGluIHN0eWxlLmRlbGF5ZWQpIHtcbiAgICAgICAgY3VyID0gc3R5bGUuZGVsYXllZFtuYW1lXTtcbiAgICAgICAgaWYgKCFvbGRIYXNEZWwgfHwgY3VyICE9PSBvbGRTdHlsZS5kZWxheWVkW25hbWVdKSB7XG4gICAgICAgICAgc2V0TmV4dEZyYW1lKGVsbS5zdHlsZSwgbmFtZSwgY3VyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobmFtZSAhPT0gJ3JlbW92ZScgJiYgY3VyICE9PSBvbGRTdHlsZVtuYW1lXSkge1xuICAgICAgZWxtLnN0eWxlW25hbWVdID0gY3VyO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhcHBseURlc3Ryb3lTdHlsZSh2bm9kZSkge1xuICB2YXIgc3R5bGUsIG5hbWUsIGVsbSA9IHZub2RlLmVsbSwgcyA9IHZub2RlLmRhdGEuc3R5bGU7XG4gIGlmICghcyB8fCAhKHN0eWxlID0gcy5kZXN0cm95KSkgcmV0dXJuO1xuICBmb3IgKG5hbWUgaW4gc3R5bGUpIHtcbiAgICBlbG0uc3R5bGVbbmFtZV0gPSBzdHlsZVtuYW1lXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhcHBseVJlbW92ZVN0eWxlKHZub2RlLCBybSkge1xuICB2YXIgcyA9IHZub2RlLmRhdGEuc3R5bGU7XG4gIGlmICghcyB8fCAhcy5yZW1vdmUpIHtcbiAgICBybSgpO1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgbmFtZSwgZWxtID0gdm5vZGUuZWxtLCBpZHgsIGkgPSAwLCBtYXhEdXIgPSAwLFxuICAgICAgY29tcFN0eWxlLCBzdHlsZSA9IHMucmVtb3ZlLCBhbW91bnQgPSAwLCBhcHBsaWVkID0gW107XG4gIGZvciAobmFtZSBpbiBzdHlsZSkge1xuICAgIGFwcGxpZWQucHVzaChuYW1lKTtcbiAgICBlbG0uc3R5bGVbbmFtZV0gPSBzdHlsZVtuYW1lXTtcbiAgfVxuICBjb21wU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsbSk7XG4gIHZhciBwcm9wcyA9IGNvbXBTdHlsZVsndHJhbnNpdGlvbi1wcm9wZXJ0eSddLnNwbGl0KCcsICcpO1xuICBmb3IgKDsgaSA8IHByb3BzLmxlbmd0aDsgKytpKSB7XG4gICAgaWYoYXBwbGllZC5pbmRleE9mKHByb3BzW2ldKSAhPT0gLTEpIGFtb3VudCsrO1xuICB9XG4gIGVsbS5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgZnVuY3Rpb24oZXYpIHtcbiAgICBpZiAoZXYudGFyZ2V0ID09PSBlbG0pIC0tYW1vdW50O1xuICAgIGlmIChhbW91bnQgPT09IDApIHJtKCk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtjcmVhdGU6IHVwZGF0ZVN0eWxlLCB1cGRhdGU6IHVwZGF0ZVN0eWxlLCBkZXN0cm95OiBhcHBseURlc3Ryb3lTdHlsZSwgcmVtb3ZlOiBhcHBseVJlbW92ZVN0eWxlfTtcbiIsIi8vIGpzaGludCBuZXdjYXA6IGZhbHNlXG4vKiBnbG9iYWwgcmVxdWlyZSwgbW9kdWxlLCBkb2N1bWVudCwgTm9kZSAqL1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgVk5vZGUgPSByZXF1aXJlKCcuL3Zub2RlJyk7XG52YXIgaXMgPSByZXF1aXJlKCcuL2lzJyk7XG52YXIgZG9tQXBpID0gcmVxdWlyZSgnLi9odG1sZG9tYXBpLmpzJyk7XG5cbmZ1bmN0aW9uIGlzVW5kZWYocykgeyByZXR1cm4gcyA9PT0gdW5kZWZpbmVkOyB9XG5mdW5jdGlvbiBpc0RlZihzKSB7IHJldHVybiBzICE9PSB1bmRlZmluZWQ7IH1cblxudmFyIGVtcHR5Tm9kZSA9IFZOb2RlKCcnLCB7fSwgW10sIHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcblxuZnVuY3Rpb24gc2FtZVZub2RlKHZub2RlMSwgdm5vZGUyKSB7XG4gIHJldHVybiB2bm9kZTEua2V5ID09PSB2bm9kZTIua2V5ICYmIHZub2RlMS5zZWwgPT09IHZub2RlMi5zZWw7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUtleVRvT2xkSWR4KGNoaWxkcmVuLCBiZWdpbklkeCwgZW5kSWR4KSB7XG4gIHZhciBpLCBtYXAgPSB7fSwga2V5O1xuICBmb3IgKGkgPSBiZWdpbklkeDsgaSA8PSBlbmRJZHg7ICsraSkge1xuICAgIGtleSA9IGNoaWxkcmVuW2ldLmtleTtcbiAgICBpZiAoaXNEZWYoa2V5KSkgbWFwW2tleV0gPSBpO1xuICB9XG4gIHJldHVybiBtYXA7XG59XG5cbnZhciBob29rcyA9IFsnY3JlYXRlJywgJ3VwZGF0ZScsICdyZW1vdmUnLCAnZGVzdHJveScsICdwcmUnLCAncG9zdCddO1xuXG5mdW5jdGlvbiBpbml0KG1vZHVsZXMsIGFwaSkge1xuICB2YXIgaSwgaiwgY2JzID0ge307XG5cbiAgaWYgKGlzVW5kZWYoYXBpKSkgYXBpID0gZG9tQXBpO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBob29rcy5sZW5ndGg7ICsraSkge1xuICAgIGNic1tob29rc1tpXV0gPSBbXTtcbiAgICBmb3IgKGogPSAwOyBqIDwgbW9kdWxlcy5sZW5ndGg7ICsraikge1xuICAgICAgaWYgKG1vZHVsZXNbal1baG9va3NbaV1dICE9PSB1bmRlZmluZWQpIGNic1tob29rc1tpXV0ucHVzaChtb2R1bGVzW2pdW2hvb2tzW2ldXSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZW1wdHlOb2RlQXQoZWxtKSB7XG4gICAgcmV0dXJuIFZOb2RlKGFwaS50YWdOYW1lKGVsbSkudG9Mb3dlckNhc2UoKSwge30sIFtdLCB1bmRlZmluZWQsIGVsbSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVSbUNiKGNoaWxkRWxtLCBsaXN0ZW5lcnMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoLS1saXN0ZW5lcnMgPT09IDApIHtcbiAgICAgICAgdmFyIHBhcmVudCA9IGFwaS5wYXJlbnROb2RlKGNoaWxkRWxtKTtcbiAgICAgICAgYXBpLnJlbW92ZUNoaWxkKHBhcmVudCwgY2hpbGRFbG0pO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVFbG0odm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAgIHZhciBpLCB0aHVuaywgZGF0YSA9IHZub2RlLmRhdGE7XG4gICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICBpZiAoaXNEZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNEZWYoaSA9IGkuaW5pdCkpIGkodm5vZGUpO1xuICAgICAgaWYgKGlzRGVmKGkgPSBkYXRhLnZub2RlKSkge1xuICAgICAgICAgIHRodW5rID0gdm5vZGU7XG4gICAgICAgICAgdm5vZGUgPSBpO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgZWxtLCBjaGlsZHJlbiA9IHZub2RlLmNoaWxkcmVuLCBzZWwgPSB2bm9kZS5zZWw7XG4gICAgaWYgKGlzRGVmKHNlbCkpIHtcbiAgICAgIC8vIFBhcnNlIHNlbGVjdG9yXG4gICAgICB2YXIgaGFzaElkeCA9IHNlbC5pbmRleE9mKCcjJyk7XG4gICAgICB2YXIgZG90SWR4ID0gc2VsLmluZGV4T2YoJy4nLCBoYXNoSWR4KTtcbiAgICAgIHZhciBoYXNoID0gaGFzaElkeCA+IDAgPyBoYXNoSWR4IDogc2VsLmxlbmd0aDtcbiAgICAgIHZhciBkb3QgPSBkb3RJZHggPiAwID8gZG90SWR4IDogc2VsLmxlbmd0aDtcbiAgICAgIHZhciB0YWcgPSBoYXNoSWR4ICE9PSAtMSB8fCBkb3RJZHggIT09IC0xID8gc2VsLnNsaWNlKDAsIE1hdGgubWluKGhhc2gsIGRvdCkpIDogc2VsO1xuICAgICAgZWxtID0gdm5vZGUuZWxtID0gaXNEZWYoZGF0YSkgJiYgaXNEZWYoaSA9IGRhdGEubnMpID8gYXBpLmNyZWF0ZUVsZW1lbnROUyhpLCB0YWcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhcGkuY3JlYXRlRWxlbWVudCh0YWcpO1xuICAgICAgaWYgKGhhc2ggPCBkb3QpIGVsbS5pZCA9IHNlbC5zbGljZShoYXNoICsgMSwgZG90KTtcbiAgICAgIGlmIChkb3RJZHggPiAwKSBlbG0uY2xhc3NOYW1lID0gc2VsLnNsaWNlKGRvdCsxKS5yZXBsYWNlKC9cXC4vZywgJyAnKTtcbiAgICAgIGlmIChpcy5hcnJheShjaGlsZHJlbikpIHtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgYXBpLmFwcGVuZENoaWxkKGVsbSwgY3JlYXRlRWxtKGNoaWxkcmVuW2ldLCBpbnNlcnRlZFZub2RlUXVldWUpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpcy5wcmltaXRpdmUodm5vZGUudGV4dCkpIHtcbiAgICAgICAgYXBpLmFwcGVuZENoaWxkKGVsbSwgYXBpLmNyZWF0ZVRleHROb2RlKHZub2RlLnRleHQpKTtcbiAgICAgIH1cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMuY3JlYXRlLmxlbmd0aDsgKytpKSBjYnMuY3JlYXRlW2ldKGVtcHR5Tm9kZSwgdm5vZGUpO1xuICAgICAgaSA9IHZub2RlLmRhdGEuaG9vazsgLy8gUmV1c2UgdmFyaWFibGVcbiAgICAgIGlmIChpc0RlZihpKSkge1xuICAgICAgICBpZiAoaS5jcmVhdGUpIGkuY3JlYXRlKGVtcHR5Tm9kZSwgdm5vZGUpO1xuICAgICAgICBpZiAoaS5pbnNlcnQpIGluc2VydGVkVm5vZGVRdWV1ZS5wdXNoKHZub2RlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZWxtID0gdm5vZGUuZWxtID0gYXBpLmNyZWF0ZVRleHROb2RlKHZub2RlLnRleHQpO1xuICAgIH1cbiAgICBpZiAoaXNEZWYodGh1bmspKSB0aHVuay5lbG0gPSB2bm9kZS5lbG07XG4gICAgcmV0dXJuIHZub2RlLmVsbTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZFZub2RlcyhwYXJlbnRFbG0sIGJlZm9yZSwgdm5vZGVzLCBzdGFydElkeCwgZW5kSWR4LCBpbnNlcnRlZFZub2RlUXVldWUpIHtcbiAgICBmb3IgKDsgc3RhcnRJZHggPD0gZW5kSWR4OyArK3N0YXJ0SWR4KSB7XG4gICAgICBhcGkuaW5zZXJ0QmVmb3JlKHBhcmVudEVsbSwgY3JlYXRlRWxtKHZub2Rlc1tzdGFydElkeF0sIGluc2VydGVkVm5vZGVRdWV1ZSksIGJlZm9yZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW52b2tlRGVzdHJveUhvb2sodm5vZGUpIHtcbiAgICB2YXIgaSwgaiwgZGF0YSA9IHZub2RlLmRhdGE7XG4gICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICBpZiAoaXNEZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNEZWYoaSA9IGkuZGVzdHJveSkpIGkodm5vZGUpO1xuICAgICAgZm9yIChpID0gMDsgaSA8IGNicy5kZXN0cm95Lmxlbmd0aDsgKytpKSBjYnMuZGVzdHJveVtpXSh2bm9kZSk7XG4gICAgICBpZiAoaXNEZWYoaSA9IHZub2RlLmNoaWxkcmVuKSkge1xuICAgICAgICBmb3IgKGogPSAwOyBqIDwgdm5vZGUuY2hpbGRyZW4ubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICBpbnZva2VEZXN0cm95SG9vayh2bm9kZS5jaGlsZHJlbltqXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpc0RlZihpID0gZGF0YS52bm9kZSkpIGludm9rZURlc3Ryb3lIb29rKGkpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZVZub2RlcyhwYXJlbnRFbG0sIHZub2Rlcywgc3RhcnRJZHgsIGVuZElkeCkge1xuICAgIGZvciAoOyBzdGFydElkeCA8PSBlbmRJZHg7ICsrc3RhcnRJZHgpIHtcbiAgICAgIHZhciBpLCBsaXN0ZW5lcnMsIHJtLCBjaCA9IHZub2Rlc1tzdGFydElkeF07XG4gICAgICBpZiAoaXNEZWYoY2gpKSB7XG4gICAgICAgIGlmIChpc0RlZihjaC5zZWwpKSB7XG4gICAgICAgICAgaW52b2tlRGVzdHJveUhvb2soY2gpO1xuICAgICAgICAgIGxpc3RlbmVycyA9IGNicy5yZW1vdmUubGVuZ3RoICsgMTtcbiAgICAgICAgICBybSA9IGNyZWF0ZVJtQ2IoY2guZWxtLCBsaXN0ZW5lcnMpO1xuICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMucmVtb3ZlLmxlbmd0aDsgKytpKSBjYnMucmVtb3ZlW2ldKGNoLCBybSk7XG4gICAgICAgICAgaWYgKGlzRGVmKGkgPSBjaC5kYXRhKSAmJiBpc0RlZihpID0gaS5ob29rKSAmJiBpc0RlZihpID0gaS5yZW1vdmUpKSB7XG4gICAgICAgICAgICBpKGNoLCBybSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJtKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgeyAvLyBUZXh0IG5vZGVcbiAgICAgICAgICBhcGkucmVtb3ZlQ2hpbGQocGFyZW50RWxtLCBjaC5lbG0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlQ2hpbGRyZW4ocGFyZW50RWxtLCBvbGRDaCwgbmV3Q2gsIGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAgIHZhciBvbGRTdGFydElkeCA9IDAsIG5ld1N0YXJ0SWR4ID0gMDtcbiAgICB2YXIgb2xkRW5kSWR4ID0gb2xkQ2gubGVuZ3RoIC0gMTtcbiAgICB2YXIgb2xkU3RhcnRWbm9kZSA9IG9sZENoWzBdO1xuICAgIHZhciBvbGRFbmRWbm9kZSA9IG9sZENoW29sZEVuZElkeF07XG4gICAgdmFyIG5ld0VuZElkeCA9IG5ld0NoLmxlbmd0aCAtIDE7XG4gICAgdmFyIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFswXTtcbiAgICB2YXIgbmV3RW5kVm5vZGUgPSBuZXdDaFtuZXdFbmRJZHhdO1xuICAgIHZhciBvbGRLZXlUb0lkeCwgaWR4SW5PbGQsIGVsbVRvTW92ZSwgYmVmb3JlO1xuXG4gICAgd2hpbGUgKG9sZFN0YXJ0SWR4IDw9IG9sZEVuZElkeCAmJiBuZXdTdGFydElkeCA8PSBuZXdFbmRJZHgpIHtcbiAgICAgIGlmIChpc1VuZGVmKG9sZFN0YXJ0Vm5vZGUpKSB7XG4gICAgICAgIG9sZFN0YXJ0Vm5vZGUgPSBvbGRDaFsrK29sZFN0YXJ0SWR4XTsgLy8gVm5vZGUgaGFzIGJlZW4gbW92ZWQgbGVmdFxuICAgICAgfSBlbHNlIGlmIChpc1VuZGVmKG9sZEVuZFZub2RlKSkge1xuICAgICAgICBvbGRFbmRWbm9kZSA9IG9sZENoWy0tb2xkRW5kSWR4XTtcbiAgICAgIH0gZWxzZSBpZiAoc2FtZVZub2RlKG9sZFN0YXJ0Vm5vZGUsIG5ld1N0YXJ0Vm5vZGUpKSB7XG4gICAgICAgIHBhdGNoVm5vZGUob2xkU3RhcnRWbm9kZSwgbmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgb2xkU3RhcnRWbm9kZSA9IG9sZENoWysrb2xkU3RhcnRJZHhdO1xuICAgICAgICBuZXdTdGFydFZub2RlID0gbmV3Q2hbKytuZXdTdGFydElkeF07XG4gICAgICB9IGVsc2UgaWYgKHNhbWVWbm9kZShvbGRFbmRWbm9kZSwgbmV3RW5kVm5vZGUpKSB7XG4gICAgICAgIHBhdGNoVm5vZGUob2xkRW5kVm5vZGUsIG5ld0VuZFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICBvbGRFbmRWbm9kZSA9IG9sZENoWy0tb2xkRW5kSWR4XTtcbiAgICAgICAgbmV3RW5kVm5vZGUgPSBuZXdDaFstLW5ld0VuZElkeF07XG4gICAgICB9IGVsc2UgaWYgKHNhbWVWbm9kZShvbGRTdGFydFZub2RlLCBuZXdFbmRWbm9kZSkpIHsgLy8gVm5vZGUgbW92ZWQgcmlnaHRcbiAgICAgICAgcGF0Y2hWbm9kZShvbGRTdGFydFZub2RlLCBuZXdFbmRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgYXBpLmluc2VydEJlZm9yZShwYXJlbnRFbG0sIG9sZFN0YXJ0Vm5vZGUuZWxtLCBhcGkubmV4dFNpYmxpbmcob2xkRW5kVm5vZGUuZWxtKSk7XG4gICAgICAgIG9sZFN0YXJ0Vm5vZGUgPSBvbGRDaFsrK29sZFN0YXJ0SWR4XTtcbiAgICAgICAgbmV3RW5kVm5vZGUgPSBuZXdDaFstLW5ld0VuZElkeF07XG4gICAgICB9IGVsc2UgaWYgKHNhbWVWbm9kZShvbGRFbmRWbm9kZSwgbmV3U3RhcnRWbm9kZSkpIHsgLy8gVm5vZGUgbW92ZWQgbGVmdFxuICAgICAgICBwYXRjaFZub2RlKG9sZEVuZFZub2RlLCBuZXdTdGFydFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICBhcGkuaW5zZXJ0QmVmb3JlKHBhcmVudEVsbSwgb2xkRW5kVm5vZGUuZWxtLCBvbGRTdGFydFZub2RlLmVsbSk7XG4gICAgICAgIG9sZEVuZFZub2RlID0gb2xkQ2hbLS1vbGRFbmRJZHhdO1xuICAgICAgICBuZXdTdGFydFZub2RlID0gbmV3Q2hbKytuZXdTdGFydElkeF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaXNVbmRlZihvbGRLZXlUb0lkeCkpIG9sZEtleVRvSWR4ID0gY3JlYXRlS2V5VG9PbGRJZHgob2xkQ2gsIG9sZFN0YXJ0SWR4LCBvbGRFbmRJZHgpO1xuICAgICAgICBpZHhJbk9sZCA9IG9sZEtleVRvSWR4W25ld1N0YXJ0Vm5vZGUua2V5XTtcbiAgICAgICAgaWYgKGlzVW5kZWYoaWR4SW5PbGQpKSB7IC8vIE5ldyBlbGVtZW50XG4gICAgICAgICAgYXBpLmluc2VydEJlZm9yZShwYXJlbnRFbG0sIGNyZWF0ZUVsbShuZXdTdGFydFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpLCBvbGRTdGFydFZub2RlLmVsbSk7XG4gICAgICAgICAgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVsbVRvTW92ZSA9IG9sZENoW2lkeEluT2xkXTtcbiAgICAgICAgICBwYXRjaFZub2RlKGVsbVRvTW92ZSwgbmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgICBvbGRDaFtpZHhJbk9sZF0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgYXBpLmluc2VydEJlZm9yZShwYXJlbnRFbG0sIGVsbVRvTW92ZS5lbG0sIG9sZFN0YXJ0Vm5vZGUuZWxtKTtcbiAgICAgICAgICBuZXdTdGFydFZub2RlID0gbmV3Q2hbKytuZXdTdGFydElkeF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG9sZFN0YXJ0SWR4ID4gb2xkRW5kSWR4KSB7XG4gICAgICBiZWZvcmUgPSBpc1VuZGVmKG5ld0NoW25ld0VuZElkeCsxXSkgPyBudWxsIDogbmV3Q2hbbmV3RW5kSWR4KzFdLmVsbTtcbiAgICAgIGFkZFZub2RlcyhwYXJlbnRFbG0sIGJlZm9yZSwgbmV3Q2gsIG5ld1N0YXJ0SWR4LCBuZXdFbmRJZHgsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgfSBlbHNlIGlmIChuZXdTdGFydElkeCA+IG5ld0VuZElkeCkge1xuICAgICAgcmVtb3ZlVm5vZGVzKHBhcmVudEVsbSwgb2xkQ2gsIG9sZFN0YXJ0SWR4LCBvbGRFbmRJZHgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhdGNoVm5vZGUob2xkVm5vZGUsIHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpIHtcbiAgICB2YXIgaSwgaG9vaztcbiAgICBpZiAoaXNEZWYoaSA9IHZub2RlLmRhdGEpICYmIGlzRGVmKGhvb2sgPSBpLmhvb2spICYmIGlzRGVmKGkgPSBob29rLnByZXBhdGNoKSkge1xuICAgICAgaShvbGRWbm9kZSwgdm5vZGUpO1xuICAgIH1cbiAgICBpZiAoaXNEZWYoaSA9IG9sZFZub2RlLmRhdGEpICYmIGlzRGVmKGkgPSBpLnZub2RlKSkgb2xkVm5vZGUgPSBpO1xuICAgIGlmIChpc0RlZihpID0gdm5vZGUuZGF0YSkgJiYgaXNEZWYoaSA9IGkudm5vZGUpKSB7XG4gICAgICBwYXRjaFZub2RlKG9sZFZub2RlLCBpLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgdm5vZGUuZWxtID0gaS5lbG07XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBlbG0gPSB2bm9kZS5lbG0gPSBvbGRWbm9kZS5lbG0sIG9sZENoID0gb2xkVm5vZGUuY2hpbGRyZW4sIGNoID0gdm5vZGUuY2hpbGRyZW47XG4gICAgaWYgKG9sZFZub2RlID09PSB2bm9kZSkgcmV0dXJuO1xuICAgIGlmICghc2FtZVZub2RlKG9sZFZub2RlLCB2bm9kZSkpIHtcbiAgICAgIHZhciBwYXJlbnRFbG0gPSBhcGkucGFyZW50Tm9kZShvbGRWbm9kZS5lbG0pO1xuICAgICAgZWxtID0gY3JlYXRlRWxtKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgYXBpLmluc2VydEJlZm9yZShwYXJlbnRFbG0sIGVsbSwgb2xkVm5vZGUuZWxtKTtcbiAgICAgIHJlbW92ZVZub2RlcyhwYXJlbnRFbG0sIFtvbGRWbm9kZV0sIDAsIDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaXNEZWYodm5vZGUuZGF0YSkpIHtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMudXBkYXRlLmxlbmd0aDsgKytpKSBjYnMudXBkYXRlW2ldKG9sZFZub2RlLCB2bm9kZSk7XG4gICAgICBpID0gdm5vZGUuZGF0YS5ob29rO1xuICAgICAgaWYgKGlzRGVmKGkpICYmIGlzRGVmKGkgPSBpLnVwZGF0ZSkpIGkob2xkVm5vZGUsIHZub2RlKTtcbiAgICB9XG4gICAgaWYgKGlzVW5kZWYodm5vZGUudGV4dCkpIHtcbiAgICAgIGlmIChpc0RlZihvbGRDaCkgJiYgaXNEZWYoY2gpKSB7XG4gICAgICAgIGlmIChvbGRDaCAhPT0gY2gpIHVwZGF0ZUNoaWxkcmVuKGVsbSwgb2xkQ2gsIGNoLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgfSBlbHNlIGlmIChpc0RlZihjaCkpIHtcbiAgICAgICAgaWYgKGlzRGVmKG9sZFZub2RlLnRleHQpKSBhcGkuc2V0VGV4dENvbnRlbnQoZWxtLCAnJyk7XG4gICAgICAgIGFkZFZub2RlcyhlbG0sIG51bGwsIGNoLCAwLCBjaC5sZW5ndGggLSAxLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgfSBlbHNlIGlmIChpc0RlZihvbGRDaCkpIHtcbiAgICAgICAgcmVtb3ZlVm5vZGVzKGVsbSwgb2xkQ2gsIDAsIG9sZENoLmxlbmd0aCAtIDEpO1xuICAgICAgfSBlbHNlIGlmIChpc0RlZihvbGRWbm9kZS50ZXh0KSkge1xuICAgICAgICBhcGkuc2V0VGV4dENvbnRlbnQoZWxtLCAnJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChvbGRWbm9kZS50ZXh0ICE9PSB2bm9kZS50ZXh0KSB7XG4gICAgICBhcGkuc2V0VGV4dENvbnRlbnQoZWxtLCB2bm9kZS50ZXh0KTtcbiAgICB9XG4gICAgaWYgKGlzRGVmKGhvb2spICYmIGlzRGVmKGkgPSBob29rLnBvc3RwYXRjaCkpIHtcbiAgICAgIGkob2xkVm5vZGUsIHZub2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24ob2xkVm5vZGUsIHZub2RlKSB7XG4gICAgdmFyIGksIGVsbSwgcGFyZW50O1xuICAgIHZhciBpbnNlcnRlZFZub2RlUXVldWUgPSBbXTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgY2JzLnByZS5sZW5ndGg7ICsraSkgY2JzLnByZVtpXSgpO1xuXG4gICAgaWYgKGlzVW5kZWYob2xkVm5vZGUuc2VsKSkge1xuICAgICAgb2xkVm5vZGUgPSBlbXB0eU5vZGVBdChvbGRWbm9kZSk7XG4gICAgfVxuXG4gICAgaWYgKHNhbWVWbm9kZShvbGRWbm9kZSwgdm5vZGUpKSB7XG4gICAgICBwYXRjaFZub2RlKG9sZFZub2RlLCB2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxtID0gb2xkVm5vZGUuZWxtO1xuICAgICAgcGFyZW50ID0gYXBpLnBhcmVudE5vZGUoZWxtKTtcblxuICAgICAgY3JlYXRlRWxtKHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuXG4gICAgICBpZiAocGFyZW50ICE9PSBudWxsKSB7XG4gICAgICAgIGFwaS5pbnNlcnRCZWZvcmUocGFyZW50LCB2bm9kZS5lbG0sIGFwaS5uZXh0U2libGluZyhlbG0pKTtcbiAgICAgICAgcmVtb3ZlVm5vZGVzKHBhcmVudCwgW29sZFZub2RlXSwgMCwgMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChpID0gMDsgaSA8IGluc2VydGVkVm5vZGVRdWV1ZS5sZW5ndGg7ICsraSkge1xuICAgICAgaW5zZXJ0ZWRWbm9kZVF1ZXVlW2ldLmRhdGEuaG9vay5pbnNlcnQoaW5zZXJ0ZWRWbm9kZVF1ZXVlW2ldKTtcbiAgICB9XG4gICAgZm9yIChpID0gMDsgaSA8IGNicy5wb3N0Lmxlbmd0aDsgKytpKSBjYnMucG9zdFtpXSgpO1xuICAgIHJldHVybiB2bm9kZTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7aW5pdDogaW5pdH07XG4iLCJ2YXIgaCA9IHJlcXVpcmUoJy4vaCcpO1xuXG5mdW5jdGlvbiBpbml0KHRodW5rKSB7XG4gIHZhciBpLCBjdXIgPSB0aHVuay5kYXRhO1xuICBjdXIudm5vZGUgPSBjdXIuZm4uYXBwbHkodW5kZWZpbmVkLCBjdXIuYXJncyk7XG59XG5cbmZ1bmN0aW9uIHByZXBhdGNoKG9sZFRodW5rLCB0aHVuaykge1xuICB2YXIgaSwgb2xkID0gb2xkVGh1bmsuZGF0YSwgY3VyID0gdGh1bmsuZGF0YTtcbiAgdmFyIG9sZEFyZ3MgPSBvbGQuYXJncywgYXJncyA9IGN1ci5hcmdzO1xuICBjdXIudm5vZGUgPSBvbGQudm5vZGU7XG4gIGlmIChvbGQuZm4gIT09IGN1ci5mbiB8fCBvbGRBcmdzLmxlbmd0aCAhPT0gYXJncy5sZW5ndGgpIHtcbiAgICBjdXIudm5vZGUgPSBjdXIuZm4uYXBwbHkodW5kZWZpbmVkLCBhcmdzKTtcbiAgICByZXR1cm47XG4gIH1cbiAgZm9yIChpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAob2xkQXJnc1tpXSAhPT0gYXJnc1tpXSkge1xuICAgICAgY3VyLnZub2RlID0gY3VyLmZuLmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obmFtZSwgZm4gLyogYXJncyAqLykge1xuICB2YXIgaSwgYXJncyA9IFtdO1xuICBmb3IgKGkgPSAyOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgKytpKSB7XG4gICAgYXJnc1tpIC0gMl0gPSBhcmd1bWVudHNbaV07XG4gIH1cbiAgcmV0dXJuIGgoJ3RodW5rJyArIG5hbWUsIHtcbiAgICBob29rOiB7aW5pdDogaW5pdCwgcHJlcGF0Y2g6IHByZXBhdGNofSxcbiAgICBmbjogZm4sIGFyZ3M6IGFyZ3MsXG4gIH0pO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oc2VsLCBkYXRhLCBjaGlsZHJlbiwgdGV4dCwgZWxtKSB7XG4gIHZhciBrZXkgPSBkYXRhID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBkYXRhLmtleTtcbiAgcmV0dXJuIHtzZWw6IHNlbCwgZGF0YTogZGF0YSwgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgICAgICAgIHRleHQ6IHRleHQsIGVsbTogZWxtLCBrZXk6IGtleX07XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgY2xpY2tFdmVudCA9ICd1bmRlZmluZWQnICE9PSB0eXBlb2YgZG9jdW1lbnQgJiYgZG9jdW1lbnQub250b3VjaHN0YXJ0ID9cbiAgICAndG91Y2hzdGFydCcgOiAnY2xpY2snO1xuZnVuY3Rpb24gd2hpY2goZXYpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgZSA9IGV2IHx8IHdpbmRvdy5ldmVudDtcbiAgICByZXR1cm4gZS53aGljaCA9PT0gbnVsbCA/IGUuYnV0dG9uIDogZS53aGljaDtcbn1cbmZ1bmN0aW9uIHNhbWVPcmlnaW4oaHJlZikge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBocmVmICYmIGhyZWYuaW5kZXhPZih3aW5kb3cubG9jYXRpb24ub3JpZ2luKSA9PT0gMDtcbn1cbmZ1bmN0aW9uIG1ha2VDbGlja0xpc3RlbmVyKHB1c2gpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gY2xpY2tMaXN0ZW5lcihldmVudCkge1xuICAgICAgICBpZiAod2hpY2goZXZlbnQpICE9PSAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleSB8fCBldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVsZW1lbnQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgIHdoaWxlIChlbGVtZW50ICYmIGVsZW1lbnQubm9kZU5hbWUgIT09ICdBJykge1xuICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50Tm9kZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWVsZW1lbnQgfHwgZWxlbWVudC5ub2RlTmFtZSAhPT0gJ0EnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsZW1lbnQuaGFzQXR0cmlidXRlKCdkb3dubG9hZCcpIHx8XG4gICAgICAgICAgICBlbGVtZW50LmdldEF0dHJpYnV0ZSgncmVsJykgPT09ICdleHRlcm5hbCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbWVudC50YXJnZXQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbGluayA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdocmVmJyk7XG4gICAgICAgIGlmIChsaW5rICYmIGxpbmsuaW5kZXhPZignbWFpbHRvOicpID4gLTEgfHwgbGluayA9PT0gJyMnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzYW1lT3JpZ2luKGVsZW1lbnQuaHJlZikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB2YXIgcGF0aG5hbWUgPSBlbGVtZW50LnBhdGhuYW1lLCBzZWFyY2ggPSBlbGVtZW50LnNlYXJjaCwgX2EgPSBlbGVtZW50Lmhhc2gsIGhhc2ggPSBfYSA9PT0gdm9pZCAwID8gJycgOiBfYTtcbiAgICAgICAgcHVzaChwYXRobmFtZSArIHNlYXJjaCArIGhhc2gpO1xuICAgIH07XG59XG5mdW5jdGlvbiBjYXB0dXJlQ2xpY2tzKHB1c2gpIHtcbiAgICB2YXIgbGlzdGVuZXIgPSBtYWtlQ2xpY2tMaXN0ZW5lcihwdXNoKTtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihjbGlja0V2ZW50LCBsaXN0ZW5lciwgZmFsc2UpO1xuICAgIH1cbn1cbmV4cG9ydHMuY2FwdHVyZUNsaWNrcyA9IGNhcHR1cmVDbGlja3M7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jYXB0dXJlQ2xpY2tzLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIG1ha2VIaXN0b3J5RHJpdmVyXzEgPSByZXF1aXJlKCcuL21ha2VIaXN0b3J5RHJpdmVyJyk7XG5leHBvcnRzLm1ha2VIaXN0b3J5RHJpdmVyID0gbWFrZUhpc3RvcnlEcml2ZXJfMS5tYWtlSGlzdG9yeURyaXZlcjtcbnZhciBzZXJ2ZXJIaXN0b3J5XzEgPSByZXF1aXJlKCcuL3NlcnZlckhpc3RvcnknKTtcbmV4cG9ydHMuY3JlYXRlU2VydmVySGlzdG9yeSA9IHNlcnZlckhpc3RvcnlfMS5jcmVhdGVTZXJ2ZXJIaXN0b3J5O1xudmFyIHV0aWxfMSA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuZXhwb3J0cy5zdXBwb3J0c0hpc3RvcnkgPSB1dGlsXzEuc3VwcG9ydHNIaXN0b3J5O1xuZXhwb3J0cy5jcmVhdGVMb2NhdGlvbiA9IHV0aWxfMS5jcmVhdGVMb2NhdGlvbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIGNhcHR1cmVDbGlja3NfMSA9IHJlcXVpcmUoJy4vY2FwdHVyZUNsaWNrcycpO1xuZnVuY3Rpb24gbWFrZVVwZGF0ZUhpc3RvcnkoaGlzdG9yeSkge1xuICAgIHJldHVybiBmdW5jdGlvbiB1cGRhdGVIaXN0b3J5KGxvY2F0aW9uKSB7XG4gICAgICAgIGlmICgnc3RyaW5nJyA9PT0gdHlwZW9mIGxvY2F0aW9uKSB7XG4gICAgICAgICAgICBoaXN0b3J5LnB1c2goaGlzdG9yeS5jcmVhdGVMb2NhdGlvbihsb2NhdGlvbikpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCdvYmplY3QnID09PSB0eXBlb2YgbG9jYXRpb24pIHtcbiAgICAgICAgICAgIC8vIHN1cG9ydCB0aGluZ3MgbGlrZSBoaXN0b3J5LnJlcGxhY2UoKVxuICAgICAgICAgICAgdmFyIF9hID0gbG9jYXRpb24udHlwZSwgdHlwZSA9IF9hID09PSB2b2lkIDAgPyAncHVzaCcgOiBfYTtcbiAgICAgICAgICAgIGlmICh0eXBlID09PSAnZ28nKSB7XG4gICAgICAgICAgICAgICAgaGlzdG9yeVt0eXBlXShsb2NhdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBoaXN0b3J5W3R5cGVdKGxvY2F0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSGlzdG9yeSBEcml2ZXIgaW5wdXQgbXVzdCBiZSBhIHN0cmluZyBvciBhbiAnICtcbiAgICAgICAgICAgICAgICAnb2JqZWN0IGJ1dCByZWNlaXZlZCAke3R5cGVvZiB1cmx9Jyk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gZGVmYXVsdE9uRXJyb3JGbihlcnIpIHtcbiAgICBpZiAoY29uc29sZSAmJiBjb25zb2xlLmVycm9yICE9PSB2b2lkIDApIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIG1ha2VIaXN0b3J5RHJpdmVyKGhpc3RvcnksIG9wdGlvbnMpIHtcbiAgICBpZiAoIWhpc3RvcnkgfHwgdHlwZW9mIGhpc3RvcnkgIT09ICdvYmplY3QnXG4gICAgICAgIHx8IHR5cGVvZiBoaXN0b3J5LmNyZWF0ZUxvY2F0aW9uICE9PSAnZnVuY3Rpb24nXG4gICAgICAgIHx8IHR5cGVvZiBoaXN0b3J5LmNyZWF0ZUhyZWYgIT09ICdmdW5jdGlvbidcbiAgICAgICAgfHwgdHlwZW9mIGhpc3RvcnkubGlzdGVuICE9PSAnZnVuY3Rpb24nXG4gICAgICAgIHx8IHR5cGVvZiBoaXN0b3J5LnB1c2ggIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbWFrZUhpc3RvcnlEcml2ZXIgcmVxdWlyZXMgYW4gdmFsaWQgaGlzdG9yeSBvYmplY3QgJyArXG4gICAgICAgICAgICAnY29udGFpbmluZyBjcmVhdGVMb2NhdGlvbigpLCBjcmVhdGVIcmVmKCksIHB1c2goKSwgYW5kIGxpc3RlbigpIG1ldGhvZHMnKTtcbiAgICB9XG4gICAgdmFyIGNhcHR1cmUgPSBvcHRpb25zICYmIG9wdGlvbnMuY2FwdHVyZSB8fCBmYWxzZTtcbiAgICB2YXIgb25FcnJvciA9IG9wdGlvbnMgJiYgb3B0aW9ucy5vbkVycm9yIHx8IGRlZmF1bHRPbkVycm9yRm47XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGhpc3RvcnlEcml2ZXIoc2luayQsIHJ1blNBKSB7XG4gICAgICAgIHZhciBfYSA9IHJ1blNBLm1ha2VTdWJqZWN0KCksIG9ic2VydmVyID0gX2Eub2JzZXJ2ZXIsIHN0cmVhbSA9IF9hLnN0cmVhbTtcbiAgICAgICAgdmFyIGhpc3RvcnkkID0gcnVuU0EucmVtZW1iZXIoc3RyZWFtXG4gICAgICAgICAgICAuc3RhcnRXaXRoKGhpc3RvcnkuZ2V0Q3VycmVudExvY2F0aW9uKCkpXG4gICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pKTtcbiAgICAgICAgdmFyIHVubGlzdGVuID0gaGlzdG9yeS5saXN0ZW4oZnVuY3Rpb24gKGxvY2F0aW9uKSB7XG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KGxvY2F0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0eXBlb2YgaGlzdG9yeS5hZGRDb21wbGV0ZUNhbGxiYWNrID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAmJiB0eXBlb2YgaGlzdG9yeS5jb21wbGV0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgaGlzdG9yeS5hZGRDb21wbGV0ZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcnVuU0Euc3RyZWFtU3Vic2NyaWJlKHNpbmskLCB7XG4gICAgICAgICAgICBuZXh0OiBtYWtlVXBkYXRlSGlzdG9yeShoaXN0b3J5KSxcbiAgICAgICAgICAgIGVycm9yOiBvbkVycm9yLFxuICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB1bmxpc3RlbigpO1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoY2FwdHVyZSkge1xuICAgICAgICAgICAgY2FwdHVyZUNsaWNrc18xLmNhcHR1cmVDbGlja3MoZnVuY3Rpb24gKHBhdGhuYW1lKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxvY2F0aW9uID0gaGlzdG9yeS5jcmVhdGVMb2NhdGlvbihwYXRobmFtZSk7XG4gICAgICAgICAgICAgICAgaGlzdG9yeS5wdXNoKGxvY2F0aW9uKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGhpc3RvcnkkLmNyZWF0ZUhyZWYgPSBmdW5jdGlvbiAoaHJlZikgeyByZXR1cm4gaGlzdG9yeS5jcmVhdGVIcmVmKGhyZWYpOyB9O1xuICAgICAgICBoaXN0b3J5JC5jcmVhdGVMb2NhdGlvbiA9IGZ1bmN0aW9uIChsb2NhdGlvbikgeyByZXR1cm4gaGlzdG9yeS5jcmVhdGVMb2NhdGlvbihsb2NhdGlvbik7IH07XG4gICAgICAgIHJldHVybiBoaXN0b3J5JDtcbiAgICB9O1xufVxuZXhwb3J0cy5tYWtlSGlzdG9yeURyaXZlciA9IG1ha2VIaXN0b3J5RHJpdmVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWFrZUhpc3RvcnlEcml2ZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgdXRpbF8xID0gcmVxdWlyZSgnLi91dGlsJyk7XG52YXIgU2VydmVySGlzdG9yeSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU2VydmVySGlzdG9yeShjdXJyZW50TG9jYXRpb24pIHtcbiAgICAgICAgdGhpcy5jdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb247XG4gICAgICAgIHRoaXMubGlzdGVuZXJzID0gW107XG4gICAgfVxuICAgIFNlcnZlckhpc3RvcnkucHJvdG90eXBlLmxpc3RlbiA9IGZ1bmN0aW9uIChsaXN0ZW5lcikge1xuICAgICAgICB0aGlzLmxpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIG5vb3AoKSB7IHJldHVybiB2b2lkIDA7IH07XG4gICAgfTtcbiAgICBTZXJ2ZXJIaXN0b3J5LnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKGxvY2F0aW9uKSB7XG4gICAgICAgIHZhciBsZW5ndGggPSB0aGlzLmxpc3RlbmVycy5sZW5ndGg7XG4gICAgICAgIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTXVzdCBiZSBnaXZlbiBhdCBsZWFzdCBvbmUgbGlzdGVuZXIgYmVmb3JlIHB1c2hpbmcnKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3RlbmVyc1tpXSh1dGlsXzEuY3JlYXRlTG9jYXRpb24obG9jYXRpb24pKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU2VydmVySGlzdG9yeS5wcm90b3R5cGUucmVwbGFjZSA9IGZ1bmN0aW9uIChsb2NhdGlvbikge1xuICAgICAgICB0aGlzLnB1c2gobG9jYXRpb24pO1xuICAgIH07XG4gICAgU2VydmVySGlzdG9yeS5wcm90b3R5cGUuY3JlYXRlSHJlZiA9IGZ1bmN0aW9uIChwYXRoKSB7XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH07XG4gICAgU2VydmVySGlzdG9yeS5wcm90b3R5cGUuY3JlYXRlTG9jYXRpb24gPSBmdW5jdGlvbiAobG9jYXRpb24pIHtcbiAgICAgICAgcmV0dXJuIHV0aWxfMS5jcmVhdGVMb2NhdGlvbihsb2NhdGlvbik7XG4gICAgfTtcbiAgICBTZXJ2ZXJIaXN0b3J5LnByb3RvdHlwZS5nZXRDdXJyZW50TG9jYXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRMb2NhdGlvbjtcbiAgICB9O1xuICAgIFNlcnZlckhpc3RvcnkucHJvdG90eXBlLmFkZENvbXBsZXRlQ2FsbGJhY2sgPSBmdW5jdGlvbiAoY29tcGxldGUpIHtcbiAgICAgICAgdGhpcy5fY29tcGxldGVDYWxsYmFjayA9IGNvbXBsZXRlO1xuICAgIH07XG4gICAgU2VydmVySGlzdG9yeS5wcm90b3R5cGUuY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuX2NvbXBsZXRlQ2FsbGJhY2soKTtcbiAgICB9O1xuICAgIHJldHVybiBTZXJ2ZXJIaXN0b3J5O1xufSgpKTtcbmZ1bmN0aW9uIGNyZWF0ZVNlcnZlckhpc3RvcnkobG9jKSB7XG4gICAgcmV0dXJuIG5ldyBTZXJ2ZXJIaXN0b3J5KGxvYyA/IHV0aWxfMS5jcmVhdGVMb2NhdGlvbihsb2MpIDogbnVsbCk7XG59XG5leHBvcnRzLmNyZWF0ZVNlcnZlckhpc3RvcnkgPSBjcmVhdGVTZXJ2ZXJIaXN0b3J5O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2VydmVySGlzdG9yeS5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbmZ1bmN0aW9uIHN1cHBvcnRzSGlzdG9yeSgpIHtcbiAgICBpZiAodHlwZW9mIG5hdmlnYXRvciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgdWEgPSBuYXZpZ2F0b3IudXNlckFnZW50O1xuICAgIGlmICgodWEuaW5kZXhPZignQW5kcm9pZCAyLicpICE9PSAtMSB8fFxuICAgICAgICB1YS5pbmRleE9mKCdBbmRyb2lkIDQuMCcpICE9PSAtMSkgJiZcbiAgICAgICAgdWEuaW5kZXhPZignTW9iaWxlIFNhZmFyaScpICE9PSAtMSAmJlxuICAgICAgICB1YS5pbmRleE9mKCdDaHJvbWUnKSA9PT0gLTEgJiZcbiAgICAgICAgdWEuaW5kZXhPZignV2luZG93cyBQaG9uZScpID09PSAtMSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gd2luZG93Lmhpc3RvcnkgJiYgJ3B1c2hTdGF0ZScgaW4gd2luZG93Lmhpc3Rvcnk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuZXhwb3J0cy5zdXBwb3J0c0hpc3RvcnkgPSBzdXBwb3J0c0hpc3Rvcnk7XG52YXIgbG9jYXRpb25EZWZhdWx0cyA9IHtcbiAgICBwYXRobmFtZTogJy8nLFxuICAgIGFjdGlvbjogJ1BPUCcsXG4gICAgaGFzaDogJycsXG4gICAgc2VhcmNoOiAnJyxcbiAgICBzdGF0ZTogdW5kZWZpbmVkLFxuICAgIGtleTogbnVsbCxcbiAgICBxdWVyeTogbnVsbCxcbn07XG5mdW5jdGlvbiBjcmVhdGVMb2NhdGlvbihsb2NhdGlvbikge1xuICAgIGlmICh0eXBlb2YgbG9jYXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBsb2NhdGlvbkRlZmF1bHRzLCB7IHBhdGhuYW1lOiBsb2NhdGlvbiB9KTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGxvY2F0aW9uRGVmYXVsdHMsIGxvY2F0aW9uKTtcbn1cbmV4cG9ydHMuY3JlYXRlTG9jYXRpb24gPSBjcmVhdGVMb2NhdGlvbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXV0aWwuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgY291bnRlciA9IDA7XG5mdW5jdGlvbiBuZXdTY29wZSgpIHtcbiAgICByZXR1cm4gXCJjeWNsZVwiICsgKytjb3VudGVyO1xufVxuZnVuY3Rpb24gY2hlY2tJc29sYXRlQXJncyhkYXRhZmxvd0NvbXBvbmVudCwgc2NvcGUpIHtcbiAgICBpZiAodHlwZW9mIGRhdGFmbG93Q29tcG9uZW50ICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRmlyc3QgYXJndW1lbnQgZ2l2ZW4gdG8gaXNvbGF0ZSgpIG11c3QgYmUgYSBcIiArXG4gICAgICAgICAgICBcIidkYXRhZmxvd0NvbXBvbmVudCcgZnVuY3Rpb25cIik7XG4gICAgfVxuICAgIGlmIChzY29wZSA9PT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTZWNvbmQgYXJndW1lbnQgZ2l2ZW4gdG8gaXNvbGF0ZSgpIG11c3Qgbm90IGJlIG51bGxcIik7XG4gICAgfVxufVxuZnVuY3Rpb24gaXNvbGF0ZUFsbFNvdXJjZXMoc291cmNlcywgc2NvcGUpIHtcbiAgICB2YXIgc2NvcGVkU291cmNlcyA9IHt9O1xuICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2VzKSB7XG4gICAgICAgIGlmIChzb3VyY2VzLmhhc093blByb3BlcnR5KGtleSkgJiYgc291cmNlc1trZXldXG4gICAgICAgICAgICAmJiB0eXBlb2Ygc291cmNlc1trZXldLmlzb2xhdGVTb3VyY2UgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgc2NvcGVkU291cmNlc1trZXldID0gc291cmNlc1trZXldLmlzb2xhdGVTb3VyY2Uoc291cmNlc1trZXldLCBzY29wZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc291cmNlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICBzY29wZWRTb3VyY2VzW2tleV0gPSBzb3VyY2VzW2tleV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNjb3BlZFNvdXJjZXM7XG59XG5mdW5jdGlvbiBpc29sYXRlQWxsU2lua3Moc291cmNlcywgc2lua3MsIHNjb3BlKSB7XG4gICAgdmFyIHNjb3BlZFNpbmtzID0ge307XG4gICAgZm9yICh2YXIga2V5IGluIHNpbmtzKSB7XG4gICAgICAgIGlmIChzaW5rcy5oYXNPd25Qcm9wZXJ0eShrZXkpXG4gICAgICAgICAgICAmJiBzb3VyY2VzW2tleV1cbiAgICAgICAgICAgICYmIHR5cGVvZiBzb3VyY2VzW2tleV0uaXNvbGF0ZVNpbmsgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgc2NvcGVkU2lua3Nba2V5XSA9IHNvdXJjZXNba2V5XS5pc29sYXRlU2luayhzaW5rc1trZXldLCBzY29wZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc2lua3MuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgc2NvcGVkU2lua3Nba2V5XSA9IHNpbmtzW2tleV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNjb3BlZFNpbmtzO1xufVxuLyoqXG4gKiBUYWtlcyBhIGBkYXRhZmxvd0NvbXBvbmVudGAgZnVuY3Rpb24gYW5kIGFuIG9wdGlvbmFsIGBzY29wZWAgc3RyaW5nLCBhbmRcbiAqIHJldHVybnMgYSBzY29wZWQgdmVyc2lvbiBvZiB0aGUgYGRhdGFmbG93Q29tcG9uZW50YCBmdW5jdGlvbi5cbiAqXG4gKiBXaGVuIHRoZSBzY29wZWQgZGF0YWZsb3cgY29tcG9uZW50IGlzIGludm9rZWQsIGVhY2ggc291cmNlIHByb3ZpZGVkIHRvIHRoZVxuICogc2NvcGVkIGRhdGFmbG93Q29tcG9uZW50IGlzIGlzb2xhdGVkIHRvIHRoZSBzY29wZSB1c2luZ1xuICogYHNvdXJjZS5pc29sYXRlU291cmNlKHNvdXJjZSwgc2NvcGUpYCwgaWYgcG9zc2libGUuIExpa2V3aXNlLCB0aGUgc2lua3NcbiAqIHJldHVybmVkIGZyb20gdGhlIHNjb3BlZCBkYXRhZmxvdyBjb21wb25lbnQgYXJlIGlzb2xhdGUgdG8gdGhlIHNjb3BlIHVzaW5nXG4gKiBgc291cmNlLmlzb2xhdGVTaW5rKHNpbmssIHNjb3BlKWAuXG4gKlxuICogSWYgdGhlIGBzY29wZWAgaXMgbm90IHByb3ZpZGVkLCBhIG5ldyBzY29wZSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZC5cbiAqIFRoaXMgbWVhbnMgdGhhdCB3aGlsZSAqKmBpc29sYXRlKGRhdGFmbG93Q29tcG9uZW50LCBzY29wZSlgIGlzIHB1cmUqKlxuICogKHJlZmVyZW50aWFsbHkgdHJhbnNwYXJlbnQpLCAqKmBpc29sYXRlKGRhdGFmbG93Q29tcG9uZW50KWAgaXMgaW1wdXJlKipcbiAqIChub3QgcmVmZXJlbnRpYWxseSB0cmFuc3BhcmVudCkuIFR3byBjYWxscyB0byBgaXNvbGF0ZShGb28sIGJhcilgIHdpbGxcbiAqIGdlbmVyYXRlIHR3byBpbmRpc3RpbmN0IGRhdGFmbG93IGNvbXBvbmVudHMuIEJ1dCwgdHdvIGNhbGxzIHRvIGBpc29sYXRlKEZvbylgXG4gKiB3aWxsIGdlbmVyYXRlIHR3byBkaXN0aW5jdCBkYXRhZmxvdyBjb21wb25lbnRzLlxuICpcbiAqIE5vdGUgdGhhdCBib3RoIGBpc29sYXRlU291cmNlKClgIGFuZCBgaXNvbGF0ZVNpbmsoKWAgYXJlIHN0YXRpYyBtZW1iZXJzIG9mXG4gKiBgc291cmNlYC4gVGhlIHJlYXNvbiBmb3IgdGhpcyBpcyB0aGF0IGRyaXZlcnMgcHJvZHVjZSBgc291cmNlYCB3aGlsZSB0aGVcbiAqIGFwcGxpY2F0aW9uIHByb2R1Y2VzIGBzaW5rYCwgYW5kIGl0J3MgdGhlIGRyaXZlcidzIHJlc3BvbnNpYmlsaXR5IHRvXG4gKiBpbXBsZW1lbnQgYGlzb2xhdGVTb3VyY2UoKWAgYW5kIGBpc29sYXRlU2luaygpYC5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBkYXRhZmxvd0NvbXBvbmVudCBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYHNvdXJjZXNgIGFzIGlucHV0XG4gKiBhbmQgb3V0cHV0cyBhIGNvbGxlY3Rpb24gb2YgYHNpbmtzYC5cbiAqIEBwYXJhbSB7U3RyaW5nfSBzY29wZSBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBpcyB1c2VkIHRvIGlzb2xhdGUgZWFjaFxuICogYHNvdXJjZXNgIGFuZCBgc2lua3NgIHdoZW4gdGhlIHJldHVybmVkIHNjb3BlZCBkYXRhZmxvdyBjb21wb25lbnQgaXMgaW52b2tlZC5cbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSB0aGUgc2NvcGVkIGRhdGFmbG93IGNvbXBvbmVudCBmdW5jdGlvbiB0aGF0LCBhcyB0aGVcbiAqIG9yaWdpbmFsIGBkYXRhZmxvd0NvbXBvbmVudGAgZnVuY3Rpb24sIHRha2VzIGBzb3VyY2VzYCBhbmQgcmV0dXJucyBgc2lua3NgLlxuICogQGZ1bmN0aW9uIGlzb2xhdGVcbiAqL1xuZnVuY3Rpb24gaXNvbGF0ZShjb21wb25lbnQsIHNjb3BlKSB7XG4gICAgaWYgKHNjb3BlID09PSB2b2lkIDApIHsgc2NvcGUgPSBuZXdTY29wZSgpOyB9XG4gICAgY2hlY2tJc29sYXRlQXJncyhjb21wb25lbnQsIHNjb3BlKTtcbiAgICB2YXIgY29udmVydGVkU2NvcGUgPSB0eXBlb2Ygc2NvcGUgPT09ICdzdHJpbmcnID8gc2NvcGUgOiBzY29wZS50b1N0cmluZygpO1xuICAgIHJldHVybiBmdW5jdGlvbiBzY29wZWRDb21wb25lbnQoc291cmNlcykge1xuICAgICAgICB2YXIgcmVzdCA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgcmVzdFtfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc2NvcGVkU291cmNlcyA9IGlzb2xhdGVBbGxTb3VyY2VzKHNvdXJjZXMsIGNvbnZlcnRlZFNjb3BlKTtcbiAgICAgICAgdmFyIHNpbmtzID0gY29tcG9uZW50LmFwcGx5KHZvaWQgMCwgW3Njb3BlZFNvdXJjZXNdLmNvbmNhdChyZXN0KSk7XG4gICAgICAgIHZhciBzY29wZWRTaW5rcyA9IGlzb2xhdGVBbGxTaW5rcyhzb3VyY2VzLCBzaW5rcywgY29udmVydGVkU2NvcGUpO1xuICAgICAgICByZXR1cm4gc2NvcGVkU2lua3M7XG4gICAgfTtcbn1cbmlzb2xhdGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBjb3VudGVyID0gMDsgfTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzb2xhdGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfeHN0cmVhbUFkYXB0ZXIgPSByZXF1aXJlKCdAY3ljbGUveHN0cmVhbS1hZGFwdGVyJyk7XG5cbnZhciBfeHN0cmVhbUFkYXB0ZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfeHN0cmVhbUFkYXB0ZXIpO1xuXG52YXIgX3dyaXRlVG9TdG9yZSA9IHJlcXVpcmUoJy4vd3JpdGVUb1N0b3JlJyk7XG5cbnZhciBfd3JpdGVUb1N0b3JlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3dyaXRlVG9TdG9yZSk7XG5cbnZhciBfcmVzcG9uc2VDb2xsZWN0aW9uID0gcmVxdWlyZSgnLi9yZXNwb25zZUNvbGxlY3Rpb24nKTtcblxudmFyIF9yZXNwb25zZUNvbGxlY3Rpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVzcG9uc2VDb2xsZWN0aW9uKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiBTdG9yYWdlIERyaXZlci5cbiAqXG4gKiBUaGlzIGlzIGEgbG9jYWxTdG9yYWdlIGFuZCBzZXNzaW9uU3RvcmFnZSBEcml2ZXIgZm9yIEN5Y2xlLmpzIGFwcHMuIFRoZVxuICogZHJpdmVyIGlzIGFsc28gYSBmdW5jdGlvbiwgYW5kIGl0IHRha2VzIGEgc3RyZWFtIG9mIHJlcXVlc3RzIGFzIGlucHV0LCBhbmRcbiAqIHJldHVybnMgYSAqKmByZXNwb25zZUNvbGxlY3Rpb25gKiogd2l0aCBmdW5jdGlvbnMgdGhhdCBhbGxvdyByZWFkaW5nIGZyb20gdGhlXG4gKiBzdG9yYWdlIG9iamVjdHMuIFRoZSBmdW5jdGlvbnMgb24gdGhlICoqYHJlc3BvbnNlQ29sbGVjdGlvbmAqKiByZXR1cm4gc3RyZWFtc1xuICogb2YgdGhlIHN0b3JhZ2UgZGF0YSB0aGF0IHdhcyByZXF1ZXN0ZWQuXG4gKlxuICogKipSZXF1ZXN0cyoqLiBUaGUgc3RyZWFtIG9mIHJlcXVlc3RzIHNob3VsZCBlbWl0IG9iamVjdHMuIFRoZXNlIHNob3VsZCBiZVxuICogaW5zdHJ1Y3Rpb25zIHRvIHdyaXRlIHRvIHRoZSBkZXNpcmVkIFN0b3JhZ2Ugb2JqZWN0LiBIZXJlIGFyZSB0aGUgYHJlcXVlc3RgXG4gKiBvYmplY3QgcHJvcGVydGllczpcbiAqXG4gKiAtIGB0YXJnZXRgICooU3RyaW5nKSo6IHR5cGUgb2Ygc3RvcmFnZSwgY2FuIGJlIGBsb2NhbGAgb3IgYHNlc3Npb25gLCBkZWZhdWx0c1xuICogdG8gYGxvY2FsYC5cbiAqIC0gYGFjdGlvbmAgKihTdHJpbmcpKjogdHlwZSBvZiBhY3Rpb24sIGNhbiBiZSBgc2V0SXRlbWAsIGByZW1vdmVJdGVtYCBvclxuICogYGNsZWFyYCwgZGVmYXVsdHMgdG8gYHNldEl0ZW1gLlxuICogLSBga2V5YCAqKFN0cmluZykqOiBzdG9yYWdlIGtleS5cbiAqIC0gYHZhbHVlYCAqKFN0cmluZykqOiBzdG9yYWdlIHZhbHVlLlxuICpcbiAqICoqcmVzcG9uc2VDb2xsZWN0aW9uKiouIFRoZSAqKmByZXNwb25zZUNvbGxlY3Rpb25gKiogaXMgYW4gT2JqZWN0IHRoYXRcbiAqIGV4cG9zZXMgZnVuY3Rpb25zIHRvIHJlYWQgZnJvbSBsb2NhbC0gYW5kIHNlc3Npb25TdG9yYWdlLlxuICpcbiAqIGBgYGpzXG4gKiAvLyBSZXR1cm5zIGtleSBvZiBudGggbG9jYWxTdG9yYWdlIHZhbHVlLlxuICogcmVzcG9uc2VDb2xsZWN0aW9uLmxvY2FsLmdldEtleShuKVxuICogLy8gUmV0dXJucyBsb2NhbFN0b3JhZ2UgdmFsdWUgb2YgYGtleWAuXG4gKiByZXNwb25zZUNvbGxlY3Rpb24ubG9jYWwuZ2V0SXRlbShrZXkpXG4gKiAvLyBSZXR1cm5zIGtleSBvZiBudGggc2Vzc2lvblN0b3JhZ2UgdmFsdWUuXG4gKiByZXNwb25zZUNvbGxlY3Rpb24uc2Vzc2lvbi5nZXRLZXkobilcbiAqIC8vIFJldHVybnMgc2Vzc2lvblN0b3JhZ2UgdmFsdWUgb2YgYGtleWAuXG4gKiByZXNwb25zZUNvbGxlY3Rpb24uc2Vzc2lvbi5nZXRJdGVtKGtleSlcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSByZXF1ZXN0JCAtIGEgc3RyZWFtIG9mIHdyaXRlIHJlcXVlc3Qgb2JqZWN0cy5cbiAqIEByZXR1cm4ge09iamVjdH0gdGhlIHJlc3BvbnNlIGNvbGxlY3Rpb24gY29udGFpbmluZyBmdW5jdGlvbnNcbiAqIGZvciByZWFkaW5nIGZyb20gc3RvcmFnZS5cbiAqIEBmdW5jdGlvbiBzdG9yYWdlRHJpdmVyXG4gKi9cbmZ1bmN0aW9uIHN0b3JhZ2VEcml2ZXIocmVxdWVzdCQsIHJ1blN0cmVhbUFkYXB0ZXIpIHtcbiAgLy8gRXhlY3V0ZSB3cml0aW5nIGFjdGlvbnMuXG4gIHJlcXVlc3QkLmFkZExpc3RlbmVyKHtcbiAgICBuZXh0OiBmdW5jdGlvbiBuZXh0KHJlcXVlc3QpIHtcbiAgICAgIHJldHVybiAoMCwgX3dyaXRlVG9TdG9yZTIuZGVmYXVsdCkocmVxdWVzdCk7XG4gICAgfSxcbiAgICBlcnJvcjogZnVuY3Rpb24gZXJyb3IoKSB7fSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUoKSB7fVxuICB9KTtcblxuICAvLyBSZXR1cm4gcmVhZGluZyBmdW5jdGlvbnMuXG4gIHJldHVybiAoMCwgX3Jlc3BvbnNlQ29sbGVjdGlvbjIuZGVmYXVsdCkocmVxdWVzdCQsIHJ1blN0cmVhbUFkYXB0ZXIpO1xufVxuXG5zdG9yYWdlRHJpdmVyLnN0cmVhbUFkYXB0ZXIgPSBfeHN0cmVhbUFkYXB0ZXIyLmRlZmF1bHQ7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IHN0b3JhZ2VEcml2ZXI7IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAocmVxdWVzdCQsIHJ1blN0cmVhbUFkYXB0ZXIpIHtcbiAgcmV0dXJuIHtcbiAgICAvLyBGb3IgbG9jYWxTdG9yYWdlLlxuICAgIGdldCBsb2NhbCgpIHtcbiAgICAgIHJldHVybiAoMCwgX3V0aWwyLmRlZmF1bHQpKHJlcXVlc3QkLCBydW5TdHJlYW1BZGFwdGVyKTtcbiAgICB9LFxuICAgIC8vIEZvciBzZXNzaW9uU3RvcmFnZS5cbiAgICBnZXQgc2Vzc2lvbigpIHtcbiAgICAgIHJldHVybiAoMCwgX3V0aWwyLmRlZmF1bHQpKHJlcXVlc3QkLCBydW5TdHJlYW1BZGFwdGVyLCAnc2Vzc2lvbicpO1xuICAgIH1cbiAgfTtcbn07XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuXG52YXIgX3V0aWwyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdXRpbCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gZ2V0UmVzcG9uc2VPYmo7XG5cbnZhciBfZHJvcFJlcGVhdHMgPSByZXF1aXJlKCd4c3RyZWFtL2V4dHJhL2Ryb3BSZXBlYXRzJyk7XG5cbnZhciBfZHJvcFJlcGVhdHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZHJvcFJlcGVhdHMpO1xuXG52YXIgX3hzdHJlYW1BZGFwdGVyID0gcmVxdWlyZSgnQGN5Y2xlL3hzdHJlYW0tYWRhcHRlcicpO1xuXG52YXIgX3hzdHJlYW1BZGFwdGVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3hzdHJlYW1BZGFwdGVyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gZ2V0U3RvcmFnZSQocmVxdWVzdCQsIHR5cGUpIHtcbiAgaWYgKHR5cGUgPT09ICdsb2NhbCcpIHtcbiAgICByZXR1cm4gcmVxdWVzdCQuZmlsdGVyKGZ1bmN0aW9uIChyZXEpIHtcbiAgICAgIHJldHVybiAhcmVxLnRhcmdldCB8fCByZXEudGFyZ2V0ID09PSAnbG9jYWwnO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiByZXF1ZXN0JC5maWx0ZXIoZnVuY3Rpb24gKHJlcSkge1xuICAgICAgcmV0dXJuIHJlcS50YXJnZXQgPT09ICdzZXNzaW9uJztcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzdG9yYWdlS2V5KG4sIHJlcXVlc3QkKSB7XG4gIHZhciB0eXBlID0gYXJndW1lbnRzLmxlbmd0aCA8PSAyIHx8IGFyZ3VtZW50c1syXSA9PT0gdW5kZWZpbmVkID8gJ2xvY2FsJyA6IGFyZ3VtZW50c1syXTtcblxuICB2YXIgc3RvcmFnZSQgPSBnZXRTdG9yYWdlJChyZXF1ZXN0JCwgdHlwZSk7XG4gIHZhciBrZXkgPSB0eXBlID09PSAnbG9jYWwnID8gbG9jYWxTdG9yYWdlLmtleShuKSA6IHNlc3Npb25TdG9yYWdlLmtleShuKTtcblxuICByZXR1cm4gc3RvcmFnZSQuZmlsdGVyKGZ1bmN0aW9uIChyZXEpIHtcbiAgICByZXR1cm4gcmVxLmtleSA9PT0ga2V5O1xuICB9KS5tYXAoZnVuY3Rpb24gKHJlcSkge1xuICAgIHJldHVybiByZXEua2V5O1xuICB9KS5zdGFydFdpdGgoa2V5KS5jb21wb3NlKCgwLCBfZHJvcFJlcGVhdHMyLmRlZmF1bHQpKCkpO1xufVxuXG5mdW5jdGlvbiBzdG9yYWdlR2V0SXRlbShrZXksIHJlcXVlc3QkKSB7XG4gIHZhciB0eXBlID0gYXJndW1lbnRzLmxlbmd0aCA8PSAyIHx8IGFyZ3VtZW50c1syXSA9PT0gdW5kZWZpbmVkID8gJ2xvY2FsJyA6IGFyZ3VtZW50c1syXTtcblxuICB2YXIgc3RvcmFnZSQgPSBnZXRTdG9yYWdlJChyZXF1ZXN0JCwgdHlwZSk7XG4gIHZhciBzdG9yYWdlT2JqID0gdHlwZSA9PT0gJ2xvY2FsJyA/IGxvY2FsU3RvcmFnZSA6IHNlc3Npb25TdG9yYWdlO1xuXG4gIHJldHVybiBzdG9yYWdlJC5maWx0ZXIoZnVuY3Rpb24gKHJlcSkge1xuICAgIHJldHVybiByZXEua2V5ID09PSBrZXk7XG4gIH0pLm1hcChmdW5jdGlvbiAocmVxKSB7XG4gICAgcmV0dXJuIHJlcS52YWx1ZTtcbiAgfSkuc3RhcnRXaXRoKHN0b3JhZ2VPYmouZ2V0SXRlbShrZXkpKTtcbn1cblxuZnVuY3Rpb24gZ2V0UmVzcG9uc2VPYmoocmVxdWVzdCQsIHJ1blNBKSB7XG4gIHZhciB0eXBlID0gYXJndW1lbnRzLmxlbmd0aCA8PSAyIHx8IGFyZ3VtZW50c1syXSA9PT0gdW5kZWZpbmVkID8gJ2xvY2FsJyA6IGFyZ3VtZW50c1syXTtcblxuICByZXR1cm4ge1xuICAgIC8vIEZ1bmN0aW9uIHJldHVybmluZyBzdHJlYW0gb2YgdGhlIG50aCBrZXkuXG5cbiAgICBrZXk6IGZ1bmN0aW9uIGtleShuKSB7XG4gICAgICByZXR1cm4gcnVuU0EuYWRhcHQoc3RvcmFnZUtleShuLCByZXF1ZXN0JCwgdHlwZSksIF94c3RyZWFtQWRhcHRlcjIuZGVmYXVsdC5zdHJlYW1TdWJzY3JpYmUpO1xuICAgIH0sXG5cbiAgICAvLyBGdW5jdGlvbiByZXR1cm5pbmcgc3RyZWFtIG9mIGl0ZW0gdmFsdWVzLlxuICAgIGdldEl0ZW06IGZ1bmN0aW9uIGdldEl0ZW0oa2V5KSB7XG4gICAgICByZXR1cm4gcnVuU0EuYWRhcHQoc3RvcmFnZUdldEl0ZW0oa2V5LCByZXF1ZXN0JCwgdHlwZSksIF94c3RyZWFtQWRhcHRlcjIuZGVmYXVsdC5zdHJlYW1TdWJzY3JpYmUpO1xuICAgIH1cbiAgfTtcbn0iLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbi8qKlxuICogQGZ1bmN0aW9uIHdyaXRlVG9TdG9yZVxuICogQGRlc2NyaXB0aW9uXG4gKiBBIHVuaXZlcnNhbCB3cml0ZSBmdW5jdGlvbiBmb3IgbG9jYWxTdG9yYWdlIGFuZCBzZXNzaW9uU3RvcmFnZS5cbiAqIEBwYXJhbSB7b2JqZWN0fSByZXF1ZXN0IC0gdGhlIHN0b3JhZ2UgcmVxdWVzdCBvYmplY3RcbiAqIEBwYXJhbSB7c3RyaW5nfSByZXF1ZXN0LnRhcmdldCAtIGEgc3RyaW5nIGRldGVybWluZXMgd2hpY2ggc3RvcmFnZSB0byB1c2VcbiAqIEBwYXJhbSB7c3RyaW5nfSByZXF1ZXN0LmFjdGlvbiAtIGEgc3RyaW5nIGRldGVybWluZXMgdGhlIHdyaXRlIGFjdGlvblxuICogQHBhcmFtIHtzdHJpbmd9IHJlcXVlc3Qua2V5IC0gdGhlIGtleSBvZiBhIHN0b3JhZ2UgaXRlbVxuICogQHBhcmFtIHtzdHJpbmd9IHJlcXVlc3QudmFsdWUgLSB0aGUgdmFsdWUgb2YgYSBzdG9yYWdlIGl0ZW1cbiAqL1xuZnVuY3Rpb24gd3JpdGVUb1N0b3JlKF9yZWYpIHtcbiAgdmFyIF9yZWYkdGFyZ2V0ID0gX3JlZi50YXJnZXQ7XG4gIHZhciB0YXJnZXQgPSBfcmVmJHRhcmdldCA9PT0gdW5kZWZpbmVkID8gXCJsb2NhbFwiIDogX3JlZiR0YXJnZXQ7XG4gIHZhciBfcmVmJGFjdGlvbiA9IF9yZWYuYWN0aW9uO1xuICB2YXIgYWN0aW9uID0gX3JlZiRhY3Rpb24gPT09IHVuZGVmaW5lZCA/IFwic2V0SXRlbVwiIDogX3JlZiRhY3Rpb247XG4gIHZhciBrZXkgPSBfcmVmLmtleTtcbiAgdmFyIHZhbHVlID0gX3JlZi52YWx1ZTtcblxuICAvLyBEZXRlcm1pbmUgdGhlIHN0b3JhZ2UgdGFyZ2V0LlxuICB2YXIgc3RvcmFnZSA9IHRhcmdldCA9PT0gXCJsb2NhbFwiID8gbG9jYWxTdG9yYWdlIDogc2Vzc2lvblN0b3JhZ2U7XG5cbiAgLy8gRXhlY3V0ZSB0aGUgc3RvcmFnZSBhY3Rpb24gYW5kIHBhc3MgYXJndW1lbnRzIGlmIHRoZXkgd2VyZSBkZWZpbmVkLlxuICBzdG9yYWdlW2FjdGlvbl0oa2V5LCB2YWx1ZSk7XG59XG5cbmV4cG9ydHMuZGVmYXVsdCA9IHdyaXRlVG9TdG9yZTsiLCJcInVzZSBzdHJpY3RcIjtcbnZhciB4c3RyZWFtXzEgPSByZXF1aXJlKCd4c3RyZWFtJyk7XG5mdW5jdGlvbiBsb2dUb0NvbnNvbGVFcnJvcihlcnIpIHtcbiAgICB2YXIgdGFyZ2V0ID0gZXJyLnN0YWNrIHx8IGVycjtcbiAgICBpZiAoY29uc29sZSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IodGFyZ2V0KTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY29uc29sZSAmJiBjb25zb2xlLmxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyh0YXJnZXQpO1xuICAgIH1cbn1cbnZhciBYU3RyZWFtQWRhcHRlciA9IHtcbiAgICBhZGFwdDogZnVuY3Rpb24gKG9yaWdpblN0cmVhbSwgb3JpZ2luU3RyZWFtU3Vic2NyaWJlKSB7XG4gICAgICAgIGlmIChYU3RyZWFtQWRhcHRlci5pc1ZhbGlkU3RyZWFtKG9yaWdpblN0cmVhbSkpIHtcbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5TdHJlYW07XG4gICAgICAgIH1cbiAgICAgICAgO1xuICAgICAgICB2YXIgZGlzcG9zZSA9IG51bGw7XG4gICAgICAgIHJldHVybiB4c3RyZWFtXzEuZGVmYXVsdC5jcmVhdGUoe1xuICAgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uIChvdXQpIHtcbiAgICAgICAgICAgICAgICB2YXIgb2JzZXJ2ZXIgPSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gb3V0LnNoYW1lZnVsbHlTZW5kTmV4dCh2YWx1ZSk7IH0sXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoZXJyKSB7IHJldHVybiBvdXQuc2hhbWVmdWxseVNlbmRFcnJvcihlcnIpOyB9LFxuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gb3V0LnNoYW1lZnVsbHlTZW5kQ29tcGxldGUoKTsgfSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGRpc3Bvc2UgPSBvcmlnaW5TdHJlYW1TdWJzY3JpYmUob3JpZ2luU3RyZWFtLCBvYnNlcnZlcik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGlzcG9zZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBkaXNwb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGRpc3Bvc2U6IGZ1bmN0aW9uIChzaW5rcywgc2lua1Byb3hpZXMsIHNvdXJjZXMpIHtcbiAgICAgICAgT2JqZWN0LmtleXMoc291cmNlcykuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzb3VyY2VzW2tdLmRpc3Bvc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBzb3VyY2VzW2tdLmRpc3Bvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5rZXlzKHNpbmtzKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICAgICAgICBzaW5rc1trXS5yZW1vdmVMaXN0ZW5lcihzaW5rUHJveGllc1trXS5zdHJlYW0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIG1ha2VIb2xkU3ViamVjdDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc3RyZWFtID0geHN0cmVhbV8xLmRlZmF1bHQuY3JlYXRlV2l0aE1lbW9yeSgpO1xuICAgICAgICB2YXIgb2JzZXJ2ZXIgPSB7XG4gICAgICAgICAgICBuZXh0OiBmdW5jdGlvbiAoeCkgeyBzdHJlYW0uc2hhbWVmdWxseVNlbmROZXh0KHgpOyB9LFxuICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICBsb2dUb0NvbnNvbGVFcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIHN0cmVhbS5zaGFtZWZ1bGx5U2VuZEVycm9yKGVycik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHsgc3RyZWFtLnNoYW1lZnVsbHlTZW5kQ29tcGxldGUoKTsgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4geyBvYnNlcnZlcjogb2JzZXJ2ZXIsIHN0cmVhbTogc3RyZWFtIH07XG4gICAgfSxcbiAgICBpc1ZhbGlkU3RyZWFtOiBmdW5jdGlvbiAoc3RyZWFtKSB7XG4gICAgICAgIHJldHVybiAodHlwZW9mIHN0cmVhbS5hZGRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgICAgICAgdHlwZW9mIHN0cmVhbS5zaGFtZWZ1bGx5U2VuZE5leHQgPT09ICdmdW5jdGlvbicpO1xuICAgIH0sXG4gICAgc3RyZWFtU3Vic2NyaWJlOiBmdW5jdGlvbiAoc3RyZWFtLCBvYnNlcnZlcikge1xuICAgICAgICBzdHJlYW0uYWRkTGlzdGVuZXIob2JzZXJ2ZXIpO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RyZWFtLnJlbW92ZUxpc3RlbmVyKG9ic2VydmVyKTsgfTtcbiAgICB9XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gWFN0cmVhbUFkYXB0ZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTtcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG59O1xudmFyIGVtcHR5ID0ge307XG5mdW5jdGlvbiBub29wKCkgeyB9XG5mdW5jdGlvbiBjb3B5KGEpIHtcbiAgICB2YXIgbCA9IGEubGVuZ3RoO1xuICAgIHZhciBiID0gQXJyYXkobCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyArK2kpIHtcbiAgICAgICAgYltpXSA9IGFbaV07XG4gICAgfVxuICAgIHJldHVybiBiO1xufVxuZXhwb3J0cy5lbXB0eUxpc3RlbmVyID0ge1xuICAgIF9uOiBub29wLFxuICAgIF9lOiBub29wLFxuICAgIF9jOiBub29wLFxufTtcbi8vIG11dGF0ZXMgdGhlIGlucHV0XG5mdW5jdGlvbiBpbnRlcm5hbGl6ZVByb2R1Y2VyKHByb2R1Y2VyKSB7XG4gICAgcHJvZHVjZXIuX3N0YXJ0ID1cbiAgICAgICAgZnVuY3Rpb24gX3N0YXJ0KGlsKSB7XG4gICAgICAgICAgICBpbC5uZXh0ID0gaWwuX247XG4gICAgICAgICAgICBpbC5lcnJvciA9IGlsLl9lO1xuICAgICAgICAgICAgaWwuY29tcGxldGUgPSBpbC5fYztcbiAgICAgICAgICAgIHRoaXMuc3RhcnQoaWwpO1xuICAgICAgICB9O1xuICAgIHByb2R1Y2VyLl9zdG9wID0gcHJvZHVjZXIuc3RvcDtcbn1cbmZ1bmN0aW9uIGludm9rZShmLCBhcmdzKSB7XG4gICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDA6IHJldHVybiBmKCk7XG4gICAgICAgIGNhc2UgMTogcmV0dXJuIGYoYXJnc1swXSk7XG4gICAgICAgIGNhc2UgMjogcmV0dXJuIGYoYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICAgIGNhc2UgMzogcmV0dXJuIGYoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgICAgIGNhc2UgNDogcmV0dXJuIGYoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7XG4gICAgICAgIGNhc2UgNTogcmV0dXJuIGYoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSwgYXJnc1s0XSk7XG4gICAgICAgIGRlZmF1bHQ6IHJldHVybiBmLmFwcGx5KHZvaWQgMCwgYXJncyk7XG4gICAgfVxufVxuZnVuY3Rpb24gY29tcG9zZTIoZjEsIGYyKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNvbXBvc2VkRm4oYXJnKSB7XG4gICAgICAgIHJldHVybiBmMShmMihhcmcpKTtcbiAgICB9O1xufVxuZnVuY3Rpb24gYW5kKGYxLCBmMikge1xuICAgIHJldHVybiBmdW5jdGlvbiBhbmRGbih0KSB7XG4gICAgICAgIHJldHVybiBmMSh0KSAmJiBmMih0KTtcbiAgICB9O1xufVxudmFyIENvbWJpbmVMaXN0ZW5lciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQ29tYmluZUxpc3RlbmVyKGksIHApIHtcbiAgICAgICAgdGhpcy5pID0gaTtcbiAgICAgICAgdGhpcy5wID0gcDtcbiAgICAgICAgcC5pbHMucHVzaCh0aGlzKTtcbiAgICB9XG4gICAgQ29tYmluZUxpc3RlbmVyLnByb3RvdHlwZS5fbiA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHZhciBwID0gdGhpcy5wLCBvdXQgPSBwLm91dDtcbiAgICAgICAgaWYgKCFvdXQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChwLnVwKHQsIHRoaXMuaSkpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb3V0Ll9uKGludm9rZShwLnByb2plY3QsIHAudmFscykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBvdXQuX2UoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIENvbWJpbmVMaXN0ZW5lci5wcm90b3R5cGUuX2UgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHZhciBvdXQgPSB0aGlzLnAub3V0O1xuICAgICAgICBpZiAoIW91dClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgb3V0Ll9lKGVycik7XG4gICAgfTtcbiAgICBDb21iaW5lTGlzdGVuZXIucHJvdG90eXBlLl9jID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcCA9IHRoaXMucDtcbiAgICAgICAgaWYgKCFwLm91dClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKC0tcC5hYyA9PT0gMCkge1xuICAgICAgICAgICAgcC5vdXQuX2MoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIENvbWJpbmVMaXN0ZW5lcjtcbn0oKSk7XG5leHBvcnRzLkNvbWJpbmVMaXN0ZW5lciA9IENvbWJpbmVMaXN0ZW5lcjtcbnZhciBDb21iaW5lUHJvZHVjZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIENvbWJpbmVQcm9kdWNlcihwcm9qZWN0LCBzdHJlYW1zKSB7XG4gICAgICAgIHRoaXMucHJvamVjdCA9IHByb2plY3Q7XG4gICAgICAgIHRoaXMuc3RyZWFtcyA9IHN0cmVhbXM7XG4gICAgICAgIHRoaXMudHlwZSA9ICdjb21iaW5lJztcbiAgICAgICAgdGhpcy5vdXQgPSBleHBvcnRzLmVtcHR5TGlzdGVuZXI7XG4gICAgICAgIHRoaXMuaWxzID0gW107XG4gICAgICAgIHZhciBuID0gdGhpcy5hYyA9IHRoaXMubGVmdCA9IHN0cmVhbXMubGVuZ3RoO1xuICAgICAgICB2YXIgdmFscyA9IHRoaXMudmFscyA9IG5ldyBBcnJheShuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHZhbHNbaV0gPSBlbXB0eTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBDb21iaW5lUHJvZHVjZXIucHJvdG90eXBlLnVwID0gZnVuY3Rpb24gKHQsIGkpIHtcbiAgICAgICAgdmFyIHYgPSB0aGlzLnZhbHNbaV07XG4gICAgICAgIHZhciBsZWZ0ID0gIXRoaXMubGVmdCA/IDAgOiB2ID09PSBlbXB0eSA/IC0tdGhpcy5sZWZ0IDogdGhpcy5sZWZ0O1xuICAgICAgICB0aGlzLnZhbHNbaV0gPSB0O1xuICAgICAgICByZXR1cm4gbGVmdCA9PT0gMDtcbiAgICB9O1xuICAgIENvbWJpbmVQcm9kdWNlci5wcm90b3R5cGUuX3N0YXJ0ID0gZnVuY3Rpb24gKG91dCkge1xuICAgICAgICB0aGlzLm91dCA9IG91dDtcbiAgICAgICAgdmFyIHMgPSB0aGlzLnN0cmVhbXM7XG4gICAgICAgIHZhciBuID0gcy5sZW5ndGg7XG4gICAgICAgIGlmIChuID09PSAwKVxuICAgICAgICAgICAgdGhpcy56ZXJvKG91dCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBzW2ldLl9hZGQobmV3IENvbWJpbmVMaXN0ZW5lcihpLCB0aGlzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIENvbWJpbmVQcm9kdWNlci5wcm90b3R5cGUuX3N0b3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBzID0gdGhpcy5zdHJlYW1zO1xuICAgICAgICB2YXIgbiA9IHRoaXMuYWMgPSB0aGlzLmxlZnQgPSBzLmxlbmd0aDtcbiAgICAgICAgdmFyIHZhbHMgPSB0aGlzLnZhbHMgPSBuZXcgQXJyYXkobik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzW2ldLl9yZW1vdmUodGhpcy5pbHNbaV0pO1xuICAgICAgICAgICAgdmFsc1tpXSA9IGVtcHR5O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5pbHMgPSBbXTtcbiAgICB9O1xuICAgIENvbWJpbmVQcm9kdWNlci5wcm90b3R5cGUuemVybyA9IGZ1bmN0aW9uIChvdXQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG91dC5fbih0aGlzLnByb2plY3QoKSk7XG4gICAgICAgICAgICBvdXQuX2MoKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgb3V0Ll9lKGUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gQ29tYmluZVByb2R1Y2VyO1xufSgpKTtcbmV4cG9ydHMuQ29tYmluZVByb2R1Y2VyID0gQ29tYmluZVByb2R1Y2VyO1xudmFyIEZyb21BcnJheVByb2R1Y2VyID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBGcm9tQXJyYXlQcm9kdWNlcihhKSB7XG4gICAgICAgIHRoaXMuYSA9IGE7XG4gICAgICAgIHRoaXMudHlwZSA9ICdmcm9tQXJyYXknO1xuICAgIH1cbiAgICBGcm9tQXJyYXlQcm9kdWNlci5wcm90b3R5cGUuX3N0YXJ0ID0gZnVuY3Rpb24gKG91dCkge1xuICAgICAgICB2YXIgYSA9IHRoaXMuYTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBhLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgb3V0Ll9uKGFbaV0pO1xuICAgICAgICB9XG4gICAgICAgIG91dC5fYygpO1xuICAgIH07XG4gICAgRnJvbUFycmF5UHJvZHVjZXIucHJvdG90eXBlLl9zdG9wID0gZnVuY3Rpb24gKCkge1xuICAgIH07XG4gICAgcmV0dXJuIEZyb21BcnJheVByb2R1Y2VyO1xufSgpKTtcbmV4cG9ydHMuRnJvbUFycmF5UHJvZHVjZXIgPSBGcm9tQXJyYXlQcm9kdWNlcjtcbnZhciBGcm9tUHJvbWlzZVByb2R1Y2VyID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBGcm9tUHJvbWlzZVByb2R1Y2VyKHApIHtcbiAgICAgICAgdGhpcy5wID0gcDtcbiAgICAgICAgdGhpcy50eXBlID0gJ2Zyb21Qcm9taXNlJztcbiAgICAgICAgdGhpcy5vbiA9IGZhbHNlO1xuICAgIH1cbiAgICBGcm9tUHJvbWlzZVByb2R1Y2VyLnByb3RvdHlwZS5fc3RhcnQgPSBmdW5jdGlvbiAob3V0KSB7XG4gICAgICAgIHZhciBwcm9kID0gdGhpcztcbiAgICAgICAgdGhpcy5vbiA9IHRydWU7XG4gICAgICAgIHRoaXMucC50aGVuKGZ1bmN0aW9uICh2KSB7XG4gICAgICAgICAgICBpZiAocHJvZC5vbikge1xuICAgICAgICAgICAgICAgIG91dC5fbih2KTtcbiAgICAgICAgICAgICAgICBvdXQuX2MoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIG91dC5fZShlKTtcbiAgICAgICAgfSkudGhlbihudWxsLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgdGhyb3cgZXJyOyB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBGcm9tUHJvbWlzZVByb2R1Y2VyLnByb3RvdHlwZS5fc3RvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5vbiA9IGZhbHNlO1xuICAgIH07XG4gICAgcmV0dXJuIEZyb21Qcm9taXNlUHJvZHVjZXI7XG59KCkpO1xuZXhwb3J0cy5Gcm9tUHJvbWlzZVByb2R1Y2VyID0gRnJvbVByb21pc2VQcm9kdWNlcjtcbnZhciBNZXJnZVByb2R1Y2VyID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBNZXJnZVByb2R1Y2VyKHN0cmVhbXMpIHtcbiAgICAgICAgdGhpcy5zdHJlYW1zID0gc3RyZWFtcztcbiAgICAgICAgdGhpcy50eXBlID0gJ21lcmdlJztcbiAgICAgICAgdGhpcy5vdXQgPSBleHBvcnRzLmVtcHR5TGlzdGVuZXI7XG4gICAgICAgIHRoaXMuYWMgPSBzdHJlYW1zLmxlbmd0aDtcbiAgICB9XG4gICAgTWVyZ2VQcm9kdWNlci5wcm90b3R5cGUuX3N0YXJ0ID0gZnVuY3Rpb24gKG91dCkge1xuICAgICAgICB0aGlzLm91dCA9IG91dDtcbiAgICAgICAgdmFyIHMgPSB0aGlzLnN0cmVhbXM7XG4gICAgICAgIHZhciBMID0gcy5sZW5ndGg7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTDsgaSsrKSB7XG4gICAgICAgICAgICBzW2ldLl9hZGQodGhpcyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIE1lcmdlUHJvZHVjZXIucHJvdG90eXBlLl9zdG9wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcyA9IHRoaXMuc3RyZWFtcztcbiAgICAgICAgdmFyIEwgPSBzLmxlbmd0aDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBMOyBpKyspIHtcbiAgICAgICAgICAgIHNbaV0uX3JlbW92ZSh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm91dCA9IG51bGw7XG4gICAgICAgIHRoaXMuYWMgPSBMO1xuICAgIH07XG4gICAgTWVyZ2VQcm9kdWNlci5wcm90b3R5cGUuX24gPSBmdW5jdGlvbiAodCkge1xuICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICBpZiAoIXUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHUuX24odCk7XG4gICAgfTtcbiAgICBNZXJnZVByb2R1Y2VyLnByb3RvdHlwZS5fZSA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKCF1KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB1Ll9lKGVycik7XG4gICAgfTtcbiAgICBNZXJnZVByb2R1Y2VyLnByb3RvdHlwZS5fYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKC0tdGhpcy5hYyA9PT0gMCkge1xuICAgICAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgICAgIGlmICghdSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB1Ll9jKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBNZXJnZVByb2R1Y2VyO1xufSgpKTtcbmV4cG9ydHMuTWVyZ2VQcm9kdWNlciA9IE1lcmdlUHJvZHVjZXI7XG52YXIgUGVyaW9kaWNQcm9kdWNlciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gUGVyaW9kaWNQcm9kdWNlcihwZXJpb2QpIHtcbiAgICAgICAgdGhpcy5wZXJpb2QgPSBwZXJpb2Q7XG4gICAgICAgIHRoaXMudHlwZSA9ICdwZXJpb2RpYyc7XG4gICAgICAgIHRoaXMuaW50ZXJ2YWxJRCA9IC0xO1xuICAgICAgICB0aGlzLmkgPSAwO1xuICAgIH1cbiAgICBQZXJpb2RpY1Byb2R1Y2VyLnByb3RvdHlwZS5fc3RhcnQgPSBmdW5jdGlvbiAoc3RyZWFtKSB7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgICAgZnVuY3Rpb24gaW50ZXJ2YWxIYW5kbGVyKCkgeyBzdHJlYW0uX24oc2VsZi5pKyspOyB9XG4gICAgICAgIHRoaXMuaW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGludGVydmFsSGFuZGxlciwgdGhpcy5wZXJpb2QpO1xuICAgIH07XG4gICAgUGVyaW9kaWNQcm9kdWNlci5wcm90b3R5cGUuX3N0b3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmludGVydmFsSUQgIT09IC0xKVxuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsSUQpO1xuICAgICAgICB0aGlzLmludGVydmFsSUQgPSAtMTtcbiAgICAgICAgdGhpcy5pID0gMDtcbiAgICB9O1xuICAgIHJldHVybiBQZXJpb2RpY1Byb2R1Y2VyO1xufSgpKTtcbmV4cG9ydHMuUGVyaW9kaWNQcm9kdWNlciA9IFBlcmlvZGljUHJvZHVjZXI7XG52YXIgRGVidWdPcGVyYXRvciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRGVidWdPcGVyYXRvcihhcmcsIGlucykge1xuICAgICAgICB0aGlzLmlucyA9IGlucztcbiAgICAgICAgdGhpcy50eXBlID0gJ2RlYnVnJztcbiAgICAgICAgdGhpcy5vdXQgPSBudWxsO1xuICAgICAgICB0aGlzLnMgPSBudWxsOyAvLyBzcHlcbiAgICAgICAgdGhpcy5sID0gbnVsbDsgLy8gbGFiZWxcbiAgICAgICAgaWYgKHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aGlzLmwgPSBhcmc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnMgPSBhcmc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgRGVidWdPcGVyYXRvci5wcm90b3R5cGUuX3N0YXJ0ID0gZnVuY3Rpb24gKG91dCkge1xuICAgICAgICB0aGlzLm91dCA9IG91dDtcbiAgICAgICAgdGhpcy5pbnMuX2FkZCh0aGlzKTtcbiAgICB9O1xuICAgIERlYnVnT3BlcmF0b3IucHJvdG90eXBlLl9zdG9wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmlucy5fcmVtb3ZlKHRoaXMpO1xuICAgICAgICB0aGlzLm91dCA9IG51bGw7XG4gICAgfTtcbiAgICBEZWJ1Z09wZXJhdG9yLnByb3RvdHlwZS5fbiA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICghdSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdmFyIHMgPSB0aGlzLnMsIGwgPSB0aGlzLmw7XG4gICAgICAgIGlmIChzKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHModCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHUuX2UoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2cobCArICc6JywgdCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyh0KTtcbiAgICAgICAgfVxuICAgICAgICB1Ll9uKHQpO1xuICAgIH07XG4gICAgRGVidWdPcGVyYXRvci5wcm90b3R5cGUuX2UgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICghdSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdS5fZShlcnIpO1xuICAgIH07XG4gICAgRGVidWdPcGVyYXRvci5wcm90b3R5cGUuX2MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICghdSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdS5fYygpO1xuICAgIH07XG4gICAgcmV0dXJuIERlYnVnT3BlcmF0b3I7XG59KCkpO1xuZXhwb3J0cy5EZWJ1Z09wZXJhdG9yID0gRGVidWdPcGVyYXRvcjtcbnZhciBEcm9wT3BlcmF0b3IgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERyb3BPcGVyYXRvcihtYXgsIGlucykge1xuICAgICAgICB0aGlzLm1heCA9IG1heDtcbiAgICAgICAgdGhpcy5pbnMgPSBpbnM7XG4gICAgICAgIHRoaXMudHlwZSA9ICdkcm9wJztcbiAgICAgICAgdGhpcy5vdXQgPSBudWxsO1xuICAgICAgICB0aGlzLmRyb3BwZWQgPSAwO1xuICAgIH1cbiAgICBEcm9wT3BlcmF0b3IucHJvdG90eXBlLl9zdGFydCA9IGZ1bmN0aW9uIChvdXQpIHtcbiAgICAgICAgdGhpcy5vdXQgPSBvdXQ7XG4gICAgICAgIHRoaXMuaW5zLl9hZGQodGhpcyk7XG4gICAgfTtcbiAgICBEcm9wT3BlcmF0b3IucHJvdG90eXBlLl9zdG9wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmlucy5fcmVtb3ZlKHRoaXMpO1xuICAgICAgICB0aGlzLm91dCA9IG51bGw7XG4gICAgICAgIHRoaXMuZHJvcHBlZCA9IDA7XG4gICAgfTtcbiAgICBEcm9wT3BlcmF0b3IucHJvdG90eXBlLl9uID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKCF1KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodGhpcy5kcm9wcGVkKysgPj0gdGhpcy5tYXgpXG4gICAgICAgICAgICB1Ll9uKHQpO1xuICAgIH07XG4gICAgRHJvcE9wZXJhdG9yLnByb3RvdHlwZS5fZSA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKCF1KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB1Ll9lKGVycik7XG4gICAgfTtcbiAgICBEcm9wT3BlcmF0b3IucHJvdG90eXBlLl9jID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICBpZiAoIXUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHUuX2MoKTtcbiAgICB9O1xuICAgIHJldHVybiBEcm9wT3BlcmF0b3I7XG59KCkpO1xuZXhwb3J0cy5Ecm9wT3BlcmF0b3IgPSBEcm9wT3BlcmF0b3I7XG52YXIgT3RoZXJJTCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gT3RoZXJJTChvdXQsIG9wKSB7XG4gICAgICAgIHRoaXMub3V0ID0gb3V0O1xuICAgICAgICB0aGlzLm9wID0gb3A7XG4gICAgfVxuICAgIE90aGVySUwucHJvdG90eXBlLl9uID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgdGhpcy5vcC5lbmQoKTtcbiAgICB9O1xuICAgIE90aGVySUwucHJvdG90eXBlLl9lID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgICB0aGlzLm91dC5fZShlcnIpO1xuICAgIH07XG4gICAgT3RoZXJJTC5wcm90b3R5cGUuX2MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMub3AuZW5kKCk7XG4gICAgfTtcbiAgICByZXR1cm4gT3RoZXJJTDtcbn0oKSk7XG52YXIgRW5kV2hlbk9wZXJhdG9yID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBFbmRXaGVuT3BlcmF0b3IobywgLy8gbyA9IG90aGVyXG4gICAgICAgIGlucykge1xuICAgICAgICB0aGlzLm8gPSBvO1xuICAgICAgICB0aGlzLmlucyA9IGlucztcbiAgICAgICAgdGhpcy50eXBlID0gJ2VuZFdoZW4nO1xuICAgICAgICB0aGlzLm91dCA9IG51bGw7XG4gICAgICAgIHRoaXMub2lsID0gZXhwb3J0cy5lbXB0eUxpc3RlbmVyOyAvLyBvaWwgPSBvdGhlciBJbnRlcm5hbExpc3RlbmVyXG4gICAgfVxuICAgIEVuZFdoZW5PcGVyYXRvci5wcm90b3R5cGUuX3N0YXJ0ID0gZnVuY3Rpb24gKG91dCkge1xuICAgICAgICB0aGlzLm91dCA9IG91dDtcbiAgICAgICAgdGhpcy5vLl9hZGQodGhpcy5vaWwgPSBuZXcgT3RoZXJJTChvdXQsIHRoaXMpKTtcbiAgICAgICAgdGhpcy5pbnMuX2FkZCh0aGlzKTtcbiAgICB9O1xuICAgIEVuZFdoZW5PcGVyYXRvci5wcm90b3R5cGUuX3N0b3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuaW5zLl9yZW1vdmUodGhpcyk7XG4gICAgICAgIHRoaXMuby5fcmVtb3ZlKHRoaXMub2lsKTtcbiAgICAgICAgdGhpcy5vdXQgPSBudWxsO1xuICAgICAgICB0aGlzLm9pbCA9IG51bGw7XG4gICAgfTtcbiAgICBFbmRXaGVuT3BlcmF0b3IucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKCF1KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB1Ll9jKCk7XG4gICAgfTtcbiAgICBFbmRXaGVuT3BlcmF0b3IucHJvdG90eXBlLl9uID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKCF1KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB1Ll9uKHQpO1xuICAgIH07XG4gICAgRW5kV2hlbk9wZXJhdG9yLnByb3RvdHlwZS5fZSA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKCF1KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB1Ll9lKGVycik7XG4gICAgfTtcbiAgICBFbmRXaGVuT3BlcmF0b3IucHJvdG90eXBlLl9jID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmVuZCgpO1xuICAgIH07XG4gICAgcmV0dXJuIEVuZFdoZW5PcGVyYXRvcjtcbn0oKSk7XG5leHBvcnRzLkVuZFdoZW5PcGVyYXRvciA9IEVuZFdoZW5PcGVyYXRvcjtcbnZhciBGaWx0ZXJPcGVyYXRvciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRmlsdGVyT3BlcmF0b3IocGFzc2VzLCBpbnMpIHtcbiAgICAgICAgdGhpcy5wYXNzZXMgPSBwYXNzZXM7XG4gICAgICAgIHRoaXMuaW5zID0gaW5zO1xuICAgICAgICB0aGlzLnR5cGUgPSAnZmlsdGVyJztcbiAgICAgICAgdGhpcy5vdXQgPSBudWxsO1xuICAgIH1cbiAgICBGaWx0ZXJPcGVyYXRvci5wcm90b3R5cGUuX3N0YXJ0ID0gZnVuY3Rpb24gKG91dCkge1xuICAgICAgICB0aGlzLm91dCA9IG91dDtcbiAgICAgICAgdGhpcy5pbnMuX2FkZCh0aGlzKTtcbiAgICB9O1xuICAgIEZpbHRlck9wZXJhdG9yLnByb3RvdHlwZS5fc3RvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5pbnMuX3JlbW92ZSh0aGlzKTtcbiAgICAgICAgdGhpcy5vdXQgPSBudWxsO1xuICAgIH07XG4gICAgRmlsdGVyT3BlcmF0b3IucHJvdG90eXBlLl9uID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKCF1KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHRoaXMucGFzc2VzKHQpKVxuICAgICAgICAgICAgICAgIHUuX24odCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHUuX2UoZSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEZpbHRlck9wZXJhdG9yLnByb3RvdHlwZS5fZSA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKCF1KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB1Ll9lKGVycik7XG4gICAgfTtcbiAgICBGaWx0ZXJPcGVyYXRvci5wcm90b3R5cGUuX2MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICghdSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdS5fYygpO1xuICAgIH07XG4gICAgcmV0dXJuIEZpbHRlck9wZXJhdG9yO1xufSgpKTtcbmV4cG9ydHMuRmlsdGVyT3BlcmF0b3IgPSBGaWx0ZXJPcGVyYXRvcjtcbnZhciBGbGF0dGVuTGlzdGVuZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEZsYXR0ZW5MaXN0ZW5lcihvdXQsIG9wKSB7XG4gICAgICAgIHRoaXMub3V0ID0gb3V0O1xuICAgICAgICB0aGlzLm9wID0gb3A7XG4gICAgfVxuICAgIEZsYXR0ZW5MaXN0ZW5lci5wcm90b3R5cGUuX24gPSBmdW5jdGlvbiAodCkge1xuICAgICAgICB0aGlzLm91dC5fbih0KTtcbiAgICB9O1xuICAgIEZsYXR0ZW5MaXN0ZW5lci5wcm90b3R5cGUuX2UgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHRoaXMub3V0Ll9lKGVycik7XG4gICAgfTtcbiAgICBGbGF0dGVuTGlzdGVuZXIucHJvdG90eXBlLl9jID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLm9wLmlubmVyID0gbnVsbDtcbiAgICAgICAgdGhpcy5vcC5sZXNzKCk7XG4gICAgfTtcbiAgICByZXR1cm4gRmxhdHRlbkxpc3RlbmVyO1xufSgpKTtcbnZhciBGbGF0dGVuT3BlcmF0b3IgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEZsYXR0ZW5PcGVyYXRvcihpbnMpIHtcbiAgICAgICAgdGhpcy5pbnMgPSBpbnM7XG4gICAgICAgIHRoaXMudHlwZSA9ICdmbGF0dGVuJztcbiAgICAgICAgdGhpcy5pbm5lciA9IG51bGw7IC8vIEN1cnJlbnQgaW5uZXIgU3RyZWFtXG4gICAgICAgIHRoaXMuaWwgPSBudWxsOyAvLyBDdXJyZW50IGlubmVyIEludGVybmFsTGlzdGVuZXJcbiAgICAgICAgdGhpcy5vcGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vdXQgPSBudWxsO1xuICAgIH1cbiAgICBGbGF0dGVuT3BlcmF0b3IucHJvdG90eXBlLl9zdGFydCA9IGZ1bmN0aW9uIChvdXQpIHtcbiAgICAgICAgdGhpcy5vdXQgPSBvdXQ7XG4gICAgICAgIHRoaXMuaW5zLl9hZGQodGhpcyk7XG4gICAgfTtcbiAgICBGbGF0dGVuT3BlcmF0b3IucHJvdG90eXBlLl9zdG9wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmlucy5fcmVtb3ZlKHRoaXMpO1xuICAgICAgICB0aGlzLmlubmVyID0gbnVsbDtcbiAgICAgICAgdGhpcy5pbCA9IG51bGw7XG4gICAgICAgIHRoaXMub3BlbiA9IHRydWU7XG4gICAgICAgIHRoaXMub3V0ID0gbnVsbDtcbiAgICB9O1xuICAgIEZsYXR0ZW5PcGVyYXRvci5wcm90b3R5cGUubGVzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKCF1KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoIXRoaXMub3BlbiAmJiAhdGhpcy5pbm5lcilcbiAgICAgICAgICAgIHUuX2MoKTtcbiAgICB9O1xuICAgIEZsYXR0ZW5PcGVyYXRvci5wcm90b3R5cGUuX24gPSBmdW5jdGlvbiAocykge1xuICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICBpZiAoIXUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIGlubmVyID0gX2EuaW5uZXIsIGlsID0gX2EuaWw7XG4gICAgICAgIGlmIChpbm5lciAmJiBpbClcbiAgICAgICAgICAgIGlubmVyLl9yZW1vdmUoaWwpO1xuICAgICAgICAodGhpcy5pbm5lciA9IHMpLl9hZGQodGhpcy5pbCA9IG5ldyBGbGF0dGVuTGlzdGVuZXIodSwgdGhpcykpO1xuICAgIH07XG4gICAgRmxhdHRlbk9wZXJhdG9yLnByb3RvdHlwZS5fZSA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKCF1KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB1Ll9lKGVycik7XG4gICAgfTtcbiAgICBGbGF0dGVuT3BlcmF0b3IucHJvdG90eXBlLl9jID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5sZXNzKCk7XG4gICAgfTtcbiAgICByZXR1cm4gRmxhdHRlbk9wZXJhdG9yO1xufSgpKTtcbmV4cG9ydHMuRmxhdHRlbk9wZXJhdG9yID0gRmxhdHRlbk9wZXJhdG9yO1xudmFyIEZvbGRPcGVyYXRvciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRm9sZE9wZXJhdG9yKGYsIHNlZWQsIGlucykge1xuICAgICAgICB0aGlzLmYgPSBmO1xuICAgICAgICB0aGlzLnNlZWQgPSBzZWVkO1xuICAgICAgICB0aGlzLmlucyA9IGlucztcbiAgICAgICAgdGhpcy50eXBlID0gJ2ZvbGQnO1xuICAgICAgICB0aGlzLm91dCA9IG51bGw7XG4gICAgICAgIHRoaXMuYWNjID0gc2VlZDtcbiAgICB9XG4gICAgRm9sZE9wZXJhdG9yLnByb3RvdHlwZS5fc3RhcnQgPSBmdW5jdGlvbiAob3V0KSB7XG4gICAgICAgIHRoaXMub3V0ID0gb3V0O1xuICAgICAgICBvdXQuX24odGhpcy5hY2MpO1xuICAgICAgICB0aGlzLmlucy5fYWRkKHRoaXMpO1xuICAgIH07XG4gICAgRm9sZE9wZXJhdG9yLnByb3RvdHlwZS5fc3RvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5pbnMuX3JlbW92ZSh0aGlzKTtcbiAgICAgICAgdGhpcy5vdXQgPSBudWxsO1xuICAgICAgICB0aGlzLmFjYyA9IHRoaXMuc2VlZDtcbiAgICB9O1xuICAgIEZvbGRPcGVyYXRvci5wcm90b3R5cGUuX24gPSBmdW5jdGlvbiAodCkge1xuICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICBpZiAoIXUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB1Ll9uKHRoaXMuYWNjID0gdGhpcy5mKHRoaXMuYWNjLCB0KSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHUuX2UoZSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEZvbGRPcGVyYXRvci5wcm90b3R5cGUuX2UgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICghdSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdS5fZShlcnIpO1xuICAgIH07XG4gICAgRm9sZE9wZXJhdG9yLnByb3RvdHlwZS5fYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKCF1KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB1Ll9jKCk7XG4gICAgfTtcbiAgICByZXR1cm4gRm9sZE9wZXJhdG9yO1xufSgpKTtcbmV4cG9ydHMuRm9sZE9wZXJhdG9yID0gRm9sZE9wZXJhdG9yO1xudmFyIExhc3RPcGVyYXRvciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gTGFzdE9wZXJhdG9yKGlucykge1xuICAgICAgICB0aGlzLmlucyA9IGlucztcbiAgICAgICAgdGhpcy50eXBlID0gJ2xhc3QnO1xuICAgICAgICB0aGlzLm91dCA9IG51bGw7XG4gICAgICAgIHRoaXMuaGFzID0gZmFsc2U7XG4gICAgICAgIHRoaXMudmFsID0gZW1wdHk7XG4gICAgfVxuICAgIExhc3RPcGVyYXRvci5wcm90b3R5cGUuX3N0YXJ0ID0gZnVuY3Rpb24gKG91dCkge1xuICAgICAgICB0aGlzLm91dCA9IG91dDtcbiAgICAgICAgdGhpcy5pbnMuX2FkZCh0aGlzKTtcbiAgICB9O1xuICAgIExhc3RPcGVyYXRvci5wcm90b3R5cGUuX3N0b3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuaW5zLl9yZW1vdmUodGhpcyk7XG4gICAgICAgIHRoaXMub3V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5oYXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy52YWwgPSBlbXB0eTtcbiAgICB9O1xuICAgIExhc3RPcGVyYXRvci5wcm90b3R5cGUuX24gPSBmdW5jdGlvbiAodCkge1xuICAgICAgICB0aGlzLmhhcyA9IHRydWU7XG4gICAgICAgIHRoaXMudmFsID0gdDtcbiAgICB9O1xuICAgIExhc3RPcGVyYXRvci5wcm90b3R5cGUuX2UgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICghdSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdS5fZShlcnIpO1xuICAgIH07XG4gICAgTGFzdE9wZXJhdG9yLnByb3RvdHlwZS5fYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKCF1KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodGhpcy5oYXMpIHtcbiAgICAgICAgICAgIHUuX24odGhpcy52YWwpO1xuICAgICAgICAgICAgdS5fYygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdS5fZSgnVE9ETyBzaG93IHByb3BlciBlcnJvcicpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gTGFzdE9wZXJhdG9yO1xufSgpKTtcbmV4cG9ydHMuTGFzdE9wZXJhdG9yID0gTGFzdE9wZXJhdG9yO1xudmFyIE1hcEZsYXR0ZW5Jbm5lciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gTWFwRmxhdHRlbklubmVyKG91dCwgb3ApIHtcbiAgICAgICAgdGhpcy5vdXQgPSBvdXQ7XG4gICAgICAgIHRoaXMub3AgPSBvcDtcbiAgICB9XG4gICAgTWFwRmxhdHRlbklubmVyLnByb3RvdHlwZS5fbiA9IGZ1bmN0aW9uIChyKSB7XG4gICAgICAgIHRoaXMub3V0Ll9uKHIpO1xuICAgIH07XG4gICAgTWFwRmxhdHRlbklubmVyLnByb3RvdHlwZS5fZSA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgdGhpcy5vdXQuX2UoZXJyKTtcbiAgICB9O1xuICAgIE1hcEZsYXR0ZW5Jbm5lci5wcm90b3R5cGUuX2MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMub3AuaW5uZXIgPSBudWxsO1xuICAgICAgICB0aGlzLm9wLmxlc3MoKTtcbiAgICB9O1xuICAgIHJldHVybiBNYXBGbGF0dGVuSW5uZXI7XG59KCkpO1xudmFyIE1hcEZsYXR0ZW5PcGVyYXRvciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gTWFwRmxhdHRlbk9wZXJhdG9yKG1hcE9wKSB7XG4gICAgICAgIHRoaXMubWFwT3AgPSBtYXBPcDtcbiAgICAgICAgdGhpcy5pbm5lciA9IG51bGw7IC8vIEN1cnJlbnQgaW5uZXIgU3RyZWFtXG4gICAgICAgIHRoaXMuaWwgPSBudWxsOyAvLyBDdXJyZW50IGlubmVyIEludGVybmFsTGlzdGVuZXJcbiAgICAgICAgdGhpcy5vcGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vdXQgPSBudWxsO1xuICAgICAgICB0aGlzLnR5cGUgPSBtYXBPcC50eXBlICsgXCIrZmxhdHRlblwiO1xuICAgICAgICB0aGlzLmlucyA9IG1hcE9wLmlucztcbiAgICB9XG4gICAgTWFwRmxhdHRlbk9wZXJhdG9yLnByb3RvdHlwZS5fc3RhcnQgPSBmdW5jdGlvbiAob3V0KSB7XG4gICAgICAgIHRoaXMub3V0ID0gb3V0O1xuICAgICAgICB0aGlzLm1hcE9wLmlucy5fYWRkKHRoaXMpO1xuICAgIH07XG4gICAgTWFwRmxhdHRlbk9wZXJhdG9yLnByb3RvdHlwZS5fc3RvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5tYXBPcC5pbnMuX3JlbW92ZSh0aGlzKTtcbiAgICAgICAgdGhpcy5pbm5lciA9IG51bGw7XG4gICAgICAgIHRoaXMuaWwgPSBudWxsO1xuICAgICAgICB0aGlzLm9wZW4gPSB0cnVlO1xuICAgICAgICB0aGlzLm91dCA9IG51bGw7XG4gICAgfTtcbiAgICBNYXBGbGF0dGVuT3BlcmF0b3IucHJvdG90eXBlLmxlc3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghdGhpcy5vcGVuICYmICF0aGlzLmlubmVyKSB7XG4gICAgICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICAgICAgaWYgKCF1KVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIHUuX2MoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgTWFwRmxhdHRlbk9wZXJhdG9yLnByb3RvdHlwZS5fbiA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICghdSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgaW5uZXIgPSBfYS5pbm5lciwgaWwgPSBfYS5pbDtcbiAgICAgICAgaWYgKGlubmVyICYmIGlsKVxuICAgICAgICAgICAgaW5uZXIuX3JlbW92ZShpbCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAodGhpcy5pbm5lciA9IHRoaXMubWFwT3AucHJvamVjdCh2KSkuX2FkZCh0aGlzLmlsID0gbmV3IE1hcEZsYXR0ZW5Jbm5lcih1LCB0aGlzKSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHUuX2UoZSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIE1hcEZsYXR0ZW5PcGVyYXRvci5wcm90b3R5cGUuX2UgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICghdSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdS5fZShlcnIpO1xuICAgIH07XG4gICAgTWFwRmxhdHRlbk9wZXJhdG9yLnByb3RvdHlwZS5fYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMubGVzcygpO1xuICAgIH07XG4gICAgcmV0dXJuIE1hcEZsYXR0ZW5PcGVyYXRvcjtcbn0oKSk7XG5leHBvcnRzLk1hcEZsYXR0ZW5PcGVyYXRvciA9IE1hcEZsYXR0ZW5PcGVyYXRvcjtcbnZhciBNYXBPcGVyYXRvciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gTWFwT3BlcmF0b3IocHJvamVjdCwgaW5zKSB7XG4gICAgICAgIHRoaXMucHJvamVjdCA9IHByb2plY3Q7XG4gICAgICAgIHRoaXMuaW5zID0gaW5zO1xuICAgICAgICB0aGlzLnR5cGUgPSAnbWFwJztcbiAgICAgICAgdGhpcy5vdXQgPSBudWxsO1xuICAgIH1cbiAgICBNYXBPcGVyYXRvci5wcm90b3R5cGUuX3N0YXJ0ID0gZnVuY3Rpb24gKG91dCkge1xuICAgICAgICB0aGlzLm91dCA9IG91dDtcbiAgICAgICAgdGhpcy5pbnMuX2FkZCh0aGlzKTtcbiAgICB9O1xuICAgIE1hcE9wZXJhdG9yLnByb3RvdHlwZS5fc3RvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5pbnMuX3JlbW92ZSh0aGlzKTtcbiAgICAgICAgdGhpcy5vdXQgPSBudWxsO1xuICAgIH07XG4gICAgTWFwT3BlcmF0b3IucHJvdG90eXBlLl9uID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKCF1KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdS5fbih0aGlzLnByb2plY3QodCkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICB1Ll9lKGUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBNYXBPcGVyYXRvci5wcm90b3R5cGUuX2UgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICghdSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdS5fZShlcnIpO1xuICAgIH07XG4gICAgTWFwT3BlcmF0b3IucHJvdG90eXBlLl9jID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICBpZiAoIXUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHUuX2MoKTtcbiAgICB9O1xuICAgIHJldHVybiBNYXBPcGVyYXRvcjtcbn0oKSk7XG5leHBvcnRzLk1hcE9wZXJhdG9yID0gTWFwT3BlcmF0b3I7XG52YXIgRmlsdGVyTWFwT3BlcmF0b3IgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhGaWx0ZXJNYXBPcGVyYXRvciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBGaWx0ZXJNYXBPcGVyYXRvcihwYXNzZXMsIHByb2plY3QsIGlucykge1xuICAgICAgICBfc3VwZXIuY2FsbCh0aGlzLCBwcm9qZWN0LCBpbnMpO1xuICAgICAgICB0aGlzLnBhc3NlcyA9IHBhc3NlcztcbiAgICAgICAgdGhpcy50eXBlID0gJ2ZpbHRlcittYXAnO1xuICAgIH1cbiAgICBGaWx0ZXJNYXBPcGVyYXRvci5wcm90b3R5cGUuX24gPSBmdW5jdGlvbiAodikge1xuICAgICAgICBpZiAodGhpcy5wYXNzZXModikpIHtcbiAgICAgICAgICAgIF9zdXBlci5wcm90b3R5cGUuX24uY2FsbCh0aGlzLCB2KTtcbiAgICAgICAgfVxuICAgICAgICA7XG4gICAgfTtcbiAgICByZXR1cm4gRmlsdGVyTWFwT3BlcmF0b3I7XG59KE1hcE9wZXJhdG9yKSk7XG5leHBvcnRzLkZpbHRlck1hcE9wZXJhdG9yID0gRmlsdGVyTWFwT3BlcmF0b3I7XG52YXIgUmVwbGFjZUVycm9yT3BlcmF0b3IgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFJlcGxhY2VFcnJvck9wZXJhdG9yKGZuLCBpbnMpIHtcbiAgICAgICAgdGhpcy5mbiA9IGZuO1xuICAgICAgICB0aGlzLmlucyA9IGlucztcbiAgICAgICAgdGhpcy50eXBlID0gJ3JlcGxhY2VFcnJvcic7XG4gICAgICAgIHRoaXMub3V0ID0gZW1wdHk7XG4gICAgfVxuICAgIFJlcGxhY2VFcnJvck9wZXJhdG9yLnByb3RvdHlwZS5fc3RhcnQgPSBmdW5jdGlvbiAob3V0KSB7XG4gICAgICAgIHRoaXMub3V0ID0gb3V0O1xuICAgICAgICB0aGlzLmlucy5fYWRkKHRoaXMpO1xuICAgIH07XG4gICAgUmVwbGFjZUVycm9yT3BlcmF0b3IucHJvdG90eXBlLl9zdG9wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmlucy5fcmVtb3ZlKHRoaXMpO1xuICAgICAgICB0aGlzLm91dCA9IG51bGw7XG4gICAgfTtcbiAgICBSZXBsYWNlRXJyb3JPcGVyYXRvci5wcm90b3R5cGUuX24gPSBmdW5jdGlvbiAodCkge1xuICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICBpZiAoIXUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHUuX24odCk7XG4gICAgfTtcbiAgICBSZXBsYWNlRXJyb3JPcGVyYXRvci5wcm90b3R5cGUuX2UgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICghdSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuaW5zLl9yZW1vdmUodGhpcyk7XG4gICAgICAgICAgICAodGhpcy5pbnMgPSB0aGlzLmZuKGVycikpLl9hZGQodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHUuX2UoZSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFJlcGxhY2VFcnJvck9wZXJhdG9yLnByb3RvdHlwZS5fYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKCF1KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB1Ll9jKCk7XG4gICAgfTtcbiAgICByZXR1cm4gUmVwbGFjZUVycm9yT3BlcmF0b3I7XG59KCkpO1xuZXhwb3J0cy5SZXBsYWNlRXJyb3JPcGVyYXRvciA9IFJlcGxhY2VFcnJvck9wZXJhdG9yO1xudmFyIFN0YXJ0V2l0aE9wZXJhdG9yID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBTdGFydFdpdGhPcGVyYXRvcihpbnMsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuaW5zID0gaW5zO1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMudHlwZSA9ICdzdGFydFdpdGgnO1xuICAgICAgICB0aGlzLm91dCA9IGV4cG9ydHMuZW1wdHlMaXN0ZW5lcjtcbiAgICB9XG4gICAgU3RhcnRXaXRoT3BlcmF0b3IucHJvdG90eXBlLl9zdGFydCA9IGZ1bmN0aW9uIChvdXQpIHtcbiAgICAgICAgdGhpcy5vdXQgPSBvdXQ7XG4gICAgICAgIHRoaXMub3V0Ll9uKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLmlucy5fYWRkKG91dCk7XG4gICAgfTtcbiAgICBTdGFydFdpdGhPcGVyYXRvci5wcm90b3R5cGUuX3N0b3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuaW5zLl9yZW1vdmUodGhpcy5vdXQpO1xuICAgICAgICB0aGlzLm91dCA9IG51bGw7XG4gICAgfTtcbiAgICByZXR1cm4gU3RhcnRXaXRoT3BlcmF0b3I7XG59KCkpO1xuZXhwb3J0cy5TdGFydFdpdGhPcGVyYXRvciA9IFN0YXJ0V2l0aE9wZXJhdG9yO1xudmFyIFRha2VPcGVyYXRvciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gVGFrZU9wZXJhdG9yKG1heCwgaW5zKSB7XG4gICAgICAgIHRoaXMubWF4ID0gbWF4O1xuICAgICAgICB0aGlzLmlucyA9IGlucztcbiAgICAgICAgdGhpcy50eXBlID0gJ3Rha2UnO1xuICAgICAgICB0aGlzLm91dCA9IG51bGw7XG4gICAgICAgIHRoaXMudGFrZW4gPSAwO1xuICAgIH1cbiAgICBUYWtlT3BlcmF0b3IucHJvdG90eXBlLl9zdGFydCA9IGZ1bmN0aW9uIChvdXQpIHtcbiAgICAgICAgdGhpcy5vdXQgPSBvdXQ7XG4gICAgICAgIHRoaXMuaW5zLl9hZGQodGhpcyk7XG4gICAgfTtcbiAgICBUYWtlT3BlcmF0b3IucHJvdG90eXBlLl9zdG9wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmlucy5fcmVtb3ZlKHRoaXMpO1xuICAgICAgICB0aGlzLm91dCA9IG51bGw7XG4gICAgICAgIHRoaXMudGFrZW4gPSAwO1xuICAgIH07XG4gICAgVGFrZU9wZXJhdG9yLnByb3RvdHlwZS5fbiA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICghdSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHRoaXMudGFrZW4rKyA8IHRoaXMubWF4IC0gMSkge1xuICAgICAgICAgICAgdS5fbih0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHUuX24odCk7XG4gICAgICAgICAgICB1Ll9jKCk7XG4gICAgICAgICAgICB0aGlzLl9zdG9wKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFRha2VPcGVyYXRvci5wcm90b3R5cGUuX2UgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICghdSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdS5fZShlcnIpO1xuICAgIH07XG4gICAgVGFrZU9wZXJhdG9yLnByb3RvdHlwZS5fYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKCF1KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB1Ll9jKCk7XG4gICAgfTtcbiAgICByZXR1cm4gVGFrZU9wZXJhdG9yO1xufSgpKTtcbmV4cG9ydHMuVGFrZU9wZXJhdG9yID0gVGFrZU9wZXJhdG9yO1xudmFyIFN0cmVhbSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU3RyZWFtKHByb2R1Y2VyKSB7XG4gICAgICAgIHRoaXMuX3N0b3BJRCA9IGVtcHR5O1xuICAgICAgICB0aGlzLl9wcm9kID0gcHJvZHVjZXI7XG4gICAgICAgIHRoaXMuX2lscyA9IFtdO1xuICAgIH1cbiAgICBTdHJlYW0ucHJvdG90eXBlLl9uID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgdmFyIGEgPSB0aGlzLl9pbHM7XG4gICAgICAgIHZhciBMID0gYS5sZW5ndGg7XG4gICAgICAgIGlmIChMID09IDEpXG4gICAgICAgICAgICBhWzBdLl9uKHQpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBiID0gY29weShhKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTDsgaSsrKVxuICAgICAgICAgICAgICAgIGJbaV0uX24odCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN0cmVhbS5wcm90b3R5cGUuX2UgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHZhciBhID0gdGhpcy5faWxzO1xuICAgICAgICB2YXIgTCA9IGEubGVuZ3RoO1xuICAgICAgICBpZiAoTCA9PSAxKVxuICAgICAgICAgICAgYVswXS5fZShlcnIpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBiID0gY29weShhKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTDsgaSsrKVxuICAgICAgICAgICAgICAgIGJbaV0uX2UoZXJyKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl94KCk7XG4gICAgfTtcbiAgICBTdHJlYW0ucHJvdG90eXBlLl9jID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYSA9IHRoaXMuX2lscztcbiAgICAgICAgdmFyIEwgPSBhLmxlbmd0aDtcbiAgICAgICAgaWYgKEwgPT0gMSlcbiAgICAgICAgICAgIGFbMF0uX2MoKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgYiA9IGNvcHkoYSk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IEw7IGkrKylcbiAgICAgICAgICAgICAgICBiW2ldLl9jKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5feCgpO1xuICAgIH07XG4gICAgU3RyZWFtLnByb3RvdHlwZS5feCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2lscy5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh0aGlzLl9wcm9kKVxuICAgICAgICAgICAgdGhpcy5fcHJvZC5fc3RvcCgpO1xuICAgICAgICB0aGlzLl9pbHMgPSBbXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEFkZHMgYSBMaXN0ZW5lciB0byB0aGUgU3RyZWFtLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtMaXN0ZW5lcjxUPn0gbGlzdGVuZXJcbiAgICAgKi9cbiAgICBTdHJlYW0ucHJvdG90eXBlLmFkZExpc3RlbmVyID0gZnVuY3Rpb24gKGxpc3RlbmVyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbGlzdGVuZXIubmV4dCAhPT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgfHwgdHlwZW9mIGxpc3RlbmVyLmVycm9yICE9PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICB8fCB0eXBlb2YgbGlzdGVuZXIuY29tcGxldGUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignc3RyZWFtLmFkZExpc3RlbmVyKCkgcmVxdWlyZXMgYWxsIHRocmVlIG5leHQsIGVycm9yLCAnICtcbiAgICAgICAgICAgICAgICAnYW5kIGNvbXBsZXRlIGZ1bmN0aW9ucy4nKTtcbiAgICAgICAgfVxuICAgICAgICBsaXN0ZW5lci5fbiA9IGxpc3RlbmVyLm5leHQ7XG4gICAgICAgIGxpc3RlbmVyLl9lID0gbGlzdGVuZXIuZXJyb3I7XG4gICAgICAgIGxpc3RlbmVyLl9jID0gbGlzdGVuZXIuY29tcGxldGU7XG4gICAgICAgIHRoaXMuX2FkZChsaXN0ZW5lcik7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGEgTGlzdGVuZXIgZnJvbSB0aGUgU3RyZWFtLCBhc3N1bWluZyB0aGUgTGlzdGVuZXIgd2FzIGFkZGVkIHRvIGl0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtMaXN0ZW5lcjxUPn0gbGlzdGVuZXJcbiAgICAgKi9cbiAgICBTdHJlYW0ucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyID0gZnVuY3Rpb24gKGxpc3RlbmVyKSB7XG4gICAgICAgIHRoaXMuX3JlbW92ZShsaXN0ZW5lcik7XG4gICAgfTtcbiAgICBTdHJlYW0ucHJvdG90eXBlLl9hZGQgPSBmdW5jdGlvbiAoaWwpIHtcbiAgICAgICAgdmFyIGEgPSB0aGlzLl9pbHM7XG4gICAgICAgIGEucHVzaChpbCk7XG4gICAgICAgIGlmIChhLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3N0b3BJRCAhPT0gZW1wdHkpIHtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fc3RvcElEKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdG9wSUQgPSBlbXB0eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBwID0gdGhpcy5fcHJvZDtcbiAgICAgICAgICAgIGlmIChwKVxuICAgICAgICAgICAgICAgIHAuX3N0YXJ0KHRoaXMpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTdHJlYW0ucHJvdG90eXBlLl9yZW1vdmUgPSBmdW5jdGlvbiAoaWwpIHtcbiAgICAgICAgdmFyIGEgPSB0aGlzLl9pbHM7XG4gICAgICAgIHZhciBpID0gYS5pbmRleE9mKGlsKTtcbiAgICAgICAgaWYgKGkgPiAtMSkge1xuICAgICAgICAgICAgYS5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICB2YXIgcF8xID0gdGhpcy5fcHJvZDtcbiAgICAgICAgICAgIGlmIChwXzEgJiYgYS5sZW5ndGggPD0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0b3BJRCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gcF8xLl9zdG9wKCk7IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBTdHJlYW0ucHJvdG90eXBlLmN0b3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgTWVtb3J5U3RyZWFtID8gTWVtb3J5U3RyZWFtIDogU3RyZWFtO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBTdHJlYW0gZ2l2ZW4gYSBQcm9kdWNlci5cbiAgICAgKlxuICAgICAqIEBmYWN0b3J5IHRydWVcbiAgICAgKiBAcGFyYW0ge1Byb2R1Y2VyfSBwcm9kdWNlciBBbiBvcHRpb25hbCBQcm9kdWNlciB0aGF0IGRpY3RhdGVzIGhvdyB0b1xuICAgICAqIHN0YXJ0LCBnZW5lcmF0ZSBldmVudHMsIGFuZCBzdG9wIHRoZSBTdHJlYW0uXG4gICAgICogQHJldHVybiB7U3RyZWFtfVxuICAgICAqL1xuICAgIFN0cmVhbS5jcmVhdGUgPSBmdW5jdGlvbiAocHJvZHVjZXIpIHtcbiAgICAgICAgaWYgKHByb2R1Y2VyKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb2R1Y2VyLnN0YXJ0ICE9PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgfHwgdHlwZW9mIHByb2R1Y2VyLnN0b3AgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2R1Y2VyIHJlcXVpcmVzIGJvdGggc3RhcnQgYW5kIHN0b3AgZnVuY3Rpb25zJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbnRlcm5hbGl6ZVByb2R1Y2VyKHByb2R1Y2VyKTsgLy8gbXV0YXRlcyB0aGUgaW5wdXRcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbShwcm9kdWNlcik7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IE1lbW9yeVN0cmVhbSBnaXZlbiBhIFByb2R1Y2VyLlxuICAgICAqXG4gICAgICogQGZhY3RvcnkgdHJ1ZVxuICAgICAqIEBwYXJhbSB7UHJvZHVjZXJ9IHByb2R1Y2VyIEFuIG9wdGlvbmFsIFByb2R1Y2VyIHRoYXQgZGljdGF0ZXMgaG93IHRvXG4gICAgICogc3RhcnQsIGdlbmVyYXRlIGV2ZW50cywgYW5kIHN0b3AgdGhlIFN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHtNZW1vcnlTdHJlYW19XG4gICAgICovXG4gICAgU3RyZWFtLmNyZWF0ZVdpdGhNZW1vcnkgPSBmdW5jdGlvbiAocHJvZHVjZXIpIHtcbiAgICAgICAgaWYgKHByb2R1Y2VyKSB7XG4gICAgICAgICAgICBpbnRlcm5hbGl6ZVByb2R1Y2VyKHByb2R1Y2VyKTsgLy8gbXV0YXRlcyB0aGUgaW5wdXRcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IE1lbW9yeVN0cmVhbShwcm9kdWNlcik7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IE1pbWljU3RyZWFtLCB3aGljaCBjYW4gYGltaXRhdGVgIGFub3RoZXIgU3RyZWFtLiBPbmx5IGFcbiAgICAgKiBNaW1pY1N0cmVhbSBoYXMgdGhlIGBpbWl0YXRlKClgIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEBmYWN0b3J5IHRydWVcbiAgICAgKiBAcmV0dXJuIHtNaW1pY1N0cmVhbX1cbiAgICAgKi9cbiAgICBTdHJlYW0uY3JlYXRlTWltaWMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgTWltaWNTdHJlYW0oKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBTdHJlYW0gdGhhdCBkb2VzIG5vdGhpbmcgd2hlbiBzdGFydGVkLiBJdCBuZXZlciBlbWl0cyBhbnkgZXZlbnQuXG4gICAgICpcbiAgICAgKiBNYXJibGUgZGlhZ3JhbTpcbiAgICAgKlxuICAgICAqIGBgYHRleHRcbiAgICAgKiAgICAgICAgICBuZXZlclxuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAZmFjdG9yeSB0cnVlXG4gICAgICogQHJldHVybiB7U3RyZWFtfVxuICAgICAqL1xuICAgIFN0cmVhbS5uZXZlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW0oeyBfc3RhcnQ6IG5vb3AsIF9zdG9wOiBub29wIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIFN0cmVhbSB0aGF0IGltbWVkaWF0ZWx5IGVtaXRzIHRoZSBcImNvbXBsZXRlXCIgbm90aWZpY2F0aW9uIHdoZW5cbiAgICAgKiBzdGFydGVkLCBhbmQgdGhhdCdzIGl0LlxuICAgICAqXG4gICAgICogTWFyYmxlIGRpYWdyYW06XG4gICAgICpcbiAgICAgKiBgYGB0ZXh0XG4gICAgICogZW1wdHlcbiAgICAgKiAtfFxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQGZhY3RvcnkgdHJ1ZVxuICAgICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICAgKi9cbiAgICBTdHJlYW0uZW1wdHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtKHtcbiAgICAgICAgICAgIF9zdGFydDogZnVuY3Rpb24gKGlsKSB7IGlsLl9jKCk7IH0sXG4gICAgICAgICAgICBfc3RvcDogbm9vcCxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgU3RyZWFtIHRoYXQgaW1tZWRpYXRlbHkgZW1pdHMgYW4gXCJlcnJvclwiIG5vdGlmaWNhdGlvbiB3aXRoIHRoZVxuICAgICAqIHZhbHVlIHlvdSBwYXNzZWQgYXMgdGhlIGBlcnJvcmAgYXJndW1lbnQgd2hlbiB0aGUgc3RyZWFtIHN0YXJ0cywgYW5kIHRoYXQnc1xuICAgICAqIGl0LlxuICAgICAqXG4gICAgICogTWFyYmxlIGRpYWdyYW06XG4gICAgICpcbiAgICAgKiBgYGB0ZXh0XG4gICAgICogdGhyb3coWClcbiAgICAgKiAtWFxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQGZhY3RvcnkgdHJ1ZVxuICAgICAqIEBwYXJhbSBlcnJvciBUaGUgZXJyb3IgZXZlbnQgdG8gZW1pdCBvbiB0aGUgY3JlYXRlZCBzdHJlYW0uXG4gICAgICogQHJldHVybiB7U3RyZWFtfVxuICAgICAqL1xuICAgIFN0cmVhbS50aHJvdyA9IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbSh7XG4gICAgICAgICAgICBfc3RhcnQ6IGZ1bmN0aW9uIChpbCkgeyBpbC5fZShlcnJvcik7IH0sXG4gICAgICAgICAgICBfc3RvcDogbm9vcCxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgU3RyZWFtIHRoYXQgaW1tZWRpYXRlbHkgZW1pdHMgdGhlIGFyZ3VtZW50cyB0aGF0IHlvdSBnaXZlIHRvXG4gICAgICogKm9mKiwgdGhlbiBjb21wbGV0ZXMuXG4gICAgICpcbiAgICAgKiBNYXJibGUgZGlhZ3JhbTpcbiAgICAgKlxuICAgICAqIGBgYHRleHRcbiAgICAgKiBvZigxLDIsMylcbiAgICAgKiAxMjN8XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAZmFjdG9yeSB0cnVlXG4gICAgICogQHBhcmFtIGEgVGhlIGZpcnN0IHZhbHVlIHlvdSB3YW50IHRvIGVtaXQgYXMgYW4gZXZlbnQgb24gdGhlIHN0cmVhbS5cbiAgICAgKiBAcGFyYW0gYiBUaGUgc2Vjb25kIHZhbHVlIHlvdSB3YW50IHRvIGVtaXQgYXMgYW4gZXZlbnQgb24gdGhlIHN0cmVhbS4gT25lXG4gICAgICogb3IgbW9yZSBvZiB0aGVzZSB2YWx1ZXMgbWF5IGJlIGdpdmVuIGFzIGFyZ3VtZW50cy5cbiAgICAgKiBAcmV0dXJuIHtTdHJlYW19XG4gICAgICovXG4gICAgU3RyZWFtLm9mID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgaXRlbXMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGl0ZW1zW19pIC0gMF0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBTdHJlYW0uZnJvbUFycmF5KGl0ZW1zKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGFuIGFycmF5IHRvIGEgc3RyZWFtLiBUaGUgcmV0dXJuZWQgc3RyZWFtIHdpbGwgZW1pdCBzeW5jaHJvbm91c2x5XG4gICAgICogYWxsIHRoZSBpdGVtcyBpbiB0aGUgYXJyYXksIGFuZCB0aGVuIGNvbXBsZXRlLlxuICAgICAqXG4gICAgICogTWFyYmxlIGRpYWdyYW06XG4gICAgICpcbiAgICAgKiBgYGB0ZXh0XG4gICAgICogZnJvbUFycmF5KFsxLDIsM10pXG4gICAgICogMTIzfFxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQGZhY3RvcnkgdHJ1ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBiZSBjb252ZXJ0ZWQgYXMgYSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7U3RyZWFtfVxuICAgICAqL1xuICAgIFN0cmVhbS5mcm9tQXJyYXkgPSBmdW5jdGlvbiAoYXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW0obmV3IEZyb21BcnJheVByb2R1Y2VyKGFycmF5KSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBhIHByb21pc2UgdG8gYSBzdHJlYW0uIFRoZSByZXR1cm5lZCBzdHJlYW0gd2lsbCBlbWl0IHRoZSByZXNvbHZlZFxuICAgICAqIHZhbHVlIG9mIHRoZSBwcm9taXNlLCBhbmQgdGhlbiBjb21wbGV0ZS4gSG93ZXZlciwgaWYgdGhlIHByb21pc2UgaXNcbiAgICAgKiByZWplY3RlZCwgdGhlIHN0cmVhbSB3aWxsIGVtaXQgdGhlIGNvcnJlc3BvbmRpbmcgZXJyb3IuXG4gICAgICpcbiAgICAgKiBNYXJibGUgZGlhZ3JhbTpcbiAgICAgKlxuICAgICAqIGBgYHRleHRcbiAgICAgKiBmcm9tUHJvbWlzZSggLS0tLTQyIClcbiAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLTQyfFxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQGZhY3RvcnkgdHJ1ZVxuICAgICAqIEBwYXJhbSB7UHJvbWlzZX0gcHJvbWlzZSBUaGUgcHJvbWlzZSB0byBiZSBjb252ZXJ0ZWQgYXMgYSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7U3RyZWFtfVxuICAgICAqL1xuICAgIFN0cmVhbS5mcm9tUHJvbWlzZSA9IGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtKG5ldyBGcm9tUHJvbWlzZVByb2R1Y2VyKHByb21pc2UpKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzdHJlYW0gdGhhdCBwZXJpb2RpY2FsbHkgZW1pdHMgaW5jcmVtZW50YWwgbnVtYmVycywgZXZlcnlcbiAgICAgKiBgcGVyaW9kYCBtaWxsaXNlY29uZHMuXG4gICAgICpcbiAgICAgKiBNYXJibGUgZGlhZ3JhbTpcbiAgICAgKlxuICAgICAqIGBgYHRleHRcbiAgICAgKiAgICAgcGVyaW9kaWMoMTAwMClcbiAgICAgKiAtLS0wLS0tMS0tLTItLS0zLS0tNC0tLS4uLlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQGZhY3RvcnkgdHJ1ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwZXJpb2QgVGhlIGludGVydmFsIGluIG1pbGxpc2Vjb25kcyB0byB1c2UgYXMgYSByYXRlIG9mXG4gICAgICogZW1pc3Npb24uXG4gICAgICogQHJldHVybiB7U3RyZWFtfVxuICAgICAqL1xuICAgIFN0cmVhbS5wZXJpb2RpYyA9IGZ1bmN0aW9uIChwZXJpb2QpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW0obmV3IFBlcmlvZGljUHJvZHVjZXIocGVyaW9kKSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBCbGVuZHMgbXVsdGlwbGUgc3RyZWFtcyB0b2dldGhlciwgZW1pdHRpbmcgZXZlbnRzIGZyb20gYWxsIG9mIHRoZW1cbiAgICAgKiBjb25jdXJyZW50bHkuXG4gICAgICpcbiAgICAgKiAqbWVyZ2UqIHRha2VzIG11bHRpcGxlIHN0cmVhbXMgYXMgYXJndW1lbnRzLCBhbmQgY3JlYXRlcyBhIHN0cmVhbSB0aGF0XG4gICAgICogYmVoYXZlcyBsaWtlIGVhY2ggb2YgdGhlIGFyZ3VtZW50IHN0cmVhbXMsIGluIHBhcmFsbGVsLlxuICAgICAqXG4gICAgICogTWFyYmxlIGRpYWdyYW06XG4gICAgICpcbiAgICAgKiBgYGB0ZXh0XG4gICAgICogLS0xLS0tLTItLS0tLTMtLS0tLS0tLTQtLS1cbiAgICAgKiAtLS0tYS0tLS0tYi0tLS1jLS0tZC0tLS0tLVxuICAgICAqICAgICAgICAgICAgbWVyZ2VcbiAgICAgKiAtLTEtYS0tMi0tYi0tMy1jLS0tZC0tNC0tLVxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQGZhY3RvcnkgdHJ1ZVxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0xIEEgc3RyZWFtIHRvIG1lcmdlIHRvZ2V0aGVyIHdpdGggb3RoZXIgc3RyZWFtcy5cbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtMiBBIHN0cmVhbSB0byBtZXJnZSB0b2dldGhlciB3aXRoIG90aGVyIHN0cmVhbXMuIFR3b1xuICAgICAqIG9yIG1vcmUgc3RyZWFtcyBtYXkgYmUgZ2l2ZW4gYXMgYXJndW1lbnRzLlxuICAgICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICAgKi9cbiAgICBTdHJlYW0ubWVyZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBzdHJlYW1zID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBzdHJlYW1zW19pIC0gMF0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtKG5ldyBNZXJnZVByb2R1Y2VyKHN0cmVhbXMpKTtcbiAgICB9O1xuICAgIFN0cmVhbS5wcm90b3R5cGUuX21hcCA9IGZ1bmN0aW9uIChwcm9qZWN0KSB7XG4gICAgICAgIHZhciBwID0gdGhpcy5fcHJvZDtcbiAgICAgICAgdmFyIGN0b3IgPSB0aGlzLmN0b3IoKTtcbiAgICAgICAgaWYgKHAgaW5zdGFuY2VvZiBGaWx0ZXJPcGVyYXRvcikge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBjdG9yKG5ldyBGaWx0ZXJNYXBPcGVyYXRvcihwLnBhc3NlcywgcHJvamVjdCwgcC5pbnMpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocCBpbnN0YW5jZW9mIEZpbHRlck1hcE9wZXJhdG9yKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IGN0b3IobmV3IEZpbHRlck1hcE9wZXJhdG9yKHAucGFzc2VzLCBjb21wb3NlMihwcm9qZWN0LCBwLnByb2plY3QpLCBwLmlucykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwIGluc3RhbmNlb2YgTWFwT3BlcmF0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgY3RvcihuZXcgTWFwT3BlcmF0b3IoY29tcG9zZTIocHJvamVjdCwgcC5wcm9qZWN0KSwgcC5pbnMpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IGN0b3IobmV3IE1hcE9wZXJhdG9yKHByb2plY3QsIHRoaXMpKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFRyYW5zZm9ybXMgZWFjaCBldmVudCBmcm9tIHRoZSBpbnB1dCBTdHJlYW0gdGhyb3VnaCBhIGBwcm9qZWN0YCBmdW5jdGlvbixcbiAgICAgKiB0byBnZXQgYSBTdHJlYW0gdGhhdCBlbWl0cyB0aG9zZSB0cmFuc2Zvcm1lZCBldmVudHMuXG4gICAgICpcbiAgICAgKiBNYXJibGUgZGlhZ3JhbTpcbiAgICAgKlxuICAgICAqIGBgYHRleHRcbiAgICAgKiAtLTEtLS0zLS01LS0tLS03LS0tLS0tXG4gICAgICogICAgbWFwKGkgPT4gaSAqIDEwKVxuICAgICAqIC0tMTAtLTMwLTUwLS0tLTcwLS0tLS1cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByb2plY3QgQSBmdW5jdGlvbiBvZiB0eXBlIGAodDogVCkgPT4gVWAgdGhhdCB0YWtlcyBldmVudFxuICAgICAqIGB0YCBvZiB0eXBlIGBUYCBmcm9tIHRoZSBpbnB1dCBTdHJlYW0gYW5kIHByb2R1Y2VzIGFuIGV2ZW50IG9mIHR5cGUgYFVgLCB0b1xuICAgICAqIGJlIGVtaXR0ZWQgb24gdGhlIG91dHB1dCBTdHJlYW0uXG4gICAgICogQHJldHVybiB7U3RyZWFtfVxuICAgICAqL1xuICAgIFN0cmVhbS5wcm90b3R5cGUubWFwID0gZnVuY3Rpb24gKHByb2plY3QpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21hcChwcm9qZWN0KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEl0J3MgbGlrZSBgbWFwYCwgYnV0IHRyYW5zZm9ybXMgZWFjaCBpbnB1dCBldmVudCB0byBhbHdheXMgdGhlIHNhbWVcbiAgICAgKiBjb25zdGFudCB2YWx1ZSBvbiB0aGUgb3V0cHV0IFN0cmVhbS5cbiAgICAgKlxuICAgICAqIE1hcmJsZSBkaWFncmFtOlxuICAgICAqXG4gICAgICogYGBgdGV4dFxuICAgICAqIC0tMS0tLTMtLTUtLS0tLTctLS0tLVxuICAgICAqICAgICAgIG1hcFRvKDEwKVxuICAgICAqIC0tMTAtLTEwLTEwLS0tLTEwLS0tLVxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHBhcmFtIHByb2plY3RlZFZhbHVlIEEgdmFsdWUgdG8gZW1pdCBvbiB0aGUgb3V0cHV0IFN0cmVhbSB3aGVuZXZlciB0aGVcbiAgICAgKiBpbnB1dCBTdHJlYW0gZW1pdHMgYW55IHZhbHVlLlxuICAgICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICAgKi9cbiAgICBTdHJlYW0ucHJvdG90eXBlLm1hcFRvID0gZnVuY3Rpb24gKHByb2plY3RlZFZhbHVlKSB7XG4gICAgICAgIHZhciBzID0gdGhpcy5tYXAoZnVuY3Rpb24gKCkgeyByZXR1cm4gcHJvamVjdGVkVmFsdWU7IH0pO1xuICAgICAgICB2YXIgb3AgPSBzLl9wcm9kO1xuICAgICAgICBvcC50eXBlID0gb3AudHlwZS5yZXBsYWNlKCdtYXAnLCAnbWFwVG8nKTtcbiAgICAgICAgcmV0dXJuIHM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBPbmx5IGFsbG93cyBldmVudHMgdGhhdCBwYXNzIHRoZSB0ZXN0IGdpdmVuIGJ5IHRoZSBgcGFzc2VzYCBhcmd1bWVudC5cbiAgICAgKlxuICAgICAqIEVhY2ggZXZlbnQgZnJvbSB0aGUgaW5wdXQgc3RyZWFtIGlzIGdpdmVuIHRvIHRoZSBgcGFzc2VzYCBmdW5jdGlvbi4gSWYgdGhlXG4gICAgICogZnVuY3Rpb24gcmV0dXJucyBgdHJ1ZWAsIHRoZSBldmVudCBpcyBmb3J3YXJkZWQgdG8gdGhlIG91dHB1dCBzdHJlYW0sXG4gICAgICogb3RoZXJ3aXNlIGl0IGlzIGlnbm9yZWQgYW5kIG5vdCBmb3J3YXJkZWQuXG4gICAgICpcbiAgICAgKiBNYXJibGUgZGlhZ3JhbTpcbiAgICAgKlxuICAgICAqIGBgYHRleHRcbiAgICAgKiAtLTEtLS0yLS0zLS0tLS00LS0tLS01LS0tNi0tNy04LS1cbiAgICAgKiAgICAgZmlsdGVyKGkgPT4gaSAlIDIgPT09IDApXG4gICAgICogLS0tLS0tMi0tLS0tLS0tNC0tLS0tLS0tLTYtLS0tOC0tXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXNzZXMgQSBmdW5jdGlvbiBvZiB0eXBlIGAodDogVCkgKz4gYm9vbGVhbmAgdGhhdCB0YWtlc1xuICAgICAqIGFuIGV2ZW50IGZyb20gdGhlIGlucHV0IHN0cmVhbSBhbmQgY2hlY2tzIGlmIGl0IHBhc3NlcywgYnkgcmV0dXJuaW5nIGFcbiAgICAgKiBib29sZWFuLlxuICAgICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICAgKi9cbiAgICBTdHJlYW0ucHJvdG90eXBlLmZpbHRlciA9IGZ1bmN0aW9uIChwYXNzZXMpIHtcbiAgICAgICAgdmFyIHAgPSB0aGlzLl9wcm9kO1xuICAgICAgICBpZiAocCBpbnN0YW5jZW9mIEZpbHRlck9wZXJhdG9yKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0cmVhbShuZXcgRmlsdGVyT3BlcmF0b3IoYW5kKHBhc3NlcywgcC5wYXNzZXMpLCBwLmlucykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtKG5ldyBGaWx0ZXJPcGVyYXRvcihwYXNzZXMsIHRoaXMpKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIExldHMgdGhlIGZpcnN0IGBhbW91bnRgIG1hbnkgZXZlbnRzIGZyb20gdGhlIGlucHV0IHN0cmVhbSBwYXNzIHRvIHRoZVxuICAgICAqIG91dHB1dCBzdHJlYW0sIHRoZW4gbWFrZXMgdGhlIG91dHB1dCBzdHJlYW0gY29tcGxldGUuXG4gICAgICpcbiAgICAgKiBNYXJibGUgZGlhZ3JhbTpcbiAgICAgKlxuICAgICAqIGBgYHRleHRcbiAgICAgKiAtLWEtLS1iLS1jLS0tLWQtLS1lLS1cbiAgICAgKiAgICB0YWtlKDMpXG4gICAgICogLS1hLS0tYi0tY3xcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBhbW91bnQgSG93IG1hbnkgZXZlbnRzIHRvIGFsbG93IGZyb20gdGhlIGlucHV0IHN0cmVhbVxuICAgICAqIGJlZm9yZSBjb21wbGV0aW5nIHRoZSBvdXRwdXQgc3RyZWFtLlxuICAgICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICAgKi9cbiAgICBTdHJlYW0ucHJvdG90eXBlLnRha2UgPSBmdW5jdGlvbiAoYW1vdW50KSB7XG4gICAgICAgIHJldHVybiBuZXcgKHRoaXMuY3RvcigpKShuZXcgVGFrZU9wZXJhdG9yKGFtb3VudCwgdGhpcykpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogSWdub3JlcyB0aGUgZmlyc3QgYGFtb3VudGAgbWFueSBldmVudHMgZnJvbSB0aGUgaW5wdXQgc3RyZWFtLCBhbmQgdGhlblxuICAgICAqIGFmdGVyIHRoYXQgc3RhcnRzIGZvcndhcmRpbmcgZXZlbnRzIGZyb20gdGhlIGlucHV0IHN0cmVhbSB0byB0aGUgb3V0cHV0XG4gICAgICogc3RyZWFtLlxuICAgICAqXG4gICAgICogTWFyYmxlIGRpYWdyYW06XG4gICAgICpcbiAgICAgKiBgYGB0ZXh0XG4gICAgICogLS1hLS0tYi0tYy0tLS1kLS0tZS0tXG4gICAgICogICAgICAgZHJvcCgzKVxuICAgICAqIC0tLS0tLS0tLS0tLS0tZC0tLWUtLVxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGFtb3VudCBIb3cgbWFueSBldmVudHMgdG8gaWdub3JlIGZyb20gdGhlIGlucHV0IHN0cmVhbVxuICAgICAqIGJlZm9yZSBmb3J3YXJkaW5nIGFsbCBldmVudHMgZnJvbSB0aGUgaW5wdXQgc3RyZWFtIHRvIHRoZSBvdXRwdXQgc3RyZWFtLlxuICAgICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICAgKi9cbiAgICBTdHJlYW0ucHJvdG90eXBlLmRyb3AgPSBmdW5jdGlvbiAoYW1vdW50KSB7XG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtKG5ldyBEcm9wT3BlcmF0b3IoYW1vdW50LCB0aGlzKSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBXaGVuIHRoZSBpbnB1dCBzdHJlYW0gY29tcGxldGVzLCB0aGUgb3V0cHV0IHN0cmVhbSB3aWxsIGVtaXQgdGhlIGxhc3QgZXZlbnRcbiAgICAgKiBlbWl0dGVkIGJ5IHRoZSBpbnB1dCBzdHJlYW0sIGFuZCB0aGVuIHdpbGwgYWxzbyBjb21wbGV0ZS5cbiAgICAgKlxuICAgICAqIE1hcmJsZSBkaWFncmFtOlxuICAgICAqXG4gICAgICogYGBgdGV4dFxuICAgICAqIC0tYS0tLWItLWMtLWQtLS0tfFxuICAgICAqICAgICAgIGxhc3QoKVxuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tZHxcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICAgKi9cbiAgICBTdHJlYW0ucHJvdG90eXBlLmxhc3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtKG5ldyBMYXN0T3BlcmF0b3IodGhpcykpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUHJlcGVuZHMgdGhlIGdpdmVuIGBpbml0aWFsYCB2YWx1ZSB0byB0aGUgc2VxdWVuY2Ugb2YgZXZlbnRzIGVtaXR0ZWQgYnkgdGhlXG4gICAgICogaW5wdXQgc3RyZWFtLiBUaGUgcmV0dXJuZWQgc3RyZWFtIGlzIGEgTWVtb3J5U3RyZWFtLCB3aGljaCBtZWFucyBpdCBpc1xuICAgICAqIGFscmVhZHkgYHJlbWVtYmVyKClgJ2QuXG4gICAgICpcbiAgICAgKiBNYXJibGUgZGlhZ3JhbTpcbiAgICAgKlxuICAgICAqIGBgYHRleHRcbiAgICAgKiAtLS0xLS0tMi0tLS0tMy0tLVxuICAgICAqICAgc3RhcnRXaXRoKDApXG4gICAgICogMC0tMS0tLTItLS0tLTMtLS1cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbml0aWFsIFRoZSB2YWx1ZSBvciBldmVudCB0byBwcmVwZW5kLlxuICAgICAqIEByZXR1cm4ge01lbW9yeVN0cmVhbX1cbiAgICAgKi9cbiAgICBTdHJlYW0ucHJvdG90eXBlLnN0YXJ0V2l0aCA9IGZ1bmN0aW9uIChpbml0aWFsKSB7XG4gICAgICAgIHJldHVybiBuZXcgTWVtb3J5U3RyZWFtKG5ldyBTdGFydFdpdGhPcGVyYXRvcih0aGlzLCBpbml0aWFsKSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBVc2VzIGFub3RoZXIgc3RyZWFtIHRvIGRldGVybWluZSB3aGVuIHRvIGNvbXBsZXRlIHRoZSBjdXJyZW50IHN0cmVhbS5cbiAgICAgKlxuICAgICAqIFdoZW4gdGhlIGdpdmVuIGBvdGhlcmAgc3RyZWFtIGVtaXRzIGFuIGV2ZW50IG9yIGNvbXBsZXRlcywgdGhlIG91dHB1dFxuICAgICAqIHN0cmVhbSB3aWxsIGNvbXBsZXRlLiBCZWZvcmUgdGhhdCBoYXBwZW5zLCB0aGUgb3V0cHV0IHN0cmVhbSB3aWxsIGJlaGF2ZXNcbiAgICAgKiBsaWtlIHRoZSBpbnB1dCBzdHJlYW0uXG4gICAgICpcbiAgICAgKiBNYXJibGUgZGlhZ3JhbTpcbiAgICAgKlxuICAgICAqIGBgYHRleHRcbiAgICAgKiAtLS0xLS0tMi0tLS0tMy0tNC0tLS01LS0tLTYtLS1cbiAgICAgKiAgIGVuZFdoZW4oIC0tLS0tLS0tYS0tYi0tfCApXG4gICAgICogLS0tMS0tLTItLS0tLTMtLTQtLXxcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBwYXJhbSBvdGhlciBTb21lIG90aGVyIHN0cmVhbSB0aGF0IGlzIHVzZWQgdG8ga25vdyB3aGVuIHNob3VsZCB0aGUgb3V0cHV0XG4gICAgICogc3RyZWFtIG9mIHRoaXMgb3BlcmF0b3IgY29tcGxldGUuXG4gICAgICogQHJldHVybiB7U3RyZWFtfVxuICAgICAqL1xuICAgIFN0cmVhbS5wcm90b3R5cGUuZW5kV2hlbiA9IGZ1bmN0aW9uIChvdGhlcikge1xuICAgICAgICByZXR1cm4gbmV3ICh0aGlzLmN0b3IoKSkobmV3IEVuZFdoZW5PcGVyYXRvcihvdGhlciwgdGhpcykpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogXCJGb2xkc1wiIHRoZSBzdHJlYW0gb250byBpdHNlbGYuXG4gICAgICpcbiAgICAgKiBDb21iaW5lcyBldmVudHMgZnJvbSB0aGUgcGFzdCB0aHJvdWdob3V0XG4gICAgICogdGhlIGVudGlyZSBleGVjdXRpb24gb2YgdGhlIGlucHV0IHN0cmVhbSwgYWxsb3dpbmcgeW91IHRvIGFjY3VtdWxhdGUgdGhlbVxuICAgICAqIHRvZ2V0aGVyLiBJdCdzIGVzc2VudGlhbGx5IGxpa2UgYEFycmF5LnByb3RvdHlwZS5yZWR1Y2VgLiBUaGUgcmV0dXJuZWRcbiAgICAgKiBzdHJlYW0gaXMgYSBNZW1vcnlTdHJlYW0sIHdoaWNoIG1lYW5zIGl0IGlzIGFscmVhZHkgYHJlbWVtYmVyKClgJ2QuXG4gICAgICpcbiAgICAgKiBUaGUgb3V0cHV0IHN0cmVhbSBzdGFydHMgYnkgZW1pdHRpbmcgdGhlIGBzZWVkYCB3aGljaCB5b3UgZ2l2ZSBhcyBhcmd1bWVudC5cbiAgICAgKiBUaGVuLCB3aGVuIGFuIGV2ZW50IGhhcHBlbnMgb24gdGhlIGlucHV0IHN0cmVhbSwgaXQgaXMgY29tYmluZWQgd2l0aCB0aGF0XG4gICAgICogc2VlZCB2YWx1ZSB0aHJvdWdoIHRoZSBgYWNjdW11bGF0ZWAgZnVuY3Rpb24sIGFuZCB0aGUgb3V0cHV0IHZhbHVlIGlzXG4gICAgICogZW1pdHRlZCBvbiB0aGUgb3V0cHV0IHN0cmVhbS4gYGZvbGRgIHJlbWVtYmVycyB0aGF0IG91dHB1dCB2YWx1ZSBhcyBgYWNjYFxuICAgICAqIChcImFjY3VtdWxhdG9yXCIpLCBhbmQgdGhlbiB3aGVuIGEgbmV3IGlucHV0IGV2ZW50IGB0YCBoYXBwZW5zLCBgYWNjYCB3aWxsIGJlXG4gICAgICogY29tYmluZWQgd2l0aCB0aGF0IHRvIHByb2R1Y2UgdGhlIG5ldyBgYWNjYCBhbmQgc28gZm9ydGguXG4gICAgICpcbiAgICAgKiBNYXJibGUgZGlhZ3JhbTpcbiAgICAgKlxuICAgICAqIGBgYHRleHRcbiAgICAgKiAtLS0tLS0xLS0tLS0xLS0yLS0tLTEtLS0tMS0tLS0tLVxuICAgICAqICAgZm9sZCgoYWNjLCB4KSA9PiBhY2MgKyB4LCAzKVxuICAgICAqIDMtLS0tLTQtLS0tLTUtLTctLS0tOC0tLS05LS0tLS0tXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBhY2N1bXVsYXRlIEEgZnVuY3Rpb24gb2YgdHlwZSBgKGFjYzogUiwgdDogVCkgPT4gUmAgdGhhdFxuICAgICAqIHRha2VzIHRoZSBwcmV2aW91cyBhY2N1bXVsYXRlZCB2YWx1ZSBgYWNjYCBhbmQgdGhlIGluY29taW5nIGV2ZW50IGZyb20gdGhlXG4gICAgICogaW5wdXQgc3RyZWFtIGFuZCBwcm9kdWNlcyB0aGUgbmV3IGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgICAqIEBwYXJhbSBzZWVkIFRoZSBpbml0aWFsIGFjY3VtdWxhdGVkIHZhbHVlLCBvZiB0eXBlIGBSYC5cbiAgICAgKiBAcmV0dXJuIHtNZW1vcnlTdHJlYW19XG4gICAgICovXG4gICAgU3RyZWFtLnByb3RvdHlwZS5mb2xkID0gZnVuY3Rpb24gKGFjY3VtdWxhdGUsIHNlZWQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNZW1vcnlTdHJlYW0obmV3IEZvbGRPcGVyYXRvcihhY2N1bXVsYXRlLCBzZWVkLCB0aGlzKSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBSZXBsYWNlcyBhbiBlcnJvciB3aXRoIGFub3RoZXIgc3RyZWFtLlxuICAgICAqXG4gICAgICogV2hlbiAoYW5kIGlmKSBhbiBlcnJvciBoYXBwZW5zIG9uIHRoZSBpbnB1dCBzdHJlYW0sIGluc3RlYWQgb2YgZm9yd2FyZGluZ1xuICAgICAqIHRoYXQgZXJyb3IgdG8gdGhlIG91dHB1dCBzdHJlYW0sICpyZXBsYWNlRXJyb3IqIHdpbGwgY2FsbCB0aGUgYHJlcGxhY2VgXG4gICAgICogZnVuY3Rpb24gd2hpY2ggcmV0dXJucyB0aGUgc3RyZWFtIHRoYXQgdGhlIG91dHB1dCBzdHJlYW0gd2lsbCByZXBsaWNhdGUuXG4gICAgICogQW5kLCBpbiBjYXNlIHRoYXQgbmV3IHN0cmVhbSBhbHNvIGVtaXRzIGFuIGVycm9yLCBgcmVwbGFjZWAgd2lsbCBiZSBjYWxsZWRcbiAgICAgKiBhZ2FpbiB0byBnZXQgYW5vdGhlciBzdHJlYW0gdG8gc3RhcnQgcmVwbGljYXRpbmcuXG4gICAgICpcbiAgICAgKiBNYXJibGUgZGlhZ3JhbTpcbiAgICAgKlxuICAgICAqIGBgYHRleHRcbiAgICAgKiAtLTEtLS0yLS0tLS0zLS00LS0tLS1YXG4gICAgICogICByZXBsYWNlRXJyb3IoICgpID0+IC0tMTAtLXwgKVxuICAgICAqIC0tMS0tLTItLS0tLTMtLTQtLS0tLS0tLTEwLS18XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSByZXBsYWNlIEEgZnVuY3Rpb24gb2YgdHlwZSBgKGVycikgPT4gU3RyZWFtYCB0aGF0IHRha2VzXG4gICAgICogdGhlIGVycm9yIHRoYXQgb2NjdXJyZWQgb24gdGhlIGlucHV0IHN0cmVhbSBvciBvbiB0aGUgcHJldmlvdXMgcmVwbGFjZW1lbnRcbiAgICAgKiBzdHJlYW0gYW5kIHJldHVybnMgYSBuZXcgc3RyZWFtLiBUaGUgb3V0cHV0IHN0cmVhbSB3aWxsIGJlaGF2ZSBsaWtlIHRoZVxuICAgICAqIHN0cmVhbSB0aGF0IHRoaXMgZnVuY3Rpb24gcmV0dXJucy5cbiAgICAgKiBAcmV0dXJuIHtTdHJlYW19XG4gICAgICovXG4gICAgU3RyZWFtLnByb3RvdHlwZS5yZXBsYWNlRXJyb3IgPSBmdW5jdGlvbiAocmVwbGFjZSkge1xuICAgICAgICByZXR1cm4gbmV3ICh0aGlzLmN0b3IoKSkobmV3IFJlcGxhY2VFcnJvck9wZXJhdG9yKHJlcGxhY2UsIHRoaXMpKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEZsYXR0ZW5zIGEgXCJzdHJlYW0gb2Ygc3RyZWFtc1wiLCBoYW5kbGluZyBvbmx5IG9uZSBuZXN0ZWQgc3RyZWFtIGF0IGEgdGltZVxuICAgICAqIChubyBjb25jdXJyZW5jeSkuXG4gICAgICpcbiAgICAgKiBJZiB0aGUgaW5wdXQgc3RyZWFtIGlzIGEgc3RyZWFtIHRoYXQgZW1pdHMgc3RyZWFtcywgdGhlbiB0aGlzIG9wZXJhdG9yIHdpbGxcbiAgICAgKiByZXR1cm4gYW4gb3V0cHV0IHN0cmVhbSB3aGljaCBpcyBhIGZsYXQgc3RyZWFtOiBlbWl0cyByZWd1bGFyIGV2ZW50cy4gVGhlXG4gICAgICogZmxhdHRlbmluZyBoYXBwZW5zIHdpdGhvdXQgY29uY3VycmVuY3kuIEl0IHdvcmtzIGxpa2UgdGhpczogd2hlbiB0aGUgaW5wdXRcbiAgICAgKiBzdHJlYW0gZW1pdHMgYSBuZXN0ZWQgc3RyZWFtLCAqZmxhdHRlbiogd2lsbCBzdGFydCBpbWl0YXRpbmcgdGhhdCBuZXN0ZWRcbiAgICAgKiBvbmUuIEhvd2V2ZXIsIGFzIHNvb24gYXMgdGhlIG5leHQgbmVzdGVkIHN0cmVhbSBpcyBlbWl0dGVkIG9uIHRoZSBpbnB1dFxuICAgICAqIHN0cmVhbSwgKmZsYXR0ZW4qIHdpbGwgZm9yZ2V0IHRoZSBwcmV2aW91cyBuZXN0ZWQgb25lIGl0IHdhcyBpbWl0YXRpbmcsIGFuZFxuICAgICAqIHdpbGwgc3RhcnQgaW1pdGF0aW5nIHRoZSBuZXcgbmVzdGVkIG9uZS5cbiAgICAgKlxuICAgICAqIE1hcmJsZSBkaWFncmFtOlxuICAgICAqXG4gICAgICogYGBgdGV4dFxuICAgICAqIC0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLVxuICAgICAqICAgXFwgICAgICAgIFxcXG4gICAgICogICAgXFwgICAgICAgLS0tLTEtLS0tMi0tLTMtLVxuICAgICAqICAgIC0tYS0tYi0tLS1jLS0tLWQtLS0tLS0tLVxuICAgICAqICAgICAgICAgICBmbGF0dGVuXG4gICAgICogLS0tLS1hLS1iLS0tLS0tMS0tLS0yLS0tMy0tXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtTdHJlYW19XG4gICAgICovXG4gICAgU3RyZWFtLnByb3RvdHlwZS5mbGF0dGVuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcCA9IHRoaXMuX3Byb2Q7XG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtKHAgaW5zdGFuY2VvZiBNYXBPcGVyYXRvciAmJiAhKHAgaW5zdGFuY2VvZiBGaWx0ZXJNYXBPcGVyYXRvcikgP1xuICAgICAgICAgICAgbmV3IE1hcEZsYXR0ZW5PcGVyYXRvcihwKSA6XG4gICAgICAgICAgICBuZXcgRmxhdHRlbk9wZXJhdG9yKHRoaXMpKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFBhc3NlcyB0aGUgaW5wdXQgc3RyZWFtIHRvIGEgY3VzdG9tIG9wZXJhdG9yLCB0byBwcm9kdWNlIGFuIG91dHB1dCBzdHJlYW0uXG4gICAgICpcbiAgICAgKiAqY29tcG9zZSogaXMgYSBoYW5keSB3YXkgb2YgdXNpbmcgYW4gZXhpc3RpbmcgZnVuY3Rpb24gaW4gYSBjaGFpbmVkIHN0eWxlLlxuICAgICAqIEluc3RlYWQgb2Ygd3JpdGluZyBgb3V0U3RyZWFtID0gZihpblN0cmVhbSlgIHlvdSBjYW4gd3JpdGVcbiAgICAgKiBgb3V0U3RyZWFtID0gaW5TdHJlYW0uY29tcG9zZShmKWAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcGVyYXRvciBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBzdHJlYW0gYXMgaW5wdXQgYW5kXG4gICAgICogcmV0dXJucyBhIHN0cmVhbSBhcyB3ZWxsLlxuICAgICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICAgKi9cbiAgICBTdHJlYW0ucHJvdG90eXBlLmNvbXBvc2UgPSBmdW5jdGlvbiAob3BlcmF0b3IpIHtcbiAgICAgICAgcmV0dXJuIG9wZXJhdG9yKHRoaXMpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBvdXRwdXQgc3RyZWFtIHRoYXQgYmVoYXZlcyBsaWtlIHRoZSBpbnB1dCBzdHJlYW0sIGJ1dCBhbHNvXG4gICAgICogcmVtZW1iZXJzIHRoZSBtb3N0IHJlY2VudCBldmVudCB0aGF0IGhhcHBlbnMgb24gdGhlIGlucHV0IHN0cmVhbSwgc28gdGhhdCBhXG4gICAgICogbmV3bHkgYWRkZWQgbGlzdGVuZXIgd2lsbCBpbW1lZGlhdGVseSByZWNlaXZlIHRoYXQgbWVtb3Jpc2VkIGV2ZW50LlxuICAgICAqXG4gICAgICogQHJldHVybiB7TWVtb3J5U3RyZWFtfVxuICAgICAqL1xuICAgIFN0cmVhbS5wcm90b3R5cGUucmVtZW1iZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHJldHVybiBuZXcgTWVtb3J5U3RyZWFtKHtcbiAgICAgICAgICAgIF9zdGFydDogZnVuY3Rpb24gKGlsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHAgPSBfdGhpcy5fcHJvZDtcbiAgICAgICAgICAgICAgICBpZiAocClcbiAgICAgICAgICAgICAgICAgICAgcC5fc3RhcnQoaWwpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9zdG9wOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIHAgPSBfdGhpcy5fcHJvZDtcbiAgICAgICAgICAgICAgICBpZiAocClcbiAgICAgICAgICAgICAgICAgICAgcC5fc3RvcCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFuIG91dHB1dCBzdHJlYW0gdGhhdCBpZGVudGljYWxseSBiZWhhdmVzIGxpa2UgdGhlIGlucHV0IHN0cmVhbSxcbiAgICAgKiBidXQgYWxzbyBydW5zIGEgYHNweWAgZnVuY3Rpb24gZm8gZWFjaCBldmVudCwgdG8gaGVscCB5b3UgZGVidWcgeW91ciBhcHAuXG4gICAgICpcbiAgICAgKiAqZGVidWcqIHRha2VzIGEgYHNweWAgZnVuY3Rpb24gYXMgYXJndW1lbnQsIGFuZCBydW5zIHRoYXQgZm9yIGVhY2ggZXZlbnRcbiAgICAgKiBoYXBwZW5pbmcgb24gdGhlIGlucHV0IHN0cmVhbS4gSWYgeW91IGRvbid0IHByb3ZpZGUgdGhlIGBzcHlgIGFyZ3VtZW50LFxuICAgICAqIHRoZW4gKmRlYnVnKiB3aWxsIGp1c3QgYGNvbnNvbGUubG9nYCBlYWNoIGV2ZW50LiBUaGlzIGhlbHBzIHlvdSB0b1xuICAgICAqIHVuZGVyc3RhbmQgdGhlIGZsb3cgb2YgZXZlbnRzIHRocm91Z2ggc29tZSBvcGVyYXRvciBjaGFpbi5cbiAgICAgKlxuICAgICAqIFBsZWFzZSBub3RlIHRoYXQgaWYgdGhlIG91dHB1dCBzdHJlYW0gaGFzIG5vIGxpc3RlbmVycywgdGhlbiBpdCB3aWxsIG5vdFxuICAgICAqIHN0YXJ0LCB3aGljaCBtZWFucyBgc3B5YCB3aWxsIG5ldmVyIHJ1biBiZWNhdXNlIG5vIGFjdHVhbCBldmVudCBoYXBwZW5zIGluXG4gICAgICogdGhhdCBjYXNlLlxuICAgICAqXG4gICAgICogTWFyYmxlIGRpYWdyYW06XG4gICAgICpcbiAgICAgKiBgYGB0ZXh0XG4gICAgICogLS0xLS0tLTItLS0tLTMtLS0tLTQtLVxuICAgICAqICAgICAgICAgZGVidWdcbiAgICAgKiAtLTEtLS0tMi0tLS0tMy0tLS0tNC0tXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBsYWJlbE9yU3B5IEEgc3RyaW5nIHRvIHVzZSBhcyB0aGUgbGFiZWwgd2hlbiBwcmludGluZ1xuICAgICAqIGRlYnVnIGluZm9ybWF0aW9uIG9uIHRoZSBjb25zb2xlLCBvciBhICdzcHknIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4gZXZlbnRcbiAgICAgKiBhcyBhcmd1bWVudCwgYW5kIGRvZXMgbm90IG5lZWQgdG8gcmV0dXJuIGFueXRoaW5nLlxuICAgICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICAgKi9cbiAgICBTdHJlYW0ucHJvdG90eXBlLmRlYnVnID0gZnVuY3Rpb24gKGxhYmVsT3JTcHkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyAodGhpcy5jdG9yKCkpKG5ldyBEZWJ1Z09wZXJhdG9yKGxhYmVsT3JTcHksIHRoaXMpKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEZvcmNlcyB0aGUgU3RyZWFtIHRvIGVtaXQgdGhlIGdpdmVuIHZhbHVlIHRvIGl0cyBsaXN0ZW5lcnMuXG4gICAgICpcbiAgICAgKiBBcyB0aGUgbmFtZSBpbmRpY2F0ZXMsIGlmIHlvdSB1c2UgdGhpcywgeW91IGFyZSBtb3N0IGxpa2VseSBkb2luZyBzb21ldGhpbmdcbiAgICAgKiBUaGUgV3JvbmcgV2F5LiBQbGVhc2UgdHJ5IHRvIHVuZGVyc3RhbmQgdGhlIHJlYWN0aXZlIHdheSBiZWZvcmUgdXNpbmcgdGhpc1xuICAgICAqIG1ldGhvZC4gVXNlIGl0IG9ubHkgd2hlbiB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIFwibmV4dFwiIHZhbHVlIHlvdSB3YW50IHRvIGJyb2FkY2FzdCB0byBhbGwgbGlzdGVuZXJzIG9mXG4gICAgICogdGhpcyBTdHJlYW0uXG4gICAgICovXG4gICAgU3RyZWFtLnByb3RvdHlwZS5zaGFtZWZ1bGx5U2VuZE5leHQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdGhpcy5fbih2YWx1ZSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBGb3JjZXMgdGhlIFN0cmVhbSB0byBlbWl0IHRoZSBnaXZlbiBlcnJvciB0byBpdHMgbGlzdGVuZXJzLlxuICAgICAqXG4gICAgICogQXMgdGhlIG5hbWUgaW5kaWNhdGVzLCBpZiB5b3UgdXNlIHRoaXMsIHlvdSBhcmUgbW9zdCBsaWtlbHkgZG9pbmcgc29tZXRoaW5nXG4gICAgICogVGhlIFdyb25nIFdheS4gUGxlYXNlIHRyeSB0byB1bmRlcnN0YW5kIHRoZSByZWFjdGl2ZSB3YXkgYmVmb3JlIHVzaW5nIHRoaXNcbiAgICAgKiBtZXRob2QuIFVzZSBpdCBvbmx5IHdoZW4geW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLlxuICAgICAqXG4gICAgICogQHBhcmFtIHthbnl9IGVycm9yIFRoZSBlcnJvciB5b3Ugd2FudCB0byBicm9hZGNhc3QgdG8gYWxsIHRoZSBsaXN0ZW5lcnMgb2ZcbiAgICAgKiB0aGlzIFN0cmVhbS5cbiAgICAgKi9cbiAgICBTdHJlYW0ucHJvdG90eXBlLnNoYW1lZnVsbHlTZW5kRXJyb3IgPSBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5fZShlcnJvcik7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBGb3JjZXMgdGhlIFN0cmVhbSB0byBlbWl0IHRoZSBcImNvbXBsZXRlZFwiIGV2ZW50IHRvIGl0cyBsaXN0ZW5lcnMuXG4gICAgICpcbiAgICAgKiBBcyB0aGUgbmFtZSBpbmRpY2F0ZXMsIGlmIHlvdSB1c2UgdGhpcywgeW91IGFyZSBtb3N0IGxpa2VseSBkb2luZyBzb21ldGhpbmdcbiAgICAgKiBUaGUgV3JvbmcgV2F5LiBQbGVhc2UgdHJ5IHRvIHVuZGVyc3RhbmQgdGhlIHJlYWN0aXZlIHdheSBiZWZvcmUgdXNpbmcgdGhpc1xuICAgICAqIG1ldGhvZC4gVXNlIGl0IG9ubHkgd2hlbiB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcuXG4gICAgICovXG4gICAgU3RyZWFtLnByb3RvdHlwZS5zaGFtZWZ1bGx5U2VuZENvbXBsZXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLl9jKCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDb21iaW5lcyBtdWx0aXBsZSBzdHJlYW1zIHRvZ2V0aGVyIHRvIHJldHVybiBhIHN0cmVhbSB3aG9zZSBldmVudHMgYXJlXG4gICAgICogY2FsY3VsYXRlZCBmcm9tIHRoZSBsYXRlc3QgZXZlbnRzIG9mIGVhY2ggb2YgdGhlIGlucHV0IHN0cmVhbXMuXG4gICAgICpcbiAgICAgKiAqY29tYmluZSogcmVtZW1iZXJzIHRoZSBtb3N0IHJlY2VudCBldmVudCBmcm9tIGVhY2ggb2YgdGhlIGlucHV0IHN0cmVhbXMuXG4gICAgICogV2hlbiBhbnkgb2YgdGhlIGlucHV0IHN0cmVhbXMgZW1pdHMgYW4gZXZlbnQsIHRoYXQgZXZlbnQgdG9nZXRoZXIgd2l0aCBhbGxcbiAgICAgKiB0aGUgb3RoZXIgc2F2ZWQgZXZlbnRzIGFyZSBjb21iaW5lZCBpbiB0aGUgYHByb2plY3RgIGZ1bmN0aW9uIHdoaWNoIHNob3VsZFxuICAgICAqIHJldHVybiBhIHZhbHVlLiBUaGF0IHZhbHVlIHdpbGwgYmUgZW1pdHRlZCBvbiB0aGUgb3V0cHV0IHN0cmVhbS4gSXQnc1xuICAgICAqIGVzc2VudGlhbGx5IGEgd2F5IG9mIG1peGluZyB0aGUgZXZlbnRzIGZyb20gbXVsdGlwbGUgc3RyZWFtcyBhY2NvcmRpbmcgdG8gYVxuICAgICAqIGZvcm11bGEuXG4gICAgICpcbiAgICAgKiBNYXJibGUgZGlhZ3JhbTpcbiAgICAgKlxuICAgICAqIGBgYHRleHRcbiAgICAgKiAtLTEtLS0tMi0tLS0tMy0tLS0tLS0tNC0tLVxuICAgICAqIC0tLS1hLS0tLS1iLS0tLS1jLS1kLS0tLS0tXG4gICAgICogICBjb21iaW5lKCh4LHkpID0+IHgreSlcbiAgICAgKiAtLS0tMWEtMmEtMmItM2ItM2MtM2QtNGQtLVxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQGZhY3RvcnkgdHJ1ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByb2plY3QgQSBmdW5jdGlvbiBvZiB0eXBlIGAoeDogVDEsIHk6IFQyKSA9PiBSYCBvclxuICAgICAqIHNpbWlsYXIgdGhhdCB0YWtlcyB0aGUgbW9zdCByZWNlbnQgZXZlbnRzIGB4YCBhbmQgYHlgIGZyb20gdGhlIGlucHV0XG4gICAgICogc3RyZWFtcyBhbmQgcmV0dXJucyBhIHZhbHVlLiBUaGUgb3V0cHV0IHN0cmVhbSB3aWxsIGVtaXQgdGhhdCB2YWx1ZS4gVGhlXG4gICAgICogbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgdGhpcyBmdW5jdGlvbiBzaG91bGQgbWF0Y2ggdGhlIG51bWJlciBvZiBpbnB1dFxuICAgICAqIHN0cmVhbXMuXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbTEgQSBzdHJlYW0gdG8gY29tYmluZSB0b2dldGhlciB3aXRoIG90aGVyIHN0cmVhbXMuXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbTIgQSBzdHJlYW0gdG8gY29tYmluZSB0b2dldGhlciB3aXRoIG90aGVyIHN0cmVhbXMuXG4gICAgICogVHdvIG9yIG1vcmUgc3RyZWFtcyBtYXkgYmUgZ2l2ZW4gYXMgYXJndW1lbnRzLlxuICAgICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICAgKi9cbiAgICBTdHJlYW0uY29tYmluZSA9IGZ1bmN0aW9uIGNvbWJpbmUocHJvamVjdCkge1xuICAgICAgICB2YXIgc3RyZWFtcyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgc3RyZWFtc1tfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbShuZXcgQ29tYmluZVByb2R1Y2VyKHByb2plY3QsIHN0cmVhbXMpKTtcbiAgICB9O1xuICAgIHJldHVybiBTdHJlYW07XG59KCkpO1xuZXhwb3J0cy5TdHJlYW0gPSBTdHJlYW07XG52YXIgTWltaWNTdHJlYW0gPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhNaW1pY1N0cmVhbSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBNaW1pY1N0cmVhbSgpIHtcbiAgICAgICAgX3N1cGVyLmNhbGwodGhpcyk7XG4gICAgfVxuICAgIE1pbWljU3RyZWFtLnByb3RvdHlwZS5fYWRkID0gZnVuY3Rpb24gKGlsKSB7XG4gICAgICAgIHZhciB0ID0gdGhpcy5fdGFyZ2V0O1xuICAgICAgICBpZiAoIXQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHQuX2FkZChpbCk7XG4gICAgfTtcbiAgICBNaW1pY1N0cmVhbS5wcm90b3R5cGUuX3JlbW92ZSA9IGZ1bmN0aW9uIChpbCkge1xuICAgICAgICB2YXIgdCA9IHRoaXMuX3RhcmdldDtcbiAgICAgICAgaWYgKCF0KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0Ll9yZW1vdmUoaWwpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgZXhpc3RzIG9ubHkgb24gYSBNaW1pY1N0cmVhbSwgd2hpY2ggaXMgY3JlYXRlZCB0aHJvdWdoXG4gICAgICogYHhzLmNyZWF0ZU1pbWljKClgLiAqaW1pdGF0ZSogY2hhbmdlcyB0aGlzIGN1cnJlbnQgTWltaWNTdHJlYW0gdG8gYmVoYXZlXG4gICAgICogbGlrZSB0aGUgYG90aGVyYCBnaXZlbiBzdHJlYW0uXG4gICAgICpcbiAgICAgKiBUaGUgYGltaXRhdGVgIG1ldGhvZCBhbmQgdGhlIGBNaW1pY1N0cmVhbWAgdHlwZSBleGlzdCB0byBhbGxvdyBvbmUgdGhpbmc6XG4gICAgICogKipjaXJjdWxhciBkZXBlbmRlbmN5IG9mIHN0cmVhbXMqKi4gRm9yIGluc3RhbmNlLCBsZXQncyBpbWFnaW5lIHRoYXQgZm9yXG4gICAgICogc29tZSByZWFzb24geW91IG5lZWQgdG8gY3JlYXRlIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSB3aGVyZSBzdHJlYW0gYGZpcnN0JGBcbiAgICAgKiBkZXBlbmRzIG9uIHN0cmVhbSBgc2Vjb25kJGAgd2hpY2ggaW4gdHVybiBkZXBlbmRzIG9uIGBmaXJzdCRgOlxuICAgICAqXG4gICAgICogPCEtLSBza2lwLWV4YW1wbGUgLS0+XG4gICAgICogYGBganNcbiAgICAgKiBpbXBvcnQgZGVsYXkgZnJvbSAneHN0cmVhbS9leHRyYS9kZWxheSdcbiAgICAgKlxuICAgICAqIHZhciBmaXJzdCQgPSBzZWNvbmQkLm1hcCh4ID0+IHggKiAxMCkudGFrZSgzKTtcbiAgICAgKiB2YXIgc2Vjb25kJCA9IGZpcnN0JC5tYXAoeCA9PiB4ICsgMSkuc3RhcnRXaXRoKDEpLmNvbXBvc2UoZGVsYXkoMTAwKSk7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBIb3dldmVyLCB0aGF0IGlzIGludmFsaWQgSmF2YVNjcmlwdCwgYmVjYXVzZSBgc2Vjb25kJGAgaXMgdW5kZWZpbmVkXG4gICAgICogb24gdGhlIGZpcnN0IGxpbmUuIFRoaXMgaXMgaG93IGEgTWltaWNTdHJlYW0gYW5kIGltaXRhdGUgY2FuIGhlbHAgc29sdmUgaXQ6XG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIGltcG9ydCBkZWxheSBmcm9tICd4c3RyZWFtL2V4dHJhL2RlbGF5J1xuICAgICAqXG4gICAgICogdmFyIHNlY29uZE1pbWljJCA9IHhzLmNyZWF0ZU1pbWljKCk7XG4gICAgICogdmFyIGZpcnN0JCA9IHNlY29uZE1pbWljJC5tYXAoeCA9PiB4ICogMTApLnRha2UoMyk7XG4gICAgICogdmFyIHNlY29uZCQgPSBmaXJzdCQubWFwKHggPT4geCArIDEpLnN0YXJ0V2l0aCgxKS5jb21wb3NlKGRlbGF5KDEwMCkpO1xuICAgICAqIHNlY29uZE1pbWljJC5pbWl0YXRlKHNlY29uZCQpO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogV2UgY3JlYXRlIGBzZWNvbmRNaW1pYyRgIGJlZm9yZSB0aGUgb3RoZXJzLCBzbyBpdCBjYW4gYmUgdXNlZCBpbiB0aGVcbiAgICAgKiBkZWNsYXJhdGlvbiBvZiBgZmlyc3QkYC4gVGhlbiwgYWZ0ZXIgYm90aCBgZmlyc3QkYCBhbmQgYHNlY29uZCRgIGFyZVxuICAgICAqIGRlZmluZWQsIHdlIGhvb2sgYHNlY29uZE1pbWljJGAgd2l0aCBgc2Vjb25kJGAgd2l0aCBgaW1pdGF0ZSgpYCB0byB0ZWxsXG4gICAgICogdGhhdCB0aGV5IGFyZSBcInRoZSBzYW1lXCIuIGBpbWl0YXRlYCB3aWxsIG5vdCB0cmlnZ2VyIHRoZSBzdGFydCBvZiBhbnlcbiAgICAgKiBzdHJlYW0sIGl0IHNpbXBseSBmb3J3YXJkcyBsaXN0ZW5lcnMgb2YgYHNlY29uZE1pbWljJGAgdG8gYHNlY29uZCRgLlxuICAgICAqXG4gICAgICogVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHdoZXJlIGBpbWl0YXRlKClgIGlzIGltcG9ydGFudCBpbiBDeWNsZS5qc1xuICAgICAqIGFwcGxpY2F0aW9ucy4gQSBwYXJlbnQgY29tcG9uZW50IGNvbnRhaW5zIHNvbWUgY2hpbGQgY29tcG9uZW50cy4gQSBjaGlsZFxuICAgICAqIGhhcyBhbiBhY3Rpb24gc3RyZWFtIHdoaWNoIGlzIGdpdmVuIHRvIHRoZSBwYXJlbnQgdG8gZGVmaW5lIGl0cyBzdGF0ZTpcbiAgICAgKlxuICAgICAqIDwhLS0gc2tpcC1leGFtcGxlIC0tPlxuICAgICAqIGBgYGpzXG4gICAgICogY29uc3QgY2hpbGRBY3Rpb25NaW1pYyQgPSB4cy5jcmVhdGVNaW1pYygpO1xuICAgICAqIGNvbnN0IHBhcmVudCA9IFBhcmVudCh7Li4uc291cmNlcywgY2hpbGRBY3Rpb24kOiBjaGlsZEFjdGlvbk1pbWljJH0pO1xuICAgICAqIGNvbnN0IGNoaWxkQWN0aW9uJCA9IHBhcmVudC5zdGF0ZSQubWFwKHMgPT4gcy5jaGlsZC5hY3Rpb24kKS5mbGF0dGVuKCk7XG4gICAgICogY2hpbGRBY3Rpb25NaW1pYyQuaW1pdGF0ZShjaGlsZEFjdGlvbiQpO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogVGhlICppbWl0YXRlKiBtZXRob2QgcmV0dXJucyBub3RoaW5nLiBJbnN0ZWFkLCBpdCBjaGFuZ2VzIHRoZSBiZWhhdmlvciBvZlxuICAgICAqIHRoZSBjdXJyZW50IHN0cmVhbSwgbWFraW5nIGl0IHJlLWVtaXQgd2hhdGV2ZXIgZXZlbnRzIGFyZSBlbWl0dGVkIGJ5IHRoZVxuICAgICAqIGdpdmVuIGBvdGhlcmAgc3RyZWFtLlxuICAgICAqXG4gICAgICogTm90ZSwgdGhvdWdoLCB0aGF0ICoqYGltaXRhdGUoKWAgZG9lcyBub3Qgc3VwcG9ydCBNZW1vcnlTdHJlYW1zKiouIElmIHdlXG4gICAgICogd291bGQgYXR0ZW1wdCB0byBpbWl0YXRlIGEgTWVtb3J5U3RyZWFtIGluIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSwgd2Ugd291bGRcbiAgICAgKiBlaXRoZXIgZ2V0IGEgcmFjZSBjb25kaXRpb24gKHdoZXJlIHRoZSBzeW1wdG9tIHdvdWxkIGJlIFwibm90aGluZyBoYXBwZW5zXCIpXG4gICAgICogb3IgYW4gaW5maW5pdGUgY3ljbGljIGVtaXNzaW9uIG9mIHZhbHVlcy4gSXQncyB1c2VmdWwgdG8gdGhpbmsgYWJvdXRcbiAgICAgKiBNZW1vcnlTdHJlYW1zIGFzIGNlbGxzIGluIGEgc3ByZWFkc2hlZXQuIEl0IGRvZXNuJ3QgbWFrZSBhbnkgc2Vuc2UgdG9cbiAgICAgKiBkZWZpbmUgYSBzcHJlYWRzaGVldCBjZWxsIGBBMWAgd2l0aCBhIGZvcm11bGEgdGhhdCBkZXBlbmRzIG9uIGBCMWAgYW5kXG4gICAgICogY2VsbCBgQjFgIGRlZmluZWQgd2l0aCBhIGZvcm11bGEgdGhhdCBkZXBlbmRzIG9uIGBBMWAuXG4gICAgICpcbiAgICAgKiBJZiB5b3UgZmluZCB5b3Vyc2VsZiB3YW50aW5nIHRvIHVzZSBgaW1pdGF0ZSgpYCB3aXRoIGFcbiAgICAgKiBNZW1vcnlTdHJlYW0sIHlvdSBzaG91bGQgcmV3b3JrIHlvdXIgY29kZSBhcm91bmQgYGltaXRhdGUoKWAgdG8gdXNlIGFcbiAgICAgKiBTdHJlYW0gaW5zdGVhZC4gTG9vayBmb3IgdGhlIHN0cmVhbSBpbiB0aGUgY2lyY3VsYXIgZGVwZW5kZW5jeSB0aGF0XG4gICAgICogcmVwcmVzZW50cyBhbiBldmVudCBzdHJlYW0sIGFuZCB0aGF0IHdvdWxkIGJlIGEgY2FuZGlkYXRlIGZvciBjcmVhdGluZyBhXG4gICAgICogTWltaWNTdHJlYW0gd2hpY2ggdGhlbiBpbWl0YXRlcyB0aGUgcmVhbCBldmVudCBzdHJlYW0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gb3RoZXIgVGhlIHN0cmVhbSB0byBpbWl0YXRlIG9uIHRoZSBjdXJyZW50IG9uZS4gTXVzdCBub3QgYmVcbiAgICAgKiBhIE1lbW9yeVN0cmVhbS5cbiAgICAgKi9cbiAgICBNaW1pY1N0cmVhbS5wcm90b3R5cGUuaW1pdGF0ZSA9IGZ1bmN0aW9uIChvdGhlcikge1xuICAgICAgICBpZiAob3RoZXIgaW5zdGFuY2VvZiBNZW1vcnlTdHJlYW0pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQSBNZW1vcnlTdHJlYW0gd2FzIGdpdmVuIHRvIGltaXRhdGUoKSwgYnV0IGl0IG9ubHkgJyArXG4gICAgICAgICAgICAgICAgJ3N1cHBvcnRzIGEgU3RyZWFtLiBSZWFkIG1vcmUgYWJvdXQgdGhpcyByZXN0cmljdGlvbiBoZXJlOiAnICtcbiAgICAgICAgICAgICAgICAnaHR0cHM6Ly9naXRodWIuY29tL3N0YWx0ei94c3RyZWFtI2ZhcScpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3RhcmdldCA9IG90aGVyO1xuICAgIH07XG4gICAgcmV0dXJuIE1pbWljU3RyZWFtO1xufShTdHJlYW0pKTtcbmV4cG9ydHMuTWltaWNTdHJlYW0gPSBNaW1pY1N0cmVhbTtcbnZhciBNZW1vcnlTdHJlYW0gPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhNZW1vcnlTdHJlYW0sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTWVtb3J5U3RyZWFtKHByb2R1Y2VyKSB7XG4gICAgICAgIF9zdXBlci5jYWxsKHRoaXMsIHByb2R1Y2VyKTtcbiAgICAgICAgdGhpcy5faGFzID0gZmFsc2U7XG4gICAgfVxuICAgIE1lbW9yeVN0cmVhbS5wcm90b3R5cGUuX24gPSBmdW5jdGlvbiAoeCkge1xuICAgICAgICB0aGlzLl92ID0geDtcbiAgICAgICAgdGhpcy5faGFzID0gdHJ1ZTtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5fbi5jYWxsKHRoaXMsIHgpO1xuICAgIH07XG4gICAgTWVtb3J5U3RyZWFtLnByb3RvdHlwZS5fYWRkID0gZnVuY3Rpb24gKGlsKSB7XG4gICAgICAgIGlmICh0aGlzLl9oYXMpIHtcbiAgICAgICAgICAgIGlsLl9uKHRoaXMuX3YpO1xuICAgICAgICB9XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUuX2FkZC5jYWxsKHRoaXMsIGlsKTtcbiAgICB9O1xuICAgIE1lbW9yeVN0cmVhbS5wcm90b3R5cGUuX3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuX2hhcyA9IGZhbHNlO1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLl94LmNhbGwodGhpcyk7XG4gICAgfTtcbiAgICBNZW1vcnlTdHJlYW0ucHJvdG90eXBlLm1hcCA9IGZ1bmN0aW9uIChwcm9qZWN0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXAocHJvamVjdCk7XG4gICAgfTtcbiAgICBNZW1vcnlTdHJlYW0ucHJvdG90eXBlLm1hcFRvID0gZnVuY3Rpb24gKHByb2plY3RlZFZhbHVlKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIucHJvdG90eXBlLm1hcFRvLmNhbGwodGhpcywgcHJvamVjdGVkVmFsdWUpO1xuICAgIH07XG4gICAgTWVtb3J5U3RyZWFtLnByb3RvdHlwZS50YWtlID0gZnVuY3Rpb24gKGFtb3VudCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyLnByb3RvdHlwZS50YWtlLmNhbGwodGhpcywgYW1vdW50KTtcbiAgICB9O1xuICAgIE1lbW9yeVN0cmVhbS5wcm90b3R5cGUuZW5kV2hlbiA9IGZ1bmN0aW9uIChvdGhlcikge1xuICAgICAgICByZXR1cm4gX3N1cGVyLnByb3RvdHlwZS5lbmRXaGVuLmNhbGwodGhpcywgb3RoZXIpO1xuICAgIH07XG4gICAgTWVtb3J5U3RyZWFtLnByb3RvdHlwZS5yZXBsYWNlRXJyb3IgPSBmdW5jdGlvbiAocmVwbGFjZSkge1xuICAgICAgICByZXR1cm4gX3N1cGVyLnByb3RvdHlwZS5yZXBsYWNlRXJyb3IuY2FsbCh0aGlzLCByZXBsYWNlKTtcbiAgICB9O1xuICAgIE1lbW9yeVN0cmVhbS5wcm90b3R5cGUuZGVidWcgPSBmdW5jdGlvbiAobGFiZWxPclNweSkge1xuICAgICAgICByZXR1cm4gX3N1cGVyLnByb3RvdHlwZS5kZWJ1Zy5jYWxsKHRoaXMsIGxhYmVsT3JTcHkpO1xuICAgIH07XG4gICAgcmV0dXJuIE1lbW9yeVN0cmVhbTtcbn0oU3RyZWFtKSk7XG5leHBvcnRzLk1lbW9yeVN0cmVhbSA9IE1lbW9yeVN0cmVhbTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZGVmYXVsdCA9IFN0cmVhbTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvcmUuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgY29yZV8xID0gcmVxdWlyZSgnLi4vY29yZScpO1xudmFyIGVtcHR5ID0ge307XG52YXIgRHJvcFJlcGVhdHNPcGVyYXRvciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRHJvcFJlcGVhdHNPcGVyYXRvcihmbiwgaW5zKSB7XG4gICAgICAgIHRoaXMuZm4gPSBmbjtcbiAgICAgICAgdGhpcy5pbnMgPSBpbnM7XG4gICAgICAgIHRoaXMudHlwZSA9ICdkcm9wUmVwZWF0cyc7XG4gICAgICAgIHRoaXMub3V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy52ID0gZW1wdHk7XG4gICAgfVxuICAgIERyb3BSZXBlYXRzT3BlcmF0b3IucHJvdG90eXBlLl9zdGFydCA9IGZ1bmN0aW9uIChvdXQpIHtcbiAgICAgICAgdGhpcy5vdXQgPSBvdXQ7XG4gICAgICAgIHRoaXMuaW5zLl9hZGQodGhpcyk7XG4gICAgfTtcbiAgICBEcm9wUmVwZWF0c09wZXJhdG9yLnByb3RvdHlwZS5fc3RvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5pbnMuX3JlbW92ZSh0aGlzKTtcbiAgICAgICAgdGhpcy5vdXQgPSBudWxsO1xuICAgICAgICB0aGlzLnYgPSBlbXB0eTtcbiAgICB9O1xuICAgIERyb3BSZXBlYXRzT3BlcmF0b3IucHJvdG90eXBlLmlzRXEgPSBmdW5jdGlvbiAoeCwgeSkge1xuICAgICAgICByZXR1cm4gdGhpcy5mbiA/IHRoaXMuZm4oeCwgeSkgOiB4ID09PSB5O1xuICAgIH07XG4gICAgRHJvcFJlcGVhdHNPcGVyYXRvci5wcm90b3R5cGUuX24gPSBmdW5jdGlvbiAodCkge1xuICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICBpZiAoIXUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHZhciB2ID0gdGhpcy52O1xuICAgICAgICBpZiAodiA9PT0gZW1wdHkgfHwgIXRoaXMuaXNFcSh0LCB2KSkge1xuICAgICAgICAgICAgdS5fbih0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnYgPSB0O1xuICAgIH07XG4gICAgRHJvcFJlcGVhdHNPcGVyYXRvci5wcm90b3R5cGUuX2UgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICghdSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdS5fZShlcnIpO1xuICAgIH07XG4gICAgRHJvcFJlcGVhdHNPcGVyYXRvci5wcm90b3R5cGUuX2MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICghdSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdS5fYygpO1xuICAgIH07XG4gICAgcmV0dXJuIERyb3BSZXBlYXRzT3BlcmF0b3I7XG59KCkpO1xuZXhwb3J0cy5Ecm9wUmVwZWF0c09wZXJhdG9yID0gRHJvcFJlcGVhdHNPcGVyYXRvcjtcbmZ1bmN0aW9uIGRyb3BSZXBlYXRzKGlzRXF1YWwpIHtcbiAgICBpZiAoaXNFcXVhbCA9PT0gdm9pZCAwKSB7IGlzRXF1YWwgPSBudWxsOyB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGRyb3BSZXBlYXRzT3BlcmF0b3IoaW5zKSB7XG4gICAgICAgIHJldHVybiBuZXcgY29yZV8xLlN0cmVhbShuZXcgRHJvcFJlcGVhdHNPcGVyYXRvcihpc0VxdWFsLCBpbnMpKTtcbiAgICB9O1xufVxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gZHJvcFJlcGVhdHM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kcm9wUmVwZWF0cy5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBjb3JlXzEgPSByZXF1aXJlKCcuL2NvcmUnKTtcbmV4cG9ydHMuU3RyZWFtID0gY29yZV8xLlN0cmVhbTtcbmV4cG9ydHMuTWVtb3J5U3RyZWFtID0gY29yZV8xLk1lbW9yeVN0cmVhbTtcbmV4cG9ydHMuTWltaWNTdHJlYW0gPSBjb3JlXzEuTWltaWNTdHJlYW07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmRlZmF1bHQgPSBjb3JlXzEuU3RyZWFtO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYmFzZV8xID0gcmVxdWlyZSgnQGN5Y2xlL2Jhc2UnKTtcbnZhciB4c3RyZWFtX2FkYXB0ZXJfMSA9IHJlcXVpcmUoJ0BjeWNsZS94c3RyZWFtLWFkYXB0ZXInKTtcbi8qKlxuICogQSBmdW5jdGlvbiB0aGF0IHByZXBhcmVzIHRoZSBDeWNsZSBhcHBsaWNhdGlvbiB0byBiZSBleGVjdXRlZC4gVGFrZXMgYSBgbWFpbmBcbiAqIGZ1bmN0aW9uIGFuZCBwcmVwYXJlcyB0byBjaXJjdWxhcmx5IGNvbm5lY3RzIGl0IHRvIHRoZSBnaXZlbiBjb2xsZWN0aW9uIG9mXG4gKiBkcml2ZXIgZnVuY3Rpb25zLiBBcyBhbiBvdXRwdXQsIGBDeWNsZSgpYCByZXR1cm5zIGFuIG9iamVjdCB3aXRoIHRocmVlXG4gKiBwcm9wZXJ0aWVzOiBgc291cmNlc2AsIGBzaW5rc2AgYW5kIGBydW5gLiBPbmx5IHdoZW4gYHJ1bigpYCBpcyBjYWxsZWQgd2lsbFxuICogdGhlIGFwcGxpY2F0aW9uIGFjdHVhbGx5IGV4ZWN1dGUuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIG9mIGBydW4oKWAgZm9yXG4gKiBtb3JlIGRldGFpbHMuXG4gKlxuICogKipFeGFtcGxlOioqXG4gKiBgYGBqc1xuICogY29uc3Qge3NvdXJjZXMsIHNpbmtzLCBydW59ID0gQ3ljbGUobWFpbiwgZHJpdmVycyk7XG4gKiAvLyAuLi5cbiAqIGNvbnN0IGRpc3Bvc2UgPSBydW4oKTsgLy8gRXhlY3V0ZXMgdGhlIGFwcGxpY2F0aW9uXG4gKiAvLyAuLi5cbiAqIGRpc3Bvc2UoKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IG1haW4gYSBmdW5jdGlvbiB0aGF0IHRha2VzIGBzb3VyY2VzYCBhcyBpbnB1dFxuICogYW5kIG91dHB1dHMgYSBjb2xsZWN0aW9uIG9mIGBzaW5rc2AgT2JzZXJ2YWJsZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gZHJpdmVycyBhbiBvYmplY3Qgd2hlcmUga2V5cyBhcmUgZHJpdmVyIG5hbWVzIGFuZCB2YWx1ZXNcbiAqIGFyZSBkcml2ZXIgZnVuY3Rpb25zLlxuICogQHJldHVybiB7T2JqZWN0fSBhbiBvYmplY3Qgd2l0aCB0aHJlZSBwcm9wZXJ0aWVzOiBgc291cmNlc2AsIGBzaW5rc2AgYW5kXG4gKiBgcnVuYC4gYHNvdXJjZXNgIGlzIHRoZSBjb2xsZWN0aW9uIG9mIGRyaXZlciBzb3VyY2VzLCBgc2lua3NgIGlzIHRoZVxuICogY29sbGVjdGlvbiBvZiBkcml2ZXIgc2lua3MsIHRoZXNlIGNhbiBiZSB1c2VkIGZvciBkZWJ1Z2dpbmcgb3IgdGVzdGluZy4gYHJ1bmBcbiAqIGlzIHRoZSBmdW5jdGlvbiB0aGF0IG9uY2UgY2FsbGVkIHdpbGwgZXhlY3V0ZSB0aGUgYXBwbGljYXRpb24uXG4gKiBAZnVuY3Rpb24gQ3ljbGVcbiAqL1xudmFyIEN5Y2xlID0gZnVuY3Rpb24gKG1haW4sIGRyaXZlcnMpIHtcbiAgICByZXR1cm4gYmFzZV8xLmRlZmF1bHQobWFpbiwgZHJpdmVycywgeyBzdHJlYW1BZGFwdGVyOiB4c3RyZWFtX2FkYXB0ZXJfMS5kZWZhdWx0IH0pO1xufTtcbi8qKlxuICogVGFrZXMgYSBgbWFpbmAgZnVuY3Rpb24gYW5kIGNpcmN1bGFybHkgY29ubmVjdHMgaXQgdG8gdGhlIGdpdmVuIGNvbGxlY3Rpb25cbiAqIG9mIGRyaXZlciBmdW5jdGlvbnMuXG4gKlxuICogKipFeGFtcGxlOioqXG4gKiBgYGBqc1xuICogY29uc3QgZGlzcG9zZSA9IEN5Y2xlLnJ1bihtYWluLCBkcml2ZXJzKTtcbiAqIC8vIC4uLlxuICogZGlzcG9zZSgpO1xuICogYGBgXG4gKlxuICogVGhlIGBtYWluYCBmdW5jdGlvbiBleHBlY3RzIGEgY29sbGVjdGlvbiBvZiBcInNvdXJjZVwiIE9ic2VydmFibGVzIChyZXR1cm5lZFxuICogZnJvbSBkcml2ZXJzKSBhcyBpbnB1dCwgYW5kIHNob3VsZCByZXR1cm4gYSBjb2xsZWN0aW9uIG9mIFwic2lua1wiIE9ic2VydmFibGVzXG4gKiAodG8gYmUgZ2l2ZW4gdG8gZHJpdmVycykuIEEgXCJjb2xsZWN0aW9uIG9mIE9ic2VydmFibGVzXCIgaXMgYSBKYXZhU2NyaXB0XG4gKiBvYmplY3Qgd2hlcmUga2V5cyBtYXRjaCB0aGUgZHJpdmVyIG5hbWVzIHJlZ2lzdGVyZWQgYnkgdGhlIGBkcml2ZXJzYCBvYmplY3QsXG4gKiBhbmQgdmFsdWVzIGFyZSB0aGUgT2JzZXJ2YWJsZXMuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIG9mIGVhY2ggZHJpdmVyIHRvXG4gKiBzZWUgbW9yZSBkZXRhaWxzIG9uIHdoYXQgdHlwZXMgb2Ygc291cmNlcyBpdCBvdXRwdXRzIGFuZCBzaW5rcyBpdCByZWNlaXZlcy5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBtYWluIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBgc291cmNlc2AgYXMgaW5wdXRcbiAqIGFuZCBvdXRwdXRzIGEgY29sbGVjdGlvbiBvZiBgc2lua3NgIE9ic2VydmFibGVzLlxuICogQHBhcmFtIHtPYmplY3R9IGRyaXZlcnMgYW4gb2JqZWN0IHdoZXJlIGtleXMgYXJlIGRyaXZlciBuYW1lcyBhbmQgdmFsdWVzXG4gKiBhcmUgZHJpdmVyIGZ1bmN0aW9ucy5cbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSBhIGRpc3Bvc2UgZnVuY3Rpb24sIHVzZWQgdG8gdGVybWluYXRlIHRoZSBleGVjdXRpb24gb2YgdGhlXG4gKiBDeWNsZS5qcyBwcm9ncmFtLCBjbGVhbmluZyB1cCByZXNvdXJjZXMgdXNlZC5cbiAqIEBmdW5jdGlvbiBydW5cbiAqL1xuZnVuY3Rpb24gcnVuKG1haW4sIGRyaXZlcnMpIHtcbiAgICB2YXIgcnVuID0gYmFzZV8xLmRlZmF1bHQobWFpbiwgZHJpdmVycywgeyBzdHJlYW1BZGFwdGVyOiB4c3RyZWFtX2FkYXB0ZXJfMS5kZWZhdWx0IH0pLnJ1bjtcbiAgICByZXR1cm4gcnVuKCk7XG59XG5leHBvcnRzLnJ1biA9IHJ1bjtcbkN5Y2xlLnJ1biA9IHJ1bjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZGVmYXVsdCA9IEN5Y2xlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5mdW5jdGlvbiBsb2dUb0NvbnNvbGVFcnJvcihlcnIpIHtcbiAgICB2YXIgdGFyZ2V0ID0gZXJyLnN0YWNrIHx8IGVycjtcbiAgICBpZiAoY29uc29sZSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IodGFyZ2V0KTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY29uc29sZSAmJiBjb25zb2xlLmxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyh0YXJnZXQpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIG1ha2VTaW5rUHJveGllcyhkcml2ZXJzLCBzdHJlYW1BZGFwdGVyKSB7XG4gICAgdmFyIHNpbmtQcm94aWVzID0ge307XG4gICAgZm9yICh2YXIgbmFtZV8xIGluIGRyaXZlcnMpIHtcbiAgICAgICAgaWYgKGRyaXZlcnMuaGFzT3duUHJvcGVydHkobmFtZV8xKSkge1xuICAgICAgICAgICAgdmFyIGhvbGRTdWJqZWN0ID0gc3RyZWFtQWRhcHRlci5tYWtlU3ViamVjdCgpO1xuICAgICAgICAgICAgdmFyIGRyaXZlclN0cmVhbUFkYXB0ZXIgPSBkcml2ZXJzW25hbWVfMV0uc3RyZWFtQWRhcHRlciB8fCBzdHJlYW1BZGFwdGVyO1xuICAgICAgICAgICAgdmFyIHN0cmVhbSA9IGRyaXZlclN0cmVhbUFkYXB0ZXIuYWRhcHQoaG9sZFN1YmplY3Quc3RyZWFtLCBzdHJlYW1BZGFwdGVyLnN0cmVhbVN1YnNjcmliZSk7XG4gICAgICAgICAgICBzaW5rUHJveGllc1tuYW1lXzFdID0ge1xuICAgICAgICAgICAgICAgIHN0cmVhbTogc3RyZWFtLFxuICAgICAgICAgICAgICAgIG9ic2VydmVyOiBob2xkU3ViamVjdC5vYnNlcnZlcixcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNpbmtQcm94aWVzO1xufVxuZnVuY3Rpb24gY2FsbERyaXZlcnMoZHJpdmVycywgc2lua1Byb3hpZXMsIHN0cmVhbUFkYXB0ZXIpIHtcbiAgICB2YXIgc291cmNlcyA9IHt9O1xuICAgIGZvciAodmFyIG5hbWVfMiBpbiBkcml2ZXJzKSB7XG4gICAgICAgIGlmIChkcml2ZXJzLmhhc093blByb3BlcnR5KG5hbWVfMikpIHtcbiAgICAgICAgICAgIHZhciBkcml2ZXJPdXRwdXQgPSBkcml2ZXJzW25hbWVfMl0oc2lua1Byb3hpZXNbbmFtZV8yXS5zdHJlYW0sIHN0cmVhbUFkYXB0ZXIsIG5hbWVfMik7XG4gICAgICAgICAgICB2YXIgZHJpdmVyU3RyZWFtQWRhcHRlciA9IGRyaXZlcnNbbmFtZV8yXS5zdHJlYW1BZGFwdGVyO1xuICAgICAgICAgICAgaWYgKGRyaXZlclN0cmVhbUFkYXB0ZXIgJiYgZHJpdmVyU3RyZWFtQWRhcHRlci5pc1ZhbGlkU3RyZWFtKGRyaXZlck91dHB1dCkpIHtcbiAgICAgICAgICAgICAgICBzb3VyY2VzW25hbWVfMl0gPSBzdHJlYW1BZGFwdGVyLmFkYXB0KGRyaXZlck91dHB1dCwgZHJpdmVyU3RyZWFtQWRhcHRlci5zdHJlYW1TdWJzY3JpYmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc291cmNlc1tuYW1lXzJdID0gZHJpdmVyT3V0cHV0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2VzO1xufVxuZnVuY3Rpb24gcmVwbGljYXRlTWFueShzaW5rcywgc2lua1Byb3hpZXMsIHN0cmVhbUFkYXB0ZXIpIHtcbiAgICB2YXIgcmVzdWx0cyA9IE9iamVjdC5rZXlzKHNpbmtzKVxuICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiAhIXNpbmtQcm94aWVzW25hbWVdOyB9KVxuICAgICAgICAubWFwKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIHJldHVybiBzdHJlYW1BZGFwdGVyLnN0cmVhbVN1YnNjcmliZShzaW5rc1tuYW1lXSwge1xuICAgICAgICAgICAgbmV4dDogZnVuY3Rpb24gKHgpIHsgc2lua1Byb3hpZXNbbmFtZV0ub2JzZXJ2ZXIubmV4dCh4KTsgfSxcbiAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgbG9nVG9Db25zb2xlRXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICBzaW5rUHJveGllc1tuYW1lXS5vYnNlcnZlci5lcnJvcihlcnIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgIHNpbmtQcm94aWVzW25hbWVdLm9ic2VydmVyLmNvbXBsZXRlKHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICB2YXIgZGlzcG9zZUZ1bmN0aW9ucyA9IHJlc3VsdHNcbiAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoZGlzcG9zZSkgeyByZXR1cm4gdHlwZW9mIGRpc3Bvc2UgPT09ICdmdW5jdGlvbic7IH0pO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGRpc3Bvc2VGdW5jdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAoZGlzcG9zZSkgeyByZXR1cm4gZGlzcG9zZSgpOyB9KTtcbiAgICB9O1xufVxuZnVuY3Rpb24gZGlzcG9zZVNvdXJjZXMoc291cmNlcykge1xuICAgIGZvciAodmFyIGsgaW4gc291cmNlcykge1xuICAgICAgICBpZiAoc291cmNlcy5oYXNPd25Qcm9wZXJ0eShrKSAmJiBzb3VyY2VzW2tdXG4gICAgICAgICAgICAmJiB0eXBlb2Ygc291cmNlc1trXS5kaXNwb3NlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBzb3VyY2VzW2tdLmRpc3Bvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbnZhciBpc09iamVjdEVtcHR5ID0gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT09IDA7IH07XG5mdW5jdGlvbiBDeWNsZShtYWluLCBkcml2ZXJzLCBvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBtYWluICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRmlyc3QgYXJndW1lbnQgZ2l2ZW4gdG8gQ3ljbGUgbXVzdCBiZSB0aGUgJ21haW4nIFwiICtcbiAgICAgICAgICAgIFwiZnVuY3Rpb24uXCIpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGRyaXZlcnMgIT09IFwib2JqZWN0XCIgfHwgZHJpdmVycyA9PT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTZWNvbmQgYXJndW1lbnQgZ2l2ZW4gdG8gQ3ljbGUgbXVzdCBiZSBhbiBvYmplY3QgXCIgK1xuICAgICAgICAgICAgXCJ3aXRoIGRyaXZlciBmdW5jdGlvbnMgYXMgcHJvcGVydGllcy5cIik7XG4gICAgfVxuICAgIGlmIChpc09iamVjdEVtcHR5KGRyaXZlcnMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNlY29uZCBhcmd1bWVudCBnaXZlbiB0byBDeWNsZSBtdXN0IGJlIGFuIG9iamVjdCBcIiArXG4gICAgICAgICAgICBcIndpdGggYXQgbGVhc3Qgb25lIGRyaXZlciBmdW5jdGlvbiBkZWNsYXJlZCBhcyBhIHByb3BlcnR5LlwiKTtcbiAgICB9XG4gICAgdmFyIHN0cmVhbUFkYXB0ZXIgPSBvcHRpb25zLnN0cmVhbUFkYXB0ZXI7XG4gICAgaWYgKCFzdHJlYW1BZGFwdGVyIHx8IGlzT2JqZWN0RW1wdHkoc3RyZWFtQWRhcHRlcikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhpcmQgYXJndW1lbnQgZ2l2ZW4gdG8gQ3ljbGUgbXVzdCBiZSBhbiBvcHRpb25zIG9iamVjdCBcIiArXG4gICAgICAgICAgICBcIndpdGggdGhlIHN0cmVhbUFkYXB0ZXIga2V5IHN1cHBsaWVkIHdpdGggYSB2YWxpZCBzdHJlYW0gYWRhcHRlci5cIik7XG4gICAgfVxuICAgIHZhciBzaW5rUHJveGllcyA9IG1ha2VTaW5rUHJveGllcyhkcml2ZXJzLCBzdHJlYW1BZGFwdGVyKTtcbiAgICB2YXIgc291cmNlcyA9IGNhbGxEcml2ZXJzKGRyaXZlcnMsIHNpbmtQcm94aWVzLCBzdHJlYW1BZGFwdGVyKTtcbiAgICB2YXIgc2lua3MgPSBtYWluKHNvdXJjZXMpO1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB3aW5kb3cuQ3ljbGVqcyA9IHsgc2lua3M6IHNpbmtzIH07XG4gICAgfVxuICAgIHZhciBydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBkaXNwb3NlUmVwbGljYXRpb24gPSByZXBsaWNhdGVNYW55KHNpbmtzLCBzaW5rUHJveGllcywgc3RyZWFtQWRhcHRlcik7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkaXNwb3NlU291cmNlcyhzb3VyY2VzKTtcbiAgICAgICAgICAgIGRpc3Bvc2VSZXBsaWNhdGlvbigpO1xuICAgICAgICB9O1xuICAgIH07XG4gICAgcmV0dXJuIHsgc2lua3M6IHNpbmtzLCBzb3VyY2VzOiBzb3VyY2VzLCBydW46IHJ1biB9O1xufVxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gQ3ljbGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG4vKipcbiAqIEluZGljYXRlcyB0aGF0IG5hdmlnYXRpb24gd2FzIGNhdXNlZCBieSBhIGNhbGwgdG8gaGlzdG9yeS5wdXNoLlxuICovXG52YXIgUFVTSCA9IGV4cG9ydHMuUFVTSCA9ICdQVVNIJztcblxuLyoqXG4gKiBJbmRpY2F0ZXMgdGhhdCBuYXZpZ2F0aW9uIHdhcyBjYXVzZWQgYnkgYSBjYWxsIHRvIGhpc3RvcnkucmVwbGFjZS5cbiAqL1xudmFyIFJFUExBQ0UgPSBleHBvcnRzLlJFUExBQ0UgPSAnUkVQTEFDRSc7XG5cbi8qKlxuICogSW5kaWNhdGVzIHRoYXQgbmF2aWdhdGlvbiB3YXMgY2F1c2VkIGJ5IHNvbWUgb3RoZXIgYWN0aW9uIHN1Y2hcbiAqIGFzIHVzaW5nIGEgYnJvd3NlcidzIGJhY2svZm9yd2FyZCBidXR0b25zIGFuZC9vciBtYW51YWxseSBtYW5pcHVsYXRpbmdcbiAqIHRoZSBVUkwgaW4gYSBicm93c2VyJ3MgbG9jYXRpb24gYmFyLiBUaGlzIGlzIHRoZSBkZWZhdWx0LlxuICpcbiAqIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvV2luZG93RXZlbnRIYW5kbGVycy9vbnBvcHN0YXRlXG4gKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqL1xudmFyIFBPUCA9IGV4cG9ydHMuUE9QID0gJ1BPUCc7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgeyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH0gZWxzZSB7IHJldHVybiBBcnJheS5mcm9tKGFycik7IH0gfVxuXG52YXIgbG9vcEFzeW5jID0gZXhwb3J0cy5sb29wQXN5bmMgPSBmdW5jdGlvbiBsb29wQXN5bmModHVybnMsIHdvcmssIGNhbGxiYWNrKSB7XG4gIHZhciBjdXJyZW50VHVybiA9IDAsXG4gICAgICBpc0RvbmUgPSBmYWxzZTtcbiAgdmFyIGlzU3luYyA9IGZhbHNlLFxuICAgICAgaGFzTmV4dCA9IGZhbHNlLFxuICAgICAgZG9uZUFyZ3MgPSB2b2lkIDA7XG5cbiAgdmFyIGRvbmUgPSBmdW5jdGlvbiBkb25lKCkge1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIGlzRG9uZSA9IHRydWU7XG5cbiAgICBpZiAoaXNTeW5jKSB7XG4gICAgICAvLyBJdGVyYXRlIGluc3RlYWQgb2YgcmVjdXJzaW5nIGlmIHBvc3NpYmxlLlxuICAgICAgZG9uZUFyZ3MgPSBhcmdzO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNhbGxiYWNrLmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7XG4gIH07XG5cbiAgdmFyIG5leHQgPSBmdW5jdGlvbiBuZXh0KCkge1xuICAgIGlmIChpc0RvbmUpIHJldHVybjtcblxuICAgIGhhc05leHQgPSB0cnVlO1xuXG4gICAgaWYgKGlzU3luYykgcmV0dXJuOyAvLyBJdGVyYXRlIGluc3RlYWQgb2YgcmVjdXJzaW5nIGlmIHBvc3NpYmxlLlxuXG4gICAgaXNTeW5jID0gdHJ1ZTtcblxuICAgIHdoaWxlICghaXNEb25lICYmIGN1cnJlbnRUdXJuIDwgdHVybnMgJiYgaGFzTmV4dCkge1xuICAgICAgaGFzTmV4dCA9IGZhbHNlO1xuICAgICAgd29yayhjdXJyZW50VHVybisrLCBuZXh0LCBkb25lKTtcbiAgICB9XG5cbiAgICBpc1N5bmMgPSBmYWxzZTtcblxuICAgIGlmIChpc0RvbmUpIHtcbiAgICAgIC8vIFRoaXMgbWVhbnMgdGhlIGxvb3AgZmluaXNoZWQgc3luY2hyb25vdXNseS5cbiAgICAgIGNhbGxiYWNrLmFwcGx5KHVuZGVmaW5lZCwgX3RvQ29uc3VtYWJsZUFycmF5KGRvbmVBcmdzKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRUdXJuID49IHR1cm5zICYmIGhhc05leHQpIHtcbiAgICAgIGlzRG9uZSA9IHRydWU7XG4gICAgICBjYWxsYmFjaygpO1xuICAgIH1cbiAgfTtcblxuICBuZXh0KCk7XG59OyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZ28gPSBleHBvcnRzLnJlcGxhY2VMb2NhdGlvbiA9IGV4cG9ydHMucHVzaExvY2F0aW9uID0gZXhwb3J0cy5zdGFydExpc3RlbmVyID0gZXhwb3J0cy5nZXRVc2VyQ29uZmlybWF0aW9uID0gZXhwb3J0cy5nZXRDdXJyZW50TG9jYXRpb24gPSB1bmRlZmluZWQ7XG5cbnZhciBfTG9jYXRpb25VdGlscyA9IHJlcXVpcmUoJy4vTG9jYXRpb25VdGlscycpO1xuXG52YXIgX0RPTVV0aWxzID0gcmVxdWlyZSgnLi9ET01VdGlscycpO1xuXG52YXIgX0RPTVN0YXRlU3RvcmFnZSA9IHJlcXVpcmUoJy4vRE9NU3RhdGVTdG9yYWdlJyk7XG5cbnZhciBfUGF0aFV0aWxzID0gcmVxdWlyZSgnLi9QYXRoVXRpbHMnKTtcblxuLyogZXNsaW50LWRpc2FibGUgbm8tYWxlcnQgKi9cblxuXG52YXIgUG9wU3RhdGVFdmVudCA9ICdwb3BzdGF0ZSc7XG5cbnZhciBfY3JlYXRlTG9jYXRpb24gPSBmdW5jdGlvbiBfY3JlYXRlTG9jYXRpb24oaGlzdG9yeVN0YXRlKSB7XG4gIHZhciBrZXkgPSBoaXN0b3J5U3RhdGUgJiYgaGlzdG9yeVN0YXRlLmtleTtcblxuICByZXR1cm4gKDAsIF9Mb2NhdGlvblV0aWxzLmNyZWF0ZUxvY2F0aW9uKSh7XG4gICAgcGF0aG5hbWU6IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSxcbiAgICBzZWFyY2g6IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gsXG4gICAgaGFzaDogd2luZG93LmxvY2F0aW9uLmhhc2gsXG4gICAgc3RhdGU6IGtleSA/ICgwLCBfRE9NU3RhdGVTdG9yYWdlLnJlYWRTdGF0ZSkoa2V5KSA6IHVuZGVmaW5lZFxuICB9LCB1bmRlZmluZWQsIGtleSk7XG59O1xuXG52YXIgZ2V0Q3VycmVudExvY2F0aW9uID0gZXhwb3J0cy5nZXRDdXJyZW50TG9jYXRpb24gPSBmdW5jdGlvbiBnZXRDdXJyZW50TG9jYXRpb24oKSB7XG4gIHZhciBoaXN0b3J5U3RhdGUgPSB2b2lkIDA7XG4gIHRyeSB7XG4gICAgaGlzdG9yeVN0YXRlID0gd2luZG93Lmhpc3Rvcnkuc3RhdGUgfHwge307XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgLy8gSUUgMTEgc29tZXRpbWVzIHRocm93cyB3aGVuIGFjY2Vzc2luZyB3aW5kb3cuaGlzdG9yeS5zdGF0ZVxuICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbWphY2tzb24vaGlzdG9yeS9wdWxsLzI4OVxuICAgIGhpc3RvcnlTdGF0ZSA9IHt9O1xuICB9XG5cbiAgcmV0dXJuIF9jcmVhdGVMb2NhdGlvbihoaXN0b3J5U3RhdGUpO1xufTtcblxudmFyIGdldFVzZXJDb25maXJtYXRpb24gPSBleHBvcnRzLmdldFVzZXJDb25maXJtYXRpb24gPSBmdW5jdGlvbiBnZXRVc2VyQ29uZmlybWF0aW9uKG1lc3NhZ2UsIGNhbGxiYWNrKSB7XG4gIHJldHVybiBjYWxsYmFjayh3aW5kb3cuY29uZmlybShtZXNzYWdlKSk7XG59O1xuXG52YXIgc3RhcnRMaXN0ZW5lciA9IGV4cG9ydHMuc3RhcnRMaXN0ZW5lciA9IGZ1bmN0aW9uIHN0YXJ0TGlzdGVuZXIobGlzdGVuZXIpIHtcbiAgdmFyIGhhbmRsZVBvcFN0YXRlID0gZnVuY3Rpb24gaGFuZGxlUG9wU3RhdGUoZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuc3RhdGUgIT09IHVuZGVmaW5lZCkgLy8gSWdub3JlIGV4dHJhbmVvdXMgcG9wc3RhdGUgZXZlbnRzIGluIFdlYktpdFxuICAgICAgbGlzdGVuZXIoX2NyZWF0ZUxvY2F0aW9uKGV2ZW50LnN0YXRlKSk7XG4gIH07XG5cbiAgKDAsIF9ET01VdGlscy5hZGRFdmVudExpc3RlbmVyKSh3aW5kb3csIFBvcFN0YXRlRXZlbnQsIGhhbmRsZVBvcFN0YXRlKTtcblxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAoMCwgX0RPTVV0aWxzLnJlbW92ZUV2ZW50TGlzdGVuZXIpKHdpbmRvdywgUG9wU3RhdGVFdmVudCwgaGFuZGxlUG9wU3RhdGUpO1xuICB9O1xufTtcblxudmFyIHVwZGF0ZUxvY2F0aW9uID0gZnVuY3Rpb24gdXBkYXRlTG9jYXRpb24obG9jYXRpb24sIHVwZGF0ZVN0YXRlKSB7XG4gIHZhciBzdGF0ZSA9IGxvY2F0aW9uLnN0YXRlO1xuICB2YXIga2V5ID0gbG9jYXRpb24ua2V5O1xuXG5cbiAgaWYgKHN0YXRlICE9PSB1bmRlZmluZWQpICgwLCBfRE9NU3RhdGVTdG9yYWdlLnNhdmVTdGF0ZSkoa2V5LCBzdGF0ZSk7XG5cbiAgdXBkYXRlU3RhdGUoeyBrZXk6IGtleSB9LCAoMCwgX1BhdGhVdGlscy5jcmVhdGVQYXRoKShsb2NhdGlvbikpO1xufTtcblxudmFyIHB1c2hMb2NhdGlvbiA9IGV4cG9ydHMucHVzaExvY2F0aW9uID0gZnVuY3Rpb24gcHVzaExvY2F0aW9uKGxvY2F0aW9uKSB7XG4gIHJldHVybiB1cGRhdGVMb2NhdGlvbihsb2NhdGlvbiwgZnVuY3Rpb24gKHN0YXRlLCBwYXRoKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShzdGF0ZSwgbnVsbCwgcGF0aCk7XG4gIH0pO1xufTtcblxudmFyIHJlcGxhY2VMb2NhdGlvbiA9IGV4cG9ydHMucmVwbGFjZUxvY2F0aW9uID0gZnVuY3Rpb24gcmVwbGFjZUxvY2F0aW9uKGxvY2F0aW9uKSB7XG4gIHJldHVybiB1cGRhdGVMb2NhdGlvbihsb2NhdGlvbiwgZnVuY3Rpb24gKHN0YXRlLCBwYXRoKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShzdGF0ZSwgbnVsbCwgcGF0aCk7XG4gIH0pO1xufTtcblxudmFyIGdvID0gZXhwb3J0cy5nbyA9IGZ1bmN0aW9uIGdvKG4pIHtcbiAgaWYgKG4pIHdpbmRvdy5oaXN0b3J5LmdvKG4pO1xufTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLnJlYWRTdGF0ZSA9IGV4cG9ydHMuc2F2ZVN0YXRlID0gdW5kZWZpbmVkO1xuXG52YXIgX3dhcm5pbmcgPSByZXF1aXJlKCd3YXJuaW5nJyk7XG5cbnZhciBfd2FybmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF93YXJuaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIFF1b3RhRXhjZWVkZWRFcnJvcnMgPSBbJ1F1b3RhRXhjZWVkZWRFcnJvcicsICdRVU9UQV9FWENFRURFRF9FUlInXTsgLyogZXNsaW50LWRpc2FibGUgbm8tZW1wdHkgKi9cblxuXG52YXIgU2VjdXJpdHlFcnJvciA9ICdTZWN1cml0eUVycm9yJztcbnZhciBLZXlQcmVmaXggPSAnQEBIaXN0b3J5Lyc7XG5cbnZhciBjcmVhdGVLZXkgPSBmdW5jdGlvbiBjcmVhdGVLZXkoa2V5KSB7XG4gIHJldHVybiBLZXlQcmVmaXggKyBrZXk7XG59O1xuXG52YXIgc2F2ZVN0YXRlID0gZXhwb3J0cy5zYXZlU3RhdGUgPSBmdW5jdGlvbiBzYXZlU3RhdGUoa2V5LCBzdGF0ZSkge1xuICBpZiAoIXdpbmRvdy5zZXNzaW9uU3RvcmFnZSkge1xuICAgIC8vIFNlc3Npb24gc3RvcmFnZSBpcyBub3QgYXZhaWxhYmxlIG9yIGhpZGRlbi5cbiAgICAvLyBzZXNzaW9uU3RvcmFnZSBpcyB1bmRlZmluZWQgaW4gSW50ZXJuZXQgRXhwbG9yZXIgd2hlbiBzZXJ2ZWQgdmlhIGZpbGUgcHJvdG9jb2wuXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/ICgwLCBfd2FybmluZzIuZGVmYXVsdCkoZmFsc2UsICdbaGlzdG9yeV0gVW5hYmxlIHRvIHNhdmUgc3RhdGU7IHNlc3Npb25TdG9yYWdlIGlzIG5vdCBhdmFpbGFibGUnKSA6IHZvaWQgMDtcbiAgICByZXR1cm47XG4gIH1cblxuICB0cnkge1xuICAgIGlmIChzdGF0ZSA9PSBudWxsKSB7XG4gICAgICB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShjcmVhdGVLZXkoa2V5KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5zZXRJdGVtKGNyZWF0ZUtleShrZXkpLCBKU09OLnN0cmluZ2lmeShzdGF0ZSkpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3IubmFtZSA9PT0gU2VjdXJpdHlFcnJvcikge1xuICAgICAgLy8gQmxvY2tpbmcgY29va2llcyBpbiBDaHJvbWUvRmlyZWZveC9TYWZhcmkgdGhyb3dzIFNlY3VyaXR5RXJyb3Igb24gYW55XG4gICAgICAvLyBhdHRlbXB0IHRvIGFjY2VzcyB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UuXG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gKDAsIF93YXJuaW5nMi5kZWZhdWx0KShmYWxzZSwgJ1toaXN0b3J5XSBVbmFibGUgdG8gc2F2ZSBzdGF0ZTsgc2Vzc2lvblN0b3JhZ2UgaXMgbm90IGF2YWlsYWJsZSBkdWUgdG8gc2VjdXJpdHkgc2V0dGluZ3MnKSA6IHZvaWQgMDtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChRdW90YUV4Y2VlZGVkRXJyb3JzLmluZGV4T2YoZXJyb3IubmFtZSkgPj0gMCAmJiB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBTYWZhcmkgXCJwcml2YXRlIG1vZGVcIiB0aHJvd3MgUXVvdGFFeGNlZWRlZEVycm9yLlxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/ICgwLCBfd2FybmluZzIuZGVmYXVsdCkoZmFsc2UsICdbaGlzdG9yeV0gVW5hYmxlIHRvIHNhdmUgc3RhdGU7IHNlc3Npb25TdG9yYWdlIGlzIG5vdCBhdmFpbGFibGUgaW4gU2FmYXJpIHByaXZhdGUgbW9kZScpIDogdm9pZCAwO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbnZhciByZWFkU3RhdGUgPSBleHBvcnRzLnJlYWRTdGF0ZSA9IGZ1bmN0aW9uIHJlYWRTdGF0ZShrZXkpIHtcbiAgdmFyIGpzb24gPSB2b2lkIDA7XG4gIHRyeSB7XG4gICAganNvbiA9IHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGNyZWF0ZUtleShrZXkpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3IubmFtZSA9PT0gU2VjdXJpdHlFcnJvcikge1xuICAgICAgLy8gQmxvY2tpbmcgY29va2llcyBpbiBDaHJvbWUvRmlyZWZveC9TYWZhcmkgdGhyb3dzIFNlY3VyaXR5RXJyb3Igb24gYW55XG4gICAgICAvLyBhdHRlbXB0IHRvIGFjY2VzcyB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UuXG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gKDAsIF93YXJuaW5nMi5kZWZhdWx0KShmYWxzZSwgJ1toaXN0b3J5XSBVbmFibGUgdG8gcmVhZCBzdGF0ZTsgc2Vzc2lvblN0b3JhZ2UgaXMgbm90IGF2YWlsYWJsZSBkdWUgdG8gc2VjdXJpdHkgc2V0dGluZ3MnKSA6IHZvaWQgMDtcblxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBpZiAoanNvbikge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShqc29uKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gSWdub3JlIGludmFsaWQgSlNPTi5cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG52YXIgYWRkRXZlbnRMaXN0ZW5lciA9IGV4cG9ydHMuYWRkRXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIobm9kZSwgZXZlbnQsIGxpc3RlbmVyKSB7XG4gIHJldHVybiBub2RlLmFkZEV2ZW50TGlzdGVuZXIgPyBub2RlLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGxpc3RlbmVyLCBmYWxzZSkgOiBub2RlLmF0dGFjaEV2ZW50KCdvbicgKyBldmVudCwgbGlzdGVuZXIpO1xufTtcblxudmFyIHJlbW92ZUV2ZW50TGlzdGVuZXIgPSBleHBvcnRzLnJlbW92ZUV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVyKG5vZGUsIGV2ZW50LCBsaXN0ZW5lcikge1xuICByZXR1cm4gbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyID8gbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBsaXN0ZW5lciwgZmFsc2UpIDogbm9kZS5kZXRhY2hFdmVudCgnb24nICsgZXZlbnQsIGxpc3RlbmVyKTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBIVE1MNSBoaXN0b3J5IEFQSSBpcyBzdXBwb3J0ZWQuIFRha2VuIGZyb20gTW9kZXJuaXpyLlxuICpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9Nb2Rlcm5penIvTW9kZXJuaXpyL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9Nb2Rlcm5penIvTW9kZXJuaXpyL2Jsb2IvbWFzdGVyL2ZlYXR1cmUtZGV0ZWN0cy9oaXN0b3J5LmpzXG4gKiBjaGFuZ2VkIHRvIGF2b2lkIGZhbHNlIG5lZ2F0aXZlcyBmb3IgV2luZG93cyBQaG9uZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdGpzL3JlYWN0LXJvdXRlci9pc3N1ZXMvNTg2XG4gKi9cbnZhciBzdXBwb3J0c0hpc3RvcnkgPSBleHBvcnRzLnN1cHBvcnRzSGlzdG9yeSA9IGZ1bmN0aW9uIHN1cHBvcnRzSGlzdG9yeSgpIHtcbiAgdmFyIHVhID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQ7XG5cbiAgaWYgKCh1YS5pbmRleE9mKCdBbmRyb2lkIDIuJykgIT09IC0xIHx8IHVhLmluZGV4T2YoJ0FuZHJvaWQgNC4wJykgIT09IC0xKSAmJiB1YS5pbmRleE9mKCdNb2JpbGUgU2FmYXJpJykgIT09IC0xICYmIHVhLmluZGV4T2YoJ0Nocm9tZScpID09PSAtMSAmJiB1YS5pbmRleE9mKCdXaW5kb3dzIFBob25lJykgPT09IC0xKSByZXR1cm4gZmFsc2U7XG5cbiAgcmV0dXJuIHdpbmRvdy5oaXN0b3J5ICYmICdwdXNoU3RhdGUnIGluIHdpbmRvdy5oaXN0b3J5O1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGZhbHNlIGlmIHVzaW5nIGdvKG4pIHdpdGggaGFzaCBoaXN0b3J5IGNhdXNlcyBhIGZ1bGwgcGFnZSByZWxvYWQuXG4gKi9cbnZhciBzdXBwb3J0c0dvV2l0aG91dFJlbG9hZFVzaW5nSGFzaCA9IGV4cG9ydHMuc3VwcG9ydHNHb1dpdGhvdXRSZWxvYWRVc2luZ0hhc2ggPSBmdW5jdGlvbiBzdXBwb3J0c0dvV2l0aG91dFJlbG9hZFVzaW5nSGFzaCgpIHtcbiAgcmV0dXJuIHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0ZpcmVmb3gnKSA9PT0gLTE7XG59OyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbnZhciBjYW5Vc2VET00gPSBleHBvcnRzLmNhblVzZURPTSA9ICEhKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5yZXBsYWNlTG9jYXRpb24gPSBleHBvcnRzLnB1c2hMb2NhdGlvbiA9IGV4cG9ydHMuc3RhcnRMaXN0ZW5lciA9IGV4cG9ydHMuZ2V0Q3VycmVudExvY2F0aW9uID0gZXhwb3J0cy5nbyA9IGV4cG9ydHMuZ2V0VXNlckNvbmZpcm1hdGlvbiA9IHVuZGVmaW5lZDtcblxudmFyIF9Ccm93c2VyUHJvdG9jb2wgPSByZXF1aXJlKCcuL0Jyb3dzZXJQcm90b2NvbCcpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ2dldFVzZXJDb25maXJtYXRpb24nLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfQnJvd3NlclByb3RvY29sLmdldFVzZXJDb25maXJtYXRpb247XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdnbycsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9Ccm93c2VyUHJvdG9jb2wuZ287XG4gIH1cbn0pO1xuXG52YXIgX3dhcm5pbmcgPSByZXF1aXJlKCd3YXJuaW5nJyk7XG5cbnZhciBfd2FybmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF93YXJuaW5nKTtcblxudmFyIF9Mb2NhdGlvblV0aWxzID0gcmVxdWlyZSgnLi9Mb2NhdGlvblV0aWxzJyk7XG5cbnZhciBfRE9NVXRpbHMgPSByZXF1aXJlKCcuL0RPTVV0aWxzJyk7XG5cbnZhciBfRE9NU3RhdGVTdG9yYWdlID0gcmVxdWlyZSgnLi9ET01TdGF0ZVN0b3JhZ2UnKTtcblxudmFyIF9QYXRoVXRpbHMgPSByZXF1aXJlKCcuL1BhdGhVdGlscycpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgSGFzaENoYW5nZUV2ZW50ID0gJ2hhc2hjaGFuZ2UnO1xuXG52YXIgZ2V0SGFzaFBhdGggPSBmdW5jdGlvbiBnZXRIYXNoUGF0aCgpIHtcbiAgLy8gV2UgY2FuJ3QgdXNlIHdpbmRvdy5sb2NhdGlvbi5oYXNoIGhlcmUgYmVjYXVzZSBpdCdzIG5vdFxuICAvLyBjb25zaXN0ZW50IGFjcm9zcyBicm93c2VycyAtIEZpcmVmb3ggd2lsbCBwcmUtZGVjb2RlIGl0IVxuICB2YXIgaHJlZiA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICB2YXIgaW5kZXggPSBocmVmLmluZGV4T2YoJyMnKTtcbiAgcmV0dXJuIGluZGV4ID09PSAtMSA/ICcnIDogaHJlZi5zdWJzdHJpbmcoaW5kZXggKyAxKTtcbn07XG5cbnZhciBwdXNoSGFzaFBhdGggPSBmdW5jdGlvbiBwdXNoSGFzaFBhdGgocGF0aCkge1xuICByZXR1cm4gd2luZG93LmxvY2F0aW9uLmhhc2ggPSBwYXRoO1xufTtcblxudmFyIHJlcGxhY2VIYXNoUGF0aCA9IGZ1bmN0aW9uIHJlcGxhY2VIYXNoUGF0aChwYXRoKSB7XG4gIHZhciBpID0gd2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZignIycpO1xuXG4gIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNsaWNlKDAsIGkgPj0gMCA/IGkgOiAwKSArICcjJyArIHBhdGgpO1xufTtcblxudmFyIGVuc3VyZVNsYXNoID0gZnVuY3Rpb24gZW5zdXJlU2xhc2goKSB7XG4gIHZhciBwYXRoID0gZ2V0SGFzaFBhdGgoKTtcblxuICBpZiAoKDAsIF9QYXRoVXRpbHMuaXNBYnNvbHV0ZVBhdGgpKHBhdGgpKSByZXR1cm4gdHJ1ZTtcblxuICByZXBsYWNlSGFzaFBhdGgoJy8nICsgcGF0aCk7XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxudmFyIGdldEN1cnJlbnRMb2NhdGlvbiA9IGV4cG9ydHMuZ2V0Q3VycmVudExvY2F0aW9uID0gZnVuY3Rpb24gZ2V0Q3VycmVudExvY2F0aW9uKHF1ZXJ5S2V5KSB7XG4gIHZhciBwYXRoID0gZ2V0SGFzaFBhdGgoKTtcbiAgdmFyIGtleSA9ICgwLCBfUGF0aFV0aWxzLmdldFF1ZXJ5U3RyaW5nVmFsdWVGcm9tUGF0aCkocGF0aCwgcXVlcnlLZXkpO1xuXG4gIHZhciBzdGF0ZSA9IHZvaWQgMDtcbiAgaWYgKGtleSkge1xuICAgIHBhdGggPSAoMCwgX1BhdGhVdGlscy5zdHJpcFF1ZXJ5U3RyaW5nVmFsdWVGcm9tUGF0aCkocGF0aCwgcXVlcnlLZXkpO1xuICAgIHN0YXRlID0gKDAsIF9ET01TdGF0ZVN0b3JhZ2UucmVhZFN0YXRlKShrZXkpO1xuICB9XG5cbiAgdmFyIGluaXQgPSAoMCwgX1BhdGhVdGlscy5wYXJzZVBhdGgpKHBhdGgpO1xuICBpbml0LnN0YXRlID0gc3RhdGU7XG5cbiAgcmV0dXJuICgwLCBfTG9jYXRpb25VdGlscy5jcmVhdGVMb2NhdGlvbikoaW5pdCwgdW5kZWZpbmVkLCBrZXkpO1xufTtcblxudmFyIHByZXZMb2NhdGlvbiA9IHZvaWQgMDtcblxudmFyIHN0YXJ0TGlzdGVuZXIgPSBleHBvcnRzLnN0YXJ0TGlzdGVuZXIgPSBmdW5jdGlvbiBzdGFydExpc3RlbmVyKGxpc3RlbmVyLCBxdWVyeUtleSkge1xuICB2YXIgaGFuZGxlSGFzaENoYW5nZSA9IGZ1bmN0aW9uIGhhbmRsZUhhc2hDaGFuZ2UoKSB7XG4gICAgaWYgKCFlbnN1cmVTbGFzaCgpKSByZXR1cm47IC8vIEhhc2ggcGF0aCBtdXN0IGFsd2F5cyBiZWdpbiB3aXRoIGEgL1xuXG4gICAgdmFyIGN1cnJlbnRMb2NhdGlvbiA9IGdldEN1cnJlbnRMb2NhdGlvbihxdWVyeUtleSk7XG5cbiAgICBpZiAocHJldkxvY2F0aW9uICYmIGN1cnJlbnRMb2NhdGlvbi5rZXkgJiYgcHJldkxvY2F0aW9uLmtleSA9PT0gY3VycmVudExvY2F0aW9uLmtleSkgcmV0dXJuOyAvLyBJZ25vcmUgZXh0cmFuZW91cyBoYXNoY2hhbmdlIGV2ZW50c1xuXG4gICAgcHJldkxvY2F0aW9uID0gY3VycmVudExvY2F0aW9uO1xuXG4gICAgbGlzdGVuZXIoY3VycmVudExvY2F0aW9uKTtcbiAgfTtcblxuICBlbnN1cmVTbGFzaCgpO1xuICAoMCwgX0RPTVV0aWxzLmFkZEV2ZW50TGlzdGVuZXIpKHdpbmRvdywgSGFzaENoYW5nZUV2ZW50LCBoYW5kbGVIYXNoQ2hhbmdlKTtcblxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAoMCwgX0RPTVV0aWxzLnJlbW92ZUV2ZW50TGlzdGVuZXIpKHdpbmRvdywgSGFzaENoYW5nZUV2ZW50LCBoYW5kbGVIYXNoQ2hhbmdlKTtcbiAgfTtcbn07XG5cbnZhciB1cGRhdGVMb2NhdGlvbiA9IGZ1bmN0aW9uIHVwZGF0ZUxvY2F0aW9uKGxvY2F0aW9uLCBxdWVyeUtleSwgdXBkYXRlSGFzaCkge1xuICB2YXIgc3RhdGUgPSBsb2NhdGlvbi5zdGF0ZTtcbiAgdmFyIGtleSA9IGxvY2F0aW9uLmtleTtcblxuICB2YXIgcGF0aCA9ICgwLCBfUGF0aFV0aWxzLmNyZWF0ZVBhdGgpKGxvY2F0aW9uKTtcblxuICBpZiAoc3RhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHBhdGggPSAoMCwgX1BhdGhVdGlscy5hZGRRdWVyeVN0cmluZ1ZhbHVlVG9QYXRoKShwYXRoLCBxdWVyeUtleSwga2V5KTtcbiAgICAoMCwgX0RPTVN0YXRlU3RvcmFnZS5zYXZlU3RhdGUpKGtleSwgc3RhdGUpO1xuICB9XG5cbiAgcHJldkxvY2F0aW9uID0gbG9jYXRpb247XG5cbiAgdXBkYXRlSGFzaChwYXRoKTtcbn07XG5cbnZhciBwdXNoTG9jYXRpb24gPSBleHBvcnRzLnB1c2hMb2NhdGlvbiA9IGZ1bmN0aW9uIHB1c2hMb2NhdGlvbihsb2NhdGlvbiwgcXVlcnlLZXkpIHtcbiAgcmV0dXJuIHVwZGF0ZUxvY2F0aW9uKGxvY2F0aW9uLCBxdWVyeUtleSwgZnVuY3Rpb24gKHBhdGgpIHtcbiAgICBpZiAoZ2V0SGFzaFBhdGgoKSAhPT0gcGF0aCkge1xuICAgICAgcHVzaEhhc2hQYXRoKHBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gKDAsIF93YXJuaW5nMi5kZWZhdWx0KShmYWxzZSwgJ1lvdSBjYW5ub3QgUFVTSCB0aGUgc2FtZSBwYXRoIHVzaW5nIGhhc2ggaGlzdG9yeScpIDogdm9pZCAwO1xuICAgIH1cbiAgfSk7XG59O1xuXG52YXIgcmVwbGFjZUxvY2F0aW9uID0gZXhwb3J0cy5yZXBsYWNlTG9jYXRpb24gPSBmdW5jdGlvbiByZXBsYWNlTG9jYXRpb24obG9jYXRpb24sIHF1ZXJ5S2V5KSB7XG4gIHJldHVybiB1cGRhdGVMb2NhdGlvbihsb2NhdGlvbiwgcXVlcnlLZXksIGZ1bmN0aW9uIChwYXRoKSB7XG4gICAgaWYgKGdldEhhc2hQYXRoKCkgIT09IHBhdGgpIHJlcGxhY2VIYXNoUGF0aChwYXRoKTtcbiAgfSk7XG59OyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMubG9jYXRpb25zQXJlRXF1YWwgPSBleHBvcnRzLnN0YXRlc0FyZUVxdWFsID0gZXhwb3J0cy5jcmVhdGVMb2NhdGlvbiA9IGV4cG9ydHMuY3JlYXRlUXVlcnkgPSB1bmRlZmluZWQ7XG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9O1xuXG52YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXG52YXIgX2ludmFyaWFudCA9IHJlcXVpcmUoJ2ludmFyaWFudCcpO1xuXG52YXIgX2ludmFyaWFudDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pbnZhcmlhbnQpO1xuXG52YXIgX1BhdGhVdGlscyA9IHJlcXVpcmUoJy4vUGF0aFV0aWxzJyk7XG5cbnZhciBfQWN0aW9ucyA9IHJlcXVpcmUoJy4vQWN0aW9ucycpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgY3JlYXRlUXVlcnkgPSBleHBvcnRzLmNyZWF0ZVF1ZXJ5ID0gZnVuY3Rpb24gY3JlYXRlUXVlcnkocHJvcHMpIHtcbiAgcmV0dXJuIF9leHRlbmRzKE9iamVjdC5jcmVhdGUobnVsbCksIHByb3BzKTtcbn07XG5cbnZhciBjcmVhdGVMb2NhdGlvbiA9IGV4cG9ydHMuY3JlYXRlTG9jYXRpb24gPSBmdW5jdGlvbiBjcmVhdGVMb2NhdGlvbigpIHtcbiAgdmFyIGlucHV0ID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gJy8nIDogYXJndW1lbnRzWzBdO1xuICB2YXIgYWN0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gX0FjdGlvbnMuUE9QIDogYXJndW1lbnRzWzFdO1xuICB2YXIga2V5ID0gYXJndW1lbnRzLmxlbmd0aCA8PSAyIHx8IGFyZ3VtZW50c1syXSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGFyZ3VtZW50c1syXTtcblxuICB2YXIgb2JqZWN0ID0gdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJyA/ICgwLCBfUGF0aFV0aWxzLnBhcnNlUGF0aCkoaW5wdXQpIDogaW5wdXQ7XG5cbiAgdmFyIHBhdGhuYW1lID0gb2JqZWN0LnBhdGhuYW1lIHx8ICcvJztcbiAgdmFyIHNlYXJjaCA9IG9iamVjdC5zZWFyY2ggfHwgJyc7XG4gIHZhciBoYXNoID0gb2JqZWN0Lmhhc2ggfHwgJyc7XG4gIHZhciBzdGF0ZSA9IG9iamVjdC5zdGF0ZTtcblxuICByZXR1cm4ge1xuICAgIHBhdGhuYW1lOiBwYXRobmFtZSxcbiAgICBzZWFyY2g6IHNlYXJjaCxcbiAgICBoYXNoOiBoYXNoLFxuICAgIHN0YXRlOiBzdGF0ZSxcbiAgICBhY3Rpb246IGFjdGlvbixcbiAgICBrZXk6IGtleVxuICB9O1xufTtcblxudmFyIGlzRGF0ZSA9IGZ1bmN0aW9uIGlzRGF0ZShvYmplY3QpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpID09PSAnW29iamVjdCBEYXRlXSc7XG59O1xuXG52YXIgc3RhdGVzQXJlRXF1YWwgPSBleHBvcnRzLnN0YXRlc0FyZUVxdWFsID0gZnVuY3Rpb24gc3RhdGVzQXJlRXF1YWwoYSwgYikge1xuICBpZiAoYSA9PT0gYikgcmV0dXJuIHRydWU7XG5cbiAgdmFyIHR5cGVvZkEgPSB0eXBlb2YgYSA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YoYSk7XG4gIHZhciB0eXBlb2ZCID0gdHlwZW9mIGIgPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKGIpO1xuXG4gIGlmICh0eXBlb2ZBICE9PSB0eXBlb2ZCKSByZXR1cm4gZmFsc2U7XG5cbiAgISh0eXBlb2ZBICE9PSAnZnVuY3Rpb24nKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyAoMCwgX2ludmFyaWFudDIuZGVmYXVsdCkoZmFsc2UsICdZb3UgbXVzdCBub3Qgc3RvcmUgZnVuY3Rpb25zIGluIGxvY2F0aW9uIHN0YXRlJykgOiAoMCwgX2ludmFyaWFudDIuZGVmYXVsdCkoZmFsc2UpIDogdm9pZCAwO1xuXG4gIC8vIE5vdCB0aGUgc2FtZSBvYmplY3QsIGJ1dCBzYW1lIHR5cGUuXG4gIGlmICh0eXBlb2ZBID09PSAnb2JqZWN0Jykge1xuICAgICEhKGlzRGF0ZShhKSAmJiBpc0RhdGUoYikpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/ICgwLCBfaW52YXJpYW50Mi5kZWZhdWx0KShmYWxzZSwgJ1lvdSBtdXN0IG5vdCBzdG9yZSBEYXRlIG9iamVjdHMgaW4gbG9jYXRpb24gc3RhdGUnKSA6ICgwLCBfaW52YXJpYW50Mi5kZWZhdWx0KShmYWxzZSkgOiB2b2lkIDA7XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYSkpIHJldHVybiBPYmplY3Qua2V5cyhhKS5ldmVyeShmdW5jdGlvbiAoa2V5KSB7XG4gICAgICByZXR1cm4gc3RhdGVzQXJlRXF1YWwoYVtrZXldLCBiW2tleV0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYikgJiYgYS5sZW5ndGggPT09IGIubGVuZ3RoICYmIGEuZXZlcnkoZnVuY3Rpb24gKGl0ZW0sIGluZGV4KSB7XG4gICAgICByZXR1cm4gc3RhdGVzQXJlRXF1YWwoaXRlbSwgYltpbmRleF0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gQWxsIG90aGVyIHNlcmlhbGl6YWJsZSB0eXBlcyAoc3RyaW5nLCBudW1iZXIsIGJvb2xlYW4pXG4gIC8vIHNob3VsZCBiZSBzdHJpY3QgZXF1YWwuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbnZhciBsb2NhdGlvbnNBcmVFcXVhbCA9IGV4cG9ydHMubG9jYXRpb25zQXJlRXF1YWwgPSBmdW5jdGlvbiBsb2NhdGlvbnNBcmVFcXVhbChhLCBiKSB7XG4gIHJldHVybiBhLmtleSA9PT0gYi5rZXkgJiZcbiAgLy8gYS5hY3Rpb24gPT09IGIuYWN0aW9uICYmIC8vIERpZmZlcmVudCBhY3Rpb24gIT09IGxvY2F0aW9uIGNoYW5nZS5cbiAgYS5wYXRobmFtZSA9PT0gYi5wYXRobmFtZSAmJiBhLnNlYXJjaCA9PT0gYi5zZWFyY2ggJiYgYS5oYXNoID09PSBiLmhhc2ggJiYgc3RhdGVzQXJlRXF1YWwoYS5zdGF0ZSwgYi5zdGF0ZSk7XG59OyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuY3JlYXRlUGF0aCA9IGV4cG9ydHMucGFyc2VQYXRoID0gZXhwb3J0cy5nZXRRdWVyeVN0cmluZ1ZhbHVlRnJvbVBhdGggPSBleHBvcnRzLnN0cmlwUXVlcnlTdHJpbmdWYWx1ZUZyb21QYXRoID0gZXhwb3J0cy5hZGRRdWVyeVN0cmluZ1ZhbHVlVG9QYXRoID0gZXhwb3J0cy5pc0Fic29sdXRlUGF0aCA9IHVuZGVmaW5lZDtcblxudmFyIF93YXJuaW5nID0gcmVxdWlyZSgnd2FybmluZycpO1xuXG52YXIgX3dhcm5pbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfd2FybmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBpc0Fic29sdXRlUGF0aCA9IGV4cG9ydHMuaXNBYnNvbHV0ZVBhdGggPSBmdW5jdGlvbiBpc0Fic29sdXRlUGF0aChwYXRoKSB7XG4gIHJldHVybiB0eXBlb2YgcGF0aCA9PT0gJ3N0cmluZycgJiYgcGF0aC5jaGFyQXQoMCkgPT09ICcvJztcbn07XG5cbnZhciBhZGRRdWVyeVN0cmluZ1ZhbHVlVG9QYXRoID0gZXhwb3J0cy5hZGRRdWVyeVN0cmluZ1ZhbHVlVG9QYXRoID0gZnVuY3Rpb24gYWRkUXVlcnlTdHJpbmdWYWx1ZVRvUGF0aChwYXRoLCBrZXksIHZhbHVlKSB7XG4gIHZhciBfcGFyc2VQYXRoID0gcGFyc2VQYXRoKHBhdGgpO1xuXG4gIHZhciBwYXRobmFtZSA9IF9wYXJzZVBhdGgucGF0aG5hbWU7XG4gIHZhciBzZWFyY2ggPSBfcGFyc2VQYXRoLnNlYXJjaDtcbiAgdmFyIGhhc2ggPSBfcGFyc2VQYXRoLmhhc2g7XG5cblxuICByZXR1cm4gY3JlYXRlUGF0aCh7XG4gICAgcGF0aG5hbWU6IHBhdGhuYW1lLFxuICAgIHNlYXJjaDogc2VhcmNoICsgKHNlYXJjaC5pbmRleE9mKCc/JykgPT09IC0xID8gJz8nIDogJyYnKSArIGtleSArICc9JyArIHZhbHVlLFxuICAgIGhhc2g6IGhhc2hcbiAgfSk7XG59O1xuXG52YXIgc3RyaXBRdWVyeVN0cmluZ1ZhbHVlRnJvbVBhdGggPSBleHBvcnRzLnN0cmlwUXVlcnlTdHJpbmdWYWx1ZUZyb21QYXRoID0gZnVuY3Rpb24gc3RyaXBRdWVyeVN0cmluZ1ZhbHVlRnJvbVBhdGgocGF0aCwga2V5KSB7XG4gIHZhciBfcGFyc2VQYXRoMiA9IHBhcnNlUGF0aChwYXRoKTtcblxuICB2YXIgcGF0aG5hbWUgPSBfcGFyc2VQYXRoMi5wYXRobmFtZTtcbiAgdmFyIHNlYXJjaCA9IF9wYXJzZVBhdGgyLnNlYXJjaDtcbiAgdmFyIGhhc2ggPSBfcGFyc2VQYXRoMi5oYXNoO1xuXG5cbiAgcmV0dXJuIGNyZWF0ZVBhdGgoe1xuICAgIHBhdGhuYW1lOiBwYXRobmFtZSxcbiAgICBzZWFyY2g6IHNlYXJjaC5yZXBsYWNlKG5ldyBSZWdFeHAoJyhbPyZdKScgKyBrZXkgKyAnPVthLXpBLVowLTldKygmPyknKSwgZnVuY3Rpb24gKG1hdGNoLCBwcmVmaXgsIHN1ZmZpeCkge1xuICAgICAgcmV0dXJuIHByZWZpeCA9PT0gJz8nID8gcHJlZml4IDogc3VmZml4O1xuICAgIH0pLFxuICAgIGhhc2g6IGhhc2hcbiAgfSk7XG59O1xuXG52YXIgZ2V0UXVlcnlTdHJpbmdWYWx1ZUZyb21QYXRoID0gZXhwb3J0cy5nZXRRdWVyeVN0cmluZ1ZhbHVlRnJvbVBhdGggPSBmdW5jdGlvbiBnZXRRdWVyeVN0cmluZ1ZhbHVlRnJvbVBhdGgocGF0aCwga2V5KSB7XG4gIHZhciBfcGFyc2VQYXRoMyA9IHBhcnNlUGF0aChwYXRoKTtcblxuICB2YXIgc2VhcmNoID0gX3BhcnNlUGF0aDMuc2VhcmNoO1xuXG4gIHZhciBtYXRjaCA9IHNlYXJjaC5tYXRjaChuZXcgUmVnRXhwKCdbPyZdJyArIGtleSArICc9KFthLXpBLVowLTldKyknKSk7XG4gIHJldHVybiBtYXRjaCAmJiBtYXRjaFsxXTtcbn07XG5cbnZhciBleHRyYWN0UGF0aCA9IGZ1bmN0aW9uIGV4dHJhY3RQYXRoKHN0cmluZykge1xuICB2YXIgbWF0Y2ggPSBzdHJpbmcubWF0Y2goL14oaHR0cHM/Oik/XFwvXFwvW15cXC9dKi8pO1xuICByZXR1cm4gbWF0Y2ggPT0gbnVsbCA/IHN0cmluZyA6IHN0cmluZy5zdWJzdHJpbmcobWF0Y2hbMF0ubGVuZ3RoKTtcbn07XG5cbnZhciBwYXJzZVBhdGggPSBleHBvcnRzLnBhcnNlUGF0aCA9IGZ1bmN0aW9uIHBhcnNlUGF0aChwYXRoKSB7XG4gIHZhciBwYXRobmFtZSA9IGV4dHJhY3RQYXRoKHBhdGgpO1xuICB2YXIgc2VhcmNoID0gJyc7XG4gIHZhciBoYXNoID0gJyc7XG5cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/ICgwLCBfd2FybmluZzIuZGVmYXVsdCkocGF0aCA9PT0gcGF0aG5hbWUsICdBIHBhdGggbXVzdCBiZSBwYXRobmFtZSArIHNlYXJjaCArIGhhc2ggb25seSwgbm90IGEgZnVsbCBVUkwgbGlrZSBcIiVzXCInLCBwYXRoKSA6IHZvaWQgMDtcblxuICB2YXIgaGFzaEluZGV4ID0gcGF0aG5hbWUuaW5kZXhPZignIycpO1xuICBpZiAoaGFzaEluZGV4ICE9PSAtMSkge1xuICAgIGhhc2ggPSBwYXRobmFtZS5zdWJzdHJpbmcoaGFzaEluZGV4KTtcbiAgICBwYXRobmFtZSA9IHBhdGhuYW1lLnN1YnN0cmluZygwLCBoYXNoSW5kZXgpO1xuICB9XG5cbiAgdmFyIHNlYXJjaEluZGV4ID0gcGF0aG5hbWUuaW5kZXhPZignPycpO1xuICBpZiAoc2VhcmNoSW5kZXggIT09IC0xKSB7XG4gICAgc2VhcmNoID0gcGF0aG5hbWUuc3Vic3RyaW5nKHNlYXJjaEluZGV4KTtcbiAgICBwYXRobmFtZSA9IHBhdGhuYW1lLnN1YnN0cmluZygwLCBzZWFyY2hJbmRleCk7XG4gIH1cblxuICBpZiAocGF0aG5hbWUgPT09ICcnKSBwYXRobmFtZSA9ICcvJztcblxuICByZXR1cm4ge1xuICAgIHBhdGhuYW1lOiBwYXRobmFtZSxcbiAgICBzZWFyY2g6IHNlYXJjaCxcbiAgICBoYXNoOiBoYXNoXG4gIH07XG59O1xuXG52YXIgY3JlYXRlUGF0aCA9IGV4cG9ydHMuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIGNyZWF0ZVBhdGgobG9jYXRpb24pIHtcbiAgaWYgKGxvY2F0aW9uID09IG51bGwgfHwgdHlwZW9mIGxvY2F0aW9uID09PSAnc3RyaW5nJykgcmV0dXJuIGxvY2F0aW9uO1xuXG4gIHZhciBiYXNlbmFtZSA9IGxvY2F0aW9uLmJhc2VuYW1lO1xuICB2YXIgcGF0aG5hbWUgPSBsb2NhdGlvbi5wYXRobmFtZTtcbiAgdmFyIHNlYXJjaCA9IGxvY2F0aW9uLnNlYXJjaDtcbiAgdmFyIGhhc2ggPSBsb2NhdGlvbi5oYXNoO1xuXG4gIHZhciBwYXRoID0gKGJhc2VuYW1lIHx8ICcnKSArIHBhdGhuYW1lO1xuXG4gIGlmIChzZWFyY2ggJiYgc2VhcmNoICE9PSAnPycpIHBhdGggKz0gc2VhcmNoO1xuXG4gIGlmIChoYXNoKSBwYXRoICs9IGhhc2g7XG5cbiAgcmV0dXJuIHBhdGg7XG59OyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMucmVwbGFjZUxvY2F0aW9uID0gZXhwb3J0cy5wdXNoTG9jYXRpb24gPSBleHBvcnRzLmdldEN1cnJlbnRMb2NhdGlvbiA9IGV4cG9ydHMuZ28gPSBleHBvcnRzLmdldFVzZXJDb25maXJtYXRpb24gPSB1bmRlZmluZWQ7XG5cbnZhciBfQnJvd3NlclByb3RvY29sID0gcmVxdWlyZSgnLi9Ccm93c2VyUHJvdG9jb2wnKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdnZXRVc2VyQ29uZmlybWF0aW9uJywge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX0Jyb3dzZXJQcm90b2NvbC5nZXRVc2VyQ29uZmlybWF0aW9uO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnZ28nLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfQnJvd3NlclByb3RvY29sLmdvO1xuICB9XG59KTtcblxudmFyIF9Mb2NhdGlvblV0aWxzID0gcmVxdWlyZSgnLi9Mb2NhdGlvblV0aWxzJyk7XG5cbnZhciBfUGF0aFV0aWxzID0gcmVxdWlyZSgnLi9QYXRoVXRpbHMnKTtcblxudmFyIGdldEN1cnJlbnRMb2NhdGlvbiA9IGV4cG9ydHMuZ2V0Q3VycmVudExvY2F0aW9uID0gZnVuY3Rpb24gZ2V0Q3VycmVudExvY2F0aW9uKCkge1xuICByZXR1cm4gKDAsIF9Mb2NhdGlvblV0aWxzLmNyZWF0ZUxvY2F0aW9uKSh3aW5kb3cubG9jYXRpb24pO1xufTtcblxudmFyIHB1c2hMb2NhdGlvbiA9IGV4cG9ydHMucHVzaExvY2F0aW9uID0gZnVuY3Rpb24gcHVzaExvY2F0aW9uKGxvY2F0aW9uKSB7XG4gIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gKDAsIF9QYXRoVXRpbHMuY3JlYXRlUGF0aCkobG9jYXRpb24pO1xuICByZXR1cm4gZmFsc2U7IC8vIERvbid0IHVwZGF0ZSBsb2NhdGlvblxufTtcblxudmFyIHJlcGxhY2VMb2NhdGlvbiA9IGV4cG9ydHMucmVwbGFjZUxvY2F0aW9uID0gZnVuY3Rpb24gcmVwbGFjZUxvY2F0aW9uKGxvY2F0aW9uKSB7XG4gIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKCgwLCBfUGF0aFV0aWxzLmNyZWF0ZVBhdGgpKGxvY2F0aW9uKSk7XG4gIHJldHVybiBmYWxzZTsgLy8gRG9uJ3QgdXBkYXRlIGxvY2F0aW9uXG59OyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblxudmFyIF9pbnZhcmlhbnQgPSByZXF1aXJlKCdpbnZhcmlhbnQnKTtcblxudmFyIF9pbnZhcmlhbnQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW52YXJpYW50KTtcblxudmFyIF9FeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcblxudmFyIF9Ccm93c2VyUHJvdG9jb2wgPSByZXF1aXJlKCcuL0Jyb3dzZXJQcm90b2NvbCcpO1xuXG52YXIgQnJvd3NlclByb3RvY29sID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoX0Jyb3dzZXJQcm90b2NvbCk7XG5cbnZhciBfUmVmcmVzaFByb3RvY29sID0gcmVxdWlyZSgnLi9SZWZyZXNoUHJvdG9jb2wnKTtcblxudmFyIFJlZnJlc2hQcm90b2NvbCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF9SZWZyZXNoUHJvdG9jb2wpO1xuXG52YXIgX0RPTVV0aWxzID0gcmVxdWlyZSgnLi9ET01VdGlscycpO1xuXG52YXIgX2NyZWF0ZUhpc3RvcnkgPSByZXF1aXJlKCcuL2NyZWF0ZUhpc3RvcnknKTtcblxudmFyIF9jcmVhdGVIaXN0b3J5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUhpc3RvcnkpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGVsc2UgeyB2YXIgbmV3T2JqID0ge307IGlmIChvYmogIT0gbnVsbCkgeyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gbmV3T2JqLmRlZmF1bHQgPSBvYmo7IHJldHVybiBuZXdPYmo7IH0gfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqIENyZWF0ZXMgYW5kIHJldHVybnMgYSBoaXN0b3J5IG9iamVjdCB0aGF0IHVzZXMgSFRNTDUncyBoaXN0b3J5IEFQSVxuICogKHB1c2hTdGF0ZSwgcmVwbGFjZVN0YXRlLCBhbmQgdGhlIHBvcHN0YXRlIGV2ZW50KSB0byBtYW5hZ2UgaGlzdG9yeS5cbiAqIFRoaXMgaXMgdGhlIHJlY29tbWVuZGVkIG1ldGhvZCBvZiBtYW5hZ2luZyBoaXN0b3J5IGluIGJyb3dzZXJzIGJlY2F1c2VcbiAqIGl0IHByb3ZpZGVzIHRoZSBjbGVhbmVzdCBVUkxzLlxuICpcbiAqIE5vdGU6IEluIGJyb3dzZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgdGhlIEhUTUw1IGhpc3RvcnkgQVBJIGZ1bGxcbiAqIHBhZ2UgcmVsb2FkcyB3aWxsIGJlIHVzZWQgdG8gcHJlc2VydmUgY2xlYW4gVVJMcy4gWW91IGNhbiBmb3JjZSB0aGlzXG4gKiBiZWhhdmlvciB1c2luZyB7IGZvcmNlUmVmcmVzaDogdHJ1ZSB9IGluIG9wdGlvbnMuXG4gKi9cbnZhciBjcmVhdGVCcm93c2VySGlzdG9yeSA9IGZ1bmN0aW9uIGNyZWF0ZUJyb3dzZXJIaXN0b3J5KCkge1xuICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdO1xuXG4gICFfRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/ICgwLCBfaW52YXJpYW50Mi5kZWZhdWx0KShmYWxzZSwgJ0Jyb3dzZXIgaGlzdG9yeSBuZWVkcyBhIERPTScpIDogKDAsIF9pbnZhcmlhbnQyLmRlZmF1bHQpKGZhbHNlKSA6IHZvaWQgMDtcblxuICB2YXIgdXNlUmVmcmVzaCA9IG9wdGlvbnMuZm9yY2VSZWZyZXNoIHx8ICEoMCwgX0RPTVV0aWxzLnN1cHBvcnRzSGlzdG9yeSkoKTtcbiAgdmFyIFByb3RvY29sID0gdXNlUmVmcmVzaCA/IFJlZnJlc2hQcm90b2NvbCA6IEJyb3dzZXJQcm90b2NvbDtcblxuICB2YXIgZ2V0VXNlckNvbmZpcm1hdGlvbiA9IFByb3RvY29sLmdldFVzZXJDb25maXJtYXRpb247XG4gIHZhciBnZXRDdXJyZW50TG9jYXRpb24gPSBQcm90b2NvbC5nZXRDdXJyZW50TG9jYXRpb247XG4gIHZhciBwdXNoTG9jYXRpb24gPSBQcm90b2NvbC5wdXNoTG9jYXRpb247XG4gIHZhciByZXBsYWNlTG9jYXRpb24gPSBQcm90b2NvbC5yZXBsYWNlTG9jYXRpb247XG4gIHZhciBnbyA9IFByb3RvY29sLmdvO1xuXG5cbiAgdmFyIGhpc3RvcnkgPSAoMCwgX2NyZWF0ZUhpc3RvcnkyLmRlZmF1bHQpKF9leHRlbmRzKHtcbiAgICBnZXRVc2VyQ29uZmlybWF0aW9uOiBnZXRVc2VyQ29uZmlybWF0aW9uIH0sIG9wdGlvbnMsIHtcbiAgICBnZXRDdXJyZW50TG9jYXRpb246IGdldEN1cnJlbnRMb2NhdGlvbixcbiAgICBwdXNoTG9jYXRpb246IHB1c2hMb2NhdGlvbixcbiAgICByZXBsYWNlTG9jYXRpb246IHJlcGxhY2VMb2NhdGlvbixcbiAgICBnbzogZ29cbiAgfSkpO1xuXG4gIHZhciBsaXN0ZW5lckNvdW50ID0gMCxcbiAgICAgIHN0b3BMaXN0ZW5lciA9IHZvaWQgMDtcblxuICB2YXIgc3RhcnRMaXN0ZW5lciA9IGZ1bmN0aW9uIHN0YXJ0TGlzdGVuZXIobGlzdGVuZXIsIGJlZm9yZSkge1xuICAgIGlmICgrK2xpc3RlbmVyQ291bnQgPT09IDEpIHN0b3BMaXN0ZW5lciA9IEJyb3dzZXJQcm90b2NvbC5zdGFydExpc3RlbmVyKGhpc3RvcnkudHJhbnNpdGlvblRvKTtcblxuICAgIHZhciB1bmxpc3RlbiA9IGJlZm9yZSA/IGhpc3RvcnkubGlzdGVuQmVmb3JlKGxpc3RlbmVyKSA6IGhpc3RvcnkubGlzdGVuKGxpc3RlbmVyKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICB1bmxpc3RlbigpO1xuXG4gICAgICBpZiAoLS1saXN0ZW5lckNvdW50ID09PSAwKSBzdG9wTGlzdGVuZXIoKTtcbiAgICB9O1xuICB9O1xuXG4gIHZhciBsaXN0ZW5CZWZvcmUgPSBmdW5jdGlvbiBsaXN0ZW5CZWZvcmUobGlzdGVuZXIpIHtcbiAgICByZXR1cm4gc3RhcnRMaXN0ZW5lcihsaXN0ZW5lciwgdHJ1ZSk7XG4gIH07XG5cbiAgdmFyIGxpc3RlbiA9IGZ1bmN0aW9uIGxpc3RlbihsaXN0ZW5lcikge1xuICAgIHJldHVybiBzdGFydExpc3RlbmVyKGxpc3RlbmVyLCBmYWxzZSk7XG4gIH07XG5cbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBoaXN0b3J5LCB7XG4gICAgbGlzdGVuQmVmb3JlOiBsaXN0ZW5CZWZvcmUsXG4gICAgbGlzdGVuOiBsaXN0ZW5cbiAgfSk7XG59O1xuXG5leHBvcnRzLmRlZmF1bHQgPSBjcmVhdGVCcm93c2VySGlzdG9yeTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbnZhciBfd2FybmluZyA9IHJlcXVpcmUoJ3dhcm5pbmcnKTtcblxudmFyIF93YXJuaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3dhcm5pbmcpO1xuXG52YXIgX2ludmFyaWFudCA9IHJlcXVpcmUoJ2ludmFyaWFudCcpO1xuXG52YXIgX2ludmFyaWFudDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pbnZhcmlhbnQpO1xuXG52YXIgX0V4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnLi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xuXG52YXIgX0RPTVV0aWxzID0gcmVxdWlyZSgnLi9ET01VdGlscycpO1xuXG52YXIgX0hhc2hQcm90b2NvbCA9IHJlcXVpcmUoJy4vSGFzaFByb3RvY29sJyk7XG5cbnZhciBIYXNoUHJvdG9jb2wgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfSGFzaFByb3RvY29sKTtcblxudmFyIF9jcmVhdGVIaXN0b3J5ID0gcmVxdWlyZSgnLi9jcmVhdGVIaXN0b3J5Jyk7XG5cbnZhciBfY3JlYXRlSGlzdG9yeTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVIaXN0b3J5KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBlbHNlIHsgdmFyIG5ld09iaiA9IHt9OyBpZiAob2JqICE9IG51bGwpIHsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IG5ld09iai5kZWZhdWx0ID0gb2JqOyByZXR1cm4gbmV3T2JqOyB9IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIERlZmF1bHRRdWVyeUtleSA9ICdfayc7XG5cbnZhciBjcmVhdGVIYXNoSGlzdG9yeSA9IGZ1bmN0aW9uIGNyZWF0ZUhhc2hIaXN0b3J5KCkge1xuICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdO1xuXG4gICFfRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/ICgwLCBfaW52YXJpYW50Mi5kZWZhdWx0KShmYWxzZSwgJ0hhc2ggaGlzdG9yeSBuZWVkcyBhIERPTScpIDogKDAsIF9pbnZhcmlhbnQyLmRlZmF1bHQpKGZhbHNlKSA6IHZvaWQgMDtcblxuICB2YXIgcXVlcnlLZXkgPSBvcHRpb25zLnF1ZXJ5S2V5O1xuXG5cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/ICgwLCBfd2FybmluZzIuZGVmYXVsdCkocXVlcnlLZXkgIT09IGZhbHNlLCAnVXNpbmcgeyBxdWVyeUtleTogZmFsc2UgfSBubyBsb25nZXIgd29ya3MuIEluc3RlYWQsIGp1c3QgZG9uXFwndCAnICsgJ3VzZSBsb2NhdGlvbiBzdGF0ZSBpZiB5b3UgZG9uXFwndCB3YW50IGEga2V5IGluIHlvdXIgVVJMIHF1ZXJ5IHN0cmluZycpIDogdm9pZCAwO1xuXG4gIGlmICh0eXBlb2YgcXVlcnlLZXkgIT09ICdzdHJpbmcnKSBxdWVyeUtleSA9IERlZmF1bHRRdWVyeUtleTtcblxuICB2YXIgZ2V0VXNlckNvbmZpcm1hdGlvbiA9IEhhc2hQcm90b2NvbC5nZXRVc2VyQ29uZmlybWF0aW9uO1xuXG5cbiAgdmFyIGdldEN1cnJlbnRMb2NhdGlvbiA9IGZ1bmN0aW9uIGdldEN1cnJlbnRMb2NhdGlvbigpIHtcbiAgICByZXR1cm4gSGFzaFByb3RvY29sLmdldEN1cnJlbnRMb2NhdGlvbihxdWVyeUtleSk7XG4gIH07XG5cbiAgdmFyIHB1c2hMb2NhdGlvbiA9IGZ1bmN0aW9uIHB1c2hMb2NhdGlvbihsb2NhdGlvbikge1xuICAgIHJldHVybiBIYXNoUHJvdG9jb2wucHVzaExvY2F0aW9uKGxvY2F0aW9uLCBxdWVyeUtleSk7XG4gIH07XG5cbiAgdmFyIHJlcGxhY2VMb2NhdGlvbiA9IGZ1bmN0aW9uIHJlcGxhY2VMb2NhdGlvbihsb2NhdGlvbikge1xuICAgIHJldHVybiBIYXNoUHJvdG9jb2wucmVwbGFjZUxvY2F0aW9uKGxvY2F0aW9uLCBxdWVyeUtleSk7XG4gIH07XG5cbiAgdmFyIGhpc3RvcnkgPSAoMCwgX2NyZWF0ZUhpc3RvcnkyLmRlZmF1bHQpKF9leHRlbmRzKHtcbiAgICBnZXRVc2VyQ29uZmlybWF0aW9uOiBnZXRVc2VyQ29uZmlybWF0aW9uIH0sIG9wdGlvbnMsIHtcbiAgICBnZXRDdXJyZW50TG9jYXRpb246IGdldEN1cnJlbnRMb2NhdGlvbixcbiAgICBwdXNoTG9jYXRpb246IHB1c2hMb2NhdGlvbixcbiAgICByZXBsYWNlTG9jYXRpb246IHJlcGxhY2VMb2NhdGlvbixcbiAgICBnbzogSGFzaFByb3RvY29sLmdvXG4gIH0pKTtcblxuICB2YXIgbGlzdGVuZXJDb3VudCA9IDAsXG4gICAgICBzdG9wTGlzdGVuZXIgPSB2b2lkIDA7XG5cbiAgdmFyIHN0YXJ0TGlzdGVuZXIgPSBmdW5jdGlvbiBzdGFydExpc3RlbmVyKGxpc3RlbmVyLCBiZWZvcmUpIHtcbiAgICBpZiAoKytsaXN0ZW5lckNvdW50ID09PSAxKSBzdG9wTGlzdGVuZXIgPSBIYXNoUHJvdG9jb2wuc3RhcnRMaXN0ZW5lcihoaXN0b3J5LnRyYW5zaXRpb25UbywgcXVlcnlLZXkpO1xuXG4gICAgdmFyIHVubGlzdGVuID0gYmVmb3JlID8gaGlzdG9yeS5saXN0ZW5CZWZvcmUobGlzdGVuZXIpIDogaGlzdG9yeS5saXN0ZW4obGlzdGVuZXIpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHVubGlzdGVuKCk7XG5cbiAgICAgIGlmICgtLWxpc3RlbmVyQ291bnQgPT09IDApIHN0b3BMaXN0ZW5lcigpO1xuICAgIH07XG4gIH07XG5cbiAgdmFyIGxpc3RlbkJlZm9yZSA9IGZ1bmN0aW9uIGxpc3RlbkJlZm9yZShsaXN0ZW5lcikge1xuICAgIHJldHVybiBzdGFydExpc3RlbmVyKGxpc3RlbmVyLCB0cnVlKTtcbiAgfTtcblxuICB2YXIgbGlzdGVuID0gZnVuY3Rpb24gbGlzdGVuKGxpc3RlbmVyKSB7XG4gICAgcmV0dXJuIHN0YXJ0TGlzdGVuZXIobGlzdGVuZXIsIGZhbHNlKTtcbiAgfTtcblxuICB2YXIgZ29Jc1N1cHBvcnRlZFdpdGhvdXRSZWxvYWQgPSAoMCwgX0RPTVV0aWxzLnN1cHBvcnRzR29XaXRob3V0UmVsb2FkVXNpbmdIYXNoKSgpO1xuXG4gIHZhciBnbyA9IGZ1bmN0aW9uIGdvKG4pIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gKDAsIF93YXJuaW5nMi5kZWZhdWx0KShnb0lzU3VwcG9ydGVkV2l0aG91dFJlbG9hZCwgJ0hhc2ggaGlzdG9yeSBnbyhuKSBjYXVzZXMgYSBmdWxsIHBhZ2UgcmVsb2FkIGluIHRoaXMgYnJvd3NlcicpIDogdm9pZCAwO1xuXG4gICAgaGlzdG9yeS5nbyhuKTtcbiAgfTtcblxuICB2YXIgY3JlYXRlSHJlZiA9IGZ1bmN0aW9uIGNyZWF0ZUhyZWYocGF0aCkge1xuICAgIHJldHVybiAnIycgKyBoaXN0b3J5LmNyZWF0ZUhyZWYocGF0aCk7XG4gIH07XG5cbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBoaXN0b3J5LCB7XG4gICAgbGlzdGVuQmVmb3JlOiBsaXN0ZW5CZWZvcmUsXG4gICAgbGlzdGVuOiBsaXN0ZW4sXG4gICAgZ286IGdvLFxuICAgIGNyZWF0ZUhyZWY6IGNyZWF0ZUhyZWZcbiAgfSk7XG59O1xuXG5leHBvcnRzLmRlZmF1bHQgPSBjcmVhdGVIYXNoSGlzdG9yeTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfQXN5bmNVdGlscyA9IHJlcXVpcmUoJy4vQXN5bmNVdGlscycpO1xuXG52YXIgX1BhdGhVdGlscyA9IHJlcXVpcmUoJy4vUGF0aFV0aWxzJyk7XG5cbnZhciBfcnVuVHJhbnNpdGlvbkhvb2sgPSByZXF1aXJlKCcuL3J1blRyYW5zaXRpb25Ib29rJyk7XG5cbnZhciBfcnVuVHJhbnNpdGlvbkhvb2syID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcnVuVHJhbnNpdGlvbkhvb2spO1xuXG52YXIgX0FjdGlvbnMgPSByZXF1aXJlKCcuL0FjdGlvbnMnKTtcblxudmFyIF9Mb2NhdGlvblV0aWxzID0gcmVxdWlyZSgnLi9Mb2NhdGlvblV0aWxzJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgeyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH0gZWxzZSB7IHJldHVybiBBcnJheS5mcm9tKGFycik7IH0gfVxuXG52YXIgY3JlYXRlSGlzdG9yeSA9IGZ1bmN0aW9uIGNyZWF0ZUhpc3RvcnkoKSB7XG4gIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMF07XG4gIHZhciBnZXRDdXJyZW50TG9jYXRpb24gPSBvcHRpb25zLmdldEN1cnJlbnRMb2NhdGlvbjtcbiAgdmFyIGdldFVzZXJDb25maXJtYXRpb24gPSBvcHRpb25zLmdldFVzZXJDb25maXJtYXRpb247XG4gIHZhciBwdXNoTG9jYXRpb24gPSBvcHRpb25zLnB1c2hMb2NhdGlvbjtcbiAgdmFyIHJlcGxhY2VMb2NhdGlvbiA9IG9wdGlvbnMucmVwbGFjZUxvY2F0aW9uO1xuICB2YXIgZ28gPSBvcHRpb25zLmdvO1xuICB2YXIga2V5TGVuZ3RoID0gb3B0aW9ucy5rZXlMZW5ndGg7XG5cblxuICB2YXIgY3VycmVudExvY2F0aW9uID0gdm9pZCAwO1xuICB2YXIgcGVuZGluZ0xvY2F0aW9uID0gdm9pZCAwO1xuICB2YXIgYmVmb3JlTGlzdGVuZXJzID0gW107XG4gIHZhciBsaXN0ZW5lcnMgPSBbXTtcbiAgdmFyIGFsbEtleXMgPSBbXTtcblxuICB2YXIgZ2V0Q3VycmVudEluZGV4ID0gZnVuY3Rpb24gZ2V0Q3VycmVudEluZGV4KCkge1xuICAgIGlmIChwZW5kaW5nTG9jYXRpb24gJiYgcGVuZGluZ0xvY2F0aW9uLmFjdGlvbiA9PT0gX0FjdGlvbnMuUE9QKSByZXR1cm4gYWxsS2V5cy5pbmRleE9mKHBlbmRpbmdMb2NhdGlvbi5rZXkpO1xuXG4gICAgaWYgKGN1cnJlbnRMb2NhdGlvbikgcmV0dXJuIGFsbEtleXMuaW5kZXhPZihjdXJyZW50TG9jYXRpb24ua2V5KTtcblxuICAgIHJldHVybiAtMTtcbiAgfTtcblxuICB2YXIgdXBkYXRlTG9jYXRpb24gPSBmdW5jdGlvbiB1cGRhdGVMb2NhdGlvbihuZXh0TG9jYXRpb24pIHtcbiAgICBjdXJyZW50TG9jYXRpb24gPSBuZXh0TG9jYXRpb247XG5cbiAgICB2YXIgY3VycmVudEluZGV4ID0gZ2V0Q3VycmVudEluZGV4KCk7XG5cbiAgICBpZiAoY3VycmVudExvY2F0aW9uLmFjdGlvbiA9PT0gX0FjdGlvbnMuUFVTSCkge1xuICAgICAgYWxsS2V5cyA9IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoYWxsS2V5cy5zbGljZSgwLCBjdXJyZW50SW5kZXggKyAxKSksIFtjdXJyZW50TG9jYXRpb24ua2V5XSk7XG4gICAgfSBlbHNlIGlmIChjdXJyZW50TG9jYXRpb24uYWN0aW9uID09PSBfQWN0aW9ucy5SRVBMQUNFKSB7XG4gICAgICBhbGxLZXlzW2N1cnJlbnRJbmRleF0gPSBjdXJyZW50TG9jYXRpb24ua2V5O1xuICAgIH1cblxuICAgIGxpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uIChsaXN0ZW5lcikge1xuICAgICAgcmV0dXJuIGxpc3RlbmVyKGN1cnJlbnRMb2NhdGlvbik7XG4gICAgfSk7XG4gIH07XG5cbiAgdmFyIGxpc3RlbkJlZm9yZSA9IGZ1bmN0aW9uIGxpc3RlbkJlZm9yZShsaXN0ZW5lcikge1xuICAgIGJlZm9yZUxpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gYmVmb3JlTGlzdGVuZXJzID0gYmVmb3JlTGlzdGVuZXJzLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gaXRlbSAhPT0gbGlzdGVuZXI7XG4gICAgICB9KTtcbiAgICB9O1xuICB9O1xuXG4gIHZhciBsaXN0ZW4gPSBmdW5jdGlvbiBsaXN0ZW4obGlzdGVuZXIpIHtcbiAgICBsaXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGxpc3RlbmVycyA9IGxpc3RlbmVycy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0gIT09IGxpc3RlbmVyO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfTtcblxuICB2YXIgY29uZmlybVRyYW5zaXRpb25UbyA9IGZ1bmN0aW9uIGNvbmZpcm1UcmFuc2l0aW9uVG8obG9jYXRpb24sIGNhbGxiYWNrKSB7XG4gICAgKDAsIF9Bc3luY1V0aWxzLmxvb3BBc3luYykoYmVmb3JlTGlzdGVuZXJzLmxlbmd0aCwgZnVuY3Rpb24gKGluZGV4LCBuZXh0LCBkb25lKSB7XG4gICAgICAoMCwgX3J1blRyYW5zaXRpb25Ib29rMi5kZWZhdWx0KShiZWZvcmVMaXN0ZW5lcnNbaW5kZXhdLCBsb2NhdGlvbiwgZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0ICE9IG51bGwgPyBkb25lKHJlc3VsdCkgOiBuZXh0KCk7XG4gICAgICB9KTtcbiAgICB9LCBmdW5jdGlvbiAobWVzc2FnZSkge1xuICAgICAgaWYgKGdldFVzZXJDb25maXJtYXRpb24gJiYgdHlwZW9mIG1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGdldFVzZXJDb25maXJtYXRpb24obWVzc2FnZSwgZnVuY3Rpb24gKG9rKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG9rICE9PSBmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FsbGJhY2sobWVzc2FnZSAhPT0gZmFsc2UpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIHZhciB0cmFuc2l0aW9uVG8gPSBmdW5jdGlvbiB0cmFuc2l0aW9uVG8obmV4dExvY2F0aW9uKSB7XG4gICAgaWYgKGN1cnJlbnRMb2NhdGlvbiAmJiAoMCwgX0xvY2F0aW9uVXRpbHMubG9jYXRpb25zQXJlRXF1YWwpKGN1cnJlbnRMb2NhdGlvbiwgbmV4dExvY2F0aW9uKSB8fCBwZW5kaW5nTG9jYXRpb24gJiYgKDAsIF9Mb2NhdGlvblV0aWxzLmxvY2F0aW9uc0FyZUVxdWFsKShwZW5kaW5nTG9jYXRpb24sIG5leHRMb2NhdGlvbikpIHJldHVybjsgLy8gTm90aGluZyB0byBkb1xuXG4gICAgcGVuZGluZ0xvY2F0aW9uID0gbmV4dExvY2F0aW9uO1xuXG4gICAgY29uZmlybVRyYW5zaXRpb25UbyhuZXh0TG9jYXRpb24sIGZ1bmN0aW9uIChvaykge1xuICAgICAgaWYgKHBlbmRpbmdMb2NhdGlvbiAhPT0gbmV4dExvY2F0aW9uKSByZXR1cm47IC8vIFRyYW5zaXRpb24gd2FzIGludGVycnVwdGVkIGR1cmluZyBjb25maXJtYXRpb25cblxuICAgICAgcGVuZGluZ0xvY2F0aW9uID0gbnVsbDtcblxuICAgICAgaWYgKG9rKSB7XG4gICAgICAgIC8vIFRyZWF0IFBVU0ggdG8gc2FtZSBwYXRoIGxpa2UgUkVQTEFDRSB0byBiZSBjb25zaXN0ZW50IHdpdGggYnJvd3NlcnNcbiAgICAgICAgaWYgKG5leHRMb2NhdGlvbi5hY3Rpb24gPT09IF9BY3Rpb25zLlBVU0gpIHtcbiAgICAgICAgICB2YXIgcHJldlBhdGggPSAoMCwgX1BhdGhVdGlscy5jcmVhdGVQYXRoKShjdXJyZW50TG9jYXRpb24pO1xuICAgICAgICAgIHZhciBuZXh0UGF0aCA9ICgwLCBfUGF0aFV0aWxzLmNyZWF0ZVBhdGgpKG5leHRMb2NhdGlvbik7XG5cbiAgICAgICAgICBpZiAobmV4dFBhdGggPT09IHByZXZQYXRoICYmICgwLCBfTG9jYXRpb25VdGlscy5zdGF0ZXNBcmVFcXVhbCkoY3VycmVudExvY2F0aW9uLnN0YXRlLCBuZXh0TG9jYXRpb24uc3RhdGUpKSBuZXh0TG9jYXRpb24uYWN0aW9uID0gX0FjdGlvbnMuUkVQTEFDRTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXh0TG9jYXRpb24uYWN0aW9uID09PSBfQWN0aW9ucy5QT1ApIHtcbiAgICAgICAgICB1cGRhdGVMb2NhdGlvbihuZXh0TG9jYXRpb24pO1xuICAgICAgICB9IGVsc2UgaWYgKG5leHRMb2NhdGlvbi5hY3Rpb24gPT09IF9BY3Rpb25zLlBVU0gpIHtcbiAgICAgICAgICBpZiAocHVzaExvY2F0aW9uKG5leHRMb2NhdGlvbikgIT09IGZhbHNlKSB1cGRhdGVMb2NhdGlvbihuZXh0TG9jYXRpb24pO1xuICAgICAgICB9IGVsc2UgaWYgKG5leHRMb2NhdGlvbi5hY3Rpb24gPT09IF9BY3Rpb25zLlJFUExBQ0UpIHtcbiAgICAgICAgICBpZiAocmVwbGFjZUxvY2F0aW9uKG5leHRMb2NhdGlvbikgIT09IGZhbHNlKSB1cGRhdGVMb2NhdGlvbihuZXh0TG9jYXRpb24pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGN1cnJlbnRMb2NhdGlvbiAmJiBuZXh0TG9jYXRpb24uYWN0aW9uID09PSBfQWN0aW9ucy5QT1ApIHtcbiAgICAgICAgdmFyIHByZXZJbmRleCA9IGFsbEtleXMuaW5kZXhPZihjdXJyZW50TG9jYXRpb24ua2V5KTtcbiAgICAgICAgdmFyIG5leHRJbmRleCA9IGFsbEtleXMuaW5kZXhPZihuZXh0TG9jYXRpb24ua2V5KTtcblxuICAgICAgICBpZiAocHJldkluZGV4ICE9PSAtMSAmJiBuZXh0SW5kZXggIT09IC0xKSBnbyhwcmV2SW5kZXggLSBuZXh0SW5kZXgpOyAvLyBSZXN0b3JlIHRoZSBVUkxcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICB2YXIgcHVzaCA9IGZ1bmN0aW9uIHB1c2goaW5wdXQpIHtcbiAgICByZXR1cm4gdHJhbnNpdGlvblRvKGNyZWF0ZUxvY2F0aW9uKGlucHV0LCBfQWN0aW9ucy5QVVNIKSk7XG4gIH07XG5cbiAgdmFyIHJlcGxhY2UgPSBmdW5jdGlvbiByZXBsYWNlKGlucHV0KSB7XG4gICAgcmV0dXJuIHRyYW5zaXRpb25UbyhjcmVhdGVMb2NhdGlvbihpbnB1dCwgX0FjdGlvbnMuUkVQTEFDRSkpO1xuICB9O1xuXG4gIHZhciBnb0JhY2sgPSBmdW5jdGlvbiBnb0JhY2soKSB7XG4gICAgcmV0dXJuIGdvKC0xKTtcbiAgfTtcblxuICB2YXIgZ29Gb3J3YXJkID0gZnVuY3Rpb24gZ29Gb3J3YXJkKCkge1xuICAgIHJldHVybiBnbygxKTtcbiAgfTtcblxuICB2YXIgY3JlYXRlS2V5ID0gZnVuY3Rpb24gY3JlYXRlS2V5KCkge1xuICAgIHJldHVybiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwga2V5TGVuZ3RoIHx8IDYpO1xuICB9O1xuXG4gIHZhciBjcmVhdGVIcmVmID0gZnVuY3Rpb24gY3JlYXRlSHJlZihsb2NhdGlvbikge1xuICAgIHJldHVybiAoMCwgX1BhdGhVdGlscy5jcmVhdGVQYXRoKShsb2NhdGlvbik7XG4gIH07XG5cbiAgdmFyIGNyZWF0ZUxvY2F0aW9uID0gZnVuY3Rpb24gY3JlYXRlTG9jYXRpb24obG9jYXRpb24sIGFjdGlvbikge1xuICAgIHZhciBrZXkgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDIgfHwgYXJndW1lbnRzWzJdID09PSB1bmRlZmluZWQgPyBjcmVhdGVLZXkoKSA6IGFyZ3VtZW50c1syXTtcbiAgICByZXR1cm4gKDAsIF9Mb2NhdGlvblV0aWxzLmNyZWF0ZUxvY2F0aW9uKShsb2NhdGlvbiwgYWN0aW9uLCBrZXkpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgZ2V0Q3VycmVudExvY2F0aW9uOiBnZXRDdXJyZW50TG9jYXRpb24sXG4gICAgbGlzdGVuQmVmb3JlOiBsaXN0ZW5CZWZvcmUsXG4gICAgbGlzdGVuOiBsaXN0ZW4sXG4gICAgdHJhbnNpdGlvblRvOiB0cmFuc2l0aW9uVG8sXG4gICAgcHVzaDogcHVzaCxcbiAgICByZXBsYWNlOiByZXBsYWNlLFxuICAgIGdvOiBnbyxcbiAgICBnb0JhY2s6IGdvQmFjayxcbiAgICBnb0ZvcndhcmQ6IGdvRm9yd2FyZCxcbiAgICBjcmVhdGVLZXk6IGNyZWF0ZUtleSxcbiAgICBjcmVhdGVQYXRoOiBfUGF0aFV0aWxzLmNyZWF0ZVBhdGgsXG4gICAgY3JlYXRlSHJlZjogY3JlYXRlSHJlZixcbiAgICBjcmVhdGVMb2NhdGlvbjogY3JlYXRlTG9jYXRpb25cbiAgfTtcbn07XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGNyZWF0ZUhpc3Rvcnk7IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXG52YXIgX3dhcm5pbmcgPSByZXF1aXJlKCd3YXJuaW5nJyk7XG5cbnZhciBfd2FybmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF93YXJuaW5nKTtcblxudmFyIF9pbnZhcmlhbnQgPSByZXF1aXJlKCdpbnZhcmlhbnQnKTtcblxudmFyIF9pbnZhcmlhbnQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW52YXJpYW50KTtcblxudmFyIF9Mb2NhdGlvblV0aWxzID0gcmVxdWlyZSgnLi9Mb2NhdGlvblV0aWxzJyk7XG5cbnZhciBfUGF0aFV0aWxzID0gcmVxdWlyZSgnLi9QYXRoVXRpbHMnKTtcblxudmFyIF9jcmVhdGVIaXN0b3J5ID0gcmVxdWlyZSgnLi9jcmVhdGVIaXN0b3J5Jyk7XG5cbnZhciBfY3JlYXRlSGlzdG9yeTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVIaXN0b3J5KTtcblxudmFyIF9BY3Rpb25zID0gcmVxdWlyZSgnLi9BY3Rpb25zJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBjcmVhdGVTdGF0ZVN0b3JhZ2UgPSBmdW5jdGlvbiBjcmVhdGVTdGF0ZVN0b3JhZ2UoZW50cmllcykge1xuICByZXR1cm4gZW50cmllcy5maWx0ZXIoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgcmV0dXJuIGVudHJ5LnN0YXRlO1xuICB9KS5yZWR1Y2UoZnVuY3Rpb24gKG1lbW8sIGVudHJ5KSB7XG4gICAgbWVtb1tlbnRyeS5rZXldID0gZW50cnkuc3RhdGU7XG4gICAgcmV0dXJuIG1lbW87XG4gIH0sIHt9KTtcbn07XG5cbnZhciBjcmVhdGVNZW1vcnlIaXN0b3J5ID0gZnVuY3Rpb24gY3JlYXRlTWVtb3J5SGlzdG9yeSgpIHtcbiAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1swXTtcblxuICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgIG9wdGlvbnMgPSB7IGVudHJpZXM6IG9wdGlvbnMgfTtcbiAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycpIHtcbiAgICBvcHRpb25zID0geyBlbnRyaWVzOiBbb3B0aW9uc10gfTtcbiAgfVxuXG4gIHZhciBnZXRDdXJyZW50TG9jYXRpb24gPSBmdW5jdGlvbiBnZXRDdXJyZW50TG9jYXRpb24oKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tjdXJyZW50XTtcbiAgICB2YXIgcGF0aCA9ICgwLCBfUGF0aFV0aWxzLmNyZWF0ZVBhdGgpKGVudHJ5KTtcblxuICAgIHZhciBrZXkgPSB2b2lkIDAsXG4gICAgICAgIHN0YXRlID0gdm9pZCAwO1xuICAgIGlmIChlbnRyeS5rZXkpIHtcbiAgICAgIGtleSA9IGVudHJ5LmtleTtcbiAgICAgIHN0YXRlID0gcmVhZFN0YXRlKGtleSk7XG4gICAgfVxuXG4gICAgdmFyIGluaXQgPSAoMCwgX1BhdGhVdGlscy5wYXJzZVBhdGgpKHBhdGgpO1xuXG4gICAgcmV0dXJuICgwLCBfTG9jYXRpb25VdGlscy5jcmVhdGVMb2NhdGlvbikoX2V4dGVuZHMoe30sIGluaXQsIHsgc3RhdGU6IHN0YXRlIH0pLCB1bmRlZmluZWQsIGtleSk7XG4gIH07XG5cbiAgdmFyIGNhbkdvID0gZnVuY3Rpb24gY2FuR28obikge1xuICAgIHZhciBpbmRleCA9IGN1cnJlbnQgKyBuO1xuICAgIHJldHVybiBpbmRleCA+PSAwICYmIGluZGV4IDwgZW50cmllcy5sZW5ndGg7XG4gIH07XG5cbiAgdmFyIGdvID0gZnVuY3Rpb24gZ28obikge1xuICAgIGlmICghbikgcmV0dXJuO1xuXG4gICAgaWYgKCFjYW5HbyhuKSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/ICgwLCBfd2FybmluZzIuZGVmYXVsdCkoZmFsc2UsICdDYW5ub3QgZ28oJXMpIHRoZXJlIGlzIG5vdCBlbm91Z2ggaGlzdG9yeScsIG4pIDogdm9pZCAwO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY3VycmVudCArPSBuO1xuICAgIHZhciBjdXJyZW50TG9jYXRpb24gPSBnZXRDdXJyZW50TG9jYXRpb24oKTtcblxuICAgIC8vIENoYW5nZSBhY3Rpb24gdG8gUE9QXG4gICAgaGlzdG9yeS50cmFuc2l0aW9uVG8oX2V4dGVuZHMoe30sIGN1cnJlbnRMb2NhdGlvbiwgeyBhY3Rpb246IF9BY3Rpb25zLlBPUCB9KSk7XG4gIH07XG5cbiAgdmFyIHB1c2hMb2NhdGlvbiA9IGZ1bmN0aW9uIHB1c2hMb2NhdGlvbihsb2NhdGlvbikge1xuICAgIGN1cnJlbnQgKz0gMTtcblxuICAgIGlmIChjdXJyZW50IDwgZW50cmllcy5sZW5ndGgpIGVudHJpZXMuc3BsaWNlKGN1cnJlbnQpO1xuXG4gICAgZW50cmllcy5wdXNoKGxvY2F0aW9uKTtcblxuICAgIHNhdmVTdGF0ZShsb2NhdGlvbi5rZXksIGxvY2F0aW9uLnN0YXRlKTtcbiAgfTtcblxuICB2YXIgcmVwbGFjZUxvY2F0aW9uID0gZnVuY3Rpb24gcmVwbGFjZUxvY2F0aW9uKGxvY2F0aW9uKSB7XG4gICAgZW50cmllc1tjdXJyZW50XSA9IGxvY2F0aW9uO1xuICAgIHNhdmVTdGF0ZShsb2NhdGlvbi5rZXksIGxvY2F0aW9uLnN0YXRlKTtcbiAgfTtcblxuICB2YXIgaGlzdG9yeSA9ICgwLCBfY3JlYXRlSGlzdG9yeTIuZGVmYXVsdCkoX2V4dGVuZHMoe30sIG9wdGlvbnMsIHtcbiAgICBnZXRDdXJyZW50TG9jYXRpb246IGdldEN1cnJlbnRMb2NhdGlvbixcbiAgICBwdXNoTG9jYXRpb246IHB1c2hMb2NhdGlvbixcbiAgICByZXBsYWNlTG9jYXRpb246IHJlcGxhY2VMb2NhdGlvbixcbiAgICBnbzogZ29cbiAgfSkpO1xuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnM7XG4gIHZhciBlbnRyaWVzID0gX29wdGlvbnMuZW50cmllcztcbiAgdmFyIGN1cnJlbnQgPSBfb3B0aW9ucy5jdXJyZW50O1xuXG5cbiAgaWYgKHR5cGVvZiBlbnRyaWVzID09PSAnc3RyaW5nJykge1xuICAgIGVudHJpZXMgPSBbZW50cmllc107XG4gIH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkoZW50cmllcykpIHtcbiAgICBlbnRyaWVzID0gWycvJ107XG4gIH1cblxuICBlbnRyaWVzID0gZW50cmllcy5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgcmV0dXJuICgwLCBfTG9jYXRpb25VdGlscy5jcmVhdGVMb2NhdGlvbikoZW50cnkpO1xuICB9KTtcblxuICBpZiAoY3VycmVudCA9PSBudWxsKSB7XG4gICAgY3VycmVudCA9IGVudHJpZXMubGVuZ3RoIC0gMTtcbiAgfSBlbHNlIHtcbiAgICAhKGN1cnJlbnQgPj0gMCAmJiBjdXJyZW50IDwgZW50cmllcy5sZW5ndGgpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/ICgwLCBfaW52YXJpYW50Mi5kZWZhdWx0KShmYWxzZSwgJ0N1cnJlbnQgaW5kZXggbXVzdCBiZSA+PSAwIGFuZCA8ICVzLCB3YXMgJXMnLCBlbnRyaWVzLmxlbmd0aCwgY3VycmVudCkgOiAoMCwgX2ludmFyaWFudDIuZGVmYXVsdCkoZmFsc2UpIDogdm9pZCAwO1xuICB9XG5cbiAgdmFyIHN0b3JhZ2UgPSBjcmVhdGVTdGF0ZVN0b3JhZ2UoZW50cmllcyk7XG5cbiAgdmFyIHNhdmVTdGF0ZSA9IGZ1bmN0aW9uIHNhdmVTdGF0ZShrZXksIHN0YXRlKSB7XG4gICAgcmV0dXJuIHN0b3JhZ2Vba2V5XSA9IHN0YXRlO1xuICB9O1xuXG4gIHZhciByZWFkU3RhdGUgPSBmdW5jdGlvbiByZWFkU3RhdGUoa2V5KSB7XG4gICAgcmV0dXJuIHN0b3JhZ2Vba2V5XTtcbiAgfTtcblxuICByZXR1cm4gaGlzdG9yeTtcbn07XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGNyZWF0ZU1lbW9yeUhpc3Rvcnk7IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5sb2NhdGlvbnNBcmVFcXVhbCA9IGV4cG9ydHMuQWN0aW9ucyA9IGV4cG9ydHMudXNlUXVlcmllcyA9IGV4cG9ydHMudXNlQmVmb3JlVW5sb2FkID0gZXhwb3J0cy51c2VCYXNlbmFtZSA9IGV4cG9ydHMuY3JlYXRlTWVtb3J5SGlzdG9yeSA9IGV4cG9ydHMuY3JlYXRlSGFzaEhpc3RvcnkgPSBleHBvcnRzLmNyZWF0ZUhpc3RvcnkgPSB1bmRlZmluZWQ7XG5cbnZhciBfTG9jYXRpb25VdGlscyA9IHJlcXVpcmUoJy4vTG9jYXRpb25VdGlscycpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ2xvY2F0aW9uc0FyZUVxdWFsJywge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX0xvY2F0aW9uVXRpbHMubG9jYXRpb25zQXJlRXF1YWw7XG4gIH1cbn0pO1xuXG52YXIgX2NyZWF0ZUJyb3dzZXJIaXN0b3J5ID0gcmVxdWlyZSgnLi9jcmVhdGVCcm93c2VySGlzdG9yeScpO1xuXG52YXIgX2NyZWF0ZUJyb3dzZXJIaXN0b3J5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUJyb3dzZXJIaXN0b3J5KTtcblxudmFyIF9jcmVhdGVIYXNoSGlzdG9yeTIgPSByZXF1aXJlKCcuL2NyZWF0ZUhhc2hIaXN0b3J5Jyk7XG5cbnZhciBfY3JlYXRlSGFzaEhpc3RvcnkzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlSGFzaEhpc3RvcnkyKTtcblxudmFyIF9jcmVhdGVNZW1vcnlIaXN0b3J5MiA9IHJlcXVpcmUoJy4vY3JlYXRlTWVtb3J5SGlzdG9yeScpO1xuXG52YXIgX2NyZWF0ZU1lbW9yeUhpc3RvcnkzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlTWVtb3J5SGlzdG9yeTIpO1xuXG52YXIgX3VzZUJhc2VuYW1lMiA9IHJlcXVpcmUoJy4vdXNlQmFzZW5hbWUnKTtcblxudmFyIF91c2VCYXNlbmFtZTMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF91c2VCYXNlbmFtZTIpO1xuXG52YXIgX3VzZUJlZm9yZVVubG9hZDIgPSByZXF1aXJlKCcuL3VzZUJlZm9yZVVubG9hZCcpO1xuXG52YXIgX3VzZUJlZm9yZVVubG9hZDMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF91c2VCZWZvcmVVbmxvYWQyKTtcblxudmFyIF91c2VRdWVyaWVzMiA9IHJlcXVpcmUoJy4vdXNlUXVlcmllcycpO1xuXG52YXIgX3VzZVF1ZXJpZXMzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdXNlUXVlcmllczIpO1xuXG52YXIgX0FjdGlvbnMyID0gcmVxdWlyZSgnLi9BY3Rpb25zJyk7XG5cbnZhciBfQWN0aW9uczMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9BY3Rpb25zMik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuY3JlYXRlSGlzdG9yeSA9IF9jcmVhdGVCcm93c2VySGlzdG9yeTIuZGVmYXVsdDtcbmV4cG9ydHMuY3JlYXRlSGFzaEhpc3RvcnkgPSBfY3JlYXRlSGFzaEhpc3RvcnkzLmRlZmF1bHQ7XG5leHBvcnRzLmNyZWF0ZU1lbW9yeUhpc3RvcnkgPSBfY3JlYXRlTWVtb3J5SGlzdG9yeTMuZGVmYXVsdDtcbmV4cG9ydHMudXNlQmFzZW5hbWUgPSBfdXNlQmFzZW5hbWUzLmRlZmF1bHQ7XG5leHBvcnRzLnVzZUJlZm9yZVVubG9hZCA9IF91c2VCZWZvcmVVbmxvYWQzLmRlZmF1bHQ7XG5leHBvcnRzLnVzZVF1ZXJpZXMgPSBfdXNlUXVlcmllczMuZGVmYXVsdDtcbmV4cG9ydHMuQWN0aW9ucyA9IF9BY3Rpb25zMy5kZWZhdWx0OyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF93YXJuaW5nID0gcmVxdWlyZSgnd2FybmluZycpO1xuXG52YXIgX3dhcm5pbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfd2FybmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBydW5UcmFuc2l0aW9uSG9vayA9IGZ1bmN0aW9uIHJ1blRyYW5zaXRpb25Ib29rKGhvb2ssIGxvY2F0aW9uLCBjYWxsYmFjaykge1xuICB2YXIgcmVzdWx0ID0gaG9vayhsb2NhdGlvbiwgY2FsbGJhY2spO1xuXG4gIGlmIChob29rLmxlbmd0aCA8IDIpIHtcbiAgICAvLyBBc3N1bWUgdGhlIGhvb2sgcnVucyBzeW5jaHJvbm91c2x5IGFuZCBhdXRvbWF0aWNhbGx5XG4gICAgLy8gY2FsbCB0aGUgY2FsbGJhY2sgd2l0aCB0aGUgcmV0dXJuIHZhbHVlLlxuICAgIGNhbGxiYWNrKHJlc3VsdCk7XG4gIH0gZWxzZSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/ICgwLCBfd2FybmluZzIuZGVmYXVsdCkocmVzdWx0ID09PSB1bmRlZmluZWQsICdZb3Ugc2hvdWxkIG5vdCBcInJldHVyblwiIGluIGEgdHJhbnNpdGlvbiBob29rIHdpdGggYSBjYWxsYmFjayBhcmd1bWVudDsgJyArICdjYWxsIHRoZSBjYWxsYmFjayBpbnN0ZWFkJykgOiB2b2lkIDA7XG4gIH1cbn07XG5cbmV4cG9ydHMuZGVmYXVsdCA9IHJ1blRyYW5zaXRpb25Ib29rOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblxudmFyIF9ydW5UcmFuc2l0aW9uSG9vayA9IHJlcXVpcmUoJy4vcnVuVHJhbnNpdGlvbkhvb2snKTtcblxudmFyIF9ydW5UcmFuc2l0aW9uSG9vazIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9ydW5UcmFuc2l0aW9uSG9vayk7XG5cbnZhciBfUGF0aFV0aWxzID0gcmVxdWlyZSgnLi9QYXRoVXRpbHMnKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIHVzZUJhc2VuYW1lID0gZnVuY3Rpb24gdXNlQmFzZW5hbWUoY3JlYXRlSGlzdG9yeSkge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMF07XG5cbiAgICB2YXIgaGlzdG9yeSA9IGNyZWF0ZUhpc3Rvcnkob3B0aW9ucyk7XG4gICAgdmFyIGJhc2VuYW1lID0gb3B0aW9ucy5iYXNlbmFtZTtcblxuXG4gICAgdmFyIGFkZEJhc2VuYW1lID0gZnVuY3Rpb24gYWRkQmFzZW5hbWUobG9jYXRpb24pIHtcbiAgICAgIGlmICghbG9jYXRpb24pIHJldHVybiBsb2NhdGlvbjtcblxuICAgICAgaWYgKGJhc2VuYW1lICYmIGxvY2F0aW9uLmJhc2VuYW1lID09IG51bGwpIHtcbiAgICAgICAgaWYgKGxvY2F0aW9uLnBhdGhuYW1lLmluZGV4T2YoYmFzZW5hbWUpID09PSAwKSB7XG4gICAgICAgICAgbG9jYXRpb24ucGF0aG5hbWUgPSBsb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoYmFzZW5hbWUubGVuZ3RoKTtcbiAgICAgICAgICBsb2NhdGlvbi5iYXNlbmFtZSA9IGJhc2VuYW1lO1xuXG4gICAgICAgICAgaWYgKGxvY2F0aW9uLnBhdGhuYW1lID09PSAnJykgbG9jYXRpb24ucGF0aG5hbWUgPSAnLyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9jYXRpb24uYmFzZW5hbWUgPSAnJztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbG9jYXRpb247XG4gICAgfTtcblxuICAgIHZhciBwcmVwZW5kQmFzZW5hbWUgPSBmdW5jdGlvbiBwcmVwZW5kQmFzZW5hbWUobG9jYXRpb24pIHtcbiAgICAgIGlmICghYmFzZW5hbWUpIHJldHVybiBsb2NhdGlvbjtcblxuICAgICAgdmFyIG9iamVjdCA9IHR5cGVvZiBsb2NhdGlvbiA9PT0gJ3N0cmluZycgPyAoMCwgX1BhdGhVdGlscy5wYXJzZVBhdGgpKGxvY2F0aW9uKSA6IGxvY2F0aW9uO1xuICAgICAgdmFyIHBuYW1lID0gb2JqZWN0LnBhdGhuYW1lO1xuICAgICAgdmFyIG5vcm1hbGl6ZWRCYXNlbmFtZSA9IGJhc2VuYW1lLnNsaWNlKC0xKSA9PT0gJy8nID8gYmFzZW5hbWUgOiBiYXNlbmFtZSArICcvJztcbiAgICAgIHZhciBub3JtYWxpemVkUGF0aG5hbWUgPSBwbmFtZS5jaGFyQXQoMCkgPT09ICcvJyA/IHBuYW1lLnNsaWNlKDEpIDogcG5hbWU7XG4gICAgICB2YXIgcGF0aG5hbWUgPSBub3JtYWxpemVkQmFzZW5hbWUgKyBub3JtYWxpemVkUGF0aG5hbWU7XG5cbiAgICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgbG9jYXRpb24sIHtcbiAgICAgICAgcGF0aG5hbWU6IHBhdGhuYW1lXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgLy8gT3ZlcnJpZGUgYWxsIHJlYWQgbWV0aG9kcyB3aXRoIGJhc2VuYW1lLWF3YXJlIHZlcnNpb25zLlxuICAgIHZhciBnZXRDdXJyZW50TG9jYXRpb24gPSBmdW5jdGlvbiBnZXRDdXJyZW50TG9jYXRpb24oKSB7XG4gICAgICByZXR1cm4gYWRkQmFzZW5hbWUoaGlzdG9yeS5nZXRDdXJyZW50TG9jYXRpb24oKSk7XG4gICAgfTtcblxuICAgIHZhciBsaXN0ZW5CZWZvcmUgPSBmdW5jdGlvbiBsaXN0ZW5CZWZvcmUoaG9vaykge1xuICAgICAgcmV0dXJuIGhpc3RvcnkubGlzdGVuQmVmb3JlKGZ1bmN0aW9uIChsb2NhdGlvbiwgY2FsbGJhY2spIHtcbiAgICAgICAgcmV0dXJuICgwLCBfcnVuVHJhbnNpdGlvbkhvb2syLmRlZmF1bHQpKGhvb2ssIGFkZEJhc2VuYW1lKGxvY2F0aW9uKSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHZhciBsaXN0ZW4gPSBmdW5jdGlvbiBsaXN0ZW4obGlzdGVuZXIpIHtcbiAgICAgIHJldHVybiBoaXN0b3J5Lmxpc3RlbihmdW5jdGlvbiAobG9jYXRpb24pIHtcbiAgICAgICAgcmV0dXJuIGxpc3RlbmVyKGFkZEJhc2VuYW1lKGxvY2F0aW9uKSk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgLy8gT3ZlcnJpZGUgYWxsIHdyaXRlIG1ldGhvZHMgd2l0aCBiYXNlbmFtZS1hd2FyZSB2ZXJzaW9ucy5cbiAgICB2YXIgcHVzaCA9IGZ1bmN0aW9uIHB1c2gobG9jYXRpb24pIHtcbiAgICAgIHJldHVybiBoaXN0b3J5LnB1c2gocHJlcGVuZEJhc2VuYW1lKGxvY2F0aW9uKSk7XG4gICAgfTtcblxuICAgIHZhciByZXBsYWNlID0gZnVuY3Rpb24gcmVwbGFjZShsb2NhdGlvbikge1xuICAgICAgcmV0dXJuIGhpc3RvcnkucmVwbGFjZShwcmVwZW5kQmFzZW5hbWUobG9jYXRpb24pKTtcbiAgICB9O1xuXG4gICAgdmFyIGNyZWF0ZVBhdGggPSBmdW5jdGlvbiBjcmVhdGVQYXRoKGxvY2F0aW9uKSB7XG4gICAgICByZXR1cm4gaGlzdG9yeS5jcmVhdGVQYXRoKHByZXBlbmRCYXNlbmFtZShsb2NhdGlvbikpO1xuICAgIH07XG5cbiAgICB2YXIgY3JlYXRlSHJlZiA9IGZ1bmN0aW9uIGNyZWF0ZUhyZWYobG9jYXRpb24pIHtcbiAgICAgIHJldHVybiBoaXN0b3J5LmNyZWF0ZUhyZWYocHJlcGVuZEJhc2VuYW1lKGxvY2F0aW9uKSk7XG4gICAgfTtcblxuICAgIHZhciBjcmVhdGVMb2NhdGlvbiA9IGZ1bmN0aW9uIGNyZWF0ZUxvY2F0aW9uKGxvY2F0aW9uKSB7XG4gICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhZGRCYXNlbmFtZShoaXN0b3J5LmNyZWF0ZUxvY2F0aW9uLmFwcGx5KGhpc3RvcnksIFtwcmVwZW5kQmFzZW5hbWUobG9jYXRpb24pXS5jb25jYXQoYXJncykpKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIF9leHRlbmRzKHt9LCBoaXN0b3J5LCB7XG4gICAgICBnZXRDdXJyZW50TG9jYXRpb246IGdldEN1cnJlbnRMb2NhdGlvbixcbiAgICAgIGxpc3RlbkJlZm9yZTogbGlzdGVuQmVmb3JlLFxuICAgICAgbGlzdGVuOiBsaXN0ZW4sXG4gICAgICBwdXNoOiBwdXNoLFxuICAgICAgcmVwbGFjZTogcmVwbGFjZSxcbiAgICAgIGNyZWF0ZVBhdGg6IGNyZWF0ZVBhdGgsXG4gICAgICBjcmVhdGVIcmVmOiBjcmVhdGVIcmVmLFxuICAgICAgY3JlYXRlTG9jYXRpb246IGNyZWF0ZUxvY2F0aW9uXG4gICAgfSk7XG4gIH07XG59O1xuXG5leHBvcnRzLmRlZmF1bHQgPSB1c2VCYXNlbmFtZTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbnZhciBfaW52YXJpYW50ID0gcmVxdWlyZSgnaW52YXJpYW50Jyk7XG5cbnZhciBfaW52YXJpYW50MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ludmFyaWFudCk7XG5cbnZhciBfRE9NVXRpbHMgPSByZXF1aXJlKCcuL0RPTVV0aWxzJyk7XG5cbnZhciBfRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCcuL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBzdGFydExpc3RlbmVyID0gZnVuY3Rpb24gc3RhcnRMaXN0ZW5lcihnZXRQcm9tcHRNZXNzYWdlKSB7XG4gIHZhciBoYW5kbGVCZWZvcmVVbmxvYWQgPSBmdW5jdGlvbiBoYW5kbGVCZWZvcmVVbmxvYWQoZXZlbnQpIHtcbiAgICB2YXIgbWVzc2FnZSA9IGdldFByb21wdE1lc3NhZ2UoKTtcblxuICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIChldmVudCB8fCB3aW5kb3cuZXZlbnQpLnJldHVyblZhbHVlID0gbWVzc2FnZTtcbiAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH07XG5cbiAgKDAsIF9ET01VdGlscy5hZGRFdmVudExpc3RlbmVyKSh3aW5kb3csICdiZWZvcmV1bmxvYWQnLCBoYW5kbGVCZWZvcmVVbmxvYWQpO1xuXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICgwLCBfRE9NVXRpbHMucmVtb3ZlRXZlbnRMaXN0ZW5lcikod2luZG93LCAnYmVmb3JldW5sb2FkJywgaGFuZGxlQmVmb3JlVW5sb2FkKTtcbiAgfTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhIG5ldyBjcmVhdGVIaXN0b3J5IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gY3JlYXRlXG4gKiBoaXN0b3J5IG9iamVjdHMgdGhhdCBrbm93IGhvdyB0byB1c2UgdGhlIGJlZm9yZXVubG9hZCBldmVudCBpbiB3ZWJcbiAqIGJyb3dzZXJzIHRvIGNhbmNlbCBuYXZpZ2F0aW9uLlxuICovXG52YXIgdXNlQmVmb3JlVW5sb2FkID0gZnVuY3Rpb24gdXNlQmVmb3JlVW5sb2FkKGNyZWF0ZUhpc3RvcnkpIHtcbiAgIV9FeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gKDAsIF9pbnZhcmlhbnQyLmRlZmF1bHQpKGZhbHNlLCAndXNlQmVmb3JlVW5sb2FkIG9ubHkgd29ya3MgaW4gRE9NIGVudmlyb25tZW50cycpIDogKDAsIF9pbnZhcmlhbnQyLmRlZmF1bHQpKGZhbHNlKSA6IHZvaWQgMDtcblxuICByZXR1cm4gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICB2YXIgaGlzdG9yeSA9IGNyZWF0ZUhpc3Rvcnkob3B0aW9ucyk7XG5cbiAgICB2YXIgbGlzdGVuZXJzID0gW107XG4gICAgdmFyIHN0b3BMaXN0ZW5lciA9IHZvaWQgMDtcblxuICAgIHZhciBnZXRQcm9tcHRNZXNzYWdlID0gZnVuY3Rpb24gZ2V0UHJvbXB0TWVzc2FnZSgpIHtcbiAgICAgIHZhciBtZXNzYWdlID0gdm9pZCAwO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGxpc3RlbmVycy5sZW5ndGg7IG1lc3NhZ2UgPT0gbnVsbCAmJiBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgbWVzc2FnZSA9IGxpc3RlbmVyc1tpXS5jYWxsKCk7XG4gICAgICB9cmV0dXJuIG1lc3NhZ2U7XG4gICAgfTtcblxuICAgIHZhciBsaXN0ZW5CZWZvcmVVbmxvYWQgPSBmdW5jdGlvbiBsaXN0ZW5CZWZvcmVVbmxvYWQobGlzdGVuZXIpIHtcbiAgICAgIGlmIChsaXN0ZW5lcnMucHVzaChsaXN0ZW5lcikgPT09IDEpIHN0b3BMaXN0ZW5lciA9IHN0YXJ0TGlzdGVuZXIoZ2V0UHJvbXB0TWVzc2FnZSk7XG5cbiAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxpc3RlbmVycyA9IGxpc3RlbmVycy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICByZXR1cm4gaXRlbSAhPT0gbGlzdGVuZXI7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChsaXN0ZW5lcnMubGVuZ3RoID09PSAwICYmIHN0b3BMaXN0ZW5lcikge1xuICAgICAgICAgIHN0b3BMaXN0ZW5lcigpO1xuICAgICAgICAgIHN0b3BMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfTtcblxuICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgaGlzdG9yeSwge1xuICAgICAgbGlzdGVuQmVmb3JlVW5sb2FkOiBsaXN0ZW5CZWZvcmVVbmxvYWRcbiAgICB9KTtcbiAgfTtcbn07XG5cbmV4cG9ydHMuZGVmYXVsdCA9IHVzZUJlZm9yZVVubG9hZDsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbnZhciBfcXVlcnlTdHJpbmcgPSByZXF1aXJlKCdxdWVyeS1zdHJpbmcnKTtcblxudmFyIF9ydW5UcmFuc2l0aW9uSG9vayA9IHJlcXVpcmUoJy4vcnVuVHJhbnNpdGlvbkhvb2snKTtcblxudmFyIF9ydW5UcmFuc2l0aW9uSG9vazIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9ydW5UcmFuc2l0aW9uSG9vayk7XG5cbnZhciBfTG9jYXRpb25VdGlscyA9IHJlcXVpcmUoJy4vTG9jYXRpb25VdGlscycpO1xuXG52YXIgX1BhdGhVdGlscyA9IHJlcXVpcmUoJy4vUGF0aFV0aWxzJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBkZWZhdWx0U3RyaW5naWZ5UXVlcnkgPSBmdW5jdGlvbiBkZWZhdWx0U3RyaW5naWZ5UXVlcnkocXVlcnkpIHtcbiAgcmV0dXJuICgwLCBfcXVlcnlTdHJpbmcuc3RyaW5naWZ5KShxdWVyeSkucmVwbGFjZSgvJTIwL2csICcrJyk7XG59O1xuXG52YXIgZGVmYXVsdFBhcnNlUXVlcnlTdHJpbmcgPSBfcXVlcnlTdHJpbmcucGFyc2U7XG5cbi8qKlxuICogUmV0dXJucyBhIG5ldyBjcmVhdGVIaXN0b3J5IGZ1bmN0aW9uIHRoYXQgbWF5IGJlIHVzZWQgdG8gY3JlYXRlXG4gKiBoaXN0b3J5IG9iamVjdHMgdGhhdCBrbm93IGhvdyB0byBoYW5kbGUgVVJMIHF1ZXJpZXMuXG4gKi9cbnZhciB1c2VRdWVyaWVzID0gZnVuY3Rpb24gdXNlUXVlcmllcyhjcmVhdGVIaXN0b3J5KSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1swXTtcblxuICAgIHZhciBoaXN0b3J5ID0gY3JlYXRlSGlzdG9yeShvcHRpb25zKTtcbiAgICB2YXIgc3RyaW5naWZ5UXVlcnkgPSBvcHRpb25zLnN0cmluZ2lmeVF1ZXJ5O1xuICAgIHZhciBwYXJzZVF1ZXJ5U3RyaW5nID0gb3B0aW9ucy5wYXJzZVF1ZXJ5U3RyaW5nO1xuXG5cbiAgICBpZiAodHlwZW9mIHN0cmluZ2lmeVF1ZXJ5ICE9PSAnZnVuY3Rpb24nKSBzdHJpbmdpZnlRdWVyeSA9IGRlZmF1bHRTdHJpbmdpZnlRdWVyeTtcblxuICAgIGlmICh0eXBlb2YgcGFyc2VRdWVyeVN0cmluZyAhPT0gJ2Z1bmN0aW9uJykgcGFyc2VRdWVyeVN0cmluZyA9IGRlZmF1bHRQYXJzZVF1ZXJ5U3RyaW5nO1xuXG4gICAgdmFyIGRlY29kZVF1ZXJ5ID0gZnVuY3Rpb24gZGVjb2RlUXVlcnkobG9jYXRpb24pIHtcbiAgICAgIGlmICghbG9jYXRpb24pIHJldHVybiBsb2NhdGlvbjtcblxuICAgICAgaWYgKGxvY2F0aW9uLnF1ZXJ5ID09IG51bGwpIGxvY2F0aW9uLnF1ZXJ5ID0gcGFyc2VRdWVyeVN0cmluZyhsb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpKTtcblxuICAgICAgcmV0dXJuIGxvY2F0aW9uO1xuICAgIH07XG5cbiAgICB2YXIgZW5jb2RlUXVlcnkgPSBmdW5jdGlvbiBlbmNvZGVRdWVyeShsb2NhdGlvbiwgcXVlcnkpIHtcbiAgICAgIGlmIChxdWVyeSA9PSBudWxsKSByZXR1cm4gbG9jYXRpb247XG5cbiAgICAgIHZhciBvYmplY3QgPSB0eXBlb2YgbG9jYXRpb24gPT09ICdzdHJpbmcnID8gKDAsIF9QYXRoVXRpbHMucGFyc2VQYXRoKShsb2NhdGlvbikgOiBsb2NhdGlvbjtcbiAgICAgIHZhciBxdWVyeVN0cmluZyA9IHN0cmluZ2lmeVF1ZXJ5KHF1ZXJ5KTtcbiAgICAgIHZhciBzZWFyY2ggPSBxdWVyeVN0cmluZyA/ICc/JyArIHF1ZXJ5U3RyaW5nIDogJyc7XG5cbiAgICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgb2JqZWN0LCB7XG4gICAgICAgIHNlYXJjaDogc2VhcmNoXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgLy8gT3ZlcnJpZGUgYWxsIHJlYWQgbWV0aG9kcyB3aXRoIHF1ZXJ5LWF3YXJlIHZlcnNpb25zLlxuICAgIHZhciBnZXRDdXJyZW50TG9jYXRpb24gPSBmdW5jdGlvbiBnZXRDdXJyZW50TG9jYXRpb24oKSB7XG4gICAgICByZXR1cm4gZGVjb2RlUXVlcnkoaGlzdG9yeS5nZXRDdXJyZW50TG9jYXRpb24oKSk7XG4gICAgfTtcblxuICAgIHZhciBsaXN0ZW5CZWZvcmUgPSBmdW5jdGlvbiBsaXN0ZW5CZWZvcmUoaG9vaykge1xuICAgICAgcmV0dXJuIGhpc3RvcnkubGlzdGVuQmVmb3JlKGZ1bmN0aW9uIChsb2NhdGlvbiwgY2FsbGJhY2spIHtcbiAgICAgICAgcmV0dXJuICgwLCBfcnVuVHJhbnNpdGlvbkhvb2syLmRlZmF1bHQpKGhvb2ssIGRlY29kZVF1ZXJ5KGxvY2F0aW9uKSwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHZhciBsaXN0ZW4gPSBmdW5jdGlvbiBsaXN0ZW4obGlzdGVuZXIpIHtcbiAgICAgIHJldHVybiBoaXN0b3J5Lmxpc3RlbihmdW5jdGlvbiAobG9jYXRpb24pIHtcbiAgICAgICAgcmV0dXJuIGxpc3RlbmVyKGRlY29kZVF1ZXJ5KGxvY2F0aW9uKSk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgLy8gT3ZlcnJpZGUgYWxsIHdyaXRlIG1ldGhvZHMgd2l0aCBxdWVyeS1hd2FyZSB2ZXJzaW9ucy5cbiAgICB2YXIgcHVzaCA9IGZ1bmN0aW9uIHB1c2gobG9jYXRpb24pIHtcbiAgICAgIHJldHVybiBoaXN0b3J5LnB1c2goZW5jb2RlUXVlcnkobG9jYXRpb24sIGxvY2F0aW9uLnF1ZXJ5KSk7XG4gICAgfTtcblxuICAgIHZhciByZXBsYWNlID0gZnVuY3Rpb24gcmVwbGFjZShsb2NhdGlvbikge1xuICAgICAgcmV0dXJuIGhpc3RvcnkucmVwbGFjZShlbmNvZGVRdWVyeShsb2NhdGlvbiwgbG9jYXRpb24ucXVlcnkpKTtcbiAgICB9O1xuXG4gICAgdmFyIGNyZWF0ZVBhdGggPSBmdW5jdGlvbiBjcmVhdGVQYXRoKGxvY2F0aW9uKSB7XG4gICAgICByZXR1cm4gaGlzdG9yeS5jcmVhdGVQYXRoKGVuY29kZVF1ZXJ5KGxvY2F0aW9uLCBsb2NhdGlvbi5xdWVyeSkpO1xuICAgIH07XG5cbiAgICB2YXIgY3JlYXRlSHJlZiA9IGZ1bmN0aW9uIGNyZWF0ZUhyZWYobG9jYXRpb24pIHtcbiAgICAgIHJldHVybiBoaXN0b3J5LmNyZWF0ZUhyZWYoZW5jb2RlUXVlcnkobG9jYXRpb24sIGxvY2F0aW9uLnF1ZXJ5KSk7XG4gICAgfTtcblxuICAgIHZhciBjcmVhdGVMb2NhdGlvbiA9IGZ1bmN0aW9uIGNyZWF0ZUxvY2F0aW9uKGxvY2F0aW9uKSB7XG4gICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICB9XG5cbiAgICAgIHZhciBuZXdMb2NhdGlvbiA9IGhpc3RvcnkuY3JlYXRlTG9jYXRpb24uYXBwbHkoaGlzdG9yeSwgW2VuY29kZVF1ZXJ5KGxvY2F0aW9uLCBsb2NhdGlvbi5xdWVyeSldLmNvbmNhdChhcmdzKSk7XG5cbiAgICAgIGlmIChsb2NhdGlvbi5xdWVyeSkgbmV3TG9jYXRpb24ucXVlcnkgPSAoMCwgX0xvY2F0aW9uVXRpbHMuY3JlYXRlUXVlcnkpKGxvY2F0aW9uLnF1ZXJ5KTtcblxuICAgICAgcmV0dXJuIGRlY29kZVF1ZXJ5KG5ld0xvY2F0aW9uKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIF9leHRlbmRzKHt9LCBoaXN0b3J5LCB7XG4gICAgICBnZXRDdXJyZW50TG9jYXRpb246IGdldEN1cnJlbnRMb2NhdGlvbixcbiAgICAgIGxpc3RlbkJlZm9yZTogbGlzdGVuQmVmb3JlLFxuICAgICAgbGlzdGVuOiBsaXN0ZW4sXG4gICAgICBwdXNoOiBwdXNoLFxuICAgICAgcmVwbGFjZTogcmVwbGFjZSxcbiAgICAgIGNyZWF0ZVBhdGg6IGNyZWF0ZVBhdGgsXG4gICAgICBjcmVhdGVIcmVmOiBjcmVhdGVIcmVmLFxuICAgICAgY3JlYXRlTG9jYXRpb246IGNyZWF0ZUxvY2F0aW9uXG4gICAgfSk7XG4gIH07XG59O1xuXG5leHBvcnRzLmRlZmF1bHQgPSB1c2VRdWVyaWVzOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBVc2UgaW52YXJpYW50KCkgdG8gYXNzZXJ0IHN0YXRlIHdoaWNoIHlvdXIgcHJvZ3JhbSBhc3N1bWVzIHRvIGJlIHRydWUuXG4gKlxuICogUHJvdmlkZSBzcHJpbnRmLXN0eWxlIGZvcm1hdCAob25seSAlcyBpcyBzdXBwb3J0ZWQpIGFuZCBhcmd1bWVudHNcbiAqIHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBicm9rZSBhbmQgd2hhdCB5b3Ugd2VyZVxuICogZXhwZWN0aW5nLlxuICpcbiAqIFRoZSBpbnZhcmlhbnQgbWVzc2FnZSB3aWxsIGJlIHN0cmlwcGVkIGluIHByb2R1Y3Rpb24sIGJ1dCB0aGUgaW52YXJpYW50XG4gKiB3aWxsIHJlbWFpbiB0byBlbnN1cmUgbG9naWMgZG9lcyBub3QgZGlmZmVyIGluIHByb2R1Y3Rpb24uXG4gKi9cblxudmFyIGludmFyaWFudCA9IGZ1bmN0aW9uKGNvbmRpdGlvbiwgZm9ybWF0LCBhLCBiLCBjLCBkLCBlLCBmKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFyaWFudCByZXF1aXJlcyBhbiBlcnJvciBtZXNzYWdlIGFyZ3VtZW50Jyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFjb25kaXRpb24pIHtcbiAgICB2YXIgZXJyb3I7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBlcnJvciA9IG5ldyBFcnJvcihcbiAgICAgICAgJ01pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50ICcgK1xuICAgICAgICAnZm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4nXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgYXJncyA9IFthLCBiLCBjLCBkLCBlLCBmXTtcbiAgICAgIHZhciBhcmdJbmRleCA9IDA7XG4gICAgICBlcnJvciA9IG5ldyBFcnJvcihcbiAgICAgICAgZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJnc1thcmdJbmRleCsrXTsgfSlcbiAgICAgICk7XG4gICAgICBlcnJvci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIH1cblxuICAgIGVycm9yLmZyYW1lc1RvUG9wID0gMTsgLy8gd2UgZG9uJ3QgY2FyZSBhYm91dCBpbnZhcmlhbnQncyBvd24gZnJhbWVcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBpbnZhcmlhbnQ7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgc3RyaWN0VXJpRW5jb2RlID0gcmVxdWlyZSgnc3RyaWN0LXVyaS1lbmNvZGUnKTtcbnZhciBvYmplY3RBc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbmZ1bmN0aW9uIGVuY29kZSh2YWx1ZSwgb3B0cykge1xuXHRpZiAob3B0cy5lbmNvZGUpIHtcblx0XHRyZXR1cm4gb3B0cy5zdHJpY3QgPyBzdHJpY3RVcmlFbmNvZGUodmFsdWUpIDogZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKTtcblx0fVxuXG5cdHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0cy5leHRyYWN0ID0gZnVuY3Rpb24gKHN0cikge1xuXHRyZXR1cm4gc3RyLnNwbGl0KCc/JylbMV0gfHwgJyc7XG59O1xuXG5leHBvcnRzLnBhcnNlID0gZnVuY3Rpb24gKHN0cikge1xuXHQvLyBDcmVhdGUgYW4gb2JqZWN0IHdpdGggbm8gcHJvdG90eXBlXG5cdC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvcXVlcnktc3RyaW5nL2lzc3Vlcy80N1xuXHR2YXIgcmV0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuXHRpZiAodHlwZW9mIHN0ciAhPT0gJ3N0cmluZycpIHtcblx0XHRyZXR1cm4gcmV0O1xuXHR9XG5cblx0c3RyID0gc3RyLnRyaW0oKS5yZXBsYWNlKC9eKFxcP3wjfCYpLywgJycpO1xuXG5cdGlmICghc3RyKSB7XG5cdFx0cmV0dXJuIHJldDtcblx0fVxuXG5cdHN0ci5zcGxpdCgnJicpLmZvckVhY2goZnVuY3Rpb24gKHBhcmFtKSB7XG5cdFx0dmFyIHBhcnRzID0gcGFyYW0ucmVwbGFjZSgvXFwrL2csICcgJykuc3BsaXQoJz0nKTtcblx0XHQvLyBGaXJlZm94IChwcmUgNDApIGRlY29kZXMgYCUzRGAgdG8gYD1gXG5cdFx0Ly8gaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9xdWVyeS1zdHJpbmcvcHVsbC8zN1xuXHRcdHZhciBrZXkgPSBwYXJ0cy5zaGlmdCgpO1xuXHRcdHZhciB2YWwgPSBwYXJ0cy5sZW5ndGggPiAwID8gcGFydHMuam9pbignPScpIDogdW5kZWZpbmVkO1xuXG5cdFx0a2V5ID0gZGVjb2RlVVJJQ29tcG9uZW50KGtleSk7XG5cblx0XHQvLyBtaXNzaW5nIGA9YCBzaG91bGQgYmUgYG51bGxgOlxuXHRcdC8vIGh0dHA6Ly93My5vcmcvVFIvMjAxMi9XRC11cmwtMjAxMjA1MjQvI2NvbGxlY3QtdXJsLXBhcmFtZXRlcnNcblx0XHR2YWwgPSB2YWwgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBkZWNvZGVVUklDb21wb25lbnQodmFsKTtcblxuXHRcdGlmIChyZXRba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXRba2V5XSA9IHZhbDtcblx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocmV0W2tleV0pKSB7XG5cdFx0XHRyZXRba2V5XS5wdXNoKHZhbCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldFtrZXldID0gW3JldFtrZXldLCB2YWxdO1xuXHRcdH1cblx0fSk7XG5cblx0cmV0dXJuIHJldDtcbn07XG5cbmV4cG9ydHMuc3RyaW5naWZ5ID0gZnVuY3Rpb24gKG9iaiwgb3B0cykge1xuXHR2YXIgZGVmYXVsdHMgPSB7XG5cdFx0ZW5jb2RlOiB0cnVlLFxuXHRcdHN0cmljdDogdHJ1ZVxuXHR9O1xuXG5cdG9wdHMgPSBvYmplY3RBc3NpZ24oZGVmYXVsdHMsIG9wdHMpO1xuXG5cdHJldHVybiBvYmogPyBPYmplY3Qua2V5cyhvYmopLnNvcnQoKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuXHRcdHZhciB2YWwgPSBvYmpba2V5XTtcblxuXHRcdGlmICh2YWwgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmV0dXJuICcnO1xuXHRcdH1cblxuXHRcdGlmICh2YWwgPT09IG51bGwpIHtcblx0XHRcdHJldHVybiBlbmNvZGUoa2V5LCBvcHRzKTtcblx0XHR9XG5cblx0XHRpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG5cdFx0XHR2YXIgcmVzdWx0ID0gW107XG5cblx0XHRcdHZhbC5zbGljZSgpLmZvckVhY2goZnVuY3Rpb24gKHZhbDIpIHtcblx0XHRcdFx0aWYgKHZhbDIgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICh2YWwyID09PSBudWxsKSB7XG5cdFx0XHRcdFx0cmVzdWx0LnB1c2goZW5jb2RlKGtleSwgb3B0cykpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJlc3VsdC5wdXNoKGVuY29kZShrZXksIG9wdHMpICsgJz0nICsgZW5jb2RlKHZhbDIsIG9wdHMpKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdHJldHVybiByZXN1bHQuam9pbignJicpO1xuXHRcdH1cblxuXHRcdHJldHVybiBlbmNvZGUoa2V5LCBvcHRzKSArICc9JyArIGVuY29kZSh2YWwsIG9wdHMpO1xuXHR9KS5maWx0ZXIoZnVuY3Rpb24gKHgpIHtcblx0XHRyZXR1cm4geC5sZW5ndGggPiAwO1xuXHR9KS5qb2luKCcmJykgOiAnJztcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBwcm9wSXNFbnVtZXJhYmxlID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuZnVuY3Rpb24gdG9PYmplY3QodmFsKSB7XG5cdGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBudWxsIG9yIHVuZGVmaW5lZCcpO1xuXHR9XG5cblx0cmV0dXJuIE9iamVjdCh2YWwpO1xufVxuXG5mdW5jdGlvbiBzaG91bGRVc2VOYXRpdmUoKSB7XG5cdHRyeSB7XG5cdFx0aWYgKCFPYmplY3QuYXNzaWduKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gRGV0ZWN0IGJ1Z2d5IHByb3BlcnR5IGVudW1lcmF0aW9uIG9yZGVyIGluIG9sZGVyIFY4IHZlcnNpb25zLlxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9NDExOFxuXHRcdHZhciB0ZXN0MSA9IG5ldyBTdHJpbmcoJ2FiYycpOyAgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXHRcdHRlc3QxWzVdID0gJ2RlJztcblx0XHRpZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdDEpWzBdID09PSAnNScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0dmFyIHRlc3QyID0ge307XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG5cdFx0XHR0ZXN0MlsnXycgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpXSA9IGk7XG5cdFx0fVxuXHRcdHZhciBvcmRlcjIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MikubWFwKGZ1bmN0aW9uIChuKSB7XG5cdFx0XHRyZXR1cm4gdGVzdDJbbl07XG5cdFx0fSk7XG5cdFx0aWYgKG9yZGVyMi5qb2luKCcnKSAhPT0gJzAxMjM0NTY3ODknKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NlxuXHRcdHZhciB0ZXN0MyA9IHt9O1xuXHRcdCdhYmNkZWZnaGlqa2xtbm9wcXJzdCcuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGxldHRlcikge1xuXHRcdFx0dGVzdDNbbGV0dGVyXSA9IGxldHRlcjtcblx0XHR9KTtcblx0XHRpZiAoT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSwgdGVzdDMpKS5qb2luKCcnKSAhPT1cblx0XHRcdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVlO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0Ly8gV2UgZG9uJ3QgZXhwZWN0IGFueSBvZiB0aGUgYWJvdmUgdG8gdGhyb3csIGJ1dCBiZXR0ZXIgdG8gYmUgc2FmZS5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzaG91bGRVc2VOYXRpdmUoKSA/IE9iamVjdC5hc3NpZ24gOiBmdW5jdGlvbiAodGFyZ2V0LCBzb3VyY2UpIHtcblx0dmFyIGZyb207XG5cdHZhciB0byA9IHRvT2JqZWN0KHRhcmdldCk7XG5cdHZhciBzeW1ib2xzO1xuXG5cdGZvciAodmFyIHMgPSAxOyBzIDwgYXJndW1lbnRzLmxlbmd0aDsgcysrKSB7XG5cdFx0ZnJvbSA9IE9iamVjdChhcmd1bWVudHNbc10pO1xuXG5cdFx0Zm9yICh2YXIga2V5IGluIGZyb20pIHtcblx0XHRcdGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGZyb20sIGtleSkpIHtcblx0XHRcdFx0dG9ba2V5XSA9IGZyb21ba2V5XTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuXHRcdFx0c3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZnJvbSk7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHN5bWJvbHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aWYgKHByb3BJc0VudW1lcmFibGUuY2FsbChmcm9tLCBzeW1ib2xzW2ldKSkge1xuXHRcdFx0XHRcdHRvW3N5bWJvbHNbaV1dID0gZnJvbVtzeW1ib2xzW2ldXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB0bztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChzdHIpIHtcblx0cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChzdHIpLnJlcGxhY2UoL1shJygpKl0vZywgZnVuY3Rpb24gKGMpIHtcblx0XHRyZXR1cm4gJyUnICsgYy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuXHR9KTtcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogU2ltaWxhciB0byBpbnZhcmlhbnQgYnV0IG9ubHkgbG9ncyBhIHdhcm5pbmcgaWYgdGhlIGNvbmRpdGlvbiBpcyBub3QgbWV0LlxuICogVGhpcyBjYW4gYmUgdXNlZCB0byBsb2cgaXNzdWVzIGluIGRldmVsb3BtZW50IGVudmlyb25tZW50cyBpbiBjcml0aWNhbFxuICogcGF0aHMuIFJlbW92aW5nIHRoZSBsb2dnaW5nIGNvZGUgZm9yIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIHdpbGwga2VlcCB0aGVcbiAqIHNhbWUgbG9naWMgYW5kIGZvbGxvdyB0aGUgc2FtZSBjb2RlIHBhdGhzLlxuICovXG5cbnZhciB3YXJuaW5nID0gZnVuY3Rpb24oKSB7fTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgd2FybmluZyA9IGZ1bmN0aW9uKGNvbmRpdGlvbiwgZm9ybWF0LCBhcmdzKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgYXJncyA9IG5ldyBBcnJheShsZW4gPiAyID8gbGVuIC0gMiA6IDApO1xuICAgIGZvciAodmFyIGtleSA9IDI7IGtleSA8IGxlbjsga2V5KyspIHtcbiAgICAgIGFyZ3Nba2V5IC0gMl0gPSBhcmd1bWVudHNba2V5XTtcbiAgICB9XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdgd2FybmluZyhjb25kaXRpb24sIGZvcm1hdCwgLi4uYXJncylgIHJlcXVpcmVzIGEgd2FybmluZyAnICtcbiAgICAgICAgJ21lc3NhZ2UgYXJndW1lbnQnXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChmb3JtYXQubGVuZ3RoIDwgMTAgfHwgKC9eW3NcXFddKiQvKS50ZXN0KGZvcm1hdCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1RoZSB3YXJuaW5nIGZvcm1hdCBzaG91bGQgYmUgYWJsZSB0byB1bmlxdWVseSBpZGVudGlmeSB0aGlzICcgK1xuICAgICAgICAnd2FybmluZy4gUGxlYXNlLCB1c2UgYSBtb3JlIGRlc2NyaXB0aXZlIGZvcm1hdCB0aGFuOiAnICsgZm9ybWF0XG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICghY29uZGl0aW9uKSB7XG4gICAgICB2YXIgYXJnSW5kZXggPSAwO1xuICAgICAgdmFyIG1lc3NhZ2UgPSAnV2FybmluZzogJyArXG4gICAgICAgIGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsrXTtcbiAgICAgICAgfSk7XG4gICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIGVycm9yIHdhcyB0aHJvd24gYXMgYSBjb252ZW5pZW5jZSBzbyB0aGF0IHlvdSBjYW4gdXNlIHRoaXMgc3RhY2tcbiAgICAgICAgLy8gdG8gZmluZCB0aGUgY2FsbHNpdGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgIH0gY2F0Y2goeCkge31cbiAgICB9XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gd2FybmluZztcbiIsIi8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4gYnJvd3NlclxudmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vLyBjYWNoZWQgZnJvbSB3aGF0ZXZlciBnbG9iYWwgaXMgcHJlc2VudCBzbyB0aGF0IHRlc3QgcnVubmVycyB0aGF0IHN0dWIgaXRcbi8vIGRvbid0IGJyZWFrIHRoaW5ncy4gIEJ1dCB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4gYSB0cnkgY2F0Y2ggaW4gY2FzZSBpdCBpc1xuLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRvZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYVxuLy8gZnVuY3Rpb24gYmVjYXVzZSB0cnkvY2F0Y2hlcyBkZW9wdGltaXplIGluIGNlcnRhaW4gZW5naW5lcy5cblxudmFyIGNhY2hlZFNldFRpbWVvdXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0O1xuXG4oZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignc2V0VGltZW91dCBpcyBub3QgZGVmaW5lZCcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGlzIG5vdCBkZWZpbmVkJyk7XG4gICAgICAgIH1cbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwobnVsbCwgZnVuLCAwKTtcbiAgICB9XG59XG5mdW5jdGlvbiBydW5DbGVhclRpbWVvdXQobWFya2VyKSB7XG4gICAgaWYgKGNhY2hlZENsZWFyVGltZW91dCA9PT0gY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKG51bGwsIG1hcmtlcik7XG4gICAgfVxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCBmdW5jdGlvbiAoZCwgYikge1xuICAgIGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdO1xuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbn07XG52YXIgTk8gPSB7fTtcbmZ1bmN0aW9uIG5vb3AoKSB7IH1cbmZ1bmN0aW9uIGNvcHkoYSkge1xuICAgIHZhciBsID0gYS5sZW5ndGg7XG4gICAgdmFyIGIgPSBBcnJheShsKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7ICsraSkge1xuICAgICAgICBiW2ldID0gYVtpXTtcbiAgICB9XG4gICAgcmV0dXJuIGI7XG59XG5leHBvcnRzLk5PX0lMID0ge1xuICAgIF9uOiBub29wLFxuICAgIF9lOiBub29wLFxuICAgIF9jOiBub29wLFxufTtcbi8vIG11dGF0ZXMgdGhlIGlucHV0XG5mdW5jdGlvbiBpbnRlcm5hbGl6ZVByb2R1Y2VyKHByb2R1Y2VyKSB7XG4gICAgcHJvZHVjZXIuX3N0YXJ0ID1cbiAgICAgICAgZnVuY3Rpb24gX3N0YXJ0KGlsKSB7XG4gICAgICAgICAgICBpbC5uZXh0ID0gaWwuX247XG4gICAgICAgICAgICBpbC5lcnJvciA9IGlsLl9lO1xuICAgICAgICAgICAgaWwuY29tcGxldGUgPSBpbC5fYztcbiAgICAgICAgICAgIHRoaXMuc3RhcnQoaWwpO1xuICAgICAgICB9O1xuICAgIHByb2R1Y2VyLl9zdG9wID0gcHJvZHVjZXIuc3RvcDtcbn1cbmZ1bmN0aW9uIGNvbXBvc2UyKGYxLCBmMikge1xuICAgIHJldHVybiBmdW5jdGlvbiBjb21wb3NlZEZuKGFyZykge1xuICAgICAgICByZXR1cm4gZjEoZjIoYXJnKSk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIGFuZChmMSwgZjIpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gYW5kRm4odCkge1xuICAgICAgICByZXR1cm4gZjEodCkgJiYgZjIodCk7XG4gICAgfTtcbn1cbnZhciBNZXJnZVByb2R1Y2VyID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBNZXJnZVByb2R1Y2VyKGluc0Fycikge1xuICAgICAgICB0aGlzLnR5cGUgPSAnbWVyZ2UnO1xuICAgICAgICB0aGlzLmluc0FyciA9IGluc0FycjtcbiAgICAgICAgdGhpcy5vdXQgPSBOTztcbiAgICAgICAgdGhpcy5hYyA9IDA7XG4gICAgfVxuICAgIE1lcmdlUHJvZHVjZXIucHJvdG90eXBlLl9zdGFydCA9IGZ1bmN0aW9uIChvdXQpIHtcbiAgICAgICAgdGhpcy5vdXQgPSBvdXQ7XG4gICAgICAgIHZhciBzID0gdGhpcy5pbnNBcnI7XG4gICAgICAgIHZhciBMID0gcy5sZW5ndGg7XG4gICAgICAgIHRoaXMuYWMgPSBMO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IEw7IGkrKykge1xuICAgICAgICAgICAgc1tpXS5fYWRkKHRoaXMpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBNZXJnZVByb2R1Y2VyLnByb3RvdHlwZS5fc3RvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHMgPSB0aGlzLmluc0FycjtcbiAgICAgICAgdmFyIEwgPSBzLmxlbmd0aDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBMOyBpKyspIHtcbiAgICAgICAgICAgIHNbaV0uX3JlbW92ZSh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm91dCA9IE5PO1xuICAgIH07XG4gICAgTWVyZ2VQcm9kdWNlci5wcm90b3R5cGUuX24gPSBmdW5jdGlvbiAodCkge1xuICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICBpZiAodSA9PT0gTk8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHUuX24odCk7XG4gICAgfTtcbiAgICBNZXJnZVByb2R1Y2VyLnByb3RvdHlwZS5fZSA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKHUgPT09IE5PKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB1Ll9lKGVycik7XG4gICAgfTtcbiAgICBNZXJnZVByb2R1Y2VyLnByb3RvdHlwZS5fYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKC0tdGhpcy5hYyA8PSAwKSB7XG4gICAgICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICAgICAgaWYgKHUgPT09IE5PKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIHUuX2MoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIE1lcmdlUHJvZHVjZXI7XG59KCkpO1xuZXhwb3J0cy5NZXJnZVByb2R1Y2VyID0gTWVyZ2VQcm9kdWNlcjtcbnZhciBDb21iaW5lTGlzdGVuZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIENvbWJpbmVMaXN0ZW5lcihpLCBvdXQsIHApIHtcbiAgICAgICAgdGhpcy5pID0gaTtcbiAgICAgICAgdGhpcy5vdXQgPSBvdXQ7XG4gICAgICAgIHRoaXMucCA9IHA7XG4gICAgICAgIHAuaWxzLnB1c2godGhpcyk7XG4gICAgfVxuICAgIENvbWJpbmVMaXN0ZW5lci5wcm90b3R5cGUuX24gPSBmdW5jdGlvbiAodCkge1xuICAgICAgICB2YXIgcCA9IHRoaXMucCwgb3V0ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICghb3V0KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAocC51cCh0LCB0aGlzLmkpKSB7XG4gICAgICAgICAgICBvdXQuX24ocC52YWxzKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgQ29tYmluZUxpc3RlbmVyLnByb3RvdHlwZS5fZSA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgdmFyIG91dCA9IHRoaXMub3V0O1xuICAgICAgICBpZiAoIW91dClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgb3V0Ll9lKGVycik7XG4gICAgfTtcbiAgICBDb21iaW5lTGlzdGVuZXIucHJvdG90eXBlLl9jID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcCA9IHRoaXMucDtcbiAgICAgICAgaWYgKCFwLm91dClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKC0tcC5OYyA9PT0gMCkge1xuICAgICAgICAgICAgcC5vdXQuX2MoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIENvbWJpbmVMaXN0ZW5lcjtcbn0oKSk7XG5leHBvcnRzLkNvbWJpbmVMaXN0ZW5lciA9IENvbWJpbmVMaXN0ZW5lcjtcbnZhciBDb21iaW5lUHJvZHVjZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIENvbWJpbmVQcm9kdWNlcihpbnNBcnIpIHtcbiAgICAgICAgdGhpcy50eXBlID0gJ2NvbWJpbmUnO1xuICAgICAgICB0aGlzLmluc0FyciA9IGluc0FycjtcbiAgICAgICAgdGhpcy5vdXQgPSBOTztcbiAgICAgICAgdGhpcy5pbHMgPSBbXTtcbiAgICAgICAgdGhpcy5OYyA9IHRoaXMuTm4gPSAwO1xuICAgICAgICB0aGlzLnZhbHMgPSBbXTtcbiAgICB9XG4gICAgQ29tYmluZVByb2R1Y2VyLnByb3RvdHlwZS51cCA9IGZ1bmN0aW9uICh0LCBpKSB7XG4gICAgICAgIHZhciB2ID0gdGhpcy52YWxzW2ldO1xuICAgICAgICB2YXIgTm4gPSAhdGhpcy5ObiA/IDAgOiB2ID09PSBOTyA/IC0tdGhpcy5ObiA6IHRoaXMuTm47XG4gICAgICAgIHRoaXMudmFsc1tpXSA9IHQ7XG4gICAgICAgIHJldHVybiBObiA9PT0gMDtcbiAgICB9O1xuICAgIENvbWJpbmVQcm9kdWNlci5wcm90b3R5cGUuX3N0YXJ0ID0gZnVuY3Rpb24gKG91dCkge1xuICAgICAgICB0aGlzLm91dCA9IG91dDtcbiAgICAgICAgdmFyIHMgPSB0aGlzLmluc0FycjtcbiAgICAgICAgdmFyIG4gPSB0aGlzLk5jID0gdGhpcy5ObiA9IHMubGVuZ3RoO1xuICAgICAgICB2YXIgdmFscyA9IHRoaXMudmFscyA9IG5ldyBBcnJheShuKTtcbiAgICAgICAgaWYgKG4gPT09IDApIHtcbiAgICAgICAgICAgIG91dC5fbihbXSk7XG4gICAgICAgICAgICBvdXQuX2MoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFsc1tpXSA9IE5PO1xuICAgICAgICAgICAgICAgIHNbaV0uX2FkZChuZXcgQ29tYmluZUxpc3RlbmVyKGksIG91dCwgdGhpcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBDb21iaW5lUHJvZHVjZXIucHJvdG90eXBlLl9zdG9wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcyA9IHRoaXMuaW5zQXJyO1xuICAgICAgICB2YXIgbiA9IHMubGVuZ3RoO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgc1tpXS5fcmVtb3ZlKHRoaXMuaWxzW2ldKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm91dCA9IE5PO1xuICAgICAgICB0aGlzLmlscyA9IFtdO1xuICAgICAgICB0aGlzLnZhbHMgPSBbXTtcbiAgICB9O1xuICAgIHJldHVybiBDb21iaW5lUHJvZHVjZXI7XG59KCkpO1xuZXhwb3J0cy5Db21iaW5lUHJvZHVjZXIgPSBDb21iaW5lUHJvZHVjZXI7XG52YXIgRnJvbUFycmF5UHJvZHVjZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEZyb21BcnJheVByb2R1Y2VyKGEpIHtcbiAgICAgICAgdGhpcy50eXBlID0gJ2Zyb21BcnJheSc7XG4gICAgICAgIHRoaXMuYSA9IGE7XG4gICAgfVxuICAgIEZyb21BcnJheVByb2R1Y2VyLnByb3RvdHlwZS5fc3RhcnQgPSBmdW5jdGlvbiAob3V0KSB7XG4gICAgICAgIHZhciBhID0gdGhpcy5hO1xuICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGEubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICBvdXQuX24oYVtpXSk7XG4gICAgICAgIH1cbiAgICAgICAgb3V0Ll9jKCk7XG4gICAgfTtcbiAgICBGcm9tQXJyYXlQcm9kdWNlci5wcm90b3R5cGUuX3N0b3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgfTtcbiAgICByZXR1cm4gRnJvbUFycmF5UHJvZHVjZXI7XG59KCkpO1xuZXhwb3J0cy5Gcm9tQXJyYXlQcm9kdWNlciA9IEZyb21BcnJheVByb2R1Y2VyO1xudmFyIEZyb21Qcm9taXNlUHJvZHVjZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEZyb21Qcm9taXNlUHJvZHVjZXIocCkge1xuICAgICAgICB0aGlzLnR5cGUgPSAnZnJvbVByb21pc2UnO1xuICAgICAgICB0aGlzLm9uID0gZmFsc2U7XG4gICAgICAgIHRoaXMucCA9IHA7XG4gICAgfVxuICAgIEZyb21Qcm9taXNlUHJvZHVjZXIucHJvdG90eXBlLl9zdGFydCA9IGZ1bmN0aW9uIChvdXQpIHtcbiAgICAgICAgdmFyIHByb2QgPSB0aGlzO1xuICAgICAgICB0aGlzLm9uID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wLnRoZW4oZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgICAgIGlmIChwcm9kLm9uKSB7XG4gICAgICAgICAgICAgICAgb3V0Ll9uKHYpO1xuICAgICAgICAgICAgICAgIG91dC5fYygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgb3V0Ll9lKGUpO1xuICAgICAgICB9KS50aGVuKG51bGwsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyB0aHJvdyBlcnI7IH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIEZyb21Qcm9taXNlUHJvZHVjZXIucHJvdG90eXBlLl9zdG9wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLm9uID0gZmFsc2U7XG4gICAgfTtcbiAgICByZXR1cm4gRnJvbVByb21pc2VQcm9kdWNlcjtcbn0oKSk7XG5leHBvcnRzLkZyb21Qcm9taXNlUHJvZHVjZXIgPSBGcm9tUHJvbWlzZVByb2R1Y2VyO1xudmFyIFBlcmlvZGljUHJvZHVjZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFBlcmlvZGljUHJvZHVjZXIocGVyaW9kKSB7XG4gICAgICAgIHRoaXMudHlwZSA9ICdwZXJpb2RpYyc7XG4gICAgICAgIHRoaXMucGVyaW9kID0gcGVyaW9kO1xuICAgICAgICB0aGlzLmludGVydmFsSUQgPSAtMTtcbiAgICAgICAgdGhpcy5pID0gMDtcbiAgICB9XG4gICAgUGVyaW9kaWNQcm9kdWNlci5wcm90b3R5cGUuX3N0YXJ0ID0gZnVuY3Rpb24gKHN0cmVhbSkge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgIGZ1bmN0aW9uIGludGVydmFsSGFuZGxlcigpIHsgc3RyZWFtLl9uKHNlbGYuaSsrKTsgfVxuICAgICAgICB0aGlzLmludGVydmFsSUQgPSBzZXRJbnRlcnZhbChpbnRlcnZhbEhhbmRsZXIsIHRoaXMucGVyaW9kKTtcbiAgICB9O1xuICAgIFBlcmlvZGljUHJvZHVjZXIucHJvdG90eXBlLl9zdG9wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5pbnRlcnZhbElEICE9PSAtMSlcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbElEKTtcbiAgICAgICAgdGhpcy5pbnRlcnZhbElEID0gLTE7XG4gICAgICAgIHRoaXMuaSA9IDA7XG4gICAgfTtcbiAgICByZXR1cm4gUGVyaW9kaWNQcm9kdWNlcjtcbn0oKSk7XG5leHBvcnRzLlBlcmlvZGljUHJvZHVjZXIgPSBQZXJpb2RpY1Byb2R1Y2VyO1xudmFyIERlYnVnT3BlcmF0b3IgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERlYnVnT3BlcmF0b3IoYXJnLCBpbnMpIHtcbiAgICAgICAgdGhpcy50eXBlID0gJ2RlYnVnJztcbiAgICAgICAgdGhpcy5pbnMgPSBpbnM7XG4gICAgICAgIHRoaXMub3V0ID0gTk87XG4gICAgICAgIHRoaXMucyA9IG5vb3A7XG4gICAgICAgIHRoaXMubCA9ICcnO1xuICAgICAgICBpZiAodHlwZW9mIGFyZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRoaXMubCA9IGFyZztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgYXJnID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aGlzLnMgPSBhcmc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgRGVidWdPcGVyYXRvci5wcm90b3R5cGUuX3N0YXJ0ID0gZnVuY3Rpb24gKG91dCkge1xuICAgICAgICB0aGlzLm91dCA9IG91dDtcbiAgICAgICAgdGhpcy5pbnMuX2FkZCh0aGlzKTtcbiAgICB9O1xuICAgIERlYnVnT3BlcmF0b3IucHJvdG90eXBlLl9zdG9wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmlucy5fcmVtb3ZlKHRoaXMpO1xuICAgICAgICB0aGlzLm91dCA9IE5PO1xuICAgIH07XG4gICAgRGVidWdPcGVyYXRvci5wcm90b3R5cGUuX24gPSBmdW5jdGlvbiAodCkge1xuICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICBpZiAodSA9PT0gTk8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHZhciBzID0gdGhpcy5zLCBsID0gdGhpcy5sO1xuICAgICAgICBpZiAocyAhPT0gbm9vcCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBzKHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICB1Ll9lKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGwpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGwgKyAnOicsIHQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2codCk7XG4gICAgICAgIH1cbiAgICAgICAgdS5fbih0KTtcbiAgICB9O1xuICAgIERlYnVnT3BlcmF0b3IucHJvdG90eXBlLl9lID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICBpZiAodSA9PT0gTk8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHUuX2UoZXJyKTtcbiAgICB9O1xuICAgIERlYnVnT3BlcmF0b3IucHJvdG90eXBlLl9jID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICBpZiAodSA9PT0gTk8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHUuX2MoKTtcbiAgICB9O1xuICAgIHJldHVybiBEZWJ1Z09wZXJhdG9yO1xufSgpKTtcbmV4cG9ydHMuRGVidWdPcGVyYXRvciA9IERlYnVnT3BlcmF0b3I7XG52YXIgRHJvcE9wZXJhdG9yID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBEcm9wT3BlcmF0b3IobWF4LCBpbnMpIHtcbiAgICAgICAgdGhpcy50eXBlID0gJ2Ryb3AnO1xuICAgICAgICB0aGlzLmlucyA9IGlucztcbiAgICAgICAgdGhpcy5vdXQgPSBOTztcbiAgICAgICAgdGhpcy5tYXggPSBtYXg7XG4gICAgICAgIHRoaXMuZHJvcHBlZCA9IDA7XG4gICAgfVxuICAgIERyb3BPcGVyYXRvci5wcm90b3R5cGUuX3N0YXJ0ID0gZnVuY3Rpb24gKG91dCkge1xuICAgICAgICB0aGlzLm91dCA9IG91dDtcbiAgICAgICAgdGhpcy5kcm9wcGVkID0gMDtcbiAgICAgICAgdGhpcy5pbnMuX2FkZCh0aGlzKTtcbiAgICB9O1xuICAgIERyb3BPcGVyYXRvci5wcm90b3R5cGUuX3N0b3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuaW5zLl9yZW1vdmUodGhpcyk7XG4gICAgICAgIHRoaXMub3V0ID0gTk87XG4gICAgfTtcbiAgICBEcm9wT3BlcmF0b3IucHJvdG90eXBlLl9uID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKHUgPT09IE5PKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodGhpcy5kcm9wcGVkKysgPj0gdGhpcy5tYXgpXG4gICAgICAgICAgICB1Ll9uKHQpO1xuICAgIH07XG4gICAgRHJvcE9wZXJhdG9yLnByb3RvdHlwZS5fZSA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKHUgPT09IE5PKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB1Ll9lKGVycik7XG4gICAgfTtcbiAgICBEcm9wT3BlcmF0b3IucHJvdG90eXBlLl9jID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICBpZiAodSA9PT0gTk8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHUuX2MoKTtcbiAgICB9O1xuICAgIHJldHVybiBEcm9wT3BlcmF0b3I7XG59KCkpO1xuZXhwb3J0cy5Ecm9wT3BlcmF0b3IgPSBEcm9wT3BlcmF0b3I7XG52YXIgT3RoZXJJTCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gT3RoZXJJTChvdXQsIG9wKSB7XG4gICAgICAgIHRoaXMub3V0ID0gb3V0O1xuICAgICAgICB0aGlzLm9wID0gb3A7XG4gICAgfVxuICAgIE90aGVySUwucHJvdG90eXBlLl9uID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgdGhpcy5vcC5lbmQoKTtcbiAgICB9O1xuICAgIE90aGVySUwucHJvdG90eXBlLl9lID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgICB0aGlzLm91dC5fZShlcnIpO1xuICAgIH07XG4gICAgT3RoZXJJTC5wcm90b3R5cGUuX2MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMub3AuZW5kKCk7XG4gICAgfTtcbiAgICByZXR1cm4gT3RoZXJJTDtcbn0oKSk7XG52YXIgRW5kV2hlbk9wZXJhdG9yID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBFbmRXaGVuT3BlcmF0b3IobywgaW5zKSB7XG4gICAgICAgIHRoaXMudHlwZSA9ICdlbmRXaGVuJztcbiAgICAgICAgdGhpcy5pbnMgPSBpbnM7XG4gICAgICAgIHRoaXMub3V0ID0gTk87XG4gICAgICAgIHRoaXMubyA9IG87XG4gICAgICAgIHRoaXMub2lsID0gZXhwb3J0cy5OT19JTDtcbiAgICB9XG4gICAgRW5kV2hlbk9wZXJhdG9yLnByb3RvdHlwZS5fc3RhcnQgPSBmdW5jdGlvbiAob3V0KSB7XG4gICAgICAgIHRoaXMub3V0ID0gb3V0O1xuICAgICAgICB0aGlzLm8uX2FkZCh0aGlzLm9pbCA9IG5ldyBPdGhlcklMKG91dCwgdGhpcykpO1xuICAgICAgICB0aGlzLmlucy5fYWRkKHRoaXMpO1xuICAgIH07XG4gICAgRW5kV2hlbk9wZXJhdG9yLnByb3RvdHlwZS5fc3RvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5pbnMuX3JlbW92ZSh0aGlzKTtcbiAgICAgICAgdGhpcy5vLl9yZW1vdmUodGhpcy5vaWwpO1xuICAgICAgICB0aGlzLm91dCA9IE5PO1xuICAgICAgICB0aGlzLm9pbCA9IGV4cG9ydHMuTk9fSUw7XG4gICAgfTtcbiAgICBFbmRXaGVuT3BlcmF0b3IucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKHUgPT09IE5PKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB1Ll9jKCk7XG4gICAgfTtcbiAgICBFbmRXaGVuT3BlcmF0b3IucHJvdG90eXBlLl9uID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKHUgPT09IE5PKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB1Ll9uKHQpO1xuICAgIH07XG4gICAgRW5kV2hlbk9wZXJhdG9yLnByb3RvdHlwZS5fZSA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKHUgPT09IE5PKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB1Ll9lKGVycik7XG4gICAgfTtcbiAgICBFbmRXaGVuT3BlcmF0b3IucHJvdG90eXBlLl9jID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmVuZCgpO1xuICAgIH07XG4gICAgcmV0dXJuIEVuZFdoZW5PcGVyYXRvcjtcbn0oKSk7XG5leHBvcnRzLkVuZFdoZW5PcGVyYXRvciA9IEVuZFdoZW5PcGVyYXRvcjtcbnZhciBGaWx0ZXJPcGVyYXRvciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRmlsdGVyT3BlcmF0b3IocGFzc2VzLCBpbnMpIHtcbiAgICAgICAgdGhpcy50eXBlID0gJ2ZpbHRlcic7XG4gICAgICAgIHRoaXMuaW5zID0gaW5zO1xuICAgICAgICB0aGlzLm91dCA9IE5PO1xuICAgICAgICB0aGlzLnBhc3NlcyA9IHBhc3NlcztcbiAgICB9XG4gICAgRmlsdGVyT3BlcmF0b3IucHJvdG90eXBlLl9zdGFydCA9IGZ1bmN0aW9uIChvdXQpIHtcbiAgICAgICAgdGhpcy5vdXQgPSBvdXQ7XG4gICAgICAgIHRoaXMuaW5zLl9hZGQodGhpcyk7XG4gICAgfTtcbiAgICBGaWx0ZXJPcGVyYXRvci5wcm90b3R5cGUuX3N0b3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuaW5zLl9yZW1vdmUodGhpcyk7XG4gICAgICAgIHRoaXMub3V0ID0gTk87XG4gICAgfTtcbiAgICBGaWx0ZXJPcGVyYXRvci5wcm90b3R5cGUuX24gPSBmdW5jdGlvbiAodCkge1xuICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICBpZiAodSA9PT0gTk8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wYXNzZXModCkpXG4gICAgICAgICAgICAgICAgdS5fbih0KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdS5fZShlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgRmlsdGVyT3BlcmF0b3IucHJvdG90eXBlLl9lID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICBpZiAodSA9PT0gTk8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHUuX2UoZXJyKTtcbiAgICB9O1xuICAgIEZpbHRlck9wZXJhdG9yLnByb3RvdHlwZS5fYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKHUgPT09IE5PKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB1Ll9jKCk7XG4gICAgfTtcbiAgICByZXR1cm4gRmlsdGVyT3BlcmF0b3I7XG59KCkpO1xuZXhwb3J0cy5GaWx0ZXJPcGVyYXRvciA9IEZpbHRlck9wZXJhdG9yO1xudmFyIEZsYXR0ZW5MaXN0ZW5lciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRmxhdHRlbkxpc3RlbmVyKG91dCwgb3ApIHtcbiAgICAgICAgdGhpcy5vdXQgPSBvdXQ7XG4gICAgICAgIHRoaXMub3AgPSBvcDtcbiAgICB9XG4gICAgRmxhdHRlbkxpc3RlbmVyLnByb3RvdHlwZS5fbiA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHRoaXMub3V0Ll9uKHQpO1xuICAgIH07XG4gICAgRmxhdHRlbkxpc3RlbmVyLnByb3RvdHlwZS5fZSA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgdGhpcy5vdXQuX2UoZXJyKTtcbiAgICB9O1xuICAgIEZsYXR0ZW5MaXN0ZW5lci5wcm90b3R5cGUuX2MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMub3AuaW5uZXIgPSBOTztcbiAgICAgICAgdGhpcy5vcC5sZXNzKCk7XG4gICAgfTtcbiAgICByZXR1cm4gRmxhdHRlbkxpc3RlbmVyO1xufSgpKTtcbnZhciBGbGF0dGVuT3BlcmF0b3IgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEZsYXR0ZW5PcGVyYXRvcihpbnMpIHtcbiAgICAgICAgdGhpcy50eXBlID0gJ2ZsYXR0ZW4nO1xuICAgICAgICB0aGlzLmlucyA9IGlucztcbiAgICAgICAgdGhpcy5vdXQgPSBOTztcbiAgICAgICAgdGhpcy5vcGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pbm5lciA9IE5PO1xuICAgICAgICB0aGlzLmlsID0gZXhwb3J0cy5OT19JTDtcbiAgICB9XG4gICAgRmxhdHRlbk9wZXJhdG9yLnByb3RvdHlwZS5fc3RhcnQgPSBmdW5jdGlvbiAob3V0KSB7XG4gICAgICAgIHRoaXMub3V0ID0gb3V0O1xuICAgICAgICB0aGlzLm9wZW4gPSB0cnVlO1xuICAgICAgICB0aGlzLmlubmVyID0gTk87XG4gICAgICAgIHRoaXMuaWwgPSBleHBvcnRzLk5PX0lMO1xuICAgICAgICB0aGlzLmlucy5fYWRkKHRoaXMpO1xuICAgIH07XG4gICAgRmxhdHRlbk9wZXJhdG9yLnByb3RvdHlwZS5fc3RvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5pbnMuX3JlbW92ZSh0aGlzKTtcbiAgICAgICAgaWYgKHRoaXMuaW5uZXIgIT09IE5PKVxuICAgICAgICAgICAgdGhpcy5pbm5lci5fcmVtb3ZlKHRoaXMuaWwpO1xuICAgICAgICB0aGlzLm91dCA9IE5PO1xuICAgICAgICB0aGlzLm9wZW4gPSB0cnVlO1xuICAgICAgICB0aGlzLmlubmVyID0gTk87XG4gICAgICAgIHRoaXMuaWwgPSBleHBvcnRzLk5PX0lMO1xuICAgIH07XG4gICAgRmxhdHRlbk9wZXJhdG9yLnByb3RvdHlwZS5sZXNzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICBpZiAodSA9PT0gTk8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICghdGhpcy5vcGVuICYmIHRoaXMuaW5uZXIgPT09IE5PKVxuICAgICAgICAgICAgdS5fYygpO1xuICAgIH07XG4gICAgRmxhdHRlbk9wZXJhdG9yLnByb3RvdHlwZS5fbiA9IGZ1bmN0aW9uIChzKSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICh1ID09PSBOTylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgaW5uZXIgPSBfYS5pbm5lciwgaWwgPSBfYS5pbDtcbiAgICAgICAgaWYgKHMgPT09IGlubmVyICYmIHMuX3Byb2QgIT09IE5PKVxuICAgICAgICAgICAgcy5fc3RvcE5vdygpO1xuICAgICAgICBpZiAoaW5uZXIgIT09IE5PICYmIGlsICE9PSBleHBvcnRzLk5PX0lMKVxuICAgICAgICAgICAgaW5uZXIuX3JlbW92ZShpbCk7XG4gICAgICAgICh0aGlzLmlubmVyID0gcykuX2FkZCh0aGlzLmlsID0gbmV3IEZsYXR0ZW5MaXN0ZW5lcih1LCB0aGlzKSk7XG4gICAgfTtcbiAgICBGbGF0dGVuT3BlcmF0b3IucHJvdG90eXBlLl9lID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICBpZiAodSA9PT0gTk8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHUuX2UoZXJyKTtcbiAgICB9O1xuICAgIEZsYXR0ZW5PcGVyYXRvci5wcm90b3R5cGUuX2MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxlc3MoKTtcbiAgICB9O1xuICAgIHJldHVybiBGbGF0dGVuT3BlcmF0b3I7XG59KCkpO1xuZXhwb3J0cy5GbGF0dGVuT3BlcmF0b3IgPSBGbGF0dGVuT3BlcmF0b3I7XG52YXIgRm9sZE9wZXJhdG9yID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBGb2xkT3BlcmF0b3IoZiwgc2VlZCwgaW5zKSB7XG4gICAgICAgIHRoaXMudHlwZSA9ICdmb2xkJztcbiAgICAgICAgdGhpcy5pbnMgPSBpbnM7XG4gICAgICAgIHRoaXMub3V0ID0gTk87XG4gICAgICAgIHRoaXMuZiA9IGY7XG4gICAgICAgIHRoaXMuYWNjID0gdGhpcy5zZWVkID0gc2VlZDtcbiAgICB9XG4gICAgRm9sZE9wZXJhdG9yLnByb3RvdHlwZS5fc3RhcnQgPSBmdW5jdGlvbiAob3V0KSB7XG4gICAgICAgIHRoaXMub3V0ID0gb3V0O1xuICAgICAgICB0aGlzLmFjYyA9IHRoaXMuc2VlZDtcbiAgICAgICAgb3V0Ll9uKHRoaXMuYWNjKTtcbiAgICAgICAgdGhpcy5pbnMuX2FkZCh0aGlzKTtcbiAgICB9O1xuICAgIEZvbGRPcGVyYXRvci5wcm90b3R5cGUuX3N0b3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuaW5zLl9yZW1vdmUodGhpcyk7XG4gICAgICAgIHRoaXMub3V0ID0gTk87XG4gICAgICAgIHRoaXMuYWNjID0gdGhpcy5zZWVkO1xuICAgIH07XG4gICAgRm9sZE9wZXJhdG9yLnByb3RvdHlwZS5fbiA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICh1ID09PSBOTylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHUuX24odGhpcy5hY2MgPSB0aGlzLmYodGhpcy5hY2MsIHQpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdS5fZShlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgRm9sZE9wZXJhdG9yLnByb3RvdHlwZS5fZSA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKHUgPT09IE5PKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB1Ll9lKGVycik7XG4gICAgfTtcbiAgICBGb2xkT3BlcmF0b3IucHJvdG90eXBlLl9jID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICBpZiAodSA9PT0gTk8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHUuX2MoKTtcbiAgICB9O1xuICAgIHJldHVybiBGb2xkT3BlcmF0b3I7XG59KCkpO1xuZXhwb3J0cy5Gb2xkT3BlcmF0b3IgPSBGb2xkT3BlcmF0b3I7XG52YXIgTGFzdE9wZXJhdG9yID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBMYXN0T3BlcmF0b3IoaW5zKSB7XG4gICAgICAgIHRoaXMudHlwZSA9ICdsYXN0JztcbiAgICAgICAgdGhpcy5pbnMgPSBpbnM7XG4gICAgICAgIHRoaXMub3V0ID0gTk87XG4gICAgICAgIHRoaXMuaGFzID0gZmFsc2U7XG4gICAgICAgIHRoaXMudmFsID0gTk87XG4gICAgfVxuICAgIExhc3RPcGVyYXRvci5wcm90b3R5cGUuX3N0YXJ0ID0gZnVuY3Rpb24gKG91dCkge1xuICAgICAgICB0aGlzLm91dCA9IG91dDtcbiAgICAgICAgdGhpcy5oYXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbnMuX2FkZCh0aGlzKTtcbiAgICB9O1xuICAgIExhc3RPcGVyYXRvci5wcm90b3R5cGUuX3N0b3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuaW5zLl9yZW1vdmUodGhpcyk7XG4gICAgICAgIHRoaXMub3V0ID0gTk87XG4gICAgICAgIHRoaXMudmFsID0gTk87XG4gICAgfTtcbiAgICBMYXN0T3BlcmF0b3IucHJvdG90eXBlLl9uID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgdGhpcy5oYXMgPSB0cnVlO1xuICAgICAgICB0aGlzLnZhbCA9IHQ7XG4gICAgfTtcbiAgICBMYXN0T3BlcmF0b3IucHJvdG90eXBlLl9lID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICBpZiAodSA9PT0gTk8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHUuX2UoZXJyKTtcbiAgICB9O1xuICAgIExhc3RPcGVyYXRvci5wcm90b3R5cGUuX2MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICh1ID09PSBOTylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHRoaXMuaGFzKSB7XG4gICAgICAgICAgICB1Ll9uKHRoaXMudmFsKTtcbiAgICAgICAgICAgIHUuX2MoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHUuX2UoJ1RPRE8gc2hvdyBwcm9wZXIgZXJyb3InKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIExhc3RPcGVyYXRvcjtcbn0oKSk7XG5leHBvcnRzLkxhc3RPcGVyYXRvciA9IExhc3RPcGVyYXRvcjtcbnZhciBNYXBGbGF0dGVuSW5uZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE1hcEZsYXR0ZW5Jbm5lcihvdXQsIG9wKSB7XG4gICAgICAgIHRoaXMub3V0ID0gb3V0O1xuICAgICAgICB0aGlzLm9wID0gb3A7XG4gICAgfVxuICAgIE1hcEZsYXR0ZW5Jbm5lci5wcm90b3R5cGUuX24gPSBmdW5jdGlvbiAocikge1xuICAgICAgICB0aGlzLm91dC5fbihyKTtcbiAgICB9O1xuICAgIE1hcEZsYXR0ZW5Jbm5lci5wcm90b3R5cGUuX2UgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHRoaXMub3V0Ll9lKGVycik7XG4gICAgfTtcbiAgICBNYXBGbGF0dGVuSW5uZXIucHJvdG90eXBlLl9jID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLm9wLmlubmVyID0gTk87XG4gICAgICAgIHRoaXMub3AubGVzcygpO1xuICAgIH07XG4gICAgcmV0dXJuIE1hcEZsYXR0ZW5Jbm5lcjtcbn0oKSk7XG52YXIgTWFwRmxhdHRlbk9wZXJhdG9yID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBNYXBGbGF0dGVuT3BlcmF0b3IobWFwT3ApIHtcbiAgICAgICAgdGhpcy50eXBlID0gbWFwT3AudHlwZSArIFwiK2ZsYXR0ZW5cIjtcbiAgICAgICAgdGhpcy5pbnMgPSBtYXBPcC5pbnM7XG4gICAgICAgIHRoaXMub3V0ID0gTk87XG4gICAgICAgIHRoaXMubWFwT3AgPSBtYXBPcDtcbiAgICAgICAgdGhpcy5pbm5lciA9IE5PO1xuICAgICAgICB0aGlzLmlsID0gZXhwb3J0cy5OT19JTDtcbiAgICAgICAgdGhpcy5vcGVuID0gdHJ1ZTtcbiAgICB9XG4gICAgTWFwRmxhdHRlbk9wZXJhdG9yLnByb3RvdHlwZS5fc3RhcnQgPSBmdW5jdGlvbiAob3V0KSB7XG4gICAgICAgIHRoaXMub3V0ID0gb3V0O1xuICAgICAgICB0aGlzLmlubmVyID0gTk87XG4gICAgICAgIHRoaXMuaWwgPSBleHBvcnRzLk5PX0lMO1xuICAgICAgICB0aGlzLm9wZW4gPSB0cnVlO1xuICAgICAgICB0aGlzLm1hcE9wLmlucy5fYWRkKHRoaXMpO1xuICAgIH07XG4gICAgTWFwRmxhdHRlbk9wZXJhdG9yLnByb3RvdHlwZS5fc3RvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5tYXBPcC5pbnMuX3JlbW92ZSh0aGlzKTtcbiAgICAgICAgaWYgKHRoaXMuaW5uZXIgIT09IE5PKVxuICAgICAgICAgICAgdGhpcy5pbm5lci5fcmVtb3ZlKHRoaXMuaWwpO1xuICAgICAgICB0aGlzLm91dCA9IE5PO1xuICAgICAgICB0aGlzLmlubmVyID0gTk87XG4gICAgICAgIHRoaXMuaWwgPSBleHBvcnRzLk5PX0lMO1xuICAgIH07XG4gICAgTWFwRmxhdHRlbk9wZXJhdG9yLnByb3RvdHlwZS5sZXNzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXRoaXMub3BlbiAmJiB0aGlzLmlubmVyID09PSBOTykge1xuICAgICAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgICAgIGlmICh1ID09PSBOTylcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB1Ll9jKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIE1hcEZsYXR0ZW5PcGVyYXRvci5wcm90b3R5cGUuX24gPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICBpZiAodSA9PT0gTk8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIGlubmVyID0gX2EuaW5uZXIsIGlsID0gX2EuaWw7XG4gICAgICAgIHZhciBzO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcyA9IHRoaXMubWFwT3AucHJvamVjdCh2KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdS5fZShlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAocyA9PT0gaW5uZXIgJiYgcy5fcHJvZCAhPT0gTk8pXG4gICAgICAgICAgICBzLl9zdG9wTm93KCk7XG4gICAgICAgIGlmIChpbm5lciAhPT0gTk8gJiYgaWwgIT09IGV4cG9ydHMuTk9fSUwpXG4gICAgICAgICAgICBpbm5lci5fcmVtb3ZlKGlsKTtcbiAgICAgICAgKHRoaXMuaW5uZXIgPSBzKS5fYWRkKHRoaXMuaWwgPSBuZXcgTWFwRmxhdHRlbklubmVyKHUsIHRoaXMpKTtcbiAgICB9O1xuICAgIE1hcEZsYXR0ZW5PcGVyYXRvci5wcm90b3R5cGUuX2UgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICh1ID09PSBOTylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdS5fZShlcnIpO1xuICAgIH07XG4gICAgTWFwRmxhdHRlbk9wZXJhdG9yLnByb3RvdHlwZS5fYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMubGVzcygpO1xuICAgIH07XG4gICAgcmV0dXJuIE1hcEZsYXR0ZW5PcGVyYXRvcjtcbn0oKSk7XG5leHBvcnRzLk1hcEZsYXR0ZW5PcGVyYXRvciA9IE1hcEZsYXR0ZW5PcGVyYXRvcjtcbnZhciBNYXBPcGVyYXRvciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gTWFwT3BlcmF0b3IocHJvamVjdCwgaW5zKSB7XG4gICAgICAgIHRoaXMudHlwZSA9ICdtYXAnO1xuICAgICAgICB0aGlzLmlucyA9IGlucztcbiAgICAgICAgdGhpcy5vdXQgPSBOTztcbiAgICAgICAgdGhpcy5wcm9qZWN0ID0gcHJvamVjdDtcbiAgICB9XG4gICAgTWFwT3BlcmF0b3IucHJvdG90eXBlLl9zdGFydCA9IGZ1bmN0aW9uIChvdXQpIHtcbiAgICAgICAgdGhpcy5vdXQgPSBvdXQ7XG4gICAgICAgIHRoaXMuaW5zLl9hZGQodGhpcyk7XG4gICAgfTtcbiAgICBNYXBPcGVyYXRvci5wcm90b3R5cGUuX3N0b3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuaW5zLl9yZW1vdmUodGhpcyk7XG4gICAgICAgIHRoaXMub3V0ID0gTk87XG4gICAgfTtcbiAgICBNYXBPcGVyYXRvci5wcm90b3R5cGUuX24gPSBmdW5jdGlvbiAodCkge1xuICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICBpZiAodSA9PT0gTk8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB1Ll9uKHRoaXMucHJvamVjdCh0KSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHUuX2UoZSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIE1hcE9wZXJhdG9yLnByb3RvdHlwZS5fZSA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKHUgPT09IE5PKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB1Ll9lKGVycik7XG4gICAgfTtcbiAgICBNYXBPcGVyYXRvci5wcm90b3R5cGUuX2MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICh1ID09PSBOTylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdS5fYygpO1xuICAgIH07XG4gICAgcmV0dXJuIE1hcE9wZXJhdG9yO1xufSgpKTtcbmV4cG9ydHMuTWFwT3BlcmF0b3IgPSBNYXBPcGVyYXRvcjtcbnZhciBGaWx0ZXJNYXBPcGVyYXRvciA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEZpbHRlck1hcE9wZXJhdG9yLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEZpbHRlck1hcE9wZXJhdG9yKHBhc3NlcywgcHJvamVjdCwgaW5zKSB7XG4gICAgICAgIF9zdXBlci5jYWxsKHRoaXMsIHByb2plY3QsIGlucyk7XG4gICAgICAgIHRoaXMudHlwZSA9ICdmaWx0ZXIrbWFwJztcbiAgICAgICAgdGhpcy5wYXNzZXMgPSBwYXNzZXM7XG4gICAgfVxuICAgIEZpbHRlck1hcE9wZXJhdG9yLnByb3RvdHlwZS5fbiA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIGlmICh0aGlzLnBhc3Nlcyh2KSkge1xuICAgICAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5fbi5jYWxsKHRoaXMsIHYpO1xuICAgICAgICB9XG4gICAgICAgIDtcbiAgICB9O1xuICAgIHJldHVybiBGaWx0ZXJNYXBPcGVyYXRvcjtcbn0oTWFwT3BlcmF0b3IpKTtcbmV4cG9ydHMuRmlsdGVyTWFwT3BlcmF0b3IgPSBGaWx0ZXJNYXBPcGVyYXRvcjtcbnZhciBSZW1lbWJlck9wZXJhdG9yID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBSZW1lbWJlck9wZXJhdG9yKGlucykge1xuICAgICAgICB0aGlzLnR5cGUgPSAncmVtZW1iZXInO1xuICAgICAgICB0aGlzLmlucyA9IGlucztcbiAgICAgICAgdGhpcy5vdXQgPSBOTztcbiAgICB9XG4gICAgUmVtZW1iZXJPcGVyYXRvci5wcm90b3R5cGUuX3N0YXJ0ID0gZnVuY3Rpb24gKG91dCkge1xuICAgICAgICB0aGlzLm91dCA9IG91dDtcbiAgICAgICAgdGhpcy5pbnMuX2FkZChvdXQpO1xuICAgIH07XG4gICAgUmVtZW1iZXJPcGVyYXRvci5wcm90b3R5cGUuX3N0b3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuaW5zLl9yZW1vdmUodGhpcy5vdXQpO1xuICAgICAgICB0aGlzLm91dCA9IE5PO1xuICAgIH07XG4gICAgcmV0dXJuIFJlbWVtYmVyT3BlcmF0b3I7XG59KCkpO1xuZXhwb3J0cy5SZW1lbWJlck9wZXJhdG9yID0gUmVtZW1iZXJPcGVyYXRvcjtcbnZhciBSZXBsYWNlRXJyb3JPcGVyYXRvciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gUmVwbGFjZUVycm9yT3BlcmF0b3IoZm4sIGlucykge1xuICAgICAgICB0aGlzLnR5cGUgPSAncmVwbGFjZUVycm9yJztcbiAgICAgICAgdGhpcy5pbnMgPSBpbnM7XG4gICAgICAgIHRoaXMub3V0ID0gTk87XG4gICAgICAgIHRoaXMuZm4gPSBmbjtcbiAgICB9XG4gICAgUmVwbGFjZUVycm9yT3BlcmF0b3IucHJvdG90eXBlLl9zdGFydCA9IGZ1bmN0aW9uIChvdXQpIHtcbiAgICAgICAgdGhpcy5vdXQgPSBvdXQ7XG4gICAgICAgIHRoaXMuaW5zLl9hZGQodGhpcyk7XG4gICAgfTtcbiAgICBSZXBsYWNlRXJyb3JPcGVyYXRvci5wcm90b3R5cGUuX3N0b3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuaW5zLl9yZW1vdmUodGhpcyk7XG4gICAgICAgIHRoaXMub3V0ID0gTk87XG4gICAgfTtcbiAgICBSZXBsYWNlRXJyb3JPcGVyYXRvci5wcm90b3R5cGUuX24gPSBmdW5jdGlvbiAodCkge1xuICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICBpZiAodSA9PT0gTk8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHUuX24odCk7XG4gICAgfTtcbiAgICBSZXBsYWNlRXJyb3JPcGVyYXRvci5wcm90b3R5cGUuX2UgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICh1ID09PSBOTylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuaW5zLl9yZW1vdmUodGhpcyk7XG4gICAgICAgICAgICAodGhpcy5pbnMgPSB0aGlzLmZuKGVycikpLl9hZGQodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHUuX2UoZSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFJlcGxhY2VFcnJvck9wZXJhdG9yLnByb3RvdHlwZS5fYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKHUgPT09IE5PKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB1Ll9jKCk7XG4gICAgfTtcbiAgICByZXR1cm4gUmVwbGFjZUVycm9yT3BlcmF0b3I7XG59KCkpO1xuZXhwb3J0cy5SZXBsYWNlRXJyb3JPcGVyYXRvciA9IFJlcGxhY2VFcnJvck9wZXJhdG9yO1xudmFyIFN0YXJ0V2l0aE9wZXJhdG9yID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBTdGFydFdpdGhPcGVyYXRvcihpbnMsIHZhbCkge1xuICAgICAgICB0aGlzLnR5cGUgPSAnc3RhcnRXaXRoJztcbiAgICAgICAgdGhpcy5pbnMgPSBpbnM7XG4gICAgICAgIHRoaXMub3V0ID0gTk87XG4gICAgICAgIHRoaXMudmFsID0gdmFsO1xuICAgIH1cbiAgICBTdGFydFdpdGhPcGVyYXRvci5wcm90b3R5cGUuX3N0YXJ0ID0gZnVuY3Rpb24gKG91dCkge1xuICAgICAgICB0aGlzLm91dCA9IG91dDtcbiAgICAgICAgdGhpcy5vdXQuX24odGhpcy52YWwpO1xuICAgICAgICB0aGlzLmlucy5fYWRkKG91dCk7XG4gICAgfTtcbiAgICBTdGFydFdpdGhPcGVyYXRvci5wcm90b3R5cGUuX3N0b3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuaW5zLl9yZW1vdmUodGhpcy5vdXQpO1xuICAgICAgICB0aGlzLm91dCA9IE5PO1xuICAgIH07XG4gICAgcmV0dXJuIFN0YXJ0V2l0aE9wZXJhdG9yO1xufSgpKTtcbmV4cG9ydHMuU3RhcnRXaXRoT3BlcmF0b3IgPSBTdGFydFdpdGhPcGVyYXRvcjtcbnZhciBUYWtlT3BlcmF0b3IgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFRha2VPcGVyYXRvcihtYXgsIGlucykge1xuICAgICAgICB0aGlzLnR5cGUgPSAndGFrZSc7XG4gICAgICAgIHRoaXMuaW5zID0gaW5zO1xuICAgICAgICB0aGlzLm91dCA9IE5PO1xuICAgICAgICB0aGlzLm1heCA9IG1heDtcbiAgICAgICAgdGhpcy50YWtlbiA9IDA7XG4gICAgfVxuICAgIFRha2VPcGVyYXRvci5wcm90b3R5cGUuX3N0YXJ0ID0gZnVuY3Rpb24gKG91dCkge1xuICAgICAgICB0aGlzLm91dCA9IG91dDtcbiAgICAgICAgdGhpcy50YWtlbiA9IDA7XG4gICAgICAgIHRoaXMuaW5zLl9hZGQodGhpcyk7XG4gICAgfTtcbiAgICBUYWtlT3BlcmF0b3IucHJvdG90eXBlLl9zdG9wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmlucy5fcmVtb3ZlKHRoaXMpO1xuICAgICAgICB0aGlzLm91dCA9IE5PO1xuICAgIH07XG4gICAgVGFrZU9wZXJhdG9yLnByb3RvdHlwZS5fbiA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICh1ID09PSBOTylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHRoaXMudGFrZW4rKyA8IHRoaXMubWF4IC0gMSkge1xuICAgICAgICAgICAgdS5fbih0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHUuX24odCk7XG4gICAgICAgICAgICB1Ll9jKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFRha2VPcGVyYXRvci5wcm90b3R5cGUuX2UgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICh1ID09PSBOTylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdS5fZShlcnIpO1xuICAgIH07XG4gICAgVGFrZU9wZXJhdG9yLnByb3RvdHlwZS5fYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKHUgPT09IE5PKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB1Ll9jKCk7XG4gICAgfTtcbiAgICByZXR1cm4gVGFrZU9wZXJhdG9yO1xufSgpKTtcbmV4cG9ydHMuVGFrZU9wZXJhdG9yID0gVGFrZU9wZXJhdG9yO1xudmFyIFN0cmVhbSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU3RyZWFtKHByb2R1Y2VyKSB7XG4gICAgICAgIHRoaXMuX3Byb2QgPSBwcm9kdWNlciB8fCBOTztcbiAgICAgICAgdGhpcy5faWxzID0gW107XG4gICAgICAgIHRoaXMuX3N0b3BJRCA9IE5PO1xuICAgICAgICB0aGlzLl90YXJnZXQgPSBOTztcbiAgICAgICAgdGhpcy5fZXJyID0gTk87XG4gICAgfVxuICAgIFN0cmVhbS5wcm90b3R5cGUuX24gPSBmdW5jdGlvbiAodCkge1xuICAgICAgICB2YXIgYSA9IHRoaXMuX2lscztcbiAgICAgICAgdmFyIEwgPSBhLmxlbmd0aDtcbiAgICAgICAgaWYgKEwgPT0gMSlcbiAgICAgICAgICAgIGFbMF0uX24odCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIGIgPSBjb3B5KGEpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBMOyBpKyspXG4gICAgICAgICAgICAgICAgYltpXS5fbih0KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3RyZWFtLnByb3RvdHlwZS5fZSA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgaWYgKHRoaXMuX2VyciAhPT0gTk8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMuX2VyciA9IGVycjtcbiAgICAgICAgdmFyIGEgPSB0aGlzLl9pbHM7XG4gICAgICAgIHZhciBMID0gYS5sZW5ndGg7XG4gICAgICAgIGlmIChMID09IDEpXG4gICAgICAgICAgICBhWzBdLl9lKGVycik7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIGIgPSBjb3B5KGEpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBMOyBpKyspXG4gICAgICAgICAgICAgICAgYltpXS5fZShlcnIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3goKTtcbiAgICB9O1xuICAgIFN0cmVhbS5wcm90b3R5cGUuX2MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhID0gdGhpcy5faWxzO1xuICAgICAgICB2YXIgTCA9IGEubGVuZ3RoO1xuICAgICAgICBpZiAoTCA9PSAxKVxuICAgICAgICAgICAgYVswXS5fYygpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBiID0gY29weShhKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTDsgaSsrKVxuICAgICAgICAgICAgICAgIGJbaV0uX2MoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl94KCk7XG4gICAgfTtcbiAgICBTdHJlYW0ucHJvdG90eXBlLl94ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5faWxzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHRoaXMuX3Byb2QgIT09IE5PKVxuICAgICAgICAgICAgdGhpcy5fcHJvZC5fc3RvcCgpO1xuICAgICAgICB0aGlzLl9lcnIgPSBOTztcbiAgICAgICAgdGhpcy5faWxzID0gW107XG4gICAgfTtcbiAgICBTdHJlYW0ucHJvdG90eXBlLl9zdG9wTm93ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBXQVJOSU5HOiBjb2RlIHRoYXQgY2FsbHMgdGhpcyBtZXRob2Qgc2hvdWxkXG4gICAgICAgIC8vIGZpcnN0IGNoZWNrIGlmIHRoaXMuX3Byb2QgaXMgdmFsaWQgKG5vdCBgTk9gKVxuICAgICAgICB0aGlzLl9wcm9kLl9zdG9wKCk7XG4gICAgICAgIHRoaXMuX2VyciA9IE5PO1xuICAgICAgICB0aGlzLl9zdG9wSUQgPSBOTztcbiAgICB9O1xuICAgIFN0cmVhbS5wcm90b3R5cGUuX2FkZCA9IGZ1bmN0aW9uIChpbCkge1xuICAgICAgICB2YXIgdGEgPSB0aGlzLl90YXJnZXQ7XG4gICAgICAgIGlmICh0YSAhPT0gTk8pXG4gICAgICAgICAgICByZXR1cm4gdGEuX2FkZChpbCk7XG4gICAgICAgIHZhciBhID0gdGhpcy5faWxzO1xuICAgICAgICBhLnB1c2goaWwpO1xuICAgICAgICBpZiAoYS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9zdG9wSUQgIT09IE5PKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3N0b3BJRCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RvcElEID0gTk87XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgcCA9IHRoaXMuX3Byb2Q7XG4gICAgICAgICAgICBpZiAocCAhPT0gTk8pXG4gICAgICAgICAgICAgICAgcC5fc3RhcnQodGhpcyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN0cmVhbS5wcm90b3R5cGUuX3JlbW92ZSA9IGZ1bmN0aW9uIChpbCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgdGEgPSB0aGlzLl90YXJnZXQ7XG4gICAgICAgIGlmICh0YSAhPT0gTk8pXG4gICAgICAgICAgICByZXR1cm4gdGEuX3JlbW92ZShpbCk7XG4gICAgICAgIHZhciBhID0gdGhpcy5faWxzO1xuICAgICAgICB2YXIgaSA9IGEuaW5kZXhPZihpbCk7XG4gICAgICAgIGlmIChpID4gLTEpIHtcbiAgICAgICAgICAgIGEuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX3Byb2QgIT09IE5PICYmIGEubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIgPSBOTztcbiAgICAgICAgICAgICAgICB0aGlzLl9zdG9wSUQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIF90aGlzLl9zdG9wTm93KCk7IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoYS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcnVuZUN5Y2xlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyBJZiBhbGwgcGF0aHMgc3RlbW1pbmcgZnJvbSBgdGhpc2Agc3RyZWFtIGV2ZW50dWFsbHkgZW5kIGF0IGB0aGlzYFxuICAgIC8vIHN0cmVhbSwgdGhlbiB3ZSByZW1vdmUgdGhlIHNpbmdsZSBsaXN0ZW5lciBvZiBgdGhpc2Agc3RyZWFtLCB0b1xuICAgIC8vIGZvcmNlIGl0IHRvIGVuZCBpdHMgZXhlY3V0aW9uIGFuZCBkaXNwb3NlIHJlc291cmNlcy4gVGhpcyBtZXRob2RcbiAgICAvLyBhc3N1bWVzIGFzIGEgcHJlY29uZGl0aW9uIHRoYXQgdGhpcy5faWxzIGhhcyBqdXN0IG9uZSBsaXN0ZW5lci5cbiAgICBTdHJlYW0ucHJvdG90eXBlLl9wcnVuZUN5Y2xlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2hhc05vU2lua3ModGhpcywgW10pKSB7XG4gICAgICAgICAgICB0aGlzLl9yZW1vdmUodGhpcy5faWxzWzBdKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8gQ2hlY2tzIHdoZXRoZXIgKnRoZXJlIGlzIG5vKiBwYXRoIHN0YXJ0aW5nIGZyb20gYHhgIHRoYXQgbGVhZHMgdG8gYW4gZW5kXG4gICAgLy8gbGlzdGVuZXIgKHNpbmspIGluIHRoZSBzdHJlYW0gZ3JhcGgsIGZvbGxvd2luZyBlZGdlcyBBLT5CIHdoZXJlIEIgaXMgYVxuICAgIC8vIGxpc3RlbmVyIG9mIEEuIFRoaXMgbWVhbnMgdGhlc2UgcGF0aHMgY29uc3RpdHV0ZSBhIGN5Y2xlIHNvbWVob3cuIElzIGdpdmVuXG4gICAgLy8gYSB0cmFjZSBvZiBhbGwgdmlzaXRlZCBub2RlcyBzbyBmYXIuXG4gICAgU3RyZWFtLnByb3RvdHlwZS5faGFzTm9TaW5rcyA9IGZ1bmN0aW9uICh4LCB0cmFjZSkge1xuICAgICAgICBpZiAodHJhY2UuaW5kZXhPZih4KSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHgub3V0ID09PSB0aGlzKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh4Lm91dCAmJiB4Lm91dCAhPT0gTk8pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9oYXNOb1NpbmtzKHgub3V0LCB0cmFjZS5jb25jYXQoeCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHguX2lscykge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIE4gPSB4Ll9pbHMubGVuZ3RoOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9oYXNOb1NpbmtzKHguX2lsc1tpXSwgdHJhY2UuY29uY2F0KHgpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN0cmVhbS5wcm90b3R5cGUuY3RvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBNZW1vcnlTdHJlYW0gPyBNZW1vcnlTdHJlYW0gOiBTdHJlYW07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBBZGRzIGEgTGlzdGVuZXIgdG8gdGhlIFN0cmVhbS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7TGlzdGVuZXI8VD59IGxpc3RlbmVyXG4gICAgICovXG4gICAgU3RyZWFtLnByb3RvdHlwZS5hZGRMaXN0ZW5lciA9IGZ1bmN0aW9uIChsaXN0ZW5lcikge1xuICAgICAgICBpZiAodHlwZW9mIGxpc3RlbmVyLm5leHQgIT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgIHx8IHR5cGVvZiBsaXN0ZW5lci5lcnJvciAhPT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgfHwgdHlwZW9mIGxpc3RlbmVyLmNvbXBsZXRlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3N0cmVhbS5hZGRMaXN0ZW5lcigpIHJlcXVpcmVzIGFsbCB0aHJlZSBuZXh0LCBlcnJvciwgJyArXG4gICAgICAgICAgICAgICAgJ2FuZCBjb21wbGV0ZSBmdW5jdGlvbnMuJyk7XG4gICAgICAgIH1cbiAgICAgICAgbGlzdGVuZXIuX24gPSBsaXN0ZW5lci5uZXh0O1xuICAgICAgICBsaXN0ZW5lci5fZSA9IGxpc3RlbmVyLmVycm9yO1xuICAgICAgICBsaXN0ZW5lci5fYyA9IGxpc3RlbmVyLmNvbXBsZXRlO1xuICAgICAgICB0aGlzLl9hZGQobGlzdGVuZXIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhIExpc3RlbmVyIGZyb20gdGhlIFN0cmVhbSwgYXNzdW1pbmcgdGhlIExpc3RlbmVyIHdhcyBhZGRlZCB0byBpdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7TGlzdGVuZXI8VD59IGxpc3RlbmVyXG4gICAgICovXG4gICAgU3RyZWFtLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lciA9IGZ1bmN0aW9uIChsaXN0ZW5lcikge1xuICAgICAgICB0aGlzLl9yZW1vdmUobGlzdGVuZXIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBTdHJlYW0gZ2l2ZW4gYSBQcm9kdWNlci5cbiAgICAgKlxuICAgICAqIEBmYWN0b3J5IHRydWVcbiAgICAgKiBAcGFyYW0ge1Byb2R1Y2VyfSBwcm9kdWNlciBBbiBvcHRpb25hbCBQcm9kdWNlciB0aGF0IGRpY3RhdGVzIGhvdyB0b1xuICAgICAqIHN0YXJ0LCBnZW5lcmF0ZSBldmVudHMsIGFuZCBzdG9wIHRoZSBTdHJlYW0uXG4gICAgICogQHJldHVybiB7U3RyZWFtfVxuICAgICAqL1xuICAgIFN0cmVhbS5jcmVhdGUgPSBmdW5jdGlvbiAocHJvZHVjZXIpIHtcbiAgICAgICAgaWYgKHByb2R1Y2VyKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb2R1Y2VyLnN0YXJ0ICE9PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgfHwgdHlwZW9mIHByb2R1Y2VyLnN0b3AgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2R1Y2VyIHJlcXVpcmVzIGJvdGggc3RhcnQgYW5kIHN0b3AgZnVuY3Rpb25zJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbnRlcm5hbGl6ZVByb2R1Y2VyKHByb2R1Y2VyKTsgLy8gbXV0YXRlcyB0aGUgaW5wdXRcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbShwcm9kdWNlcik7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IE1lbW9yeVN0cmVhbSBnaXZlbiBhIFByb2R1Y2VyLlxuICAgICAqXG4gICAgICogQGZhY3RvcnkgdHJ1ZVxuICAgICAqIEBwYXJhbSB7UHJvZHVjZXJ9IHByb2R1Y2VyIEFuIG9wdGlvbmFsIFByb2R1Y2VyIHRoYXQgZGljdGF0ZXMgaG93IHRvXG4gICAgICogc3RhcnQsIGdlbmVyYXRlIGV2ZW50cywgYW5kIHN0b3AgdGhlIFN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHtNZW1vcnlTdHJlYW19XG4gICAgICovXG4gICAgU3RyZWFtLmNyZWF0ZVdpdGhNZW1vcnkgPSBmdW5jdGlvbiAocHJvZHVjZXIpIHtcbiAgICAgICAgaWYgKHByb2R1Y2VyKSB7XG4gICAgICAgICAgICBpbnRlcm5hbGl6ZVByb2R1Y2VyKHByb2R1Y2VyKTsgLy8gbXV0YXRlcyB0aGUgaW5wdXRcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IE1lbW9yeVN0cmVhbShwcm9kdWNlcik7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgU3RyZWFtIHRoYXQgZG9lcyBub3RoaW5nIHdoZW4gc3RhcnRlZC4gSXQgbmV2ZXIgZW1pdHMgYW55IGV2ZW50LlxuICAgICAqXG4gICAgICogTWFyYmxlIGRpYWdyYW06XG4gICAgICpcbiAgICAgKiBgYGB0ZXh0XG4gICAgICogICAgICAgICAgbmV2ZXJcbiAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQGZhY3RvcnkgdHJ1ZVxuICAgICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICAgKi9cbiAgICBTdHJlYW0ubmV2ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtKHsgX3N0YXJ0OiBub29wLCBfc3RvcDogbm9vcCB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBTdHJlYW0gdGhhdCBpbW1lZGlhdGVseSBlbWl0cyB0aGUgXCJjb21wbGV0ZVwiIG5vdGlmaWNhdGlvbiB3aGVuXG4gICAgICogc3RhcnRlZCwgYW5kIHRoYXQncyBpdC5cbiAgICAgKlxuICAgICAqIE1hcmJsZSBkaWFncmFtOlxuICAgICAqXG4gICAgICogYGBgdGV4dFxuICAgICAqIGVtcHR5XG4gICAgICogLXxcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBmYWN0b3J5IHRydWVcbiAgICAgKiBAcmV0dXJuIHtTdHJlYW19XG4gICAgICovXG4gICAgU3RyZWFtLmVtcHR5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbSh7XG4gICAgICAgICAgICBfc3RhcnQ6IGZ1bmN0aW9uIChpbCkgeyBpbC5fYygpOyB9LFxuICAgICAgICAgICAgX3N0b3A6IG5vb3AsXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIFN0cmVhbSB0aGF0IGltbWVkaWF0ZWx5IGVtaXRzIGFuIFwiZXJyb3JcIiBub3RpZmljYXRpb24gd2l0aCB0aGVcbiAgICAgKiB2YWx1ZSB5b3UgcGFzc2VkIGFzIHRoZSBgZXJyb3JgIGFyZ3VtZW50IHdoZW4gdGhlIHN0cmVhbSBzdGFydHMsIGFuZCB0aGF0J3NcbiAgICAgKiBpdC5cbiAgICAgKlxuICAgICAqIE1hcmJsZSBkaWFncmFtOlxuICAgICAqXG4gICAgICogYGBgdGV4dFxuICAgICAqIHRocm93KFgpXG4gICAgICogLVhcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBmYWN0b3J5IHRydWVcbiAgICAgKiBAcGFyYW0gZXJyb3IgVGhlIGVycm9yIGV2ZW50IHRvIGVtaXQgb24gdGhlIGNyZWF0ZWQgc3RyZWFtLlxuICAgICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICAgKi9cbiAgICBTdHJlYW0udGhyb3cgPSBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW0oe1xuICAgICAgICAgICAgX3N0YXJ0OiBmdW5jdGlvbiAoaWwpIHsgaWwuX2UoZXJyb3IpOyB9LFxuICAgICAgICAgICAgX3N0b3A6IG5vb3AsXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIFN0cmVhbSB0aGF0IGltbWVkaWF0ZWx5IGVtaXRzIHRoZSBhcmd1bWVudHMgdGhhdCB5b3UgZ2l2ZSB0b1xuICAgICAqICpvZiosIHRoZW4gY29tcGxldGVzLlxuICAgICAqXG4gICAgICogTWFyYmxlIGRpYWdyYW06XG4gICAgICpcbiAgICAgKiBgYGB0ZXh0XG4gICAgICogb2YoMSwyLDMpXG4gICAgICogMTIzfFxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQGZhY3RvcnkgdHJ1ZVxuICAgICAqIEBwYXJhbSBhIFRoZSBmaXJzdCB2YWx1ZSB5b3Ugd2FudCB0byBlbWl0IGFzIGFuIGV2ZW50IG9uIHRoZSBzdHJlYW0uXG4gICAgICogQHBhcmFtIGIgVGhlIHNlY29uZCB2YWx1ZSB5b3Ugd2FudCB0byBlbWl0IGFzIGFuIGV2ZW50IG9uIHRoZSBzdHJlYW0uIE9uZVxuICAgICAqIG9yIG1vcmUgb2YgdGhlc2UgdmFsdWVzIG1heSBiZSBnaXZlbiBhcyBhcmd1bWVudHMuXG4gICAgICogQHJldHVybiB7U3RyZWFtfVxuICAgICAqL1xuICAgIFN0cmVhbS5vZiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGl0ZW1zID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBpdGVtc1tfaSAtIDBdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gU3RyZWFtLmZyb21BcnJheShpdGVtcyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBhbiBhcnJheSB0byBhIHN0cmVhbS4gVGhlIHJldHVybmVkIHN0cmVhbSB3aWxsIGVtaXQgc3luY2hyb25vdXNseVxuICAgICAqIGFsbCB0aGUgaXRlbXMgaW4gdGhlIGFycmF5LCBhbmQgdGhlbiBjb21wbGV0ZS5cbiAgICAgKlxuICAgICAqIE1hcmJsZSBkaWFncmFtOlxuICAgICAqXG4gICAgICogYGBgdGV4dFxuICAgICAqIGZyb21BcnJheShbMSwyLDNdKVxuICAgICAqIDEyM3xcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBmYWN0b3J5IHRydWVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gYmUgY29udmVydGVkIGFzIGEgc3RyZWFtLlxuICAgICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICAgKi9cbiAgICBTdHJlYW0uZnJvbUFycmF5ID0gZnVuY3Rpb24gKGFycmF5KSB7XG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtKG5ldyBGcm9tQXJyYXlQcm9kdWNlcihhcnJheSkpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYSBwcm9taXNlIHRvIGEgc3RyZWFtLiBUaGUgcmV0dXJuZWQgc3RyZWFtIHdpbGwgZW1pdCB0aGUgcmVzb2x2ZWRcbiAgICAgKiB2YWx1ZSBvZiB0aGUgcHJvbWlzZSwgYW5kIHRoZW4gY29tcGxldGUuIEhvd2V2ZXIsIGlmIHRoZSBwcm9taXNlIGlzXG4gICAgICogcmVqZWN0ZWQsIHRoZSBzdHJlYW0gd2lsbCBlbWl0IHRoZSBjb3JyZXNwb25kaW5nIGVycm9yLlxuICAgICAqXG4gICAgICogTWFyYmxlIGRpYWdyYW06XG4gICAgICpcbiAgICAgKiBgYGB0ZXh0XG4gICAgICogZnJvbVByb21pc2UoIC0tLS00MiApXG4gICAgICogLS0tLS0tLS0tLS0tLS0tLS00MnxcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBmYWN0b3J5IHRydWVcbiAgICAgKiBAcGFyYW0ge1Byb21pc2V9IHByb21pc2UgVGhlIHByb21pc2UgdG8gYmUgY29udmVydGVkIGFzIGEgc3RyZWFtLlxuICAgICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICAgKi9cbiAgICBTdHJlYW0uZnJvbVByb21pc2UgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbShuZXcgRnJvbVByb21pc2VQcm9kdWNlcihwcm9taXNlKSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc3RyZWFtIHRoYXQgcGVyaW9kaWNhbGx5IGVtaXRzIGluY3JlbWVudGFsIG51bWJlcnMsIGV2ZXJ5XG4gICAgICogYHBlcmlvZGAgbWlsbGlzZWNvbmRzLlxuICAgICAqXG4gICAgICogTWFyYmxlIGRpYWdyYW06XG4gICAgICpcbiAgICAgKiBgYGB0ZXh0XG4gICAgICogICAgIHBlcmlvZGljKDEwMDApXG4gICAgICogLS0tMC0tLTEtLS0yLS0tMy0tLTQtLS0uLi5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBmYWN0b3J5IHRydWVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcGVyaW9kIFRoZSBpbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMgdG8gdXNlIGFzIGEgcmF0ZSBvZlxuICAgICAqIGVtaXNzaW9uLlxuICAgICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICAgKi9cbiAgICBTdHJlYW0ucGVyaW9kaWMgPSBmdW5jdGlvbiAocGVyaW9kKSB7XG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtKG5ldyBQZXJpb2RpY1Byb2R1Y2VyKHBlcmlvZCkpO1xuICAgIH07XG4gICAgU3RyZWFtLnByb3RvdHlwZS5fbWFwID0gZnVuY3Rpb24gKHByb2plY3QpIHtcbiAgICAgICAgdmFyIHAgPSB0aGlzLl9wcm9kO1xuICAgICAgICB2YXIgY3RvciA9IHRoaXMuY3RvcigpO1xuICAgICAgICBpZiAocCBpbnN0YW5jZW9mIEZpbHRlck9wZXJhdG9yKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IGN0b3IobmV3IEZpbHRlck1hcE9wZXJhdG9yKHAucGFzc2VzLCBwcm9qZWN0LCBwLmlucykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwIGluc3RhbmNlb2YgRmlsdGVyTWFwT3BlcmF0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgY3RvcihuZXcgRmlsdGVyTWFwT3BlcmF0b3IocC5wYXNzZXMsIGNvbXBvc2UyKHByb2plY3QsIHAucHJvamVjdCksIHAuaW5zKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHAgaW5zdGFuY2VvZiBNYXBPcGVyYXRvcikge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBjdG9yKG5ldyBNYXBPcGVyYXRvcihjb21wb3NlMihwcm9qZWN0LCBwLnByb2plY3QpLCBwLmlucykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgY3RvcihuZXcgTWFwT3BlcmF0b3IocHJvamVjdCwgdGhpcykpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogVHJhbnNmb3JtcyBlYWNoIGV2ZW50IGZyb20gdGhlIGlucHV0IFN0cmVhbSB0aHJvdWdoIGEgYHByb2plY3RgIGZ1bmN0aW9uLFxuICAgICAqIHRvIGdldCBhIFN0cmVhbSB0aGF0IGVtaXRzIHRob3NlIHRyYW5zZm9ybWVkIGV2ZW50cy5cbiAgICAgKlxuICAgICAqIE1hcmJsZSBkaWFncmFtOlxuICAgICAqXG4gICAgICogYGBgdGV4dFxuICAgICAqIC0tMS0tLTMtLTUtLS0tLTctLS0tLS1cbiAgICAgKiAgICBtYXAoaSA9PiBpICogMTApXG4gICAgICogLS0xMC0tMzAtNTAtLS0tNzAtLS0tLVxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJvamVjdCBBIGZ1bmN0aW9uIG9mIHR5cGUgYCh0OiBUKSA9PiBVYCB0aGF0IHRha2VzIGV2ZW50XG4gICAgICogYHRgIG9mIHR5cGUgYFRgIGZyb20gdGhlIGlucHV0IFN0cmVhbSBhbmQgcHJvZHVjZXMgYW4gZXZlbnQgb2YgdHlwZSBgVWAsIHRvXG4gICAgICogYmUgZW1pdHRlZCBvbiB0aGUgb3V0cHV0IFN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHtTdHJlYW19XG4gICAgICovXG4gICAgU3RyZWFtLnByb3RvdHlwZS5tYXAgPSBmdW5jdGlvbiAocHJvamVjdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFwKHByb2plY3QpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogSXQncyBsaWtlIGBtYXBgLCBidXQgdHJhbnNmb3JtcyBlYWNoIGlucHV0IGV2ZW50IHRvIGFsd2F5cyB0aGUgc2FtZVxuICAgICAqIGNvbnN0YW50IHZhbHVlIG9uIHRoZSBvdXRwdXQgU3RyZWFtLlxuICAgICAqXG4gICAgICogTWFyYmxlIGRpYWdyYW06XG4gICAgICpcbiAgICAgKiBgYGB0ZXh0XG4gICAgICogLS0xLS0tMy0tNS0tLS0tNy0tLS0tXG4gICAgICogICAgICAgbWFwVG8oMTApXG4gICAgICogLS0xMC0tMTAtMTAtLS0tMTAtLS0tXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvamVjdGVkVmFsdWUgQSB2YWx1ZSB0byBlbWl0IG9uIHRoZSBvdXRwdXQgU3RyZWFtIHdoZW5ldmVyIHRoZVxuICAgICAqIGlucHV0IFN0cmVhbSBlbWl0cyBhbnkgdmFsdWUuXG4gICAgICogQHJldHVybiB7U3RyZWFtfVxuICAgICAqL1xuICAgIFN0cmVhbS5wcm90b3R5cGUubWFwVG8gPSBmdW5jdGlvbiAocHJvamVjdGVkVmFsdWUpIHtcbiAgICAgICAgdmFyIHMgPSB0aGlzLm1hcChmdW5jdGlvbiAoKSB7IHJldHVybiBwcm9qZWN0ZWRWYWx1ZTsgfSk7XG4gICAgICAgIHZhciBvcCA9IHMuX3Byb2Q7XG4gICAgICAgIG9wLnR5cGUgPSBvcC50eXBlLnJlcGxhY2UoJ21hcCcsICdtYXBUbycpO1xuICAgICAgICByZXR1cm4gcztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIE9ubHkgYWxsb3dzIGV2ZW50cyB0aGF0IHBhc3MgdGhlIHRlc3QgZ2l2ZW4gYnkgdGhlIGBwYXNzZXNgIGFyZ3VtZW50LlxuICAgICAqXG4gICAgICogRWFjaCBldmVudCBmcm9tIHRoZSBpbnB1dCBzdHJlYW0gaXMgZ2l2ZW4gdG8gdGhlIGBwYXNzZXNgIGZ1bmN0aW9uLiBJZiB0aGVcbiAgICAgKiBmdW5jdGlvbiByZXR1cm5zIGB0cnVlYCwgdGhlIGV2ZW50IGlzIGZvcndhcmRlZCB0byB0aGUgb3V0cHV0IHN0cmVhbSxcbiAgICAgKiBvdGhlcndpc2UgaXQgaXMgaWdub3JlZCBhbmQgbm90IGZvcndhcmRlZC5cbiAgICAgKlxuICAgICAqIE1hcmJsZSBkaWFncmFtOlxuICAgICAqXG4gICAgICogYGBgdGV4dFxuICAgICAqIC0tMS0tLTItLTMtLS0tLTQtLS0tLTUtLS02LS03LTgtLVxuICAgICAqICAgICBmaWx0ZXIoaSA9PiBpICUgMiA9PT0gMClcbiAgICAgKiAtLS0tLS0yLS0tLS0tLS00LS0tLS0tLS0tNi0tLS04LS1cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHBhc3NlcyBBIGZ1bmN0aW9uIG9mIHR5cGUgYCh0OiBUKSArPiBib29sZWFuYCB0aGF0IHRha2VzXG4gICAgICogYW4gZXZlbnQgZnJvbSB0aGUgaW5wdXQgc3RyZWFtIGFuZCBjaGVja3MgaWYgaXQgcGFzc2VzLCBieSByZXR1cm5pbmcgYVxuICAgICAqIGJvb2xlYW4uXG4gICAgICogQHJldHVybiB7U3RyZWFtfVxuICAgICAqL1xuICAgIFN0cmVhbS5wcm90b3R5cGUuZmlsdGVyID0gZnVuY3Rpb24gKHBhc3Nlcykge1xuICAgICAgICB2YXIgcCA9IHRoaXMuX3Byb2Q7XG4gICAgICAgIGlmIChwIGluc3RhbmNlb2YgRmlsdGVyT3BlcmF0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU3RyZWFtKG5ldyBGaWx0ZXJPcGVyYXRvcihhbmQocC5wYXNzZXMsIHBhc3NlcyksIHAuaW5zKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW0obmV3IEZpbHRlck9wZXJhdG9yKHBhc3NlcywgdGhpcykpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogTGV0cyB0aGUgZmlyc3QgYGFtb3VudGAgbWFueSBldmVudHMgZnJvbSB0aGUgaW5wdXQgc3RyZWFtIHBhc3MgdG8gdGhlXG4gICAgICogb3V0cHV0IHN0cmVhbSwgdGhlbiBtYWtlcyB0aGUgb3V0cHV0IHN0cmVhbSBjb21wbGV0ZS5cbiAgICAgKlxuICAgICAqIE1hcmJsZSBkaWFncmFtOlxuICAgICAqXG4gICAgICogYGBgdGV4dFxuICAgICAqIC0tYS0tLWItLWMtLS0tZC0tLWUtLVxuICAgICAqICAgIHRha2UoMylcbiAgICAgKiAtLWEtLS1iLS1jfFxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGFtb3VudCBIb3cgbWFueSBldmVudHMgdG8gYWxsb3cgZnJvbSB0aGUgaW5wdXQgc3RyZWFtXG4gICAgICogYmVmb3JlIGNvbXBsZXRpbmcgdGhlIG91dHB1dCBzdHJlYW0uXG4gICAgICogQHJldHVybiB7U3RyZWFtfVxuICAgICAqL1xuICAgIFN0cmVhbS5wcm90b3R5cGUudGFrZSA9IGZ1bmN0aW9uIChhbW91bnQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyAodGhpcy5jdG9yKCkpKG5ldyBUYWtlT3BlcmF0b3IoYW1vdW50LCB0aGlzKSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBJZ25vcmVzIHRoZSBmaXJzdCBgYW1vdW50YCBtYW55IGV2ZW50cyBmcm9tIHRoZSBpbnB1dCBzdHJlYW0sIGFuZCB0aGVuXG4gICAgICogYWZ0ZXIgdGhhdCBzdGFydHMgZm9yd2FyZGluZyBldmVudHMgZnJvbSB0aGUgaW5wdXQgc3RyZWFtIHRvIHRoZSBvdXRwdXRcbiAgICAgKiBzdHJlYW0uXG4gICAgICpcbiAgICAgKiBNYXJibGUgZGlhZ3JhbTpcbiAgICAgKlxuICAgICAqIGBgYHRleHRcbiAgICAgKiAtLWEtLS1iLS1jLS0tLWQtLS1lLS1cbiAgICAgKiAgICAgICBkcm9wKDMpXG4gICAgICogLS0tLS0tLS0tLS0tLS1kLS0tZS0tXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYW1vdW50IEhvdyBtYW55IGV2ZW50cyB0byBpZ25vcmUgZnJvbSB0aGUgaW5wdXQgc3RyZWFtXG4gICAgICogYmVmb3JlIGZvcndhcmRpbmcgYWxsIGV2ZW50cyBmcm9tIHRoZSBpbnB1dCBzdHJlYW0gdG8gdGhlIG91dHB1dCBzdHJlYW0uXG4gICAgICogQHJldHVybiB7U3RyZWFtfVxuICAgICAqL1xuICAgIFN0cmVhbS5wcm90b3R5cGUuZHJvcCA9IGZ1bmN0aW9uIChhbW91bnQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW0obmV3IERyb3BPcGVyYXRvcihhbW91bnQsIHRoaXMpKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFdoZW4gdGhlIGlucHV0IHN0cmVhbSBjb21wbGV0ZXMsIHRoZSBvdXRwdXQgc3RyZWFtIHdpbGwgZW1pdCB0aGUgbGFzdCBldmVudFxuICAgICAqIGVtaXR0ZWQgYnkgdGhlIGlucHV0IHN0cmVhbSwgYW5kIHRoZW4gd2lsbCBhbHNvIGNvbXBsZXRlLlxuICAgICAqXG4gICAgICogTWFyYmxlIGRpYWdyYW06XG4gICAgICpcbiAgICAgKiBgYGB0ZXh0XG4gICAgICogLS1hLS0tYi0tYy0tZC0tLS18XG4gICAgICogICAgICAgbGFzdCgpXG4gICAgICogLS0tLS0tLS0tLS0tLS0tLS1kfFxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHJldHVybiB7U3RyZWFtfVxuICAgICAqL1xuICAgIFN0cmVhbS5wcm90b3R5cGUubGFzdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW0obmV3IExhc3RPcGVyYXRvcih0aGlzKSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBQcmVwZW5kcyB0aGUgZ2l2ZW4gYGluaXRpYWxgIHZhbHVlIHRvIHRoZSBzZXF1ZW5jZSBvZiBldmVudHMgZW1pdHRlZCBieSB0aGVcbiAgICAgKiBpbnB1dCBzdHJlYW0uIFRoZSByZXR1cm5lZCBzdHJlYW0gaXMgYSBNZW1vcnlTdHJlYW0sIHdoaWNoIG1lYW5zIGl0IGlzXG4gICAgICogYWxyZWFkeSBgcmVtZW1iZXIoKWAnZC5cbiAgICAgKlxuICAgICAqIE1hcmJsZSBkaWFncmFtOlxuICAgICAqXG4gICAgICogYGBgdGV4dFxuICAgICAqIC0tLTEtLS0yLS0tLS0zLS0tXG4gICAgICogICBzdGFydFdpdGgoMClcbiAgICAgKiAwLS0xLS0tMi0tLS0tMy0tLVxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHBhcmFtIGluaXRpYWwgVGhlIHZhbHVlIG9yIGV2ZW50IHRvIHByZXBlbmQuXG4gICAgICogQHJldHVybiB7TWVtb3J5U3RyZWFtfVxuICAgICAqL1xuICAgIFN0cmVhbS5wcm90b3R5cGUuc3RhcnRXaXRoID0gZnVuY3Rpb24gKGluaXRpYWwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNZW1vcnlTdHJlYW0obmV3IFN0YXJ0V2l0aE9wZXJhdG9yKHRoaXMsIGluaXRpYWwpKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFVzZXMgYW5vdGhlciBzdHJlYW0gdG8gZGV0ZXJtaW5lIHdoZW4gdG8gY29tcGxldGUgdGhlIGN1cnJlbnQgc3RyZWFtLlxuICAgICAqXG4gICAgICogV2hlbiB0aGUgZ2l2ZW4gYG90aGVyYCBzdHJlYW0gZW1pdHMgYW4gZXZlbnQgb3IgY29tcGxldGVzLCB0aGUgb3V0cHV0XG4gICAgICogc3RyZWFtIHdpbGwgY29tcGxldGUuIEJlZm9yZSB0aGF0IGhhcHBlbnMsIHRoZSBvdXRwdXQgc3RyZWFtIHdpbGwgYmVoYXZlc1xuICAgICAqIGxpa2UgdGhlIGlucHV0IHN0cmVhbS5cbiAgICAgKlxuICAgICAqIE1hcmJsZSBkaWFncmFtOlxuICAgICAqXG4gICAgICogYGBgdGV4dFxuICAgICAqIC0tLTEtLS0yLS0tLS0zLS00LS0tLTUtLS0tNi0tLVxuICAgICAqICAgZW5kV2hlbiggLS0tLS0tLS1hLS1iLS18IClcbiAgICAgKiAtLS0xLS0tMi0tLS0tMy0tNC0tfFxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHBhcmFtIG90aGVyIFNvbWUgb3RoZXIgc3RyZWFtIHRoYXQgaXMgdXNlZCB0byBrbm93IHdoZW4gc2hvdWxkIHRoZSBvdXRwdXRcbiAgICAgKiBzdHJlYW0gb2YgdGhpcyBvcGVyYXRvciBjb21wbGV0ZS5cbiAgICAgKiBAcmV0dXJuIHtTdHJlYW19XG4gICAgICovXG4gICAgU3RyZWFtLnByb3RvdHlwZS5lbmRXaGVuID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gICAgICAgIHJldHVybiBuZXcgKHRoaXMuY3RvcigpKShuZXcgRW5kV2hlbk9wZXJhdG9yKG90aGVyLCB0aGlzKSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBcIkZvbGRzXCIgdGhlIHN0cmVhbSBvbnRvIGl0c2VsZi5cbiAgICAgKlxuICAgICAqIENvbWJpbmVzIGV2ZW50cyBmcm9tIHRoZSBwYXN0IHRocm91Z2hvdXRcbiAgICAgKiB0aGUgZW50aXJlIGV4ZWN1dGlvbiBvZiB0aGUgaW5wdXQgc3RyZWFtLCBhbGxvd2luZyB5b3UgdG8gYWNjdW11bGF0ZSB0aGVtXG4gICAgICogdG9nZXRoZXIuIEl0J3MgZXNzZW50aWFsbHkgbGlrZSBgQXJyYXkucHJvdG90eXBlLnJlZHVjZWAuIFRoZSByZXR1cm5lZFxuICAgICAqIHN0cmVhbSBpcyBhIE1lbW9yeVN0cmVhbSwgd2hpY2ggbWVhbnMgaXQgaXMgYWxyZWFkeSBgcmVtZW1iZXIoKWAnZC5cbiAgICAgKlxuICAgICAqIFRoZSBvdXRwdXQgc3RyZWFtIHN0YXJ0cyBieSBlbWl0dGluZyB0aGUgYHNlZWRgIHdoaWNoIHlvdSBnaXZlIGFzIGFyZ3VtZW50LlxuICAgICAqIFRoZW4sIHdoZW4gYW4gZXZlbnQgaGFwcGVucyBvbiB0aGUgaW5wdXQgc3RyZWFtLCBpdCBpcyBjb21iaW5lZCB3aXRoIHRoYXRcbiAgICAgKiBzZWVkIHZhbHVlIHRocm91Z2ggdGhlIGBhY2N1bXVsYXRlYCBmdW5jdGlvbiwgYW5kIHRoZSBvdXRwdXQgdmFsdWUgaXNcbiAgICAgKiBlbWl0dGVkIG9uIHRoZSBvdXRwdXQgc3RyZWFtLiBgZm9sZGAgcmVtZW1iZXJzIHRoYXQgb3V0cHV0IHZhbHVlIGFzIGBhY2NgXG4gICAgICogKFwiYWNjdW11bGF0b3JcIiksIGFuZCB0aGVuIHdoZW4gYSBuZXcgaW5wdXQgZXZlbnQgYHRgIGhhcHBlbnMsIGBhY2NgIHdpbGwgYmVcbiAgICAgKiBjb21iaW5lZCB3aXRoIHRoYXQgdG8gcHJvZHVjZSB0aGUgbmV3IGBhY2NgIGFuZCBzbyBmb3J0aC5cbiAgICAgKlxuICAgICAqIE1hcmJsZSBkaWFncmFtOlxuICAgICAqXG4gICAgICogYGBgdGV4dFxuICAgICAqIC0tLS0tLTEtLS0tLTEtLTItLS0tMS0tLS0xLS0tLS0tXG4gICAgICogICBmb2xkKChhY2MsIHgpID0+IGFjYyArIHgsIDMpXG4gICAgICogMy0tLS0tNC0tLS0tNS0tNy0tLS04LS0tLTktLS0tLS1cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGFjY3VtdWxhdGUgQSBmdW5jdGlvbiBvZiB0eXBlIGAoYWNjOiBSLCB0OiBUKSA9PiBSYCB0aGF0XG4gICAgICogdGFrZXMgdGhlIHByZXZpb3VzIGFjY3VtdWxhdGVkIHZhbHVlIGBhY2NgIGFuZCB0aGUgaW5jb21pbmcgZXZlbnQgZnJvbSB0aGVcbiAgICAgKiBpbnB1dCBzdHJlYW0gYW5kIHByb2R1Y2VzIHRoZSBuZXcgYWNjdW11bGF0ZWQgdmFsdWUuXG4gICAgICogQHBhcmFtIHNlZWQgVGhlIGluaXRpYWwgYWNjdW11bGF0ZWQgdmFsdWUsIG9mIHR5cGUgYFJgLlxuICAgICAqIEByZXR1cm4ge01lbW9yeVN0cmVhbX1cbiAgICAgKi9cbiAgICBTdHJlYW0ucHJvdG90eXBlLmZvbGQgPSBmdW5jdGlvbiAoYWNjdW11bGF0ZSwgc2VlZCkge1xuICAgICAgICByZXR1cm4gbmV3IE1lbW9yeVN0cmVhbShuZXcgRm9sZE9wZXJhdG9yKGFjY3VtdWxhdGUsIHNlZWQsIHRoaXMpKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJlcGxhY2VzIGFuIGVycm9yIHdpdGggYW5vdGhlciBzdHJlYW0uXG4gICAgICpcbiAgICAgKiBXaGVuIChhbmQgaWYpIGFuIGVycm9yIGhhcHBlbnMgb24gdGhlIGlucHV0IHN0cmVhbSwgaW5zdGVhZCBvZiBmb3J3YXJkaW5nXG4gICAgICogdGhhdCBlcnJvciB0byB0aGUgb3V0cHV0IHN0cmVhbSwgKnJlcGxhY2VFcnJvciogd2lsbCBjYWxsIHRoZSBgcmVwbGFjZWBcbiAgICAgKiBmdW5jdGlvbiB3aGljaCByZXR1cm5zIHRoZSBzdHJlYW0gdGhhdCB0aGUgb3V0cHV0IHN0cmVhbSB3aWxsIHJlcGxpY2F0ZS5cbiAgICAgKiBBbmQsIGluIGNhc2UgdGhhdCBuZXcgc3RyZWFtIGFsc28gZW1pdHMgYW4gZXJyb3IsIGByZXBsYWNlYCB3aWxsIGJlIGNhbGxlZFxuICAgICAqIGFnYWluIHRvIGdldCBhbm90aGVyIHN0cmVhbSB0byBzdGFydCByZXBsaWNhdGluZy5cbiAgICAgKlxuICAgICAqIE1hcmJsZSBkaWFncmFtOlxuICAgICAqXG4gICAgICogYGBgdGV4dFxuICAgICAqIC0tMS0tLTItLS0tLTMtLTQtLS0tLVhcbiAgICAgKiAgIHJlcGxhY2VFcnJvciggKCkgPT4gLS0xMC0tfCApXG4gICAgICogLS0xLS0tMi0tLS0tMy0tNC0tLS0tLS0tMTAtLXxcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHJlcGxhY2UgQSBmdW5jdGlvbiBvZiB0eXBlIGAoZXJyKSA9PiBTdHJlYW1gIHRoYXQgdGFrZXNcbiAgICAgKiB0aGUgZXJyb3IgdGhhdCBvY2N1cnJlZCBvbiB0aGUgaW5wdXQgc3RyZWFtIG9yIG9uIHRoZSBwcmV2aW91cyByZXBsYWNlbWVudFxuICAgICAqIHN0cmVhbSBhbmQgcmV0dXJucyBhIG5ldyBzdHJlYW0uIFRoZSBvdXRwdXQgc3RyZWFtIHdpbGwgYmVoYXZlIGxpa2UgdGhlXG4gICAgICogc3RyZWFtIHRoYXQgdGhpcyBmdW5jdGlvbiByZXR1cm5zLlxuICAgICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICAgKi9cbiAgICBTdHJlYW0ucHJvdG90eXBlLnJlcGxhY2VFcnJvciA9IGZ1bmN0aW9uIChyZXBsYWNlKSB7XG4gICAgICAgIHJldHVybiBuZXcgKHRoaXMuY3RvcigpKShuZXcgUmVwbGFjZUVycm9yT3BlcmF0b3IocmVwbGFjZSwgdGhpcykpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRmxhdHRlbnMgYSBcInN0cmVhbSBvZiBzdHJlYW1zXCIsIGhhbmRsaW5nIG9ubHkgb25lIG5lc3RlZCBzdHJlYW0gYXQgYSB0aW1lXG4gICAgICogKG5vIGNvbmN1cnJlbmN5KS5cbiAgICAgKlxuICAgICAqIElmIHRoZSBpbnB1dCBzdHJlYW0gaXMgYSBzdHJlYW0gdGhhdCBlbWl0cyBzdHJlYW1zLCB0aGVuIHRoaXMgb3BlcmF0b3Igd2lsbFxuICAgICAqIHJldHVybiBhbiBvdXRwdXQgc3RyZWFtIHdoaWNoIGlzIGEgZmxhdCBzdHJlYW06IGVtaXRzIHJlZ3VsYXIgZXZlbnRzLiBUaGVcbiAgICAgKiBmbGF0dGVuaW5nIGhhcHBlbnMgd2l0aG91dCBjb25jdXJyZW5jeS4gSXQgd29ya3MgbGlrZSB0aGlzOiB3aGVuIHRoZSBpbnB1dFxuICAgICAqIHN0cmVhbSBlbWl0cyBhIG5lc3RlZCBzdHJlYW0sICpmbGF0dGVuKiB3aWxsIHN0YXJ0IGltaXRhdGluZyB0aGF0IG5lc3RlZFxuICAgICAqIG9uZS4gSG93ZXZlciwgYXMgc29vbiBhcyB0aGUgbmV4dCBuZXN0ZWQgc3RyZWFtIGlzIGVtaXR0ZWQgb24gdGhlIGlucHV0XG4gICAgICogc3RyZWFtLCAqZmxhdHRlbiogd2lsbCBmb3JnZXQgdGhlIHByZXZpb3VzIG5lc3RlZCBvbmUgaXQgd2FzIGltaXRhdGluZywgYW5kXG4gICAgICogd2lsbCBzdGFydCBpbWl0YXRpbmcgdGhlIG5ldyBuZXN0ZWQgb25lLlxuICAgICAqXG4gICAgICogTWFyYmxlIGRpYWdyYW06XG4gICAgICpcbiAgICAgKiBgYGB0ZXh0XG4gICAgICogLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tXG4gICAgICogICBcXCAgICAgICAgXFxcbiAgICAgKiAgICBcXCAgICAgICAtLS0tMS0tLS0yLS0tMy0tXG4gICAgICogICAgLS1hLS1iLS0tLWMtLS0tZC0tLS0tLS0tXG4gICAgICogICAgICAgICAgIGZsYXR0ZW5cbiAgICAgKiAtLS0tLWEtLWItLS0tLS0xLS0tLTItLS0zLS1cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICAgKi9cbiAgICBTdHJlYW0ucHJvdG90eXBlLmZsYXR0ZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwID0gdGhpcy5fcHJvZDtcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW0ocCBpbnN0YW5jZW9mIE1hcE9wZXJhdG9yICYmICEocCBpbnN0YW5jZW9mIEZpbHRlck1hcE9wZXJhdG9yKSA/XG4gICAgICAgICAgICBuZXcgTWFwRmxhdHRlbk9wZXJhdG9yKHApIDpcbiAgICAgICAgICAgIG5ldyBGbGF0dGVuT3BlcmF0b3IodGhpcykpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUGFzc2VzIHRoZSBpbnB1dCBzdHJlYW0gdG8gYSBjdXN0b20gb3BlcmF0b3IsIHRvIHByb2R1Y2UgYW4gb3V0cHV0IHN0cmVhbS5cbiAgICAgKlxuICAgICAqICpjb21wb3NlKiBpcyBhIGhhbmR5IHdheSBvZiB1c2luZyBhbiBleGlzdGluZyBmdW5jdGlvbiBpbiBhIGNoYWluZWQgc3R5bGUuXG4gICAgICogSW5zdGVhZCBvZiB3cml0aW5nIGBvdXRTdHJlYW0gPSBmKGluU3RyZWFtKWAgeW91IGNhbiB3cml0ZVxuICAgICAqIGBvdXRTdHJlYW0gPSBpblN0cmVhbS5jb21wb3NlKGYpYC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wZXJhdG9yIEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHN0cmVhbSBhcyBpbnB1dCBhbmRcbiAgICAgKiByZXR1cm5zIGEgc3RyZWFtIGFzIHdlbGwuXG4gICAgICogQHJldHVybiB7U3RyZWFtfVxuICAgICAqL1xuICAgIFN0cmVhbS5wcm90b3R5cGUuY29tcG9zZSA9IGZ1bmN0aW9uIChvcGVyYXRvcikge1xuICAgICAgICByZXR1cm4gb3BlcmF0b3IodGhpcyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFuIG91dHB1dCBzdHJlYW0gdGhhdCBiZWhhdmVzIGxpa2UgdGhlIGlucHV0IHN0cmVhbSwgYnV0IGFsc29cbiAgICAgKiByZW1lbWJlcnMgdGhlIG1vc3QgcmVjZW50IGV2ZW50IHRoYXQgaGFwcGVucyBvbiB0aGUgaW5wdXQgc3RyZWFtLCBzbyB0aGF0IGFcbiAgICAgKiBuZXdseSBhZGRlZCBsaXN0ZW5lciB3aWxsIGltbWVkaWF0ZWx5IHJlY2VpdmUgdGhhdCBtZW1vcmlzZWQgZXZlbnQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtNZW1vcnlTdHJlYW19XG4gICAgICovXG4gICAgU3RyZWFtLnByb3RvdHlwZS5yZW1lbWJlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNZW1vcnlTdHJlYW0obmV3IFJlbWVtYmVyT3BlcmF0b3IodGhpcykpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBvdXRwdXQgc3RyZWFtIHRoYXQgaWRlbnRpY2FsbHkgYmVoYXZlcyBsaWtlIHRoZSBpbnB1dCBzdHJlYW0sXG4gICAgICogYnV0IGFsc28gcnVucyBhIGBzcHlgIGZ1bmN0aW9uIGZvIGVhY2ggZXZlbnQsIHRvIGhlbHAgeW91IGRlYnVnIHlvdXIgYXBwLlxuICAgICAqXG4gICAgICogKmRlYnVnKiB0YWtlcyBhIGBzcHlgIGZ1bmN0aW9uIGFzIGFyZ3VtZW50LCBhbmQgcnVucyB0aGF0IGZvciBlYWNoIGV2ZW50XG4gICAgICogaGFwcGVuaW5nIG9uIHRoZSBpbnB1dCBzdHJlYW0uIElmIHlvdSBkb24ndCBwcm92aWRlIHRoZSBgc3B5YCBhcmd1bWVudCxcbiAgICAgKiB0aGVuICpkZWJ1Zyogd2lsbCBqdXN0IGBjb25zb2xlLmxvZ2AgZWFjaCBldmVudC4gVGhpcyBoZWxwcyB5b3UgdG9cbiAgICAgKiB1bmRlcnN0YW5kIHRoZSBmbG93IG9mIGV2ZW50cyB0aHJvdWdoIHNvbWUgb3BlcmF0b3IgY2hhaW4uXG4gICAgICpcbiAgICAgKiBQbGVhc2Ugbm90ZSB0aGF0IGlmIHRoZSBvdXRwdXQgc3RyZWFtIGhhcyBubyBsaXN0ZW5lcnMsIHRoZW4gaXQgd2lsbCBub3RcbiAgICAgKiBzdGFydCwgd2hpY2ggbWVhbnMgYHNweWAgd2lsbCBuZXZlciBydW4gYmVjYXVzZSBubyBhY3R1YWwgZXZlbnQgaGFwcGVucyBpblxuICAgICAqIHRoYXQgY2FzZS5cbiAgICAgKlxuICAgICAqIE1hcmJsZSBkaWFncmFtOlxuICAgICAqXG4gICAgICogYGBgdGV4dFxuICAgICAqIC0tMS0tLS0yLS0tLS0zLS0tLS00LS1cbiAgICAgKiAgICAgICAgIGRlYnVnXG4gICAgICogLS0xLS0tLTItLS0tLTMtLS0tLTQtLVxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gbGFiZWxPclNweSBBIHN0cmluZyB0byB1c2UgYXMgdGhlIGxhYmVsIHdoZW4gcHJpbnRpbmdcbiAgICAgKiBkZWJ1ZyBpbmZvcm1hdGlvbiBvbiB0aGUgY29uc29sZSwgb3IgYSAnc3B5JyBmdW5jdGlvbiB0aGF0IHRha2VzIGFuIGV2ZW50XG4gICAgICogYXMgYXJndW1lbnQsIGFuZCBkb2VzIG5vdCBuZWVkIHRvIHJldHVybiBhbnl0aGluZy5cbiAgICAgKiBAcmV0dXJuIHtTdHJlYW19XG4gICAgICovXG4gICAgU3RyZWFtLnByb3RvdHlwZS5kZWJ1ZyA9IGZ1bmN0aW9uIChsYWJlbE9yU3B5KSB7XG4gICAgICAgIHJldHVybiBuZXcgKHRoaXMuY3RvcigpKShuZXcgRGVidWdPcGVyYXRvcihsYWJlbE9yU3B5LCB0aGlzKSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiAqaW1pdGF0ZSogY2hhbmdlcyB0aGlzIGN1cnJlbnQgU3RyZWFtIHRvIGVtaXQgdGhlIHNhbWUgZXZlbnRzIHRoYXQgdGhlXG4gICAgICogYG90aGVyYCBnaXZlbiBTdHJlYW0gZG9lcy4gVGhpcyBtZXRob2QgcmV0dXJucyBub3RoaW5nLlxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2QgZXhpc3RzIHRvIGFsbG93IG9uZSB0aGluZzogKipjaXJjdWxhciBkZXBlbmRlbmN5IG9mIHN0cmVhbXMqKi5cbiAgICAgKiBGb3IgaW5zdGFuY2UsIGxldCdzIGltYWdpbmUgdGhhdCBmb3Igc29tZSByZWFzb24geW91IG5lZWQgdG8gY3JlYXRlIGFcbiAgICAgKiBjaXJjdWxhciBkZXBlbmRlbmN5IHdoZXJlIHN0cmVhbSBgZmlyc3QkYCBkZXBlbmRzIG9uIHN0cmVhbSBgc2Vjb25kJGBcbiAgICAgKiB3aGljaCBpbiB0dXJuIGRlcGVuZHMgb24gYGZpcnN0JGA6XG4gICAgICpcbiAgICAgKiA8IS0tIHNraXAtZXhhbXBsZSAtLT5cbiAgICAgKiBgYGBqc1xuICAgICAqIGltcG9ydCBkZWxheSBmcm9tICd4c3RyZWFtL2V4dHJhL2RlbGF5J1xuICAgICAqXG4gICAgICogdmFyIGZpcnN0JCA9IHNlY29uZCQubWFwKHggPT4geCAqIDEwKS50YWtlKDMpO1xuICAgICAqIHZhciBzZWNvbmQkID0gZmlyc3QkLm1hcCh4ID0+IHggKyAxKS5zdGFydFdpdGgoMSkuY29tcG9zZShkZWxheSgxMDApKTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEhvd2V2ZXIsIHRoYXQgaXMgaW52YWxpZCBKYXZhU2NyaXB0LCBiZWNhdXNlIGBzZWNvbmQkYCBpcyB1bmRlZmluZWRcbiAgICAgKiBvbiB0aGUgZmlyc3QgbGluZS4gVGhpcyBpcyBob3cgKmltaXRhdGUqIGNhbiBoZWxwIHNvbHZlIGl0OlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBpbXBvcnQgZGVsYXkgZnJvbSAneHN0cmVhbS9leHRyYS9kZWxheSdcbiAgICAgKlxuICAgICAqIHZhciBzZWNvbmRQcm94eSQgPSB4cy5jcmVhdGUoKTtcbiAgICAgKiB2YXIgZmlyc3QkID0gc2Vjb25kUHJveHkkLm1hcCh4ID0+IHggKiAxMCkudGFrZSgzKTtcbiAgICAgKiB2YXIgc2Vjb25kJCA9IGZpcnN0JC5tYXAoeCA9PiB4ICsgMSkuc3RhcnRXaXRoKDEpLmNvbXBvc2UoZGVsYXkoMTAwKSk7XG4gICAgICogc2Vjb25kUHJveHkkLmltaXRhdGUoc2Vjb25kJCk7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBXZSBjcmVhdGUgYHNlY29uZFByb3h5JGAgYmVmb3JlIHRoZSBvdGhlcnMsIHNvIGl0IGNhbiBiZSB1c2VkIGluIHRoZVxuICAgICAqIGRlY2xhcmF0aW9uIG9mIGBmaXJzdCRgLiBUaGVuLCBhZnRlciBib3RoIGBmaXJzdCRgIGFuZCBgc2Vjb25kJGAgYXJlXG4gICAgICogZGVmaW5lZCwgd2UgaG9vayBgc2Vjb25kUHJveHkkYCB3aXRoIGBzZWNvbmQkYCB3aXRoIGBpbWl0YXRlKClgIHRvIHRlbGxcbiAgICAgKiB0aGF0IHRoZXkgYXJlIFwidGhlIHNhbWVcIi4gYGltaXRhdGVgIHdpbGwgbm90IHRyaWdnZXIgdGhlIHN0YXJ0IG9mIGFueVxuICAgICAqIHN0cmVhbSwgaXQganVzdCBiaW5kcyBgc2Vjb25kUHJveHkkYCBhbmQgYHNlY29uZCRgIHRvZ2V0aGVyLlxuICAgICAqXG4gICAgICogVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHdoZXJlIGBpbWl0YXRlKClgIGlzIGltcG9ydGFudCBpbiBDeWNsZS5qc1xuICAgICAqIGFwcGxpY2F0aW9ucy4gQSBwYXJlbnQgY29tcG9uZW50IGNvbnRhaW5zIHNvbWUgY2hpbGQgY29tcG9uZW50cy4gQSBjaGlsZFxuICAgICAqIGhhcyBhbiBhY3Rpb24gc3RyZWFtIHdoaWNoIGlzIGdpdmVuIHRvIHRoZSBwYXJlbnQgdG8gZGVmaW5lIGl0cyBzdGF0ZTpcbiAgICAgKlxuICAgICAqIDwhLS0gc2tpcC1leGFtcGxlIC0tPlxuICAgICAqIGBgYGpzXG4gICAgICogY29uc3QgY2hpbGRBY3Rpb25Qcm94eSQgPSB4cy5jcmVhdGUoKTtcbiAgICAgKiBjb25zdCBwYXJlbnQgPSBQYXJlbnQoey4uLnNvdXJjZXMsIGNoaWxkQWN0aW9uJDogY2hpbGRBY3Rpb25Qcm94eSR9KTtcbiAgICAgKiBjb25zdCBjaGlsZEFjdGlvbiQgPSBwYXJlbnQuc3RhdGUkLm1hcChzID0+IHMuY2hpbGQuYWN0aW9uJCkuZmxhdHRlbigpO1xuICAgICAqIGNoaWxkQWN0aW9uUHJveHkkLmltaXRhdGUoY2hpbGRBY3Rpb24kKTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIE5vdGUsIHRob3VnaCwgdGhhdCAqKmBpbWl0YXRlKClgIGRvZXMgbm90IHN1cHBvcnQgTWVtb3J5U3RyZWFtcyoqLiBJZiB3ZVxuICAgICAqIHdvdWxkIGF0dGVtcHQgdG8gaW1pdGF0ZSBhIE1lbW9yeVN0cmVhbSBpbiBhIGNpcmN1bGFyIGRlcGVuZGVuY3ksIHdlIHdvdWxkXG4gICAgICogZWl0aGVyIGdldCBhIHJhY2UgY29uZGl0aW9uICh3aGVyZSB0aGUgc3ltcHRvbSB3b3VsZCBiZSBcIm5vdGhpbmcgaGFwcGVuc1wiKVxuICAgICAqIG9yIGFuIGluZmluaXRlIGN5Y2xpYyBlbWlzc2lvbiBvZiB2YWx1ZXMuIEl0J3MgdXNlZnVsIHRvIHRoaW5rIGFib3V0XG4gICAgICogTWVtb3J5U3RyZWFtcyBhcyBjZWxscyBpbiBhIHNwcmVhZHNoZWV0LiBJdCBkb2Vzbid0IG1ha2UgYW55IHNlbnNlIHRvXG4gICAgICogZGVmaW5lIGEgc3ByZWFkc2hlZXQgY2VsbCBgQTFgIHdpdGggYSBmb3JtdWxhIHRoYXQgZGVwZW5kcyBvbiBgQjFgIGFuZFxuICAgICAqIGNlbGwgYEIxYCBkZWZpbmVkIHdpdGggYSBmb3JtdWxhIHRoYXQgZGVwZW5kcyBvbiBgQTFgLlxuICAgICAqXG4gICAgICogSWYgeW91IGZpbmQgeW91cnNlbGYgd2FudGluZyB0byB1c2UgYGltaXRhdGUoKWAgd2l0aCBhXG4gICAgICogTWVtb3J5U3RyZWFtLCB5b3Ugc2hvdWxkIHJld29yayB5b3VyIGNvZGUgYXJvdW5kIGBpbWl0YXRlKClgIHRvIHVzZSBhXG4gICAgICogU3RyZWFtIGluc3RlYWQuIExvb2sgZm9yIHRoZSBzdHJlYW0gaW4gdGhlIGNpcmN1bGFyIGRlcGVuZGVuY3kgdGhhdFxuICAgICAqIHJlcHJlc2VudHMgYW4gZXZlbnQgc3RyZWFtLCBhbmQgdGhhdCB3b3VsZCBiZSBhIGNhbmRpZGF0ZSBmb3IgY3JlYXRpbmcgYVxuICAgICAqIHByb3h5IFN0cmVhbSB3aGljaCB0aGVuIGltaXRhdGVzIHRoZSB0YXJnZXQgU3RyZWFtLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHRhcmdldCBUaGUgb3RoZXIgc3RyZWFtIHRvIGltaXRhdGUgb24gdGhlIGN1cnJlbnQgb25lLiBNdXN0XG4gICAgICogbm90IGJlIGEgTWVtb3J5U3RyZWFtLlxuICAgICAqL1xuICAgIFN0cmVhbS5wcm90b3R5cGUuaW1pdGF0ZSA9IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgICAgaWYgKHRhcmdldCBpbnN0YW5jZW9mIE1lbW9yeVN0cmVhbSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBIE1lbW9yeVN0cmVhbSB3YXMgZ2l2ZW4gdG8gaW1pdGF0ZSgpLCBidXQgaXQgb25seSAnICtcbiAgICAgICAgICAgICAgICAnc3VwcG9ydHMgYSBTdHJlYW0uIFJlYWQgbW9yZSBhYm91dCB0aGlzIHJlc3RyaWN0aW9uIGhlcmU6ICcgK1xuICAgICAgICAgICAgICAgICdodHRwczovL2dpdGh1Yi5jb20vc3RhbHR6L3hzdHJlYW0jZmFxJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdGFyZ2V0ID0gdGFyZ2V0O1xuICAgICAgICBmb3IgKHZhciBpbHMgPSB0aGlzLl9pbHMsIE4gPSBpbHMubGVuZ3RoLCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgdGFyZ2V0Ll9hZGQoaWxzW2ldKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pbHMgPSBbXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEZvcmNlcyB0aGUgU3RyZWFtIHRvIGVtaXQgdGhlIGdpdmVuIHZhbHVlIHRvIGl0cyBsaXN0ZW5lcnMuXG4gICAgICpcbiAgICAgKiBBcyB0aGUgbmFtZSBpbmRpY2F0ZXMsIGlmIHlvdSB1c2UgdGhpcywgeW91IGFyZSBtb3N0IGxpa2VseSBkb2luZyBzb21ldGhpbmdcbiAgICAgKiBUaGUgV3JvbmcgV2F5LiBQbGVhc2UgdHJ5IHRvIHVuZGVyc3RhbmQgdGhlIHJlYWN0aXZlIHdheSBiZWZvcmUgdXNpbmcgdGhpc1xuICAgICAqIG1ldGhvZC4gVXNlIGl0IG9ubHkgd2hlbiB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIFwibmV4dFwiIHZhbHVlIHlvdSB3YW50IHRvIGJyb2FkY2FzdCB0byBhbGwgbGlzdGVuZXJzIG9mXG4gICAgICogdGhpcyBTdHJlYW0uXG4gICAgICovXG4gICAgU3RyZWFtLnByb3RvdHlwZS5zaGFtZWZ1bGx5U2VuZE5leHQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdGhpcy5fbih2YWx1ZSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBGb3JjZXMgdGhlIFN0cmVhbSB0byBlbWl0IHRoZSBnaXZlbiBlcnJvciB0byBpdHMgbGlzdGVuZXJzLlxuICAgICAqXG4gICAgICogQXMgdGhlIG5hbWUgaW5kaWNhdGVzLCBpZiB5b3UgdXNlIHRoaXMsIHlvdSBhcmUgbW9zdCBsaWtlbHkgZG9pbmcgc29tZXRoaW5nXG4gICAgICogVGhlIFdyb25nIFdheS4gUGxlYXNlIHRyeSB0byB1bmRlcnN0YW5kIHRoZSByZWFjdGl2ZSB3YXkgYmVmb3JlIHVzaW5nIHRoaXNcbiAgICAgKiBtZXRob2QuIFVzZSBpdCBvbmx5IHdoZW4geW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLlxuICAgICAqXG4gICAgICogQHBhcmFtIHthbnl9IGVycm9yIFRoZSBlcnJvciB5b3Ugd2FudCB0byBicm9hZGNhc3QgdG8gYWxsIHRoZSBsaXN0ZW5lcnMgb2ZcbiAgICAgKiB0aGlzIFN0cmVhbS5cbiAgICAgKi9cbiAgICBTdHJlYW0ucHJvdG90eXBlLnNoYW1lZnVsbHlTZW5kRXJyb3IgPSBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5fZShlcnJvcik7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBGb3JjZXMgdGhlIFN0cmVhbSB0byBlbWl0IHRoZSBcImNvbXBsZXRlZFwiIGV2ZW50IHRvIGl0cyBsaXN0ZW5lcnMuXG4gICAgICpcbiAgICAgKiBBcyB0aGUgbmFtZSBpbmRpY2F0ZXMsIGlmIHlvdSB1c2UgdGhpcywgeW91IGFyZSBtb3N0IGxpa2VseSBkb2luZyBzb21ldGhpbmdcbiAgICAgKiBUaGUgV3JvbmcgV2F5LiBQbGVhc2UgdHJ5IHRvIHVuZGVyc3RhbmQgdGhlIHJlYWN0aXZlIHdheSBiZWZvcmUgdXNpbmcgdGhpc1xuICAgICAqIG1ldGhvZC4gVXNlIGl0IG9ubHkgd2hlbiB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcuXG4gICAgICovXG4gICAgU3RyZWFtLnByb3RvdHlwZS5zaGFtZWZ1bGx5U2VuZENvbXBsZXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLl9jKCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBCbGVuZHMgbXVsdGlwbGUgc3RyZWFtcyB0b2dldGhlciwgZW1pdHRpbmcgZXZlbnRzIGZyb20gYWxsIG9mIHRoZW1cbiAgICAgKiBjb25jdXJyZW50bHkuXG4gICAgICpcbiAgICAgKiAqbWVyZ2UqIHRha2VzIG11bHRpcGxlIHN0cmVhbXMgYXMgYXJndW1lbnRzLCBhbmQgY3JlYXRlcyBhIHN0cmVhbSB0aGF0XG4gICAgICogYmVoYXZlcyBsaWtlIGVhY2ggb2YgdGhlIGFyZ3VtZW50IHN0cmVhbXMsIGluIHBhcmFsbGVsLlxuICAgICAqXG4gICAgICogTWFyYmxlIGRpYWdyYW06XG4gICAgICpcbiAgICAgKiBgYGB0ZXh0XG4gICAgICogLS0xLS0tLTItLS0tLTMtLS0tLS0tLTQtLS1cbiAgICAgKiAtLS0tYS0tLS0tYi0tLS1jLS0tZC0tLS0tLVxuICAgICAqICAgICAgICAgICAgbWVyZ2VcbiAgICAgKiAtLTEtYS0tMi0tYi0tMy1jLS0tZC0tNC0tLVxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQGZhY3RvcnkgdHJ1ZVxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0xIEEgc3RyZWFtIHRvIG1lcmdlIHRvZ2V0aGVyIHdpdGggb3RoZXIgc3RyZWFtcy5cbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtMiBBIHN0cmVhbSB0byBtZXJnZSB0b2dldGhlciB3aXRoIG90aGVyIHN0cmVhbXMuIFR3b1xuICAgICAqIG9yIG1vcmUgc3RyZWFtcyBtYXkgYmUgZ2l2ZW4gYXMgYXJndW1lbnRzLlxuICAgICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICAgKi9cbiAgICBTdHJlYW0ubWVyZ2UgPSBmdW5jdGlvbiBtZXJnZSgpIHtcbiAgICAgICAgdmFyIHN0cmVhbXMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIHN0cmVhbXNbX2kgLSAwXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW0obmV3IE1lcmdlUHJvZHVjZXIoc3RyZWFtcykpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ29tYmluZXMgbXVsdGlwbGUgaW5wdXQgc3RyZWFtcyB0b2dldGhlciB0byByZXR1cm4gYSBzdHJlYW0gd2hvc2UgZXZlbnRzXG4gICAgICogYXJlIGFycmF5cyB0aGF0IGNvbGxlY3QgdGhlIGxhdGVzdCBldmVudHMgZnJvbSBlYWNoIGlucHV0IHN0cmVhbS5cbiAgICAgKlxuICAgICAqICpjb21iaW5lKiBpbnRlcm5hbGx5IHJlbWVtYmVycyB0aGUgbW9zdCByZWNlbnQgZXZlbnQgZnJvbSBlYWNoIG9mIHRoZSBpbnB1dFxuICAgICAqIHN0cmVhbXMuIFdoZW4gYW55IG9mIHRoZSBpbnB1dCBzdHJlYW1zIGVtaXRzIGFuIGV2ZW50LCB0aGF0IGV2ZW50IHRvZ2V0aGVyXG4gICAgICogd2l0aCBhbGwgdGhlIG90aGVyIHNhdmVkIGV2ZW50cyBhcmUgY29tYmluZWQgaW50byBhbiBhcnJheS4gVGhhdCBhcnJheSB3aWxsXG4gICAgICogYmUgZW1pdHRlZCBvbiB0aGUgb3V0cHV0IHN0cmVhbS4gSXQncyBlc3NlbnRpYWxseSBhIHdheSBvZiBqb2luaW5nIHRvZ2V0aGVyXG4gICAgICogdGhlIGV2ZW50cyBmcm9tIG11bHRpcGxlIHN0cmVhbXMuXG4gICAgICpcbiAgICAgKiBNYXJibGUgZGlhZ3JhbTpcbiAgICAgKlxuICAgICAqIGBgYHRleHRcbiAgICAgKiAtLTEtLS0tMi0tLS0tMy0tLS0tLS0tNC0tLVxuICAgICAqIC0tLS1hLS0tLS1iLS0tLS1jLS1kLS0tLS0tXG4gICAgICogICAgICAgICAgY29tYmluZVxuICAgICAqIC0tLS0xYS0yYS0yYi0zYi0zYy0zZC00ZC0tXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAZmFjdG9yeSB0cnVlXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbTEgQSBzdHJlYW0gdG8gY29tYmluZSB0b2dldGhlciB3aXRoIG90aGVyIHN0cmVhbXMuXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbTIgQSBzdHJlYW0gdG8gY29tYmluZSB0b2dldGhlciB3aXRoIG90aGVyIHN0cmVhbXMuXG4gICAgICogTXVsdGlwbGUgc3RyZWFtcywgbm90IGp1c3QgdHdvLCBtYXkgYmUgZ2l2ZW4gYXMgYXJndW1lbnRzLlxuICAgICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICAgKi9cbiAgICBTdHJlYW0uY29tYmluZSA9IGZ1bmN0aW9uIGNvbWJpbmUoKSB7XG4gICAgICAgIHZhciBzdHJlYW1zID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBzdHJlYW1zW19pIC0gMF0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtKG5ldyBDb21iaW5lUHJvZHVjZXIoc3RyZWFtcykpO1xuICAgIH07XG4gICAgcmV0dXJuIFN0cmVhbTtcbn0oKSk7XG5leHBvcnRzLlN0cmVhbSA9IFN0cmVhbTtcbnZhciBNZW1vcnlTdHJlYW0gPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhNZW1vcnlTdHJlYW0sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTWVtb3J5U3RyZWFtKHByb2R1Y2VyKSB7XG4gICAgICAgIF9zdXBlci5jYWxsKHRoaXMsIHByb2R1Y2VyKTtcbiAgICAgICAgdGhpcy5faGFzID0gZmFsc2U7XG4gICAgfVxuICAgIE1lbW9yeVN0cmVhbS5wcm90b3R5cGUuX24gPSBmdW5jdGlvbiAoeCkge1xuICAgICAgICB0aGlzLl92ID0geDtcbiAgICAgICAgdGhpcy5faGFzID0gdHJ1ZTtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5fbi5jYWxsKHRoaXMsIHgpO1xuICAgIH07XG4gICAgTWVtb3J5U3RyZWFtLnByb3RvdHlwZS5fYWRkID0gZnVuY3Rpb24gKGlsKSB7XG4gICAgICAgIGlmICh0aGlzLl9oYXMpIHtcbiAgICAgICAgICAgIGlsLl9uKHRoaXMuX3YpO1xuICAgICAgICB9XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUuX2FkZC5jYWxsKHRoaXMsIGlsKTtcbiAgICB9O1xuICAgIE1lbW9yeVN0cmVhbS5wcm90b3R5cGUuX3N0b3BOb3cgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuX2hhcyA9IGZhbHNlO1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLl9zdG9wTm93LmNhbGwodGhpcyk7XG4gICAgfTtcbiAgICBNZW1vcnlTdHJlYW0ucHJvdG90eXBlLl94ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLl9oYXMgPSBmYWxzZTtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5feC5jYWxsKHRoaXMpO1xuICAgIH07XG4gICAgTWVtb3J5U3RyZWFtLnByb3RvdHlwZS5tYXAgPSBmdW5jdGlvbiAocHJvamVjdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFwKHByb2plY3QpO1xuICAgIH07XG4gICAgTWVtb3J5U3RyZWFtLnByb3RvdHlwZS5tYXBUbyA9IGZ1bmN0aW9uIChwcm9qZWN0ZWRWYWx1ZSkge1xuICAgICAgICByZXR1cm4gX3N1cGVyLnByb3RvdHlwZS5tYXBUby5jYWxsKHRoaXMsIHByb2plY3RlZFZhbHVlKTtcbiAgICB9O1xuICAgIE1lbW9yeVN0cmVhbS5wcm90b3R5cGUudGFrZSA9IGZ1bmN0aW9uIChhbW91bnQpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5wcm90b3R5cGUudGFrZS5jYWxsKHRoaXMsIGFtb3VudCk7XG4gICAgfTtcbiAgICBNZW1vcnlTdHJlYW0ucHJvdG90eXBlLmVuZFdoZW4gPSBmdW5jdGlvbiAob3RoZXIpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5wcm90b3R5cGUuZW5kV2hlbi5jYWxsKHRoaXMsIG90aGVyKTtcbiAgICB9O1xuICAgIE1lbW9yeVN0cmVhbS5wcm90b3R5cGUucmVwbGFjZUVycm9yID0gZnVuY3Rpb24gKHJlcGxhY2UpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5wcm90b3R5cGUucmVwbGFjZUVycm9yLmNhbGwodGhpcywgcmVwbGFjZSk7XG4gICAgfTtcbiAgICBNZW1vcnlTdHJlYW0ucHJvdG90eXBlLnJlbWVtYmVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIE1lbW9yeVN0cmVhbS5wcm90b3R5cGUuZGVidWcgPSBmdW5jdGlvbiAobGFiZWxPclNweSkge1xuICAgICAgICByZXR1cm4gX3N1cGVyLnByb3RvdHlwZS5kZWJ1Zy5jYWxsKHRoaXMsIGxhYmVsT3JTcHkpO1xuICAgIH07XG4gICAgcmV0dXJuIE1lbW9yeVN0cmVhbTtcbn0oU3RyZWFtKSk7XG5leHBvcnRzLk1lbW9yeVN0cmVhbSA9IE1lbW9yeVN0cmVhbTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZGVmYXVsdCA9IFN0cmVhbTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvcmUuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgY29yZV8xID0gcmVxdWlyZSgnLi4vY29yZScpO1xudmFyIENvbmNhdFByb2R1Y2VyID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBDb25jYXRQcm9kdWNlcihzdHJlYW1zKSB7XG4gICAgICAgIHRoaXMuc3RyZWFtcyA9IHN0cmVhbXM7XG4gICAgICAgIHRoaXMudHlwZSA9ICdjb25jYXQnO1xuICAgICAgICB0aGlzLm91dCA9IG51bGw7XG4gICAgICAgIHRoaXMuaSA9IDA7XG4gICAgfVxuICAgIENvbmNhdFByb2R1Y2VyLnByb3RvdHlwZS5fc3RhcnQgPSBmdW5jdGlvbiAob3V0KSB7XG4gICAgICAgIHRoaXMub3V0ID0gb3V0O1xuICAgICAgICB0aGlzLnN0cmVhbXNbdGhpcy5pXS5fYWRkKHRoaXMpO1xuICAgIH07XG4gICAgQ29uY2F0UHJvZHVjZXIucHJvdG90eXBlLl9zdG9wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc3RyZWFtcyA9IHRoaXMuc3RyZWFtcztcbiAgICAgICAgaWYgKHRoaXMuaSA8IHN0cmVhbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBzdHJlYW1zW3RoaXMuaV0uX3JlbW92ZSh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmkgPSAwO1xuICAgICAgICB0aGlzLm91dCA9IG51bGw7XG4gICAgfTtcbiAgICBDb25jYXRQcm9kdWNlci5wcm90b3R5cGUuX24gPSBmdW5jdGlvbiAodCkge1xuICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICBpZiAoIXUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHUuX24odCk7XG4gICAgfTtcbiAgICBDb25jYXRQcm9kdWNlci5wcm90b3R5cGUuX2UgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICghdSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdS5fZShlcnIpO1xuICAgIH07XG4gICAgQ29uY2F0UHJvZHVjZXIucHJvdG90eXBlLl9jID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICBpZiAoIXUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHZhciBzdHJlYW1zID0gdGhpcy5zdHJlYW1zO1xuICAgICAgICBzdHJlYW1zW3RoaXMuaV0uX3JlbW92ZSh0aGlzKTtcbiAgICAgICAgaWYgKCsrdGhpcy5pIDwgc3RyZWFtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHN0cmVhbXNbdGhpcy5pXS5fYWRkKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdS5fYygpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gQ29uY2F0UHJvZHVjZXI7XG59KCkpO1xuLyoqXG4gKiBQdXRzIG9uZSBzdHJlYW0gYWZ0ZXIgdGhlIG90aGVyLiAqY29uY2F0KiBpcyBhIGZhY3RvcnkgdGhhdCB0YWtlcyBtdWx0aXBsZVxuICogc3RyZWFtcyBhcyBhcmd1bWVudHMsIGFuZCBzdGFydHMgdGhlIGBuKzFgLXRoIHN0cmVhbSBvbmx5IHdoZW4gdGhlIGBuYC10aFxuICogc3RyZWFtIGhhcyBjb21wbGV0ZWQuIEl0IGNvbmNhdGVuYXRlcyB0aG9zZSBzdHJlYW1zIHRvZ2V0aGVyLlxuICpcbiAqIE1hcmJsZSBkaWFncmFtOlxuICpcbiAqIGBgYHRleHRcbiAqIC0tMS0tMi0tLTMtLS00LXxcbiAqIC4uLi4uLi4uLi4uLi4uLi0tYS1iLWMtLWQtfFxuICogICAgICAgICAgIGNvbmNhdFxuICogLS0xLS0yLS0tMy0tLTQtLS1hLWItYy0tZC18XG4gKiBgYGBcbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYGpzXG4gKiBpbXBvcnQgY29uY2F0IGZyb20gJ3hzdHJlYW0vZXh0cmEvY29uY2F0J1xuICpcbiAqIGNvbnN0IHN0cmVhbUEgPSB4cy5vZignYScsICdiJywgJ2MnKVxuICogY29uc3Qgc3RyZWFtQiA9IHhzLm9mKDEwLCAyMCwgMzApXG4gKiBjb25zdCBzdHJlYW1DID0geHMub2YoJ1gnLCAnWScsICdaJylcbiAqXG4gKiBjb25zdCBvdXRwdXRTdHJlYW0gPSBjb25jYXQoc3RyZWFtQSwgc3RyZWFtQiwgc3RyZWFtQylcbiAqXG4gKiBvdXRwdXRTdHJlYW0uYWRkTGlzdGVuZXIoe1xuICogICBuZXh0OiAoeCkgPT4gY29uc29sZS5sb2coeCksXG4gKiAgIGVycm9yOiAoZXJyKSA9PiBjb25zb2xlLmVycm9yKGVyciksXG4gKiAgIGNvbXBsZXRlOiAoKSA9PiBjb25zb2xlLmxvZygnY29uY2F0IGNvbXBsZXRlZCcpLFxuICogfSlcbiAqIGBgYFxuICpcbiAqIEBmYWN0b3J5IHRydWVcbiAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0xIEEgc3RyZWFtIHRvIGNvbmNhdGVuYXRlIHRvZ2V0aGVyIHdpdGggb3RoZXIgc3RyZWFtcy5cbiAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0yIEEgc3RyZWFtIHRvIGNvbmNhdGVuYXRlIHRvZ2V0aGVyIHdpdGggb3RoZXIgc3RyZWFtcy4gVHdvXG4gKiBvciBtb3JlIHN0cmVhbXMgbWF5IGJlIGdpdmVuIGFzIGFyZ3VtZW50cy5cbiAqIEByZXR1cm4ge1N0cmVhbX1cbiAqL1xuZnVuY3Rpb24gY29uY2F0KCkge1xuICAgIHZhciBzdHJlYW1zID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgc3RyZWFtc1tfaSAtIDBdID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBjb3JlXzEuU3RyZWFtKG5ldyBDb25jYXRQcm9kdWNlcihzdHJlYW1zKSk7XG59XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmRlZmF1bHQgPSBjb25jYXQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb25jYXQuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgY29yZV8xID0gcmVxdWlyZSgnLi4vY29yZScpO1xudmFyIERlbGF5T3BlcmF0b3IgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERlbGF5T3BlcmF0b3IoZHQsIGlucykge1xuICAgICAgICB0aGlzLmR0ID0gZHQ7XG4gICAgICAgIHRoaXMuaW5zID0gaW5zO1xuICAgICAgICB0aGlzLnR5cGUgPSAnZGVsYXknO1xuICAgICAgICB0aGlzLm91dCA9IG51bGw7XG4gICAgfVxuICAgIERlbGF5T3BlcmF0b3IucHJvdG90eXBlLl9zdGFydCA9IGZ1bmN0aW9uIChvdXQpIHtcbiAgICAgICAgdGhpcy5vdXQgPSBvdXQ7XG4gICAgICAgIHRoaXMuaW5zLl9hZGQodGhpcyk7XG4gICAgfTtcbiAgICBEZWxheU9wZXJhdG9yLnByb3RvdHlwZS5fc3RvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5pbnMuX3JlbW92ZSh0aGlzKTtcbiAgICAgICAgdGhpcy5vdXQgPSBudWxsO1xuICAgIH07XG4gICAgRGVsYXlPcGVyYXRvci5wcm90b3R5cGUuX24gPSBmdW5jdGlvbiAodCkge1xuICAgICAgICB2YXIgdSA9IHRoaXMub3V0O1xuICAgICAgICBpZiAoIXUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHZhciBpZCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHUuX24odCk7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGlkKTtcbiAgICAgICAgfSwgdGhpcy5kdCk7XG4gICAgfTtcbiAgICBEZWxheU9wZXJhdG9yLnByb3RvdHlwZS5fZSA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKCF1KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB2YXIgaWQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB1Ll9lKGVycik7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGlkKTtcbiAgICAgICAgfSwgdGhpcy5kdCk7XG4gICAgfTtcbiAgICBEZWxheU9wZXJhdG9yLnByb3RvdHlwZS5fYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKCF1KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB2YXIgaWQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB1Ll9jKCk7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGlkKTtcbiAgICAgICAgfSwgdGhpcy5kdCk7XG4gICAgfTtcbiAgICByZXR1cm4gRGVsYXlPcGVyYXRvcjtcbn0oKSk7XG4vKipcbiAqIERlbGF5cyBwZXJpb2RpYyBldmVudHMgYnkgYSBnaXZlbiB0aW1lIHBlcmlvZC5cbiAqXG4gKiBNYXJibGUgZGlhZ3JhbTpcbiAqXG4gKiBgYGB0ZXh0XG4gKiAxLS0tLTItLTMtLTQtLS0tNXxcbiAqICAgICBkZWxheSg2MClcbiAqIC0tLTEtLS0tMi0tMy0tNC0tLS01fFxuICogYGBgXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGBqc1xuICogaW1wb3J0IGZyb21EaWFncmFtIGZyb20gJ3hzdHJlYW0vZXh0cmEvZnJvbURpYWdyYW0nXG4gKiBpbXBvcnQgZGVsYXkgZnJvbSAneHN0cmVhbS9leHRyYS9kZWxheSdcbiAqXG4gKiBjb25zdCBzdHJlYW0gPSBmcm9tRGlhZ3JhbSgnMS0tLS0yLS0zLS00LS0tLTV8JylcbiAqICAuY29tcG9zZShkZWxheSg2MCkpXG4gKlxuICogc3RyZWFtLmFkZExpc3RlbmVyKHtcbiAqICAgbmV4dDogaSA9PiBjb25zb2xlLmxvZyhpKSxcbiAqICAgZXJyb3I6IGVyciA9PiBjb25zb2xlLmVycm9yKGVyciksXG4gKiAgIGNvbXBsZXRlOiAoKSA9PiBjb25zb2xlLmxvZygnY29tcGxldGVkJylcbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBgYGB0ZXh0XG4gKiA+IDEgIChhZnRlciA2MCBtcylcbiAqID4gMiAgKGFmdGVyIDE2MCBtcylcbiAqID4gMyAgKGFmdGVyIDIyMCBtcylcbiAqID4gNCAgKGFmdGVyIDI4MCBtcylcbiAqID4gNSAgKGFmdGVyIDM4MCBtcylcbiAqID4gY29tcGxldGVkXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gcGVyaW9kIFRoZSBhbW91bnQgb2Ygc2lsZW5jZSByZXF1aXJlZCBpbiBtaWxsaXNlY29uZHMuXG4gKiBAcmV0dXJuIHtTdHJlYW19XG4gKi9cbmZ1bmN0aW9uIGRlbGF5KHBlcmlvZCkge1xuICAgIHJldHVybiBmdW5jdGlvbiBkZWxheU9wZXJhdG9yKGlucykge1xuICAgICAgICByZXR1cm4gbmV3IGNvcmVfMS5TdHJlYW0obmV3IERlbGF5T3BlcmF0b3IocGVyaW9kLCBpbnMpKTtcbiAgICB9O1xufVxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gZGVsYXk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kZWxheS5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBjb3JlXzEgPSByZXF1aXJlKCcuLi9jb3JlJyk7XG52YXIgZW1wdHkgPSB7fTtcbnZhciBEcm9wUmVwZWF0c09wZXJhdG9yID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBEcm9wUmVwZWF0c09wZXJhdG9yKGZuLCBpbnMpIHtcbiAgICAgICAgdGhpcy5mbiA9IGZuO1xuICAgICAgICB0aGlzLmlucyA9IGlucztcbiAgICAgICAgdGhpcy50eXBlID0gJ2Ryb3BSZXBlYXRzJztcbiAgICAgICAgdGhpcy5vdXQgPSBudWxsO1xuICAgICAgICB0aGlzLnYgPSBlbXB0eTtcbiAgICB9XG4gICAgRHJvcFJlcGVhdHNPcGVyYXRvci5wcm90b3R5cGUuX3N0YXJ0ID0gZnVuY3Rpb24gKG91dCkge1xuICAgICAgICB0aGlzLm91dCA9IG91dDtcbiAgICAgICAgdGhpcy5pbnMuX2FkZCh0aGlzKTtcbiAgICB9O1xuICAgIERyb3BSZXBlYXRzT3BlcmF0b3IucHJvdG90eXBlLl9zdG9wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmlucy5fcmVtb3ZlKHRoaXMpO1xuICAgICAgICB0aGlzLm91dCA9IG51bGw7XG4gICAgICAgIHRoaXMudiA9IGVtcHR5O1xuICAgIH07XG4gICAgRHJvcFJlcGVhdHNPcGVyYXRvci5wcm90b3R5cGUuaXNFcSA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZuID8gdGhpcy5mbih4LCB5KSA6IHggPT09IHk7XG4gICAgfTtcbiAgICBEcm9wUmVwZWF0c09wZXJhdG9yLnByb3RvdHlwZS5fbiA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5vdXQ7XG4gICAgICAgIGlmICghdSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdmFyIHYgPSB0aGlzLnY7XG4gICAgICAgIGlmICh2ID09PSBlbXB0eSB8fCAhdGhpcy5pc0VxKHQsIHYpKSB7XG4gICAgICAgICAgICB1Ll9uKHQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudiA9IHQ7XG4gICAgfTtcbiAgICBEcm9wUmVwZWF0c09wZXJhdG9yLnByb3RvdHlwZS5fZSA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKCF1KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB1Ll9lKGVycik7XG4gICAgfTtcbiAgICBEcm9wUmVwZWF0c09wZXJhdG9yLnByb3RvdHlwZS5fYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHUgPSB0aGlzLm91dDtcbiAgICAgICAgaWYgKCF1KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB1Ll9jKCk7XG4gICAgfTtcbiAgICByZXR1cm4gRHJvcFJlcGVhdHNPcGVyYXRvcjtcbn0oKSk7XG5leHBvcnRzLkRyb3BSZXBlYXRzT3BlcmF0b3IgPSBEcm9wUmVwZWF0c09wZXJhdG9yO1xuLyoqXG4gKiBEcm9wcyBjb25zZWN1dGl2ZSBkdXBsaWNhdGUgdmFsdWVzIGluIGEgc3RyZWFtLlxuICpcbiAqIE1hcmJsZSBkaWFncmFtOlxuICpcbiAqIGBgYHRleHRcbiAqIC0tMS0tMi0tMS0tMS0tMS0tMi0tMy0tNC0tMy0tM3xcbiAqICAgICBkcm9wUmVwZWF0c1xuICogLS0xLS0yLS0xLS0tLS0tLS0yLS0zLS00LS0zLS0tfFxuICogYGBgXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGBqc1xuICogaW1wb3J0IGRyb3BSZXBlYXRzIGZyb20gJ3hzdHJlYW0vZXh0cmEvZHJvcFJlcGVhdHMnXG4gKlxuICogY29uc3Qgc3RyZWFtID0geHMub2YoMSwgMiwgMSwgMSwgMSwgMiwgMywgNCwgMywgMylcbiAqICAgLmNvbXBvc2UoZHJvcFJlcGVhdHMoKSlcbiAqXG4gKiBzdHJlYW0uYWRkTGlzdGVuZXIoe1xuICogICBuZXh0OiBpID0+IGNvbnNvbGUubG9nKGkpLFxuICogICBlcnJvcjogZXJyID0+IGNvbnNvbGUuZXJyb3IoZXJyKSxcbiAqICAgY29tcGxldGU6ICgpID0+IGNvbnNvbGUubG9nKCdjb21wbGV0ZWQnKVxuICogfSlcbiAqIGBgYFxuICpcbiAqIGBgYHRleHRcbiAqID4gMVxuICogPiAyXG4gKiA+IDFcbiAqID4gMlxuICogPiAzXG4gKiA+IDRcbiAqID4gM1xuICogPiBjb21wbGV0ZWRcbiAqIGBgYFxuICpcbiAqIEV4YW1wbGUgd2l0aCBhIGN1c3RvbSBpc0VxdWFsIGZ1bmN0aW9uOlxuICpcbiAqIGBgYGpzXG4gKiBpbXBvcnQgZHJvcFJlcGVhdHMgZnJvbSAneHN0cmVhbS9leHRyYS9kcm9wUmVwZWF0cydcbiAqXG4gKiBjb25zdCBzdHJlYW0gPSB4cy5vZignYScsICdiJywgJ2EnLCAnQScsICdCJywgJ2InKVxuICogICAuY29tcG9zZShkcm9wUmVwZWF0cygoeCwgeSkgPT4geC50b0xvd2VyQ2FzZSgpID09PSB5LnRvTG93ZXJDYXNlKCkpKVxuICpcbiAqIHN0cmVhbS5hZGRMaXN0ZW5lcih7XG4gKiAgIG5leHQ6IGkgPT4gY29uc29sZS5sb2coaSksXG4gKiAgIGVycm9yOiBlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpLFxuICogICBjb21wbGV0ZTogKCkgPT4gY29uc29sZS5sb2coJ2NvbXBsZXRlZCcpXG4gKiB9KVxuICogYGBgXG4gKlxuICogYGBgdGV4dFxuICogPiBhXG4gKiA+IGJcbiAqID4gYVxuICogPiBCXG4gKiA+IGNvbXBsZXRlZFxuICogYGBgXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXNFcXVhbCBBbiBvcHRpb25hbCBmdW5jdGlvbiBvZiB0eXBlXG4gKiBgKHg6IFQsIHk6IFQpID0+IGJvb2xlYW5gIHRoYXQgdGFrZXMgYW4gZXZlbnQgZnJvbSB0aGUgaW5wdXQgc3RyZWFtIGFuZFxuICogY2hlY2tzIGlmIGl0IGlzIGVxdWFsIHRvIHByZXZpb3VzIGV2ZW50LCBieSByZXR1cm5pbmcgYSBib29sZWFuLlxuICogQHJldHVybiB7U3RyZWFtfVxuICovXG5mdW5jdGlvbiBkcm9wUmVwZWF0cyhpc0VxdWFsKSB7XG4gICAgaWYgKGlzRXF1YWwgPT09IHZvaWQgMCkgeyBpc0VxdWFsID0gbnVsbDsgfVxuICAgIHJldHVybiBmdW5jdGlvbiBkcm9wUmVwZWF0c09wZXJhdG9yKGlucykge1xuICAgICAgICByZXR1cm4gbmV3IGNvcmVfMS5TdHJlYW0obmV3IERyb3BSZXBlYXRzT3BlcmF0b3IoaXNFcXVhbCwgaW5zKSk7XG4gICAgfTtcbn1cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGRyb3BSZXBlYXRzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZHJvcFJlcGVhdHMuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgY29yZV8xID0gcmVxdWlyZSgnLi9jb3JlJyk7XG5leHBvcnRzLlN0cmVhbSA9IGNvcmVfMS5TdHJlYW07XG5leHBvcnRzLk1lbW9yeVN0cmVhbSA9IGNvcmVfMS5NZW1vcnlTdHJlYW07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmRlZmF1bHQgPSBjb3JlXzEuU3RyZWFtO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiaW1wb3J0IHtydW59IGZyb20gJ0BjeWNsZS94c3RyZWFtLXJ1bic7XG5pbXBvcnQge21ha2VET01Ecml2ZXJ9IGZyb20gJ0BjeWNsZS9kb20nO1xuaW1wb3J0IHttYWtlSGlzdG9yeURyaXZlcn0gZnJvbSAnQGN5Y2xlL2hpc3RvcnknXG5pbXBvcnQge2NyZWF0ZUhpc3Rvcnl9IGZyb20gJ2hpc3RvcnknO1xuaW1wb3J0IHN0b3JhZ2VEcml2ZXIgZnJvbSAnQGN5Y2xlL3N0b3JhZ2UnO1xuLy8gVEhFIE1BSU4gRlVOQ1RJT05cbi8vIFRoaXMgaXMgdGhlIHRvZG8gbGlzdCBjb21wb25lbnQuXG5pbXBvcnQgVGFza0xpc3QgZnJvbSAnLi9jb21wb25lbnRzL1Rhc2tMaXN0L2luZGV4JztcblxuY29uc3QgbWFpbiA9IFRhc2tMaXN0O1xuXG4vLyBUSEUgRU5UUlkgUE9JTlRcbi8vIFRoaXMgaXMgd2hlcmUgdGhlIHdob2xlIHN0b3J5IHN0YXJ0cy5cbi8vIGBydW5gIHJlY2VpdmVzIGEgbWFpbiBmdW5jdGlvbiBhbmQgYW4gb2JqZWN0XG4vLyB3aXRoIHRoZSBkcml2ZXJzLlxucnVuKG1haW4sIHtcbiAgLy8gVEhFIERPTSBEUklWRVJcbiAgLy8gYG1ha2VET01Ecml2ZXIoY29udGFpbmVyKWAgZnJvbSBDeWNsZSBET00gcmV0dXJucyBhXG4gIC8vIGRyaXZlciBmdW5jdGlvbiB0byBpbnRlcmFjdCB3aXRoIHRoZSBET00uXG4gIERPTTogbWFrZURPTURyaXZlcignLnRvZG9hcHAnLCB7dHJhbnNwb3NpdGlvbjogdHJ1ZX0pLFxuICAvLyBUSEUgSElTVE9SWSBEUklWRVJcbiAgLy8gQSBkcml2ZXIgdG8gaW50ZXJhY3Qgd2l0aCBicm93c2VyIGhpc3RvcnlcbiAgSGlzdG9yeTogbWFrZUhpc3RvcnlEcml2ZXIoY3JlYXRlSGlzdG9yeSgpLCB7Y2FwdHVyZTogdHJ1ZX0pLFxuICAvLyBUSEUgU1RPUkFHRSBEUklWRVJcbiAgLy8gVGhlIHN0b3JhZ2UgZHJpdmVyIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGFjY2VzcyB2YWx1ZXMgZm9yXG4gIC8vIGxvY2FsLSBhbmQgc2Vzc2lvblN0b3JhZ2Uga2V5cyBhcyBzdHJlYW1zLlxuICBzdG9yYWdlOiBzdG9yYWdlRHJpdmVyXG59KTtcbiIsImltcG9ydCBpbnRlbnQgZnJvbSAnLi9pbnRlbnQnO1xuaW1wb3J0IG1vZGVsIGZyb20gJy4vbW9kZWwnO1xuaW1wb3J0IHZpZXcgZnJvbSAnLi92aWV3JztcblxuLy8gVEhFIFRPRE8gSVRFTSBGVU5DVElPTlxuLy8gVGhpcyBpcyBhIHNpbXBsZSB0b2RvIGl0ZW0gY29tcG9uZW50LFxuLy8gc3RydWN0dXJlZCB3aXRoIHRoZSBNVkktcGF0dGVybi5cbmZ1bmN0aW9uIFRhc2soc291cmNlcykge1xuICBsZXQgYWN0aW9uJCA9IGludGVudChzb3VyY2VzKTtcbiAgbGV0IHN0YXRlJCA9IG1vZGVsKHNvdXJjZXMucHJvcHMkLCBhY3Rpb24kKTtcbiAgbGV0IHZ0cmVlJCA9IHZpZXcoc3RhdGUkKTtcblxuICByZXR1cm4ge1xuICAgIERPTTogdnRyZWUkLFxuICAgIGFjdGlvbiQsXG4gICAgc3RhdGUkXG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IFRhc2s7XG4iLCJpbXBvcnQgeHMgZnJvbSAneHN0cmVhbSc7XG5pbXBvcnQge0VOVEVSX0tFWSwgRVNDX0tFWX0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG4vLyBUSEUgVE9ETyBJVEVNIElOVEVOVFxuLy8gVGhpcyBpbnRlbnQgZnVuY3Rpb24gcmV0dXJucyBhIHN0cmVhbSBvZiBhbGwgdGhlIGRpZmZlcmVudCxcbi8vIGFjdGlvbnMgdGhhdCBjYW4gYmUgdGFrZW4gb24gYSB0b2RvLlxuZnVuY3Rpb24gaW50ZW50KHNvdXJjZXMpIHtcbiAgLy8gVEhFIElOVEVOVCBNRVJHRVxuICAvLyBNZXJnZSBhbGwgYWN0aW9ucyBpbnRvIG9uZSBzdHJlYW0uXG4gIHJldHVybiB4cy5tZXJnZShcbiAgICAvLyBUSEUgREVTVFJPWSBBQ1RJT04gU1RSRUFNXG4gICAgc291cmNlcy5ET00uc2VsZWN0KCcuZGVzdHJveScpLmV2ZW50cygnY2xpY2snKVxuICAgICAgLm1hcFRvKHt0eXBlOiAnZGVzdHJveSd9KSxcblxuICAgIC8vIFRIRSBUT0dHTEUgQUNUSU9OIFNUUkVBTVxuICAgIHNvdXJjZXMuRE9NLnNlbGVjdCgnLnRvZ2dsZScpLmV2ZW50cygnY2hhbmdlJylcbiAgICAgIC5tYXAoZXYgPT4gZXYudGFyZ2V0LmNoZWNrZWQpXG4gICAgICAubWFwKHBheWxvYWQgPT4gKHt0eXBlOiAndG9nZ2xlJywgcGF5bG9hZH0pKSxcbiAgICBzb3VyY2VzLmFjdGlvbiRcbiAgICAgIC5maWx0ZXIoYWN0aW9uID0+IGFjdGlvbi50eXBlID09PSAndG9nZ2xlQWxsJylcbiAgICAgIC5tYXAoYWN0aW9uID0+ICh7Li4uYWN0aW9uLCB0eXBlOiAndG9nZ2xlJ30pKSxcblxuICAgIC8vIFRIRSBTVEFSVCBFRElUIEFDVElPTiBTVFJFQU1cbiAgICBzb3VyY2VzLkRPTS5zZWxlY3QoJ2xhYmVsJykuZXZlbnRzKCdkYmxjbGljaycpXG4gICAgICAubWFwVG8oe3R5cGU6ICdzdGFydEVkaXQnfSksXG5cbiAgICAvLyBUSEUgRVNDIEtFWSBBQ1RJT04gU1RSRUFNXG4gICAgc291cmNlcy5ET00uc2VsZWN0KCcuZWRpdCcpLmV2ZW50cygna2V5dXAnKVxuICAgICAgLmZpbHRlcihldiA9PiBldi5rZXlDb2RlID09PSBFU0NfS0VZKVxuICAgICAgLm1hcFRvKHt0eXBlOiAnY2FuY2VsRWRpdCd9KSxcblxuICAgIC8vIFRIRSBFTlRFUiBLRVkgQUNUSU9OIFNUUkVBTVxuICAgIHNvdXJjZXMuRE9NLnNlbGVjdCgnLmVkaXQnKS5ldmVudHMoJ2tleXVwJylcbiAgICAgIC5maWx0ZXIoZXYgPT4gZXYua2V5Q29kZSA9PT0gRU5URVJfS0VZKVxuICAgICAgLmNvbXBvc2UocyA9PiB4cy5tZXJnZShzLCBzb3VyY2VzLkRPTS5zZWxlY3QoJy5lZGl0JykuZXZlbnRzKCdibHVyJywgdHJ1ZSkpKVxuICAgICAgLm1hcChldiA9PiAoe3RpdGxlOiBldi50YXJnZXQudmFsdWUsIHR5cGU6ICdkb25lRWRpdCd9KSlcbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaW50ZW50O1xuIiwiaW1wb3J0IHhzIGZyb20gJ3hzdHJlYW0nO1xuXG5mdW5jdGlvbiBtYWtlUmVkdWNlciQoYWN0aW9uJCkge1xuICBsZXQgc3RhcnRFZGl0UmVkdWNlciQgPSBhY3Rpb24kXG4gICAgLmZpbHRlcihhY3Rpb24gPT4gYWN0aW9uLnR5cGUgPT09ICdzdGFydEVkaXQnKVxuICAgIC5tYXBUbyhmdW5jdGlvbiBzdGFydEVkaXRSZWR1Y2VyKGRhdGEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIGVkaXRpbmc6IHRydWVcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgbGV0IGRvbmVFZGl0UmVkdWNlciQgPSBhY3Rpb24kXG4gICAgLmZpbHRlcihhY3Rpb24gPT4gYWN0aW9uLnR5cGUgPT09ICdkb25lRWRpdCcpXG4gICAgLm1hcChhY3Rpb24gPT4gZnVuY3Rpb24gZG9uZUVkaXRSZWR1Y2VyKGRhdGEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIHRpdGxlOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgZWRpdGluZzogZmFsc2VcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgbGV0IGNhbmNlbEVkaXRSZWR1Y2VyJCA9IGFjdGlvbiRcbiAgICAuZmlsdGVyKGFjdGlvbiA9PiBhY3Rpb24udHlwZSA9PT0gJ2NhbmNlbEVkaXQnKVxuICAgIC5tYXBUbyhmdW5jdGlvbiBjYW5jZWxFZGl0UmVkdWNlcihkYXRhKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5kYXRhLFxuICAgICAgICBlZGl0aW5nOiBmYWxzZVxuICAgICAgfTtcbiAgICB9KTtcblxuICBsZXQgdG9nZ2xlUmVkdWNlciQgPSBhY3Rpb24kXG4gICAgLmZpbHRlcihhY3Rpb24gPT4gYWN0aW9uLnR5cGUgPT09ICd0b2dnbGUnKVxuICAgIC5tYXAoYWN0aW9uID0+IGZ1bmN0aW9uIHRvZ2dsZVJlZHVjZXIoZGF0YSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgY29tcGxldGVkOiBhY3Rpb24ucGF5bG9hZFxuICAgICAgfTtcbiAgICB9KTtcblxuICByZXR1cm4geHMubWVyZ2UoXG4gICAgc3RhcnRFZGl0UmVkdWNlciQsXG4gICAgZG9uZUVkaXRSZWR1Y2VyJCxcbiAgICBjYW5jZWxFZGl0UmVkdWNlciQsXG4gICAgdG9nZ2xlUmVkdWNlciRcbiAgKTtcbn1cblxuZnVuY3Rpb24gbW9kZWwocHJvcHMkLCBhY3Rpb24kKSB7XG4gIC8vIFRIRSBTQU5JVElaRUQgUFJPUEVSVElFU1xuICAvLyBJZiB0aGUgbGlzdCBpdGVtIGhhcyBubyBkYXRhIHNldCBpdCBhcyBlbXB0eSBhbmQgbm90IGNvbXBsZXRlZC5cbiAgbGV0IHNhbml0aXplZFByb3BzJCA9IHByb3BzJC5zdGFydFdpdGgoe3RpdGxlOiAnJywgY29tcGxldGVkOiBmYWxzZX0pO1xuICBsZXQgcmVkdWNlciQgPSBtYWtlUmVkdWNlciQoYWN0aW9uJCk7XG5cbiAgcmV0dXJuIHNhbml0aXplZFByb3BzJC5tYXAocHJvcHMgPT5cbiAgICByZWR1Y2VyJC5mb2xkKChkYXRhLCByZWR1Y2VyKSA9PiByZWR1Y2VyKGRhdGEpLCBwcm9wcylcbiAgKS5mbGF0dGVuKCkucmVtZW1iZXIoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbW9kZWw7XG4iLCJpbXBvcnQge2J1dHRvbiwgZGl2LCBpbnB1dCwgbGFiZWwsIGxpfSBmcm9tICdAY3ljbGUvZG9tJztcblxuZnVuY3Rpb24gdmlldyhzdGF0ZSQpIHtcbiAgcmV0dXJuIHN0YXRlJC5tYXAoKHt0aXRsZSwgY29tcGxldGVkLCBlZGl0aW5nfSkgPT4ge1xuICAgIGxldCB0b2RvUm9vdENsYXNzZXMgPSB7XG4gICAgICBjb21wbGV0ZWQsXG4gICAgICBlZGl0aW5nLFxuICAgIH07XG5cbiAgICByZXR1cm4gbGkoJy50b2RvUm9vdCcsIHtjbGFzczogdG9kb1Jvb3RDbGFzc2VzfSwgW1xuICAgICAgZGl2KCcudmlldycsIFtcbiAgICAgICAgaW5wdXQoJy50b2dnbGUnLCB7XG4gICAgICAgICAgcHJvcHM6IHt0eXBlOiAnY2hlY2tib3gnLCBjaGVja2VkOiBjb21wbGV0ZWR9LFxuICAgICAgICB9KSxcbiAgICAgICAgbGFiZWwodGl0bGUpLFxuICAgICAgICBidXR0b24oJy5kZXN0cm95JylcbiAgICAgIF0pLFxuICAgICAgaW5wdXQoJy5lZGl0Jywge1xuICAgICAgICBwcm9wczoge3R5cGU6ICd0ZXh0J30sXG4gICAgICAgIGhvb2s6IHtcbiAgICAgICAgICB1cGRhdGU6IChvbGRWTm9kZSwge2VsbX0pID0+IHtcbiAgICAgICAgICAgIGVsbS52YWx1ZSA9IHRpdGxlO1xuICAgICAgICAgICAgaWYgKGVkaXRpbmcpIHtcbiAgICAgICAgICAgICAgZWxtLmZvY3VzKCk7XG4gICAgICAgICAgICAgIGVsbS5zZWxlY3Rpb25TdGFydCA9IGVsbS52YWx1ZS5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIF0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdmlldztcbiIsImltcG9ydCB4cyBmcm9tICd4c3RyZWFtJztcbmltcG9ydCBpc29sYXRlIGZyb20gJ0BjeWNsZS9pc29sYXRlJ1xuaW1wb3J0IGludGVudCBmcm9tICcuL2ludGVudCc7XG5pbXBvcnQgbW9kZWwgZnJvbSAnLi9tb2RlbCc7XG5pbXBvcnQgdmlldyBmcm9tICcuL3ZpZXcnO1xuaW1wb3J0IGRlc2VyaWFsaXplIGZyb20gJy4vc3RvcmFnZS1zb3VyY2UnO1xuaW1wb3J0IHNlcmlhbGl6ZSBmcm9tICcuL3N0b3JhZ2Utc2luayc7XG5pbXBvcnQgVGFzayBmcm9tICcuLi9UYXNrL2luZGV4JztcbmltcG9ydCBDb2xsZWN0aW9uIGZyb20gJ0BjeWNsZS9jb2xsZWN0aW9uJztcblxuLy8gVEhFIFRBU0tMSVNUIENPTVBPTkVOVFxuLy8gVGhpcyBpcyB0aGUgVGFza0xpc3QgY29tcG9uZW50IHdoaWNoIGlzIGJlaW5nIGV4cG9ydGVkIGJlbG93LlxuZnVuY3Rpb24gVGFza0xpc3Qoc291cmNlcykge1xuICAvLyBUSEUgTE9DQUxTVE9SQUdFIFNUUkVBTVxuICAvLyBIZXJlIHdlIGNyZWF0ZSBhIGxvY2FsU3RvcmFnZSBzdHJlYW0gdGhhdCBvbmx5IHN0cmVhbXNcbiAgLy8gdGhlIGZpcnN0IHZhbHVlIHJlYWQgZnJvbSBsb2NhbFN0b3JhZ2UgaW4gb3JkZXIgdG9cbiAgLy8gc3VwcGx5IHRoZSBhcHBsaWNhdGlvbiB3aXRoIGluaXRpYWwgc3RhdGUuXG4gIGxldCBsb2NhbFN0b3JhZ2UkID0gc291cmNlcy5zdG9yYWdlLmxvY2FsLmdldEl0ZW0oJ3RvZG9zLWN5Y2xlJykudGFrZSgxKTtcbiAgLy8gVEhFIElOSVRJQUwgVE9ETyBEQVRBXG4gIC8vIFRoZSBgZGVzZXJpYWxpemVgIGZ1bmN0aW9uIHRha2VzIHRoZSBzZXJpYWxpemVkIEpTT04gc3RvcmVkIGluIGxvY2FsU3RvcmFnZVxuICAvLyBhbmQgdHVybnMgaXQgaW50byBhIHN0cmVhbSBzZW5kaW5nIGEgSlNPTiBvYmplY3QuXG4gIGxldCBzb3VyY2VUb2Rvc0RhdGEkID0gZGVzZXJpYWxpemUobG9jYWxTdG9yYWdlJCk7XG4gIC8vIFRIRSBJTlRFTlQgKE1WSSBQQVRURVJOKVxuICAvLyBQYXNzIHJlbGV2YW50IHNvdXJjZXMgdG8gdGhlIGludGVudCBmdW5jdGlvbiwgd2hpY2ggc2V0IHVwXG4gIC8vIHN0cmVhbXMgdGhhdCBtb2RlbCB0aGUgdXNlcnMgYWN0aW9ucy5cbiAgbGV0IGFjdGlvbiQgPSBpbnRlbnQoc291cmNlcy5ET00sIHNvdXJjZXMuSGlzdG9yeSk7XG4gIC8vIFRIRSBNT0RFTCAoTVZJIFBBVFRFUk4pXG4gIC8vIEFjdGlvbnMgZ2V0IHBhc3NlZCB0byB0aGUgbW9kZWwgZnVuY3Rpb24gd2hpY2ggdHJhbnNmb3JtcyB0aGUgZGF0YVxuICAvLyBjb21pbmcgdGhyb3VnaCBhbmQgcHJlcGFyZXMgdGhlIGRhdGEgZm9yIHRoZSB2aWV3LlxuICBsZXQgc3RhdGUkID0gbW9kZWwoYWN0aW9uJCwgc291cmNlVG9kb3NEYXRhJCk7XG4gIC8vIFRIRSBJVEVNIEFERElUSU9OIFNUUkVBTVxuICAvLyBFbWl0cyBvYmplY3RzIG9mIHNvdXJjZXMgc3BlY2lmaWMgdG8gZWFjaCBpdGVtLlxuICAvLyBNZXJnZXMgc3RvcmVkIGl0ZW1zIHdpdGggbmV3IGl0ZW1zXG4gIGxldCBhZGQkID0geHMubWVyZ2UoXG4gICAgc291cmNlVG9kb3NEYXRhJFxuICAgICAgLm1hcChkYXRhID0+IGRhdGEubGlzdC5tYXAocHJvcHMgPT4gKHtwcm9wcyQ6IHhzLm9mKHByb3BzKX0pKSksXG4gICAgYWN0aW9uJFxuICAgICAgLmZpbHRlcihhY3Rpb24gPT4gYWN0aW9uLnR5cGUgPT09ICdpbnNlcnRUb2RvJylcbiAgICAgIC5tYXAoYWN0aW9uID0+ICh7XG4gICAgICAgIHByb3BzJDogeHMub2Yoe1xuICAgICAgICAgIHRpdGxlOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgICBjb21wbGV0ZWQ6IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICB9KSlcbiAgKTtcbiAgLy8gVEhFIElURU0gUkVNT1ZBTCBTRUxFQ1RPUiBGVU5DVElPTlxuICAvLyBUaGlzIGZ1bmN0aW9uIHRha2VzIGl0ZW0ncyBzaW5rcyBhbmQgcmV0dXJucyBhIHN0cmVhbSByZXByZXNlbnRpbmdcbiAgLy8gaXRzIHJlbW92YWwuIE1lcmdlcyBpbnRlcm5hbCByZW1vdmFscyBhbmQgYGRlbGV0ZUNvbXBsZXRlZHNgIGFjdGlvbnNcbiAgZnVuY3Rpb24gcmVtb3ZlU2VsZWN0b3IoaXRlbVNpbmtzKSB7XG4gICAgbGV0IGRlbGV0ZUNvbXBsZXRlZHMkID0gYWN0aW9uJFxuICAgICAgLmZpbHRlcihhY3Rpb24gPT4gYWN0aW9uLnR5cGUgPT09ICdkZWxldGVDb21wbGV0ZWRzJyk7XG4gICAgcmV0dXJuIHhzLm1lcmdlKFxuICAgICAgLy8gQ29uc2lkZXIgZGVsZXRlQ29tcGxldGVkcyQgb25seSBpZiB0aGUgdGFzayBpcyBjb21wbGV0ZWQuXG4gICAgICAvLyBhbmFsb2d1ZSBvZiByeCBwYXVzYWJsZVxuICAgICAgaXRlbVNpbmtzLnN0YXRlJFxuICAgICAgICAubWFwKHN0YXRlID0+IGRlbGV0ZUNvbXBsZXRlZHMkLmZpbHRlcigoKSA9PiBzdGF0ZS5jb21wbGV0ZWQpKVxuICAgICAgICAuZmxhdHRlbigpLFxuICAgICAgaXRlbVNpbmtzLmFjdGlvbiRcbiAgICAgICAgLmZpbHRlcihhY3Rpb24gPT4gYWN0aW9uLnR5cGUgPT09ICdkZXN0cm95JylcbiAgICApO1xuICB9XG4gIC8vIFRIRSBDT0xMRUNUSU9OIFNUUkVBTVxuICAvLyBDb2xsZWN0aW9uIGZ1bmN0aW9uIHRha2VzIGEgY29tcG9uZW50IGZ1bmN0aW9uLCBhIGNvbW1vbiBzb3VyY2VzIG9iamVjdCxcbiAgLy8gYSBzdHJlYW0gb2YgaXRlbSBhZGRpdGlvbnMsIGFuZCBhIHNlbGVjdG9yIGZ1bmN0aW9uIGZyb20gaXRlbSBzaW5rcyB0b1xuICAvLyBhIHN0cmVhbSBvZiByZW1vdmFsc1xuICBsZXQgbGlzdCQgPSBDb2xsZWN0aW9uKFxuICAgIFRhc2ssXG4gICAge1xuICAgICAgRE9NOiBzb3VyY2VzLkRPTSxcbiAgICAgIGFjdGlvbiQ6IGFjdGlvbiRcbiAgICAgICAgLmZpbHRlcihhY3Rpb24gPT4gYWN0aW9uLnR5cGUgPT09ICd0b2dnbGVBbGwnKVxuICAgIH0sXG4gICAgYWRkJCxcbiAgICByZW1vdmVTZWxlY3RvclxuICApO1xuICAvLyBUSEUgQ09NQklORUQgQ0hJTERSRU4gVlRSRUUgQU5EIFNUQVRFIFNUUkVBTVNcbiAgbGV0IHRvZG9WdHJlZXMkID0gQ29sbGVjdGlvbi5wbHVjayhsaXN0JCwgaXRlbVNpbmtzID0+IGl0ZW1TaW5rcy5ET00pO1xuICBsZXQgdG9kb1N0YXRlcyQgPSBDb2xsZWN0aW9uLnBsdWNrKGxpc3QkLCBpdGVtU2lua3MgPT4gaXRlbVNpbmtzLnN0YXRlJCk7XG5cbiAgbGV0IGFtZW5kZWRTdGF0ZSQgPSB4cy5jb21iaW5lKHN0YXRlJCwgdG9kb1Z0cmVlcyQsIHRvZG9TdGF0ZXMkKVxuICAgIC5tYXAoKFtwYXJlbnRTdGF0ZSwgdG9kb1Z0cmVlcywgdG9kb1N0YXRlc10pID0+ICh7XG4gICAgICAuLi5wYXJlbnRTdGF0ZSxcbiAgICAgIGxpc3Q6IHRvZG9TdGF0ZXMubWFwKChzdGF0ZSwgaSkgPT4gKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHRvZG9JdGVtOiB7RE9NOiB0b2RvVnRyZWVzW2ldfVxuICAgICAgfSkpXG4gICAgfSkpO1xuICAvLyBUSEUgVklFVyAoTVZJIFBBVFRFUk4pXG4gIC8vIFdlIHJlbmRlciBzdGF0ZSBhcyBtYXJrdXAgZm9yIHRoZSBET00uXG4gIGxldCB2ZG9tJCA9IHZpZXcoYW1lbmRlZFN0YXRlJCk7XG4gIC8vIFdSSVRFIFRPIExPQ0FMU1RPUkFHRVxuICAvLyBUaGUgbGF0ZXN0IHN0YXRlIGlzIHdyaXR0ZW4gdG8gbG9jYWxTdG9yYWdlLlxuICBsZXQgc3RvcmFnZSQgPSBzZXJpYWxpemUoYW1lbmRlZFN0YXRlJCkubWFwKChzdGF0ZSkgPT4gKHtcbiAgICBrZXk6ICd0b2Rvcy1jeWNsZScsIHZhbHVlOiBzdGF0ZVxuICB9KSk7XG4gIC8vIENPTVBMRVRFIFRIRSBDWUNMRVxuICAvLyBXcml0ZSB0aGUgdmlydHVhbCBkb20gc3RyZWFtIHRvIHRoZSBET00gYW5kIHdyaXRlIHRoZVxuICAvLyBzdG9yYWdlIHN0cmVhbSB0byBsb2NhbFN0b3JhZ2UuXG4gIGxldCBzaW5rcyA9IHtcbiAgICBET006IHZkb20kLFxuICAgIHN0b3JhZ2U6IHN0b3JhZ2UkLFxuICB9O1xuICByZXR1cm4gc2lua3M7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFRhc2tMaXN0O1xuIiwiaW1wb3J0IHhzIGZyb20gJ3hzdHJlYW0nO1xuaW1wb3J0IGRyb3BSZXBlYXRzIGZyb20gJ3hzdHJlYW0vZXh0cmEvZHJvcFJlcGVhdHMnO1xuaW1wb3J0IHtFTlRFUl9LRVksIEVTQ19LRVl9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuLy8gVEhFIElOVEVOVCBGT1IgVEhFIExJU1RcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGludGVudChET01Tb3VyY2UsIEhpc3RvcnkpIHtcbiAgcmV0dXJuIHhzLm1lcmdlKFxuICAgIC8vIFRIRSBST1VURSBTVFJFQU1cbiAgICAvLyBBIHN0cmVhbSB0aGF0IHByb3ZpZGVzIHRoZSBwYXRoIHdoZW5ldmVyIHRoZSByb3V0ZSBjaGFuZ2VzLlxuICAgIEhpc3RvcnlcbiAgICAgIC5zdGFydFdpdGgoe3BhdGhuYW1lOiAnLyd9KVxuICAgICAgLm1hcChsb2NhdGlvbiA9PiBsb2NhdGlvbi5wYXRobmFtZSlcbiAgICAgIC5jb21wb3NlKGRyb3BSZXBlYXRzKCkpXG4gICAgICAubWFwKHBheWxvYWQgPT4gKHt0eXBlOiAnY2hhbmdlUm91dGUnLCBwYXlsb2FkfSkpLFxuXG4gICAgLy8gVEhFIFVSTCBTVFJFQU1cbiAgICAvLyBBIHN0cmVhbSBvZiBVUkwgY2xpY2tzIGluIHRoZSBhcHBcbiAgICBET01Tb3VyY2Uuc2VsZWN0KCdhJykuZXZlbnRzKCdjbGljaycpXG4gICAgICAubWFwKGV2ZW50ID0+ICBldmVudC50YXJnZXQuaGFzaC5yZXBsYWNlKCcjJywgJycpKVxuICAgICAgLm1hcChwYXlsb2FkID0+ICh7dHlwZTogJ3VybCcsIHBheWxvYWR9KSksXG5cbiAgICAvLyBDTEVBUiBJTlBVVCBTVFJFQU1cbiAgICAvLyBBIHN0cmVhbSBvZiBFU0Mga2V5IHN0cm9rZXMgaW4gdGhlIGAubmV3LXRvZG9gIGZpZWxkLlxuICAgIERPTVNvdXJjZS5zZWxlY3QoJy5uZXctdG9kbycpLmV2ZW50cygna2V5ZG93bicpXG4gICAgICAuZmlsdGVyKGV2ID0+IGV2LmtleUNvZGUgPT09IEVTQ19LRVkpXG4gICAgICAubWFwKHBheWxvYWQgPT4gKHt0eXBlOiAnY2xlYXJJbnB1dCcsIHBheWxvYWR9KSksXG5cbiAgICAvLyBFTlRFUiBLRVkgU1RSRUFNXG4gICAgLy8gQSBzdHJlYW0gb2YgRU5URVIga2V5IHN0cm9rZXMgaW4gdGhlIGAubmV3LXRvZG9gIGZpZWxkLlxuICAgIERPTVNvdXJjZS5zZWxlY3QoJy5uZXctdG9kbycpLmV2ZW50cygna2V5ZG93bicpXG4gICAgICAvLyBUcmltIHZhbHVlIGFuZCBvbmx5IGxldCB0aGUgZGF0YSB0aHJvdWdoIHdoZW4gdGhlcmVcbiAgICAgIC8vIGlzIGFueXRoaW5nIGJ1dCB3aGl0ZXNwYWNlIGluIHRoZSBmaWVsZCBhbmQgdGhlIEVOVEVSIGtleSB3YXMgaGl0LlxuICAgICAgLmZpbHRlcihldiA9PiB7XG4gICAgICAgIGxldCB0cmltbWVkVmFsID0gU3RyaW5nKGV2LnRhcmdldC52YWx1ZSkudHJpbSgpO1xuICAgICAgICByZXR1cm4gZXYua2V5Q29kZSA9PT0gRU5URVJfS0VZICYmIHRyaW1tZWRWYWw7XG4gICAgICB9KVxuICAgICAgLy8gUmV0dXJuIHRoZSB0cmltbWVkIHZhbHVlLlxuICAgICAgLm1hcChldiA9PiBTdHJpbmcoZXYudGFyZ2V0LnZhbHVlKS50cmltKCkpXG4gICAgICAubWFwKHBheWxvYWQgPT4gKHt0eXBlOiAnaW5zZXJ0VG9kbycsIHBheWxvYWR9KSksXG5cbiAgICAvLyBUT0dHTEUgQUxMIFNUUkVBTVxuICAgIC8vIENyZWF0ZSBhIHN0cmVhbSBvdXQgb2YgdGhlIGNsaWNrcyBvbiB0aGUgYC50b2dnbGUtYWxsYCBidXR0b24uXG4gICAgRE9NU291cmNlLnNlbGVjdCgnLnRvZ2dsZS1hbGwnKS5ldmVudHMoJ2NsaWNrJylcbiAgICAgIC5tYXAoZXYgPT4gZXYudGFyZ2V0LmNoZWNrZWQpXG4gICAgICAubWFwKHBheWxvYWQgPT4gKHt0eXBlOiAndG9nZ2xlQWxsJywgcGF5bG9hZH0pKSxcblxuICAgIC8vIERFTEVURSBDT01QTEVURUQgVE9ET1MgU1RSRUFNXG4gICAgLy8gQSBzdHJlYW0gb2YgY2xpY2sgZXZlbnRzIG9uIHRoZSBgLmNsZWFyLWNvbXBsZXRlZGAgZWxlbWVudC5cbiAgICBET01Tb3VyY2Uuc2VsZWN0KCcuY2xlYXItY29tcGxldGVkJykuZXZlbnRzKCdjbGljaycpXG4gICAgICAubWFwVG8oe3R5cGU6ICdkZWxldGVDb21wbGV0ZWRzJ30pXG4gICk7XG59O1xuIiwiaW1wb3J0IHhzIGZyb20gJ3hzdHJlYW0nO1xuaW1wb3J0IGNvbmNhdCBmcm9tICd4c3RyZWFtL2V4dHJhL2NvbmNhdCc7XG5cbi8vIEEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcHJvdmlkZXMgZmlsdGVyIGZ1bmN0aW9uc1xuLy8gZGVwZW5kaW5nIG9uIHRoZSByb3V0ZSB2YWx1ZS5cbmZ1bmN0aW9uIGdldEZpbHRlckZuKHJvdXRlKSB7XG4gIHN3aXRjaCAocm91dGUpIHtcbiAgICBjYXNlICcvYWN0aXZlJzogcmV0dXJuICh0YXNrID0+IHRhc2suY29tcGxldGVkID09PSBmYWxzZSk7XG4gICAgY2FzZSAnL2NvbXBsZXRlZCc6IHJldHVybiAodGFzayA9PiB0YXNrLmNvbXBsZXRlZCA9PT0gdHJ1ZSk7XG4gICAgZGVmYXVsdDogcmV0dXJuICgpID0+IHRydWU7IC8vIGFsbG93IGFueXRoaW5nXG4gIH1cbn1cblxuLy8gTUFLRSBSRURVQ0VSIFNUUkVBTVxuLy8gQSBmdW5jdGlvbiB0aGF0IHRha2VzIHRoZSBhY3Rpb25zIG9uIHRoZSB0b2RvIGxpc3Rcbi8vIGFuZCByZXR1cm5zIGEgc3RyZWFtIG9mIFwicmVkdWNlcnNcIjogZnVuY3Rpb25zIHRoYXQgZXhwZWN0IHRoZSBjdXJyZW50XG4vLyB0b2Rvc0RhdGEgKHRoZSBzdGF0ZSkgYW5kIHJldHVybiBhIG5ldyB2ZXJzaW9uIG9mIHRvZG9zRGF0YS5cbmZ1bmN0aW9uIG1ha2VSZWR1Y2VyJChhY3Rpb24kKSB7XG4gIGxldCBjbGVhcklucHV0UmVkdWNlciQgPSBhY3Rpb24kXG4gICAgLmZpbHRlcihhID0+IGEudHlwZSA9PT0gJ2NsZWFySW5wdXQnKVxuICAgIC5tYXBUbyhmdW5jdGlvbiBjbGVhcklucHV0UmVkdWNlcih0b2Rvc0RhdGEpIHtcbiAgICAgIHJldHVybiB0b2Rvc0RhdGE7XG4gICAgfSk7XG5cbiAgbGV0IGNoYW5nZVJvdXRlUmVkdWNlciQgPSBhY3Rpb24kXG4gICAgLmZpbHRlcihhID0+IGEudHlwZSA9PT0gJ2NoYW5nZVJvdXRlJylcbiAgICAubWFwKGEgPT4gYS5wYXlsb2FkKVxuICAgIC5zdGFydFdpdGgoJy8nKVxuICAgIC5tYXAocGF0aCA9PiB7XG4gICAgICBsZXQgZmlsdGVyRm4gPSBnZXRGaWx0ZXJGbihwYXRoKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbiBjaGFuZ2VSb3V0ZVJlZHVjZXIodG9kb3NEYXRhKSB7XG4gICAgICAgIHRvZG9zRGF0YS5maWx0ZXIgPSBwYXRoLnJlcGxhY2UoJy8nLCAnJykudHJpbSgpO1xuICAgICAgICB0b2Rvc0RhdGEuZmlsdGVyRm4gPSBmaWx0ZXJGbjtcbiAgICAgICAgcmV0dXJuIHRvZG9zRGF0YTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgcmV0dXJuIHhzLm1lcmdlKFxuICAgIGNsZWFySW5wdXRSZWR1Y2VyJCxcbiAgICBjaGFuZ2VSb3V0ZVJlZHVjZXIkXG4gICk7XG59XG5cbi8vIFRISVMgSVMgVEhFIE1PREVMIEZVTkNUSU9OXG4vLyBJdCBleHBlY3RzIHRoZSBhY3Rpb25zIGNvbWluZyBpbiBmcm9tIHRoZSBzb3VyY2VzXG5mdW5jdGlvbiBtb2RlbChhY3Rpb24kLCBzb3VyY2VUb2Rvc0RhdGEkKSB7XG4gIC8vIFRIRSBCVVNJTkVTUyBMT0dJQ1xuICAvLyBBY3Rpb25zIGFyZSBwYXNzZWQgdG8gdGhlIGBtYWtlUmVkdWNlciRgIGZ1bmN0aW9uXG4gIC8vIHdoaWNoIGNyZWF0ZXMgYSBzdHJlYW0gb2YgcmVkdWNlciBmdW5jdGlvbnMgdGhhdCBuZWVkc1xuICAvLyB0byBiZSBhcHBsaWVkIG9uIHRoZSB0b2RvRGF0YSB3aGVuIGFuIGFjdGlvbiBoYXBwZW5zLlxuICBsZXQgcmVkdWNlciQgPSBtYWtlUmVkdWNlciQoYWN0aW9uJCk7XG5cbiAgLy8gUkVUVVJOIFRIRSBNT0RFTCBEQVRBXG4gIHJldHVybiBzb3VyY2VUb2Rvc0RhdGEkLm1hcChzb3VyY2VUb2Rvc0RhdGEgPT5cbiAgICByZWR1Y2VyJC5mb2xkKCh0b2Rvc0RhdGEsIHJlZHVjZXIpID0+IHJlZHVjZXIodG9kb3NEYXRhKSwgc291cmNlVG9kb3NEYXRhKVxuICApLmZsYXR0ZW4oKVxuICAvLyBNYWtlIHRoaXMgcmVtZW1iZXIgaXRzIGxhdGVzdCBldmVudCwgc28gbGF0ZSBsaXN0ZW5lcnNcbiAgLy8gd2lsbCBiZSB1cGRhdGVkIHdpdGggdGhlIGxhdGVzdCBzdGF0ZS5cbiAgLnJlbWVtYmVyKCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG1vZGVsO1xuIiwiLy8gVHVybiB0aGUgZGF0YSBvYmplY3QgdGhhdCBjb250YWluc1xuLy8gdGhlIHRvZG9zIGludG8gYSBzdHJpbmcgZm9yIGxvY2FsU3RvcmFnZS5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNlcmlhbGl6ZSh0b2RvcyQpIHtcbiAgcmV0dXJuIHRvZG9zJC5tYXAodG9kb3NEYXRhID0+IEpTT04uc3RyaW5naWZ5KFxuICAgIHtcbiAgICAgIGxpc3Q6IHRvZG9zRGF0YS5saXN0Lm1hcCh0b2RvRGF0YSA9PlxuICAgICAgICAoe1xuICAgICAgICAgIHRpdGxlOiB0b2RvRGF0YS50aXRsZSxcbiAgICAgICAgICBjb21wbGV0ZWQ6IHRvZG9EYXRhLmNvbXBsZXRlZFxuICAgICAgICB9KVxuICAgICAgKVxuICAgIH1cbiAgKSk7XG59O1xuIiwiZnVuY3Rpb24gbWVyZ2UoKSB7XG4gIGxldCByZXN1bHQgPSB7fTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgb2JqZWN0ID0gYXJndW1lbnRzW2ldO1xuICAgIGZvciAobGV0IGtleSBpbiBvYmplY3QpIHtcbiAgICAgIGlmIChvYmplY3QuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICByZXN1bHRba2V5XSA9IG9iamVjdFtrZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5sZXQgc2FmZUpTT05QYXJzZSA9IHN0ciA9PiBKU09OLnBhcnNlKHN0cikgfHwge307XG5cbmxldCBtZXJnZVdpdGhEZWZhdWx0VG9kb3NEYXRhID0gdG9kb3NEYXRhID0+IHtcbiAgcmV0dXJuIG1lcmdlKHtcbiAgICBsaXN0OiBbXSxcbiAgICBmaWx0ZXI6ICcnLFxuICAgIGZpbHRlckZuOiAoKSA9PiB0cnVlLCAvLyBhbGxvdyBhbnl0aGluZ1xuICB9LCB0b2Rvc0RhdGEpO1xufVxuXG4vLyBUYWtlIGxvY2FsU3RvcmFnZSB0b2RvRGF0YSBzdHJlYW0gYW5kIHRyYW5zZm9ybSBpbnRvXG4vLyBhIEphdmFTY3JpcHQgb2JqZWN0LiBTZXQgZGVmYXVsdCBkYXRhLlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVzZXJpYWxpemUobG9jYWxTdG9yYWdlVmFsdWUkKSB7XG4gIHJldHVybiBsb2NhbFN0b3JhZ2VWYWx1ZSRcbiAgICAubWFwKHNhZmVKU09OUGFyc2UpXG4gICAgLm1hcChtZXJnZVdpdGhEZWZhdWx0VG9kb3NEYXRhKTtcbn07XG4iLCJpbXBvcnQge2EsIGJ1dHRvbiwgZGl2LCBmb290ZXIsIGgxLCBoZWFkZXIsIGlucHV0LCBsaSxcbiAgICAgICAgc2VjdGlvbiwgc3Bhbiwgc3Ryb25nLCB1bH0gZnJvbSAnQGN5Y2xlL2RvbSc7XG5cbmZ1bmN0aW9uIHJlbmRlckhlYWRlcigpIHtcbiAgcmV0dXJuIGhlYWRlcignLmhlYWRlcicsIFtcbiAgICBoMSgndG9kb3MnKSxcbiAgICBpbnB1dCgnLm5ldy10b2RvJywge1xuICAgICAgcHJvcHM6IHtcbiAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICBwbGFjZWhvbGRlcjogJ1doYXQgbmVlZHMgdG8gYmUgZG9uZT8nLFxuICAgICAgICBhdXRvZm9jdXM6IHRydWUsXG4gICAgICAgIG5hbWU6ICduZXdUb2RvJ1xuICAgICAgfSxcbiAgICAgIGhvb2s6IHtcbiAgICAgICAgdXBkYXRlOiAob2xkVk5vZGUsIHtlbG19KSA9PiB7XG4gICAgICAgICAgZWxtLnZhbHVlID0gJyc7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pXG4gIF0pO1xufVxuXG5mdW5jdGlvbiByZW5kZXJNYWluU2VjdGlvbih0b2Rvc0RhdGEpIHtcbiAgbGV0IGFsbENvbXBsZXRlZCA9IHRvZG9zRGF0YS5saXN0LnJlZHVjZSgoeCwgeSkgPT4geCAmJiB5LmNvbXBsZXRlZCwgdHJ1ZSk7XG4gIGxldCBzZWN0aW9uU3R5bGUgPSB7J2Rpc3BsYXknOiB0b2Rvc0RhdGEubGlzdC5sZW5ndGggPyAnJyA6ICdub25lJ307XG5cbiAgcmV0dXJuIHNlY3Rpb24oJy5tYWluJywge3N0eWxlOiBzZWN0aW9uU3R5bGV9LCBbXG4gICAgaW5wdXQoJy50b2dnbGUtYWxsJywge1xuICAgICAgcHJvcHM6IHt0eXBlOiAnY2hlY2tib3gnLCBjaGVja2VkOiBhbGxDb21wbGV0ZWR9LFxuICAgIH0pLFxuICAgIHVsKCcudG9kby1saXN0JywgdG9kb3NEYXRhLmxpc3RcbiAgICAgIC5maWx0ZXIodG9kb3NEYXRhLmZpbHRlckZuKVxuICAgICAgLm1hcChkYXRhID0+IGRhdGEudG9kb0l0ZW0uRE9NKVxuICAgIClcbiAgXSk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckZpbHRlckJ1dHRvbih0b2Rvc0RhdGEsIGZpbHRlclRhZywgcGF0aCwgbGFiZWwpIHtcbiAgcmV0dXJuIGxpKFtcbiAgICBhKHtcbiAgICAgIHByb3BzOiB7aHJlZjogcGF0aH0sXG4gICAgICBjbGFzczoge3NlbGVjdGVkOiB0b2Rvc0RhdGEuZmlsdGVyID09PSBmaWx0ZXJUYWd9XG4gICAgfSwgbGFiZWwpXG4gIF0pO1xufVxuXG5mdW5jdGlvbiByZW5kZXJGb290ZXIodG9kb3NEYXRhKSB7XG4gIGxldCBhbW91bnRDb21wbGV0ZWQgPSB0b2Rvc0RhdGEubGlzdFxuICAgIC5maWx0ZXIodG9kb0RhdGEgPT4gdG9kb0RhdGEuY29tcGxldGVkKVxuICAgIC5sZW5ndGg7XG4gIGxldCBhbW91bnRBY3RpdmUgPSB0b2Rvc0RhdGEubGlzdC5sZW5ndGggLSBhbW91bnRDb21wbGV0ZWQ7XG4gIGxldCBmb290ZXJTdHlsZSA9IHsnZGlzcGxheSc6IHRvZG9zRGF0YS5saXN0Lmxlbmd0aCA/ICcnIDogJ25vbmUnfTtcblxuICByZXR1cm4gZm9vdGVyKCcuZm9vdGVyJywge3N0eWxlOiBmb290ZXJTdHlsZX0sIFtcbiAgICBzcGFuKCcudG9kby1jb3VudCcsIFtcbiAgICAgIHN0cm9uZyhTdHJpbmcoYW1vdW50QWN0aXZlKSksXG4gICAgICAnIGl0ZW0nICsgKGFtb3VudEFjdGl2ZSAhPT0gMSA/ICdzJyA6ICcnKSArICcgbGVmdCdcbiAgICBdKSxcbiAgICB1bCgnLmZpbHRlcnMnLCBbXG4gICAgICByZW5kZXJGaWx0ZXJCdXR0b24odG9kb3NEYXRhLCAnJywgJy8nLCAnQWxsJyksXG4gICAgICByZW5kZXJGaWx0ZXJCdXR0b24odG9kb3NEYXRhLCAnYWN0aXZlJywgJy9hY3RpdmUnLCAnQWN0aXZlJyksXG4gICAgICByZW5kZXJGaWx0ZXJCdXR0b24odG9kb3NEYXRhLCAnY29tcGxldGVkJywgJy9jb21wbGV0ZWQnLCAnQ29tcGxldGVkJyksXG4gICAgXSksXG4gICAgKGFtb3VudENvbXBsZXRlZCA+IDAgP1xuICAgICAgYnV0dG9uKCcuY2xlYXItY29tcGxldGVkJywgJ0NsZWFyIGNvbXBsZXRlZCAoJyArIGFtb3VudENvbXBsZXRlZCArICcpJylcbiAgICAgIDogbnVsbFxuICAgIClcbiAgXSlcbn1cblxuLy8gVEhFIFZJRVdcbi8vIFRoaXMgZnVuY3Rpb24gZXhwZWN0cyB0aGUgc3RyZWFtIG9mIHRvZG9zRGF0YVxuLy8gZnJvbSB0aGUgbW9kZWwgZnVuY3Rpb24gYW5kIHR1cm5zIGl0IGludG8gYVxuLy8gdmlydHVhbCBET00gc3RyZWFtIHRoYXQgaXMgdGhlbiB1bHRpbWF0ZWx5IHJldHVybmVkIGludG9cbi8vIHRoZSBET00gc2luayBpbiB0aGUgaW5kZXguanMuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2aWV3KHRvZG9zJCkge1xuICByZXR1cm4gdG9kb3MkLm1hcCh0b2RvcyA9PlxuICAgIGRpdihbXG4gICAgICByZW5kZXJIZWFkZXIoKSxcbiAgICAgIHJlbmRlck1haW5TZWN0aW9uKHRvZG9zKSxcbiAgICAgIHJlbmRlckZvb3Rlcih0b2RvcylcbiAgICBdKVxuICApO1xufTtcbiIsImNvbnN0IEVOVEVSX0tFWSA9IDEzO1xuY29uc3QgRVNDX0tFWSA9IDI3O1xuXG5leHBvcnQge0VOVEVSX0tFWSwgRVNDX0tFWX07XG4iXX0= diff --git a/examples/cyclejs/js/app.min.js b/examples/cyclejs/js/app.min.js new file mode 100644 index 0000000000..d481f809e9 --- /dev/null +++ b/examples/cyclejs/js/app.min.js @@ -0,0 +1,12 @@ +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o2?_len-2:0),_key=2;_key<_len;_key++){children[_key-2]=arguments[_key]}return h(tag,attrs,children)},svg:svg,mockDOMSource:mockDOMSource});module.exports=CycleDOM},{"./mock-dom-source":4,"./render-dom":5,"./render-html":6,"./virtual-hyperscript":9,"./virtual-hyperscript-svg":8,"hyperscript-helpers":10}],3:[function(require,module,exports){"use strict";var Rx=require("rx");var disposableCreate=Rx.Disposable.create;var CompositeDisposable=Rx.CompositeDisposable;var AnonymousObservable=Rx.AnonymousObservable;function createListener(_ref){var element=_ref.element;var eventName=_ref.eventName;var handler=_ref.handler;var useCapture=_ref.useCapture;if(element.addEventListener){element.addEventListener(eventName,handler,useCapture);return disposableCreate(function removeEventListener(){element.removeEventListener(eventName,handler,useCapture)})}throw new Error("No listener found")}function createEventListener(_ref2){var element=_ref2.element;var eventName=_ref2.eventName;var handler=_ref2.handler;var useCapture=_ref2.useCapture;var disposables=new CompositeDisposable;if(Array.isArray(element)){for(var i=0,len=element.length;i0){return Rx.Observable.combineLatest(vtree.children.map(transposeVTree),function(){for(var _len=arguments.length,arr=Array(_len),_key=0;_key<_len;_key++){arr[_key]=arguments[_key]}return new VirtualNode(vtree.tagName,vtree.properties,arr,vtree.key,vtree.namespace)})}else if(vtree.type==="VirtualNode"||vtree.type==="Widget"||vtree.type==="Thunk"){return Rx.Observable.just(vtree)}else{throw new Error("Unhandled case in transposeVTree()")}}module.exports={transposeVTree:transposeVTree}},{rx:66,"virtual-dom/vnode/vnode":53}],8:[function(require,module,exports){"use strict";var isArray=require("x-is-array");var h=require("./virtual-hyperscript");var SVGAttributeNamespace=require("virtual-dom/virtual-hyperscript/svg-attribute-namespace");var attributeHook=require("virtual-dom/virtual-hyperscript/hooks/attribute-hook");var SVG_NAMESPACE="http://www.w3.org/2000/svg";module.exports=svg;function svg(tagName,properties,children){if(!children&&isChildren(properties)){children=properties;properties={}}properties=properties||{};properties.namespace=SVG_NAMESPACE;var attributes=properties.attributes||(properties.attributes={});for(var key in properties){if(!properties.hasOwnProperty(key)){continue}var namespace=SVGAttributeNamespace(key);if(namespace===undefined){continue}var value=properties[key];if(typeof value!=="string"&&typeof value!=="number"&&typeof value!=="boolean"){continue}if(namespace!==null){properties[key]=attributeHook(namespace,value);continue}attributes[key]=value;properties[key]=undefined}return h(tagName,properties,children)}function isObservable(x){return x&&typeof x.subscribe==="function"}function isChildren(x){return typeof x==="string"||isArray(x)||isObservable(x)}},{"./virtual-hyperscript":9,"virtual-dom/virtual-hyperscript/hooks/attribute-hook":41,"virtual-dom/virtual-hyperscript/svg-attribute-namespace":45,"x-is-array":58}],9:[function(require,module,exports){"use strict";var isArray=require("x-is-array");var VNode=require("virtual-dom/vnode/vnode.js");var VText=require("virtual-dom/vnode/vtext.js");var isVNode=require("virtual-dom/vnode/is-vnode");var isVText=require("virtual-dom/vnode/is-vtext");var isWidget=require("virtual-dom/vnode/is-widget");var isHook=require("virtual-dom/vnode/is-vhook");var isVThunk=require("virtual-dom/vnode/is-thunk");var parseTag=require("virtual-dom/virtual-hyperscript/parse-tag.js");var softSetHook=require("virtual-dom/virtual-hyperscript/hooks/soft-set-hook.js");var evHook=require("virtual-dom/virtual-hyperscript/hooks/ev-hook.js");module.exports=h;function h(tagName,properties,children){var childNodes=[];var tag,props,key,namespace;if(!children&&isChildren(properties)){children=properties;props={}}props=props||properties||{};tag=parseTag(tagName,props);if(props.hasOwnProperty("key")){key=props.key;props.key=undefined}if(props.hasOwnProperty("namespace")){namespace=props.namespace;props.namespace=undefined}if(tag==="INPUT"&&!namespace&&props.hasOwnProperty("value")&&props.value!==undefined&&!isHook(props.value)){props.value=softSetHook(props.value)}transformProperties(props);if(children!==undefined&&children!==null){addChild(children,childNodes,tag,props)}return new VNode(tag,props,childNodes,key,namespace)}function addChild(c,childNodes,tag,props){if(typeof c==="string"){childNodes.push(new VText(c))}else if(typeof c==="number"){childNodes.push(new VText(String(c)))}else if(isChild(c)){childNodes.push(c)}else if(isArray(c)){for(var i=0;i0};var startsWith=function startsWith(string,start){return string.indexOf(start)===0};var isSelector=function isSelector(param){return isValidString(param)&&(startsWith(param,".")||startsWith(param,"#"))};var node=function node(h){return function(tagName){return function(first){for(var _len=arguments.length,rest=Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){rest[_key-1]=arguments[_key]}if(isSelector(first)){return h.apply(undefined,[tagName+first].concat(rest))}else{return h.apply(undefined,[tagName,first].concat(rest))}}}};var TAG_NAMES=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","dd","del","dfn","dir","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","map","mark","menu","meta","nav","noscript","object","ol","optgroup","option","p","param","pre","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","sup","table","tbody","td","textarea","tfoot","th","thead","title","tr","u","ul","video"];module.exports=function(h){var exported={TAG_NAMES:TAG_NAMES,isSelector:isSelector};var appliedNode=node(h);TAG_NAMES.forEach(function(n){exported[n]=appliedNode(n)});return exported}},{}],11:[function(require,module,exports){"use strict";var proto=Element.prototype;var vendor=proto.matches||proto.matchesSelector||proto.webkitMatchesSelector||proto.mozMatchesSelector||proto.msMatchesSelector||proto.oMatchesSelector;module.exports=match;function match(el,selector){if(vendor)return vendor.call(el,selector);var nodes=el.parentNode.querySelectorAll(selector);for(var i=0;i"}function tagContent(node){var innerHTML=node.properties.innerHTML;if(innerHTML!=null)return innerHTML;else{var ret="";if(node.children&&node.children.length){for(var i=0,l=node.children.length;i"}},{"./create-attribute":15,"./void-elements":26,"escape-html":17,"param-case":23,"virtual-dom/virtual-hyperscript/hooks/attribute-hook":41,"virtual-dom/virtual-hyperscript/hooks/soft-set-hook":43,"virtual-dom/vnode/is-thunk":47,"virtual-dom/vnode/is-vnode":49,"virtual-dom/vnode/is-vtext":50,"virtual-dom/vnode/is-widget":51,xtend:24}],17:[function(require,module,exports){"use strict";var matchHtmlRegExp=/["'&<>]/;module.exports=escapeHtml;function escapeHtml(string){var str=""+string;var match=matchHtmlRegExp.exec(str);if(!match){return str}var escape;var html="";var index=0;var lastIndex=0;for(index=match.index;index>>0:limit>>>0;while(match=separator.exec(str)){lastIndex=match.index+match[0].length;if(lastIndex>lastLastIndex){output.push(str.slice(lastLastIndex,match.index));if(!compliantExecNpcg&&match.length>1){match[0].replace(separator2,function(){for(var i=1;i1&&match.index=limit){break}}if(separator.lastIndex===match.index){separator.lastIndex++}}if(lastLastIndex===str.length){if(lastLength||!separator.test("")){output.push("")}}else{output.push(str.slice(lastLastIndex))}return output.length>limit?output.slice(0,limit):output};return self}()},{}],29:[function(require,module,exports){"use strict";var OneVersionConstraint=require("individual/one-version");var MY_VERSION="7";OneVersionConstraint("ev-store",MY_VERSION);var hashKey="__EV_STORE_KEY@"+MY_VERSION;module.exports=EvStore;function EvStore(elem){var hash=elem[hashKey];if(!hash){hash=elem[hashKey]={}}return hash}},{"individual/one-version":31}],30:[function(require,module,exports){(function(global){"use strict";var root=typeof window!=="undefined"?window:typeof global!=="undefined"?global:{};module.exports=Individual;function Individual(key,value){if(key in root){return root[key]}root[key]=value;return value}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],31:[function(require,module,exports){"use strict";var Individual=require("./index.js");module.exports=OneVersion;function OneVersion(moduleName,version,defaultValue){var key="__INDIVIDUAL_ONE_VERSION_"+moduleName;var enforceKey=key+"_ENFORCE_SINGLETON";var versionValue=Individual(enforceKey,version);if(versionValue!==version){throw new Error("Can only have one copy of "+moduleName+".\n"+"You already have version "+versionValue+" installed.\n"+"This means you cannot install version "+version)}return Individual(key,defaultValue)}},{"./index.js":30}],32:[function(require,module,exports){(function(global){var topLevel=typeof global!=="undefined"?global:typeof window!=="undefined"?window:{};var minDoc=require("min-document");if(typeof document!=="undefined"){module.exports=document}else{var doccy=topLevel["__GLOBAL_DOCUMENT_CACHE@4"];if(!doccy){doccy=topLevel["__GLOBAL_DOCUMENT_CACHE@4"]=minDoc}module.exports=doccy}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"min-document":64}],33:[function(require,module,exports){"use strict";module.exports=function isObject(x){return typeof x==="object"&&x!==null}},{}],34:[function(require,module,exports){var patch=require("./vdom/patch.js");module.exports=patch},{"./vdom/patch.js":39}],35:[function(require,module,exports){var isObject=require("is-object");var isHook=require("../vnode/is-vhook.js");module.exports=applyProperties;function applyProperties(node,props,previous){for(var propName in props){var propValue=props[propName];if(propValue===undefined){removeProperty(node,propName,propValue,previous)}else if(isHook(propValue)){removeProperty(node,propName,propValue,previous);if(propValue.hook){propValue.hook(node,propName,previous?previous[propName]:undefined)}}else{if(isObject(propValue)){patchObject(node,props,previous,propName,propValue)}else{node[propName]=propValue}}}}function removeProperty(node,propName,propValue,previous){if(previous){var previousValue=previous[propName];if(!isHook(previousValue)){if(propName==="attributes"){for(var attrName in previousValue){node.removeAttribute(attrName)}}else if(propName==="style"){for(var i in previousValue){ +node.style[i]=""}}else if(typeof previousValue==="string"){node[propName]=""}else{node[propName]=null}}else if(previousValue.unhook){previousValue.unhook(node,propName,propValue)}}}function patchObject(node,props,previous,propName,propValue){var previousValue=previous?previous[propName]:undefined;if(propName==="attributes"){for(var attrName in propValue){var attrValue=propValue[attrName];if(attrValue===undefined){node.removeAttribute(attrName)}else{node.setAttribute(attrName,attrValue)}}return}if(previousValue&&isObject(previousValue)&&getPrototype(previousValue)!==getPrototype(propValue)){node[propName]=propValue;return}if(!isObject(node[propName])){node[propName]={}}var replacer=propName==="style"?"":undefined;for(var k in propValue){var value=propValue[k];node[propName][k]=value===undefined?replacer:value}}function getPrototype(value){if(Object.getPrototypeOf){return Object.getPrototypeOf(value)}else if(value.__proto__){return value.__proto__}else if(value.constructor){return value.constructor.prototype}}},{"../vnode/is-vhook.js":48,"is-object":33}],36:[function(require,module,exports){var document=require("global/document");var applyProperties=require("./apply-properties");var isVNode=require("../vnode/is-vnode.js");var isVText=require("../vnode/is-vtext.js");var isWidget=require("../vnode/is-widget.js");var handleThunk=require("../vnode/handle-thunk.js");module.exports=createElement;function createElement(vnode,opts){var doc=opts?opts.document||document:document;var warn=opts?opts.warn:null;vnode=handleThunk(vnode).a;if(isWidget(vnode)){return vnode.init()}else if(isVText(vnode)){return doc.createTextNode(vnode.text)}else if(!isVNode(vnode)){if(warn){warn("Item is not a valid virtual dom node",vnode)}return null}var node=vnode.namespace===null?doc.createElement(vnode.tagName):doc.createElementNS(vnode.namespace,vnode.tagName);var props=vnode.properties;applyProperties(node,props);var children=vnode.children;for(var i=0;i>0;currentItem=indices[currentIndex];if(minIndex===maxIndex){return currentItem>=left&¤tItem<=right}else if(currentItemright){maxIndex=currentIndex-1}else{return true}}return false}function ascending(a,b){return a>b?1:-1}},{}],38:[function(require,module,exports){var applyProperties=require("./apply-properties");var isWidget=require("../vnode/is-widget.js");var VPatch=require("../vnode/vpatch.js");var updateWidget=require("./update-widget");module.exports=applyPatch;function applyPatch(vpatch,domNode,renderOptions){var type=vpatch.type;var vNode=vpatch.vNode;var patch=vpatch.patch;switch(type){case VPatch.REMOVE:return removeNode(domNode,vNode);case VPatch.INSERT:return insertNode(domNode,patch,renderOptions);case VPatch.VTEXT:return stringPatch(domNode,vNode,patch,renderOptions);case VPatch.WIDGET:return widgetPatch(domNode,vNode,patch,renderOptions);case VPatch.VNODE:return vNodePatch(domNode,vNode,patch,renderOptions);case VPatch.ORDER:reorderChildren(domNode,patch);return domNode;case VPatch.PROPS:applyProperties(domNode,patch,vNode.properties);return domNode;case VPatch.THUNK:return replaceRoot(domNode,renderOptions.patch(domNode,patch,renderOptions));default:return domNode}}function removeNode(domNode,vNode){var parentNode=domNode.parentNode;if(parentNode){parentNode.removeChild(domNode)}destroyWidget(domNode,vNode);return null}function insertNode(parentNode,vNode,renderOptions){var newNode=renderOptions.render(vNode,renderOptions);if(parentNode){parentNode.appendChild(newNode)}return parentNode}function stringPatch(domNode,leftVNode,vText,renderOptions){var newNode;if(domNode.nodeType===3){domNode.replaceData(0,domNode.length,vText.text);newNode=domNode}else{var parentNode=domNode.parentNode;newNode=renderOptions.render(vText,renderOptions);if(parentNode&&newNode!==domNode){parentNode.replaceChild(newNode,domNode)}}return newNode}function widgetPatch(domNode,leftVNode,widget,renderOptions){var updating=updateWidget(leftVNode,widget);var newNode;if(updating){newNode=widget.update(leftVNode,domNode)||domNode}else{newNode=renderOptions.render(widget,renderOptions)}var parentNode=domNode.parentNode;if(parentNode&&newNode!==domNode){parentNode.replaceChild(newNode,domNode)}if(!updating){destroyWidget(domNode,leftVNode)}return newNode}function vNodePatch(domNode,leftVNode,vNode,renderOptions){var parentNode=domNode.parentNode;var newNode=renderOptions.render(vNode,renderOptions);if(parentNode&&newNode!==domNode){parentNode.replaceChild(newNode,domNode)}return newNode}function destroyWidget(domNode,w){if(typeof w.destroy==="function"&&isWidget(w)){w.destroy(domNode)}}function reorderChildren(domNode,moves){var childNodes=domNode.childNodes;var keyMap={};var node;var remove;var insert;for(var i=0;i=length++?null:childNodes[insert.to])}}function replaceRoot(oldRoot,newRoot){if(oldRoot&&newRoot&&oldRoot!==newRoot&&oldRoot.parentNode){oldRoot.parentNode.replaceChild(newRoot,oldRoot)}return newRoot}},{"../vnode/is-widget.js":51,"../vnode/vpatch.js":54,"./apply-properties":35,"./update-widget":40}],39:[function(require,module,exports){var document=require("global/document");var isArray=require("x-is-array");var render=require("./create-element");var domIndex=require("./dom-index");var patchOp=require("./patch-op");module.exports=patch;function patch(rootNode,patches,renderOptions){renderOptions=renderOptions||{};renderOptions.patch=renderOptions.patch&&renderOptions.patch!==patch?renderOptions.patch:patchRecursive;renderOptions.render=renderOptions.render||render;return renderOptions.patch(rootNode,patches,renderOptions)}function patchRecursive(rootNode,patches,renderOptions){var indices=patchIndices(patches);if(indices.length===0){return rootNode}var index=domIndex(rootNode,patches.a,indices);var ownerDocument=rootNode.ownerDocument;if(!renderOptions.document&&ownerDocument!==document){renderOptions.document=ownerDocument}for(var i=0;i-1?prop.substr(colonPosition+1):prop;node.removeAttributeNS(this.namespace,localName)};AttributeHook.prototype.type="AttributeHook"},{}],42:[function(require,module,exports){"use strict";var EvStore=require("ev-store");module.exports=EvHook;function EvHook(value){if(!(this instanceof EvHook)){return new EvHook(value)}this.value=value}EvHook.prototype.hook=function(node,propertyName){var es=EvStore(node);var propName=propertyName.substr(3);es[propName]=this.value};EvHook.prototype.unhook=function(node,propertyName){var es=EvStore(node);var propName=propertyName.substr(3);es[propName]=undefined}},{"ev-store":29}],43:[function(require,module,exports){"use strict";module.exports=SoftSetHook;function SoftSetHook(value){if(!(this instanceof SoftSetHook)){return new SoftSetHook(value)}this.value=value}SoftSetHook.prototype.hook=function(node,propertyName){if(node[propertyName]!==this.value){node[propertyName]=this.value}}},{}],44:[function(require,module,exports){"use strict";var split=require("browser-split");var classIdSplit=/([\.#]?[a-zA-Z0-9\u007F-\uFFFF_:-]+)/;var notClassId=/^\.|#/;module.exports=parseTag;function parseTag(tag,props){if(!tag){return"DIV"}var noId=!props.hasOwnProperty("id");var tagParts=split(tag,classIdSplit);var tagName=null;if(notClassId.test(tagParts[1])){tagName="DIV"}var classes,part,type,i;for(i=0;ibLen?aLen:bLen;for(var i=0;i=bFree.length?bChildren.length:bFree[freeIndex];for(var j=0;j=lastFreeIndex){newChildren.push(newItem)}}var simulate=newChildren.slice();var simulateIndex=0;var removes=[];var inserts=[];var simulateItem;for(var k=0;k1?_len-1:0),_key=1;_key<_len;_key++){rest[_key-1]=arguments[_key]}var sinks=dataflowComponent.apply(undefined,[scopedSources].concat(rest));var scopedSinks={};for(var key in sinks){if(sinks.hasOwnProperty(key)&&sources.hasOwnProperty(key)&&typeof sources[key].isolateSink==="function"){scopedSinks[key]=sources[key].isolateSink(sinks[key],scope)}else if(sinks.hasOwnProperty(key)){scopedSinks[key]=sinks[key]}}return scopedSinks}}isolate.reset=function(){return counter=0};module.exports=isolate},{}],60:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=storageDriver;var _writeToStore=require("./writeToStore");var _writeToStore2=_interopRequireDefault(_writeToStore);var _responseCollection=require("./responseCollection");var _responseCollection2=_interopRequireDefault(_responseCollection);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function storageDriver(request$){request$.subscribe(function(request){return(0,_writeToStore2.default)(request)});return(0,_responseCollection2.default)(request$)}},{"./responseCollection":61,"./writeToStore":63}],61:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=function(request$){return{get local(){return(0,_util2.default)(request$)},get session(){return(0,_util2.default)(request$,"session")}}};var _util=require("./util");var _util2=_interopRequireDefault(_util);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}},{"./util":62}],62:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=getResponseObj;var _rx=require("rx");var _rx2=_interopRequireDefault(_rx);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function getStorage$(request$,type){return _rx2.default.Observable.if(function(){return type==="local"},request$.filter(function(req){return!req.target||req.target==="local"}),request$.filter(function(req){return req.target==="session"}))}function storageKey(n,request$){var type=arguments.length<=2||arguments[2]===undefined?"local":arguments[2];var storage$=getStorage$(request$,type);var key=type==="local"?localStorage.key(n):sessionStorage.key(n);return storage$.filter(function(req){return req.key===key}).map(function(req){return req.key}).startWith(key).distinctUntilChanged()}function storageGetItem(key,request$){var type=arguments.length<=2||arguments[2]===undefined?"local":arguments[2];var storage$=getStorage$(request$,type);var storageObj=type==="local"?localStorage:sessionStorage;return storage$.filter(function(req){return req.key===key}).map(function(req){return req.value}).startWith(storageObj.getItem(key))}function getResponseObj(request$){var type=arguments.length<=1||arguments[1]===undefined?"local":arguments[1];return{key:function key(n){return storageKey(n,request$,type)},getItem:function getItem(key){return storageGetItem(key,request$,type)}}}},{rx:66}],63:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});function writeToStore(_ref){var _ref$target=_ref.target;var target=_ref$target===undefined?"local":_ref$target;var _ref$action=_ref.action;var action=_ref$action===undefined?"setItem":_ref$action;var key=_ref.key;var value=_ref.value;var storage=target==="local"?localStorage:sessionStorage;storage[action](key,value)}exports.default=writeToStore},{}],64:[function(require,module,exports){},{}],65:[function(require,module,exports){var process=module.exports={};var queue=[];var draining=false;var currentQueue;var queueIndex=-1;function cleanUpNextTick(){draining=false;if(currentQueue.length){queue=currentQueue.concat(queue)}else{queueIndex=-1}if(queue.length){drainQueue()}}function drainQueue(){if(draining){return}var timeout=setTimeout(cleanUpNextTick);draining=true;var len=queue.length;while(len){currentQueue=queue;queue=[];while(++queueIndex1){for(var i=1;iy?1:x=rStartingLine&&lineNumber<=rEndingLine}function isNodeFrame(stackLine){return stackLine.indexOf("(module.js:")!==-1||stackLine.indexOf("(node.js:")!==-1}function captureLine(){if(!hasStacks){return}try{throw new Error}catch(e){var lines=e.stack.split("\n");var firstLine=lines[0].indexOf("@")>0?lines[1]:lines[2];var fileNameAndLineNumber=getFileNameAndLineNumber(firstLine);if(!fileNameAndLineNumber){return}rFileName=fileNameAndLineNumber[0];return fileNameAndLineNumber[1]}}function getFileNameAndLineNumber(stackLine){var attempt1=/at .+ \((.+):(\d+):(?:\d+)\)$/.exec(stackLine);if(attempt1){return[attempt1[1],Number(attempt1[2])]}var attempt2=/at ([^ ]+):(\d+):(?:\d+)$/.exec(stackLine);if(attempt2){return[attempt2[1],Number(attempt2[2])]}var attempt3=/.*@(.+):(\d+)$/.exec(stackLine);if(attempt3){return[attempt3[1],Number(attempt3[2])]}}var EmptyError=Rx.EmptyError=function(){this.message="Sequence contains no elements.";Error.call(this)};EmptyError.prototype=Object.create(Error.prototype);EmptyError.prototype.name="EmptyError";var ObjectDisposedError=Rx.ObjectDisposedError=function(){this.message="Object has been disposed";Error.call(this)};ObjectDisposedError.prototype=Object.create(Error.prototype);ObjectDisposedError.prototype.name="ObjectDisposedError";var ArgumentOutOfRangeError=Rx.ArgumentOutOfRangeError=function(){this.message="Argument out of range";Error.call(this)};ArgumentOutOfRangeError.prototype=Object.create(Error.prototype);ArgumentOutOfRangeError.prototype.name="ArgumentOutOfRangeError";var NotSupportedError=Rx.NotSupportedError=function(message){this.message=message||"This operation is not supported";Error.call(this)};NotSupportedError.prototype=Object.create(Error.prototype);NotSupportedError.prototype.name="NotSupportedError";var NotImplementedError=Rx.NotImplementedError=function(message){this.message=message||"This operation is not implemented";Error.call(this)};NotImplementedError.prototype=Object.create(Error.prototype);NotImplementedError.prototype.name="NotImplementedError";var notImplemented=Rx.helpers.notImplemented=function(){throw new NotImplementedError};var notSupported=Rx.helpers.notSupported=function(){throw new NotSupportedError};var $iterator$=typeof Symbol==="function"&&Symbol.iterator||"_es6shim_iterator_";if(root.Set&&typeof(new root.Set)["@@iterator"]==="function"){$iterator$="@@iterator"}var doneEnumerator=Rx.doneEnumerator={done:true,value:undefined};var isIterable=Rx.helpers.isIterable=function(o){return o&&o[$iterator$]!==undefined};var isArrayLike=Rx.helpers.isArrayLike=function(o){return o&&o.length!==undefined};Rx.helpers.iterator=$iterator$;var bindCallback=Rx.internals.bindCallback=function(func,thisArg,argCount){if(typeof thisArg==="undefined"){return func}switch(argCount){case 0:return function(){return func.call(thisArg)};case 1:return function(arg){return func.call(thisArg,arg)};case 2:return function(value,index){return func.call(thisArg,value,index)};case 3:return function(value,index,collection){return func.call(thisArg,value,index,collection)}}return function(){return func.apply(thisArg,arguments)}};var dontEnums=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],dontEnumsLength=dontEnums.length;var argsTag="[object Arguments]",arrayTag="[object Array]",boolTag="[object Boolean]",dateTag="[object Date]",errorTag="[object Error]",funcTag="[object Function]",mapTag="[object Map]",numberTag="[object Number]",objectTag="[object Object]",regexpTag="[object RegExp]",setTag="[object Set]",stringTag="[object String]",weakMapTag="[object WeakMap]";var arrayBufferTag="[object ArrayBuffer]",float32Tag="[object Float32Array]",float64Tag="[object Float64Array]",int8Tag="[object Int8Array]",int16Tag="[object Int16Array]",int32Tag="[object Int32Array]",uint8Tag="[object Uint8Array]",uint8ClampedTag="[object Uint8ClampedArray]",uint16Tag="[object Uint16Array]",uint32Tag="[object Uint32Array]";var typedArrayTags={};typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=true;typedArrayTags[argsTag]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag]=typedArrayTags[mapTag]=typedArrayTags[numberTag]=typedArrayTags[objectTag]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag]=typedArrayTags[weakMapTag]=false;var objectProto=Object.prototype,hasOwnProperty=objectProto.hasOwnProperty,objToString=objectProto.toString,MAX_SAFE_INTEGER=Math.pow(2,53)-1;var keys=Object.keys||function(){var hasOwnProperty=Object.prototype.hasOwnProperty,hasDontEnumBug=!{toString:null}.propertyIsEnumerable("toString"),dontEnums=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],dontEnumsLength=dontEnums.length;return function(obj){if(typeof obj!=="object"&&(typeof obj!=="function"||obj===null)){throw new TypeError("Object.keys called on non-object")}var result=[],prop,i;for(prop in obj){if(hasOwnProperty.call(obj,prop)){result.push(prop)}}if(hasDontEnumBug){for(i=0;i-1&&value%1===0&&value<=MAX_SAFE_INTEGER}var isHostObject=function(){try{Object({toString:0}+"")}catch(e){return function(){return false}}return function(value){return typeof value.toString!=="function"&&typeof(value+"")==="string"}}();function isTypedArray(value){return isObjectLike(value)&&isLength(value.length)&&!!typedArrayTags[objToString.call(value)]}var isArray=Array.isArray||function(value){return isObjectLike(value)&&isLength(value.length)&&objToString.call(value)===arrayTag};function arraySome(array,predicate){var index=-1,length=array.length;while(++indexarrLength)){return false}while(++index=this.length||index<0){return}var parent=index-1>>1;if(parent<0||parent===index){return}if(this.isHigherPriority(index,parent)){var temp=this.items[index];this.items[index]=this.items[parent];this.items[parent]=temp;this.percolate(parent)}};priorityProto.heapify=function(index){+index||(index=0);if(index>=this.length||index<0){return}var left=2*index+1,right=2*index+2,first=index;if(left0){var item=queue.dequeue();!item.isCancelled()&&item.invoke()}}inherits(CurrentThreadScheduler,__super__);function CurrentThreadScheduler(){__super__.call(this)}CurrentThreadScheduler.prototype.schedule=function(state,action){var si=new ScheduledItem(this,state,action,this.now());if(!queue){queue=new PriorityQueue(4);queue.enqueue(si);var result=tryCatch(runTrampoline)();queue=null;if(result===errorObj){thrower(result.e)}}else{queue.enqueue(si)}return si.disposable};CurrentThreadScheduler.prototype.scheduleRequired=function(){return!queue};return CurrentThreadScheduler}(Scheduler);var currentThreadScheduler=Scheduler.currentThread=new CurrentThreadScheduler;var scheduleMethod,clearMethod;var localTimer=function(){var localSetTimeout,localClearTimeout=noop;if(!!root.setTimeout){localSetTimeout=root.setTimeout;localClearTimeout=root.clearTimeout}else if(!!root.WScript){localSetTimeout=function(fn,time){root.WScript.Sleep(time);fn()}}else{throw new NotSupportedError}return{setTimeout:localSetTimeout,clearTimeout:localClearTimeout}}();var localSetTimeout=localTimer.setTimeout,localClearTimeout=localTimer.clearTimeout;(function(){var nextHandle=1,tasksByHandle={},currentlyRunning=false;clearMethod=function(handle){delete tasksByHandle[handle]};function runTask(handle){if(currentlyRunning){localSetTimeout(function(){runTask(handle)},0)}else{var task=tasksByHandle[handle];if(task){currentlyRunning=true;var result=tryCatch(task)();clearMethod(handle);currentlyRunning=false;if(result===errorObj){thrower(result.e)}}}}var reNative=new RegExp("^"+String(toString).replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/toString| for [^\]]+/g,".*?")+"$");var setImmediate=typeof(setImmediate=freeGlobal&&moduleExports&&freeGlobal.setImmediate)=="function"&&!reNative.test(setImmediate)&&setImmediate;function postMessageSupported(){if(!root.postMessage||root.importScripts){return false}var isAsync=false,oldHandler=root.onmessage;root.onmessage=function(){isAsync=true};root.postMessage("","*");root.onmessage=oldHandler;return isAsync}if(isFunction(setImmediate)){scheduleMethod=function(action){var id=nextHandle++;tasksByHandle[id]=action;setImmediate(function(){runTask(id)});return id}}else if(typeof process!=="undefined"&&{}.toString.call(process)==="[object process]"){ +scheduleMethod=function(action){var id=nextHandle++;tasksByHandle[id]=action;process.nextTick(function(){runTask(id)});return id}}else if(postMessageSupported()){var MSG_PREFIX="ms.rx.schedule"+Math.random();var onGlobalPostMessage=function(event){if(typeof event.data==="string"&&event.data.substring(0,MSG_PREFIX.length)===MSG_PREFIX){runTask(event.data.substring(MSG_PREFIX.length))}};root.addEventListener("message",onGlobalPostMessage,false);scheduleMethod=function(action){var id=nextHandle++;tasksByHandle[id]=action;root.postMessage(MSG_PREFIX+currentId,"*");return id}}else if(!!root.MessageChannel){var channel=new root.MessageChannel;channel.port1.onmessage=function(e){runTask(e.data)};scheduleMethod=function(action){var id=nextHandle++;tasksByHandle[id]=action;channel.port2.postMessage(id);return id}}else if("document"in root&&"onreadystatechange"in root.document.createElement("script")){scheduleMethod=function(action){var scriptElement=root.document.createElement("script");var id=nextHandle++;tasksByHandle[id]=action;scriptElement.onreadystatechange=function(){runTask(id);scriptElement.onreadystatechange=null;scriptElement.parentNode.removeChild(scriptElement);scriptElement=null};root.document.documentElement.appendChild(scriptElement);return id}}else{scheduleMethod=function(action){var id=nextHandle++;tasksByHandle[id]=action;localSetTimeout(function(){runTask(id)},0);return id}}})();var DefaultScheduler=function(__super__){inherits(DefaultScheduler,__super__);function DefaultScheduler(){__super__.call(this)}function scheduleAction(disposable,action,scheduler,state){return function schedule(){disposable.setDisposable(Disposable._fixup(action(scheduler,state)))}}function ClearDisposable(id){this._id=id;this.isDisposed=false}ClearDisposable.prototype.dispose=function(){if(!this.isDisposed){this.isDisposed=true;clearMethod(this._id)}};function LocalClearDisposable(id){this._id=id;this.isDisposed=false}LocalClearDisposable.prototype.dispose=function(){if(!this.isDisposed){this.isDisposed=true;localClearTimeout(this._id)}};DefaultScheduler.prototype.schedule=function(state,action){var disposable=new SingleAssignmentDisposable,id=scheduleMethod(scheduleAction(disposable,action,this,state));return new BinaryDisposable(disposable,new ClearDisposable(id))};DefaultScheduler.prototype._scheduleFuture=function(state,dueTime,action){if(dueTime===0){return this.schedule(state,action)}var disposable=new SingleAssignmentDisposable,id=localSetTimeout(scheduleAction(disposable,action,this,state),dueTime);return new BinaryDisposable(disposable,new LocalClearDisposable(id))};return DefaultScheduler}(Scheduler);var defaultScheduler=Scheduler["default"]=Scheduler.async=new DefaultScheduler;var CatchScheduler=function(__super__){inherits(CatchScheduler,__super__);function CatchScheduler(scheduler,handler){this._scheduler=scheduler;this._handler=handler;this._recursiveOriginal=null;this._recursiveWrapper=null;__super__.call(this)}CatchScheduler.prototype.schedule=function(state,action){return this._scheduler.schedule(state,this._wrap(action))};CatchScheduler.prototype._scheduleFuture=function(state,dueTime,action){return this._scheduler.schedule(state,dueTime,this._wrap(action))};CatchScheduler.prototype.now=function(){return this._scheduler.now()};CatchScheduler.prototype._clone=function(scheduler){return new CatchScheduler(scheduler,this._handler)};CatchScheduler.prototype._wrap=function(action){var parent=this;return function(self,state){var res=tryCatch(action)(parent._getRecursiveWrapper(self),state);if(res===errorObj){if(!parent._handler(res.e)){thrower(res.e)}return disposableEmpty}return disposableFixup(res)}};CatchScheduler.prototype._getRecursiveWrapper=function(scheduler){if(this._recursiveOriginal!==scheduler){this._recursiveOriginal=scheduler;var wrapper=this._clone(scheduler);wrapper._recursiveOriginal=scheduler;wrapper._recursiveWrapper=wrapper;this._recursiveWrapper=wrapper}return this._recursiveWrapper};CatchScheduler.prototype.schedulePeriodic=function(state,period,action){var self=this,failed=false,d=new SingleAssignmentDisposable;d.setDisposable(this._scheduler.schedulePeriodic(state,period,function(state1){if(failed){return null}var res=tryCatch(action)(state1);if(res===errorObj){failed=true;if(!self._handler(res.e)){thrower(res.e)}d.dispose();return null}return res}));return d};return CatchScheduler}(Scheduler);var Notification=Rx.Notification=function(){function Notification(){}Notification.prototype._accept=function(onNext,onError,onCompleted){throw new NotImplementedError};Notification.prototype._acceptObserver=function(onNext,onError,onCompleted){throw new NotImplementedError};Notification.prototype.accept=function(observerOrOnNext,onError,onCompleted){return observerOrOnNext&&typeof observerOrOnNext==="object"?this._acceptObserver(observerOrOnNext):this._accept(observerOrOnNext,onError,onCompleted)};Notification.prototype.toObservable=function(scheduler){var self=this;isScheduler(scheduler)||(scheduler=immediateScheduler);return new AnonymousObservable(function(o){return scheduler.schedule(self,function(_,notification){notification._acceptObserver(o);notification.kind==="N"&&o.onCompleted()})})};return Notification}();var OnNextNotification=function(__super__){inherits(OnNextNotification,__super__);function OnNextNotification(value){this.value=value;this.kind="N"}OnNextNotification.prototype._accept=function(onNext){return onNext(this.value)};OnNextNotification.prototype._acceptObserver=function(o){return o.onNext(this.value)};OnNextNotification.prototype.toString=function(){return"OnNext("+this.value+")"};return OnNextNotification}(Notification);var OnErrorNotification=function(__super__){inherits(OnErrorNotification,__super__);function OnErrorNotification(error){this.error=error;this.kind="E"}OnErrorNotification.prototype._accept=function(onNext,onError){return onError(this.error)};OnErrorNotification.prototype._acceptObserver=function(o){return o.onError(this.error)};OnErrorNotification.prototype.toString=function(){return"OnError("+this.error+")"};return OnErrorNotification}(Notification);var OnCompletedNotification=function(__super__){inherits(OnCompletedNotification,__super__);function OnCompletedNotification(){this.kind="C"}OnCompletedNotification.prototype._accept=function(onNext,onError,onCompleted){return onCompleted()};OnCompletedNotification.prototype._acceptObserver=function(o){return o.onCompleted()};OnCompletedNotification.prototype.toString=function(){return"OnCompleted()"};return OnCompletedNotification}(Notification);var notificationCreateOnNext=Notification.createOnNext=function(value){return new OnNextNotification(value)};var notificationCreateOnError=Notification.createOnError=function(error){return new OnErrorNotification(error)};var notificationCreateOnCompleted=Notification.createOnCompleted=function(){return new OnCompletedNotification};var Observer=Rx.Observer=function(){};Observer.prototype.toNotifier=function(){var observer=this;return function(n){return n.accept(observer)}};Observer.prototype.asObserver=function(){var self=this;return new AnonymousObserver(function(x){self.onNext(x)},function(err){self.onError(err)},function(){self.onCompleted()})};Observer.prototype.checked=function(){return new CheckedObserver(this)};var observerCreate=Observer.create=function(onNext,onError,onCompleted){onNext||(onNext=noop);onError||(onError=defaultError);onCompleted||(onCompleted=noop);return new AnonymousObserver(onNext,onError,onCompleted)};Observer.fromNotifier=function(handler,thisArg){var cb=bindCallback(handler,thisArg,1);return new AnonymousObserver(function(x){return cb(notificationCreateOnNext(x))},function(e){return cb(notificationCreateOnError(e))},function(){return cb(notificationCreateOnCompleted())})};Observer.prototype.notifyOn=function(scheduler){return new ObserveOnObserver(scheduler,this)};Observer.prototype.makeSafe=function(disposable){return new AnonymousSafeObserver(this._onNext,this._onError,this._onCompleted,disposable)};var AbstractObserver=Rx.internals.AbstractObserver=function(__super__){inherits(AbstractObserver,__super__);function AbstractObserver(){this.isStopped=false}AbstractObserver.prototype.next=notImplemented;AbstractObserver.prototype.error=notImplemented;AbstractObserver.prototype.completed=notImplemented;AbstractObserver.prototype.onNext=function(value){!this.isStopped&&this.next(value)};AbstractObserver.prototype.onError=function(error){if(!this.isStopped){this.isStopped=true;this.error(error)}};AbstractObserver.prototype.onCompleted=function(){if(!this.isStopped){this.isStopped=true;this.completed()}};AbstractObserver.prototype.dispose=function(){this.isStopped=true};AbstractObserver.prototype.fail=function(e){if(!this.isStopped){this.isStopped=true;this.error(e);return true}return false};return AbstractObserver}(Observer);var AnonymousObserver=Rx.AnonymousObserver=function(__super__){inherits(AnonymousObserver,__super__);function AnonymousObserver(onNext,onError,onCompleted){__super__.call(this);this._onNext=onNext;this._onError=onError;this._onCompleted=onCompleted}AnonymousObserver.prototype.next=function(value){this._onNext(value)};AnonymousObserver.prototype.error=function(error){this._onError(error)};AnonymousObserver.prototype.completed=function(){this._onCompleted()};return AnonymousObserver}(AbstractObserver);var CheckedObserver=function(__super__){inherits(CheckedObserver,__super__);function CheckedObserver(observer){__super__.call(this);this._observer=observer;this._state=0}var CheckedObserverPrototype=CheckedObserver.prototype;CheckedObserverPrototype.onNext=function(value){this.checkAccess();var res=tryCatch(this._observer.onNext).call(this._observer,value);this._state=0;res===errorObj&&thrower(res.e)};CheckedObserverPrototype.onError=function(err){this.checkAccess();var res=tryCatch(this._observer.onError).call(this._observer,err);this._state=2;res===errorObj&&thrower(res.e)};CheckedObserverPrototype.onCompleted=function(){this.checkAccess();var res=tryCatch(this._observer.onCompleted).call(this._observer);this._state=2;res===errorObj&&thrower(res.e)};CheckedObserverPrototype.checkAccess=function(){if(this._state===1){throw new Error("Re-entrancy detected")}if(this._state===2){throw new Error("Observer completed")}if(this._state===0){this._state=1}};return CheckedObserver}(Observer);var ScheduledObserver=Rx.internals.ScheduledObserver=function(__super__){inherits(ScheduledObserver,__super__);function ScheduledObserver(scheduler,observer){__super__.call(this);this.scheduler=scheduler;this.observer=observer;this.isAcquired=false;this.hasFaulted=false;this.queue=[];this.disposable=new SerialDisposable}function enqueueNext(observer,x){return function(){observer.onNext(x)}}function enqueueError(observer,e){return function(){observer.onError(e)}}function enqueueCompleted(observer){return function(){observer.onCompleted()}}ScheduledObserver.prototype.next=function(x){this.queue.push(enqueueNext(this.observer,x))};ScheduledObserver.prototype.error=function(e){this.queue.push(enqueueError(this.observer,e))};ScheduledObserver.prototype.completed=function(){this.queue.push(enqueueCompleted(this.observer))};function scheduleMethod(state,recurse){var work;if(state.queue.length>0){work=state.queue.shift()}else{state.isAcquired=false;return}var res=tryCatch(work)();if(res===errorObj){state.queue=[];state.hasFaulted=true;return thrower(res.e)}recurse(state)}ScheduledObserver.prototype.ensureActive=function(){var isOwner=false;if(!this.hasFaulted&&this.queue.length>0){isOwner=!this.isAcquired;this.isAcquired=true}isOwner&&this.disposable.setDisposable(this.scheduler.scheduleRecursive(this,scheduleMethod))};ScheduledObserver.prototype.dispose=function(){__super__.prototype.dispose.call(this);this.disposable.dispose()};return ScheduledObserver}(AbstractObserver);var ObserveOnObserver=function(__super__){inherits(ObserveOnObserver,__super__);function ObserveOnObserver(scheduler,observer,cancel){__super__.call(this,scheduler,observer);this._cancel=cancel}ObserveOnObserver.prototype.next=function(value){__super__.prototype.next.call(this,value);this.ensureActive()};ObserveOnObserver.prototype.error=function(e){__super__.prototype.error.call(this,e);this.ensureActive()};ObserveOnObserver.prototype.completed=function(){__super__.prototype.completed.call(this);this.ensureActive()};ObserveOnObserver.prototype.dispose=function(){__super__.prototype.dispose.call(this);this._cancel&&this._cancel.dispose();this._cancel=null};return ObserveOnObserver}(ScheduledObserver);var observableProto;var Observable=Rx.Observable=function(){function makeSubscribe(self,subscribe){return function(o){var oldOnError=o.onError;o.onError=function(e){makeStackTraceLong(e,self);oldOnError.call(o,e)};return subscribe.call(self,o)}}function Observable(){if(Rx.config.longStackSupport&&hasStacks){var oldSubscribe=this._subscribe;var e=tryCatch(thrower)(new Error).e;this.stack=e.stack.substring(e.stack.indexOf("\n")+1);this._subscribe=makeSubscribe(this,oldSubscribe)}}observableProto=Observable.prototype;Observable.isObservable=function(o){return o&&isFunction(o.subscribe)};observableProto.subscribe=observableProto.forEach=function(oOrOnNext,onError,onCompleted){return this._subscribe(typeof oOrOnNext==="object"?oOrOnNext:observerCreate(oOrOnNext,onError,onCompleted))};observableProto.subscribeOnNext=function(onNext,thisArg){return this._subscribe(observerCreate(typeof thisArg!=="undefined"?function(x){onNext.call(thisArg,x)}:onNext))};observableProto.subscribeOnError=function(onError,thisArg){return this._subscribe(observerCreate(null,typeof thisArg!=="undefined"?function(e){onError.call(thisArg,e)}:onError))};observableProto.subscribeOnCompleted=function(onCompleted,thisArg){return this._subscribe(observerCreate(null,null,typeof thisArg!=="undefined"?function(){onCompleted.call(thisArg)}:onCompleted))};return Observable}();var ObservableBase=Rx.ObservableBase=function(__super__){inherits(ObservableBase,__super__);function fixSubscriber(subscriber){return subscriber&&isFunction(subscriber.dispose)?subscriber:isFunction(subscriber)?disposableCreate(subscriber):disposableEmpty}function setDisposable(s,state){var ado=state[0],self=state[1];var sub=tryCatch(self.subscribeCore).call(self,ado);if(sub===errorObj&&!ado.fail(errorObj.e)){thrower(errorObj.e)}ado.setDisposable(fixSubscriber(sub))}function ObservableBase(){__super__.call(this)}ObservableBase.prototype._subscribe=function(o){var ado=new AutoDetachObserver(o),state=[ado,this];if(currentThreadScheduler.scheduleRequired()){currentThreadScheduler.schedule(state,setDisposable)}else{setDisposable(null,state)}return ado};ObservableBase.prototype.subscribeCore=notImplemented;return ObservableBase}(Observable);var FlatMapObservable=Rx.FlatMapObservable=function(__super__){inherits(FlatMapObservable,__super__);function FlatMapObservable(source,selector,resultSelector,thisArg){this.resultSelector=isFunction(resultSelector)?resultSelector:null;this.selector=bindCallback(isFunction(selector)?selector:function(){return selector},thisArg,3);this.source=source;__super__.call(this)}FlatMapObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new InnerObserver(o,this.selector,this.resultSelector,this))};inherits(InnerObserver,AbstractObserver);function InnerObserver(observer,selector,resultSelector,source){this.i=0;this.selector=selector;this.resultSelector=resultSelector;this.source=source;this.o=observer;AbstractObserver.call(this)}InnerObserver.prototype._wrapResult=function(result,x,i){return this.resultSelector?result.map(function(y,i2){return this.resultSelector(x,y,i,i2)},this):result};InnerObserver.prototype.next=function(x){var i=this.i++;var result=tryCatch(this.selector)(x,i,this.source);if(result===errorObj){return this.o.onError(result.e)}isPromise(result)&&(result=observableFromPromise(result));(isArrayLike(result)||isIterable(result))&&(result=Observable.from(result));this.o.onNext(this._wrapResult(result,x,i))};InnerObserver.prototype.error=function(e){this.o.onError(e)};InnerObserver.prototype.completed=function(){this.o.onCompleted()};return FlatMapObservable}(ObservableBase);var Enumerable=Rx.internals.Enumerable=function(){};function IsDisposedDisposable(state){this._s=state;this.isDisposed=false}IsDisposedDisposable.prototype.dispose=function(){if(!this.isDisposed){this.isDisposed=true;this._s.isDisposed=true}};var ConcatEnumerableObservable=function(__super__){inherits(ConcatEnumerableObservable,__super__);function ConcatEnumerableObservable(sources){this.sources=sources;__super__.call(this)}function scheduleMethod(state,recurse){if(state.isDisposed){return}var currentItem=tryCatch(state.e.next).call(state.e);if(currentItem===errorObj){return state.o.onError(currentItem.e)}if(currentItem.done){return state.o.onCompleted()}var currentValue=currentItem.value;isPromise(currentValue)&&(currentValue=observableFromPromise(currentValue));var d=new SingleAssignmentDisposable;state.subscription.setDisposable(d);d.setDisposable(currentValue.subscribe(new InnerObserver(state,recurse)))}ConcatEnumerableObservable.prototype.subscribeCore=function(o){var subscription=new SerialDisposable;var state={isDisposed:false,o:o,subscription:subscription,e:this.sources[$iterator$]()};var cancelable=currentThreadScheduler.scheduleRecursive(state,scheduleMethod);return new NAryDisposable([subscription,cancelable,new IsDisposedDisposable(state)])};function InnerObserver(state,recurse){this._state=state;this._recurse=recurse;AbstractObserver.call(this)}inherits(InnerObserver,AbstractObserver);InnerObserver.prototype.next=function(x){this._state.o.onNext(x)};InnerObserver.prototype.error=function(e){this._state.o.onError(e)};InnerObserver.prototype.completed=function(){this._recurse(this._state)};return ConcatEnumerableObservable}(ObservableBase);Enumerable.prototype.concat=function(){return new ConcatEnumerableObservable(this)};var CatchErrorObservable=function(__super__){function CatchErrorObservable(sources){this.sources=sources;__super__.call(this)}inherits(CatchErrorObservable,__super__);function scheduleMethod(state,recurse){if(state.isDisposed){return}var currentItem=tryCatch(state.e.next).call(state.e);if(currentItem===errorObj){return state.o.onError(currentItem.e)}if(currentItem.done){return state.lastError!==null?state.o.onError(state.lastError):state.o.onCompleted()}var currentValue=currentItem.value;isPromise(currentValue)&&(currentValue=observableFromPromise(currentValue));var d=new SingleAssignmentDisposable;state.subscription.setDisposable(d);d.setDisposable(currentValue.subscribe(new InnerObserver(state,recurse)))}CatchErrorObservable.prototype.subscribeCore=function(o){var subscription=new SerialDisposable;var state={isDisposed:false,e:this.sources[$iterator$](),subscription:subscription,lastError:null,o:o};var cancelable=currentThreadScheduler.scheduleRecursive(state,scheduleMethod);return new NAryDisposable([subscription,cancelable,new IsDisposedDisposable(state)])};function InnerObserver(state,recurse){this._state=state;this._recurse=recurse;AbstractObserver.call(this)}inherits(InnerObserver,AbstractObserver);InnerObserver.prototype.next=function(x){this._state.o.onNext(x)};InnerObserver.prototype.error=function(e){this._state.lastError=e;this._recurse(this._state)};InnerObserver.prototype.completed=function(){this._state.o.onCompleted()};return CatchErrorObservable}(ObservableBase);Enumerable.prototype.catchError=function(){return new CatchErrorObservable(this)};Enumerable.prototype.catchErrorWhen=function(notificationHandler){var sources=this;return new AnonymousObservable(function(o){var exceptions=new Subject,notifier=new Subject,handled=notificationHandler(exceptions),notificationDisposable=handled.subscribe(notifier);var e=sources[$iterator$]();var state={isDisposed:false},lastError,subscription=new SerialDisposable;var cancelable=currentThreadScheduler.scheduleRecursive(null,function(_,self){if(state.isDisposed){return}var currentItem=tryCatch(e.next).call(e);if(currentItem===errorObj){return o.onError(currentItem.e)}if(currentItem.done){if(lastError){o.onError(lastError)}else{o.onCompleted()}return}var currentValue=currentItem.value;isPromise(currentValue)&&(currentValue=observableFromPromise(currentValue));var outer=new SingleAssignmentDisposable;var inner=new SingleAssignmentDisposable;subscription.setDisposable(new BinaryDisposable(inner,outer));outer.setDisposable(currentValue.subscribe(function(x){o.onNext(x)},function(exn){inner.setDisposable(notifier.subscribe(self,function(ex){o.onError(ex)},function(){o.onCompleted()}));exceptions.onNext(exn)},function(){o.onCompleted()}))});return new NAryDisposable([notificationDisposable,subscription,cancelable,new IsDisposedDisposable(state)])})};var RepeatEnumerable=function(__super__){inherits(RepeatEnumerable,__super__);function RepeatEnumerable(v,c){this.v=v;this.c=c==null?-1:c}RepeatEnumerable.prototype[$iterator$]=function(){return new RepeatEnumerator(this)};function RepeatEnumerator(p){this.v=p.v;this.l=p.c}RepeatEnumerator.prototype.next=function(){if(this.l===0){return doneEnumerator}if(this.l>0){this.l--}return{done:false,value:this.v}};return RepeatEnumerable}(Enumerable);var enumerableRepeat=Enumerable.repeat=function(value,repeatCount){return new RepeatEnumerable(value,repeatCount)};var OfEnumerable=function(__super__){inherits(OfEnumerable,__super__);function OfEnumerable(s,fn,thisArg){this.s=s;this.fn=fn?bindCallback(fn,thisArg,3):null}OfEnumerable.prototype[$iterator$]=function(){return new OfEnumerator(this)};function OfEnumerator(p){this.i=-1;this.s=p.s;this.l=this.s.length;this.fn=p.fn}OfEnumerator.prototype.next=function(){return++this.imaxSafeInteger){return maxSafeInteger}return len}var observableFrom=Observable.from=function(iterable,mapFn,thisArg,scheduler){if(iterable==null){throw new Error("iterable cannot be null.")}if(mapFn&&!isFunction(mapFn)){throw new Error("mapFn when provided must be a function")}if(mapFn){var mapper=bindCallback(mapFn,thisArg,2)}isScheduler(scheduler)||(scheduler=currentThreadScheduler);return new FromObservable(iterable,mapper,scheduler)};var FromArrayObservable=function(__super__){inherits(FromArrayObservable,__super__);function FromArrayObservable(args,scheduler){this._args=args;this._scheduler=scheduler;__super__.call(this)}function scheduleMethod(o,args){var len=args.length;return function loopRecursive(i,recurse){if(i0){observer.onNext(value);i>0&&i--}if(i===0){return observer.onCompleted()}recurse(i)}return this.parent.scheduler.scheduleRecursive(this.parent.repeatCount,loopRecursive)};Observable.repeat=function(value,repeatCount,scheduler){isScheduler(scheduler)||(scheduler=currentThreadScheduler);return new RepeatObservable(value,repeatCount,scheduler)};var JustObservable=function(__super__){inherits(JustObservable,__super__);function JustObservable(value,scheduler){this._value=value;this._scheduler=scheduler;__super__.call(this)}JustObservable.prototype.subscribeCore=function(o){var state=[this._value,o];return this._scheduler===immediateScheduler?scheduleItem(null,state):this._scheduler.schedule(state,scheduleItem)};function scheduleItem(s,state){var value=state[0],observer=state[1];observer.onNext(value);observer.onCompleted();return disposableEmpty}return JustObservable}(ObservableBase);var observableReturn=Observable["return"]=Observable.just=function(value,scheduler){isScheduler(scheduler)||(scheduler=immediateScheduler);return new JustObservable(value,scheduler)};var ThrowObservable=function(__super__){inherits(ThrowObservable,__super__);function ThrowObservable(error,scheduler){this._error=error;this._scheduler=scheduler;__super__.call(this)}ThrowObservable.prototype.subscribeCore=function(o){var state=[this._error,o];return this._scheduler===immediateScheduler?scheduleItem(null,state):this._scheduler.schedule(state,scheduleItem)};function scheduleItem(s,state){var e=state[0],o=state[1];o.onError(e);return disposableEmpty}return ThrowObservable}(ObservableBase);var observableThrow=Observable["throw"]=function(error,scheduler){isScheduler(scheduler)||(scheduler=immediateScheduler);return new ThrowObservable(error,scheduler)};var UsingObservable=function(__super__){inherits(UsingObservable,__super__);function UsingObservable(resFn,obsFn){this._resFn=resFn;this._obsFn=obsFn;__super__.call(this)}UsingObservable.prototype.subscribeCore=function(o){var disposable=disposableEmpty;var resource=tryCatch(this._resFn)();if(resource===errorObj){return new BinaryDisposable(observableThrow(resource.e).subscribe(o),disposable)}resource&&(disposable=resource);var source=tryCatch(this._obsFn)(resource);if(source===errorObj){return new BinaryDisposable(observableThrow(source.e).subscribe(o),disposable)}return new BinaryDisposable(source.subscribe(o),disposable)};return UsingObservable}(ObservableBase);Observable.using=function(resourceFactory,observableFactory){return new UsingObservable(resourceFactory,observableFactory)};observableProto.amb=function(rightSource){var leftSource=this;return new AnonymousObservable(function(observer){var choice,leftChoice="L",rightChoice="R",leftSubscription=new SingleAssignmentDisposable,rightSubscription=new SingleAssignmentDisposable;isPromise(rightSource)&&(rightSource=observableFromPromise(rightSource));function choiceL(){if(!choice){choice=leftChoice;rightSubscription.dispose()}}function choiceR(){if(!choice){choice=rightChoice;leftSubscription.dispose()}}var leftSubscribe=observerCreate(function(left){choiceL();choice===leftChoice&&observer.onNext(left)},function(e){choiceL();choice===leftChoice&&observer.onError(e)},function(){choiceL();choice===leftChoice&&observer.onCompleted()});var rightSubscribe=observerCreate(function(right){choiceR();choice===rightChoice&&observer.onNext(right)},function(e){choiceR();choice===rightChoice&&observer.onError(e)},function(){choiceR();choice===rightChoice&&observer.onCompleted()});leftSubscription.setDisposable(leftSource.subscribe(leftSubscribe));rightSubscription.setDisposable(rightSource.subscribe(rightSubscribe));return new BinaryDisposable(leftSubscription,rightSubscription)})};function amb(p,c){return p.amb(c)}Observable.amb=function(){var acc=observableNever(),items;if(Array.isArray(arguments[0])){items=arguments[0]}else{var len=arguments.length;items=new Array(items);for(var i=0;i0){this.parent.handleSubscribe(this.parent.q.shift())}else{this.parent.activeCount--;this.parent.done&&this.parent.activeCount===0&&this.parent.o.onCompleted()}};return MergeObserver}(AbstractObserver);observableProto.merge=function(maxConcurrentOrOther){return typeof maxConcurrentOrOther!=="number"?observableMerge(this,maxConcurrentOrOther):new MergeObservable(this,maxConcurrentOrOther)};var observableMerge=Observable.merge=function(){var scheduler,sources=[],i,len=arguments.length;if(!arguments[0]){scheduler=immediateScheduler;for(i=1;i0}function shiftEach(x){return x.shift()}function notTheSame(i){return function(x,j){return j!==i}}ZipObserver.prototype.next=function(x){this._q[this._i].push(x);if(this._q.every(notEmpty)){var queuedValues=this._q.map(shiftEach);var res=tryCatch(this._p._cb).apply(null,queuedValues);if(res===errorObj){return this._o.onError(res.e)}this._o.onNext(res)}else if(this._d.filter(notTheSame(this._i)).every(identity)){this._o.onCompleted()}};ZipObserver.prototype.error=function(e){this._o.onError(e)};ZipObserver.prototype.completed=function(){this._d[this._i]=true;this._d.every(identity)&&this._o.onCompleted()};return ZipObserver}(AbstractObserver);observableProto.zip=function(){if(arguments.length===0){throw new Error("invalid arguments")}var len=arguments.length,args=new Array(len);for(var i=0;i0}function shiftEach(x){return x.shift()}function notTheSame(i){return function(x,j){return j!==i}}ZipIterableObserver.prototype.next=function(x){this._s.q[this._i].push(x);if(this._s.q.every(notEmpty)){var queuedValues=this._s.q.map(shiftEach),res=tryCatch(this._s.cb).apply(null,queuedValues);if(res===errorObj){return this._s.o.onError(res.e)}this._s.o.onNext(res)}else if(this._s.done.filter(notTheSame(this._i)).every(identity)){this._s.o.onCompleted()}};ZipIterableObserver.prototype.error=function(e){this._s.o.onError(e)};ZipIterableObserver.prototype.completed=function(){this._s.done[this._i]=true; +this._s.done.every(identity)&&this._s.o.onCompleted()};return ZipIterableObserver}(AbstractObserver);observableProto.zipIterable=function(){if(arguments.length===0){throw new Error("invalid arguments")}var len=arguments.length,args=new Array(len);for(var i=0;i0}observableProto.bufferWithCount=function(count,skip){typeof skip!=="number"&&(skip=count);return this.windowWithCount(count,skip).flatMap(toArray).filter(notEmpty)};var DematerializeObservable=function(__super__){inherits(DematerializeObservable,__super__);function DematerializeObservable(source){this.source=source;__super__.call(this)}DematerializeObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new DematerializeObserver(o))};return DematerializeObservable}(ObservableBase);var DematerializeObserver=function(__super__){inherits(DematerializeObserver,__super__);function DematerializeObserver(o){this._o=o;__super__.call(this)}DematerializeObserver.prototype.next=function(x){x.accept(this._o)};DematerializeObserver.prototype.error=function(e){this._o.onError(e)};DematerializeObserver.prototype.completed=function(){this._o.onCompleted()};return DematerializeObserver}(AbstractObserver);observableProto.dematerialize=function(){return new DematerializeObservable(this)};var DistinctUntilChangedObservable=function(__super__){inherits(DistinctUntilChangedObservable,__super__);function DistinctUntilChangedObservable(source,keyFn,comparer){this.source=source;this.keyFn=keyFn;this.comparer=comparer;__super__.call(this)}DistinctUntilChangedObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new DistinctUntilChangedObserver(o,this.keyFn,this.comparer))};return DistinctUntilChangedObservable}(ObservableBase);var DistinctUntilChangedObserver=function(__super__){inherits(DistinctUntilChangedObserver,__super__);function DistinctUntilChangedObserver(o,keyFn,comparer){this.o=o;this.keyFn=keyFn;this.comparer=comparer;this.hasCurrentKey=false;this.currentKey=null;__super__.call(this)}DistinctUntilChangedObserver.prototype.next=function(x){var key=x,comparerEquals;if(isFunction(this.keyFn)){key=tryCatch(this.keyFn)(x);if(key===errorObj){return this.o.onError(key.e)}}if(this.hasCurrentKey){comparerEquals=tryCatch(this.comparer)(this.currentKey,key);if(comparerEquals===errorObj){return this.o.onError(comparerEquals.e)}}if(!this.hasCurrentKey||!comparerEquals){this.hasCurrentKey=true;this.currentKey=key;this.o.onNext(x)}};DistinctUntilChangedObserver.prototype.error=function(e){this.o.onError(e)};DistinctUntilChangedObserver.prototype.completed=function(){this.o.onCompleted()};return DistinctUntilChangedObserver}(AbstractObserver);observableProto.distinctUntilChanged=function(keyFn,comparer){comparer||(comparer=defaultComparer);return new DistinctUntilChangedObservable(this,keyFn,comparer)};var TapObservable=function(__super__){inherits(TapObservable,__super__);function TapObservable(source,observerOrOnNext,onError,onCompleted){this.source=source;this._oN=observerOrOnNext;this._oE=onError;this._oC=onCompleted;__super__.call(this)}TapObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new InnerObserver(o,this))};inherits(InnerObserver,AbstractObserver);function InnerObserver(o,p){this.o=o;this.t=!p._oN||isFunction(p._oN)?observerCreate(p._oN||noop,p._oE||noop,p._oC||noop):p._oN;this.isStopped=false;AbstractObserver.call(this)}InnerObserver.prototype.next=function(x){var res=tryCatch(this.t.onNext).call(this.t,x);if(res===errorObj){this.o.onError(res.e)}this.o.onNext(x)};InnerObserver.prototype.error=function(err){var res=tryCatch(this.t.onError).call(this.t,err);if(res===errorObj){return this.o.onError(res.e)}this.o.onError(err)};InnerObserver.prototype.completed=function(){var res=tryCatch(this.t.onCompleted).call(this.t);if(res===errorObj){return this.o.onError(res.e)}this.o.onCompleted()};return TapObservable}(ObservableBase);observableProto["do"]=observableProto.tap=observableProto.doAction=function(observerOrOnNext,onError,onCompleted){return new TapObservable(this,observerOrOnNext,onError,onCompleted)};observableProto.doOnNext=observableProto.tapOnNext=function(onNext,thisArg){return this.tap(typeof thisArg!=="undefined"?function(x){onNext.call(thisArg,x)}:onNext)};observableProto.doOnError=observableProto.tapOnError=function(onError,thisArg){return this.tap(noop,typeof thisArg!=="undefined"?function(e){onError.call(thisArg,e)}:onError)};observableProto.doOnCompleted=observableProto.tapOnCompleted=function(onCompleted,thisArg){return this.tap(noop,null,typeof thisArg!=="undefined"?function(){onCompleted.call(thisArg)}:onCompleted)};var FinallyObservable=function(__super__){inherits(FinallyObservable,__super__);function FinallyObservable(source,fn,thisArg){this.source=source;this._fn=bindCallback(fn,thisArg,0);__super__.call(this)}FinallyObservable.prototype.subscribeCore=function(o){var d=tryCatch(this.source.subscribe).call(this.source,o);if(d===errorObj){this._fn();thrower(d.e)}return new FinallyDisposable(d,this._fn)};function FinallyDisposable(s,fn){this.isDisposed=false;this._s=s;this._fn=fn}FinallyDisposable.prototype.dispose=function(){if(!this.isDisposed){var res=tryCatch(this._s.dispose).call(this._s);this._fn();res===errorObj&&thrower(res.e)}};return FinallyObservable}(ObservableBase);observableProto["finally"]=function(action,thisArg){return new FinallyObservable(this,action,thisArg)};var IgnoreElementsObservable=function(__super__){inherits(IgnoreElementsObservable,__super__);function IgnoreElementsObservable(source){this.source=source;__super__.call(this)}IgnoreElementsObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new InnerObserver(o))};function InnerObserver(o){this.o=o;this.isStopped=false}InnerObserver.prototype.onNext=noop;InnerObserver.prototype.onError=function(err){if(!this.isStopped){this.isStopped=true;this.o.onError(err)}};InnerObserver.prototype.onCompleted=function(){if(!this.isStopped){this.isStopped=true;this.o.onCompleted()}};InnerObserver.prototype.dispose=function(){this.isStopped=true};InnerObserver.prototype.fail=function(e){if(!this.isStopped){this.isStopped=true;this.observer.onError(e);return true}return false};return IgnoreElementsObservable}(ObservableBase);observableProto.ignoreElements=function(){return new IgnoreElementsObservable(this)};var MaterializeObservable=function(__super__){inherits(MaterializeObservable,__super__);function MaterializeObservable(source,fn){this.source=source;__super__.call(this)}MaterializeObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new MaterializeObserver(o))};return MaterializeObservable}(ObservableBase);var MaterializeObserver=function(__super__){inherits(MaterializeObserver,__super__);function MaterializeObserver(o){this._o=o;__super__.call(this)}MaterializeObserver.prototype.next=function(x){this._o.onNext(notificationCreateOnNext(x))};MaterializeObserver.prototype.error=function(e){this._o.onNext(notificationCreateOnError(e));this._o.onCompleted()};MaterializeObserver.prototype.completed=function(){this._o.onNext(notificationCreateOnCompleted());this._o.onCompleted()};return MaterializeObserver}(AbstractObserver);observableProto.materialize=function(){return new MaterializeObservable(this)};observableProto.repeat=function(repeatCount){return enumerableRepeat(this,repeatCount).concat()};observableProto.retry=function(retryCount){return enumerableRepeat(this,retryCount).catchError()};observableProto.retryWhen=function(notifier){return enumerableRepeat(this).catchErrorWhen(notifier)};var ScanObservable=function(__super__){inherits(ScanObservable,__super__);function ScanObservable(source,accumulator,hasSeed,seed){this.source=source;this.accumulator=accumulator;this.hasSeed=hasSeed;this.seed=seed;__super__.call(this)}ScanObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new ScanObserver(o,this))};return ScanObservable}(ObservableBase);var ScanObserver=function(__super__){inherits(ScanObserver,__super__);function ScanObserver(o,parent){this._o=o;this._p=parent;this._fn=parent.accumulator;this._hs=parent.hasSeed;this._s=parent.seed;this._ha=false;this._a=null;this._hv=false;this._i=0;__super__.call(this)}ScanObserver.prototype.next=function(x){!this._hv&&(this._hv=true);if(this._ha){this._a=tryCatch(this._fn)(this._a,x,this._i,this._p)}else{this._a=this._hs?tryCatch(this._fn)(this._s,x,this._i,this._p):x;this._ha=true}if(this._a===errorObj){return this._o.onError(this._a.e)}this._o.onNext(this._a);this._i++};ScanObserver.prototype.error=function(e){this._o.onError(e)};ScanObserver.prototype.completed=function(){!this._hv&&this._hs&&this._o.onNext(this._s);this._o.onCompleted()};return ScanObserver}(AbstractObserver);observableProto.scan=function(){var hasSeed=false,seed,accumulator=arguments[0];if(arguments.length===2){hasSeed=true;seed=arguments[1]}return new ScanObservable(this,accumulator,hasSeed,seed)};var SkipLastObservable=function(__super__){inherits(SkipLastObservable,__super__);function SkipLastObservable(source,c){this.source=source;this._c=c;__super__.call(this)}SkipLastObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new SkipLastObserver(o,this._c))};return SkipLastObservable}(ObservableBase);var SkipLastObserver=function(__super__){inherits(SkipLastObserver,__super__);function SkipLastObserver(o,c){this._o=o;this._c=c;this._q=[];__super__.call(this)}SkipLastObserver.prototype.next=function(x){this._q.push(x);this._q.length>this._c&&this._o.onNext(this._q.shift())};SkipLastObserver.prototype.error=function(e){this._o.onError(e)};SkipLastObserver.prototype.completed=function(){this._o.onCompleted()};return SkipLastObserver}(AbstractObserver);observableProto.skipLast=function(count){if(count<0){throw new ArgumentOutOfRangeError}return new SkipLastObservable(this,count)};observableProto.startWith=function(){var values,scheduler,start=0;if(!!arguments.length&&isScheduler(arguments[0])){scheduler=arguments[0];start=1}else{scheduler=immediateScheduler}for(var args=[],i=start,len=arguments.length;ithis._c&&this._q.shift()};TakeLastObserver.prototype.error=function(e){this._o.onError(e)};TakeLastObserver.prototype.completed=function(){while(this._q.length>0){this._o.onNext(this._q.shift())}this._o.onCompleted()};return TakeLastObserver}(AbstractObserver);observableProto.takeLast=function(count){if(count<0){throw new ArgumentOutOfRangeError}var source=this;return new AnonymousObservable(function(o){return source.subscribe(new TakeLastObserver(o,count))},source)};var TakeLastBufferObserver=function(__super__){inherits(TakeLastBufferObserver,__super__);function TakeLastBufferObserver(o,c){this._o=o;this._c=c;this._q=[];__super__.call(this)}TakeLastBufferObserver.prototype.next=function(x){this._q.push(x);this._q.length>this._c&&this._q.shift()};TakeLastBufferObserver.prototype.error=function(e){this._o.onError(e)};TakeLastBufferObserver.prototype.completed=function(){this._o.onNext(this._q);this._o.onCompleted()};return TakeLastBufferObserver}(AbstractObserver);observableProto.takeLastBuffer=function(count){if(count<0){throw new ArgumentOutOfRangeError}var source=this;return new AnonymousObservable(function(o){return source.subscribe(new TakeLastBufferObserver(o,count))},source)};observableProto.windowWithCount=function(count,skip){var source=this;+count||(count=0);Math.abs(count)===Infinity&&(count=0);if(count<=0){throw new ArgumentOutOfRangeError}skip==null&&(skip=count);+skip||(skip=0);Math.abs(skip)===Infinity&&(skip=0);if(skip<=0){throw new ArgumentOutOfRangeError}return new AnonymousObservable(function(observer){var m=new SingleAssignmentDisposable,refCountDisposable=new RefCountDisposable(m),n=0,q=[];function createWindow(){var s=new Subject;q.push(s);observer.onNext(addRef(s,refCountDisposable))}createWindow();m.setDisposable(source.subscribe(function(x){for(var i=0,len=q.length;i=0&&c%skip===0&&q.shift().onCompleted();++n%skip===0&&createWindow()},function(e){while(q.length>0){q.shift().onError(e)}observer.onError(e)},function(){while(q.length>0){q.shift().onCompleted()}observer.onCompleted()}));return refCountDisposable},source)};function concatMap(source,selector,thisArg){var selectorFunc=bindCallback(selector,thisArg,3);return source.map(function(x,i){var result=selectorFunc(x,i,source);isPromise(result)&&(result=observableFromPromise(result));(isArrayLike(result)||isIterable(result))&&(result=observableFrom(result));return result}).concatAll()}observableProto.selectConcat=observableProto.concatMap=function(selector,resultSelector,thisArg){if(isFunction(selector)&&isFunction(resultSelector)){return this.concatMap(function(x,i){var selectorResult=selector(x,i);isPromise(selectorResult)&&(selectorResult=observableFromPromise(selectorResult));(isArrayLike(selectorResult)||isIterable(selectorResult))&&(selectorResult=observableFrom(selectorResult));return selectorResult.map(function(y,i2){return resultSelector(x,y,i,i2)})})}return isFunction(selector)?concatMap(this,selector,thisArg):concatMap(this,function(){return selector})};observableProto.concatMapObserver=observableProto.selectConcatObserver=function(onNext,onError,onCompleted,thisArg){var source=this,onNextFunc=bindCallback(onNext,thisArg,2),onErrorFunc=bindCallback(onError,thisArg,1),onCompletedFunc=bindCallback(onCompleted,thisArg,0);return new AnonymousObservable(function(observer){var index=0;return source.subscribe(function(x){var result;try{result=onNextFunc(x,index++)}catch(e){observer.onError(e);return}isPromise(result)&&(result=observableFromPromise(result));observer.onNext(result)},function(err){var result;try{result=onErrorFunc(err)}catch(e){observer.onError(e);return}isPromise(result)&&(result=observableFromPromise(result));observer.onNext(result);observer.onCompleted()},function(){var result;try{result=onCompletedFunc()}catch(e){observer.onError(e);return}isPromise(result)&&(result=observableFromPromise(result));observer.onNext(result);observer.onCompleted()})},this).concatAll()};var DefaultIfEmptyObserver=function(__super__){inherits(DefaultIfEmptyObserver,__super__);function DefaultIfEmptyObserver(o,d){this._o=o;this._d=d;this._f=false;__super__.call(this)}DefaultIfEmptyObserver.prototype.next=function(x){this._f=true;this._o.onNext(x)};DefaultIfEmptyObserver.prototype.error=function(e){this._o.onError(e)};DefaultIfEmptyObserver.prototype.completed=function(){!this._f&&this._o.onNext(this._d);this._o.onCompleted()};return DefaultIfEmptyObserver}(AbstractObserver);observableProto.defaultIfEmpty=function(defaultValue){var source=this;defaultValue===undefined&&(defaultValue=null);return new AnonymousObservable(function(o){return source.subscribe(new DefaultIfEmptyObserver(o,defaultValue))},source)};function arrayIndexOfComparer(array,item,comparer){for(var i=0,len=array.length;i0){this._o.onNext(x);this._r<=0&&this._o.onCompleted()}};TakeObserver.prototype.error=function(e){this._o.onError(e)};TakeObserver.prototype.completed=function(){this._o.onCompleted()};return TakeObservable}(ObservableBase);observableProto.take=function(count,scheduler){if(count<0){throw new ArgumentOutOfRangeError}if(count===0){return observableEmpty(scheduler)}return new TakeObservable(this,count)};var TakeWhileObservable=function(__super__){inherits(TakeWhileObservable,__super__);function TakeWhileObservable(source,fn){this.source=source;this._fn=fn;__super__.call(this)}TakeWhileObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new TakeWhileObserver(o,this))};return TakeWhileObservable}(ObservableBase);var TakeWhileObserver=function(__super__){inherits(TakeWhileObserver,__super__);function TakeWhileObserver(o,p){this._o=o;this._p=p;this._i=0;this._r=true;__super__.call(this)}TakeWhileObserver.prototype.next=function(x){if(this._r){this._r=tryCatch(this._p._fn)(x,this._i++,this._p);if(this._r===errorObj){return this._o.onError(this._r.e)}}if(this._r){this._o.onNext(x)}else{this._o.onCompleted()}};TakeWhileObserver.prototype.error=function(e){this._o.onError(e)};TakeWhileObserver.prototype.completed=function(){this._o.onCompleted()};return TakeWhileObserver}(AbstractObserver);observableProto.takeWhile=function(predicate,thisArg){var fn=bindCallback(predicate,thisArg,3);return new TakeWhileObservable(this,fn)};var FilterObservable=function(__super__){inherits(FilterObservable,__super__);function FilterObservable(source,predicate,thisArg){this.source=source;this.predicate=bindCallback(predicate,thisArg,3);__super__.call(this)}FilterObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new InnerObserver(o,this.predicate,this))};function innerPredicate(predicate,self){return function(x,i,o){return self.predicate(x,i,o)&&predicate.call(this,x,i,o)}}FilterObservable.prototype.internalFilter=function(predicate,thisArg){return new FilterObservable(this.source,innerPredicate(predicate,this),thisArg)};inherits(InnerObserver,AbstractObserver);function InnerObserver(o,predicate,source){this.o=o;this.predicate=predicate;this.source=source;this.i=0;AbstractObserver.call(this)}InnerObserver.prototype.next=function(x){var shouldYield=tryCatch(this.predicate)(x,this.i++,this.source);if(shouldYield===errorObj){return this.o.onError(shouldYield.e)}shouldYield&&this.o.onNext(x)};InnerObserver.prototype.error=function(e){this.o.onError(e)};InnerObserver.prototype.completed=function(){this.o.onCompleted()};return FilterObservable}(ObservableBase);observableProto.filter=observableProto.where=function(predicate,thisArg){return this instanceof FilterObservable?this.internalFilter(predicate,thisArg):new FilterObservable(this,predicate,thisArg)};var ExtremaByObservable=function(__super__){inherits(ExtremaByObservable,__super__);function ExtremaByObservable(source,k,c){this.source=source;this._k=k;this._c=c;__super__.call(this)}ExtremaByObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new ExtremaByObserver(o,this._k,this._c))};return ExtremaByObservable}(ObservableBase);var ExtremaByObserver=function(__super__){inherits(ExtremaByObserver,__super__);function ExtremaByObserver(o,k,c){this._o=o;this._k=k;this._c=c;this._v=null;this._hv=false;this._l=[];__super__.call(this)}ExtremaByObserver.prototype.next=function(x){var key=tryCatch(this._k)(x);if(key===errorObj){return this._o.onError(key.e)}var comparison=0;if(!this._hv){this._hv=true;this._v=key}else{comparison=tryCatch(this._c)(key,this._v);if(comparison===errorObj){return this._o.onError(comparison.e)}}if(comparison>0){this._v=key;this._l=[]}if(comparison>=0){this._l.push(x)}};ExtremaByObserver.prototype.error=function(e){this._o.onError(e)};ExtremaByObserver.prototype.completed=function(){this._o.onNext(this._l);this._o.onCompleted()};return ExtremaByObserver}(AbstractObserver);function firstOnly(x){if(x.length===0){throw new EmptyError}return x[0]}var ReduceObservable=function(__super__){inherits(ReduceObservable,__super__);function ReduceObservable(source,accumulator,hasSeed,seed){this.source=source;this.accumulator=accumulator;this.hasSeed=hasSeed;this.seed=seed;__super__.call(this)}ReduceObservable.prototype.subscribeCore=function(observer){return this.source.subscribe(new ReduceObserver(observer,this))};return ReduceObservable}(ObservableBase);var ReduceObserver=function(__super__){inherits(ReduceObserver,__super__);function ReduceObserver(o,parent){this._o=o;this._p=parent;this._fn=parent.accumulator;this._hs=parent.hasSeed;this._s=parent.seed;this._ha=false;this._a=null;this._hv=false;this._i=0;__super__.call(this)}ReduceObserver.prototype.next=function(x){!this._hv&&(this._hv=true);if(this._ha){this._a=tryCatch(this._fn)(this._a,x,this._i,this._p)}else{this._a=this._hs?tryCatch(this._fn)(this._s,x,this._i,this._p):x;this._ha=true}if(this._a===errorObj){return this._o.onError(this._a.e)}this._i++};ReduceObserver.prototype.error=function(e){this._o.onError(e)};ReduceObserver.prototype.completed=function(){this._hv&&this._o.onNext(this._a);!this._hv&&this._hs&&this._o.onNext(this._s);!this._hv&&!this._hs&&this._o.onError(new EmptyError);this._o.onCompleted()};return ReduceObserver}(AbstractObserver);observableProto.reduce=function(){var hasSeed=false,seed,accumulator=arguments[0];if(arguments.length===2){hasSeed=true;seed=arguments[1]}return new ReduceObservable(this,accumulator,hasSeed,seed)};var SomeObservable=function(__super__){inherits(SomeObservable,__super__);function SomeObservable(source,fn){this.source=source;this._fn=fn;__super__.call(this)}SomeObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new SomeObserver(o,this._fn,this.source))};return SomeObservable}(ObservableBase);var SomeObserver=function(__super__){inherits(SomeObserver,__super__);function SomeObserver(o,fn,s){this._o=o;this._fn=fn;this._s=s;this._i=0;__super__.call(this)}SomeObserver.prototype.next=function(x){var result=tryCatch(this._fn)(x,this._i++,this._s);if(result===errorObj){return this._o.onError(result.e)}if(Boolean(result)){this._o.onNext(true);this._o.onCompleted()}};SomeObserver.prototype.error=function(e){this._o.onError(e)};SomeObserver.prototype.completed=function(){this._o.onNext(false);this._o.onCompleted()};return SomeObserver}(AbstractObserver);observableProto.some=function(predicate,thisArg){var fn=bindCallback(predicate,thisArg,3);return new SomeObservable(this,fn)};var IsEmptyObservable=function(__super__){inherits(IsEmptyObservable,__super__);function IsEmptyObservable(source){this.source=source;__super__.call(this)}IsEmptyObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new IsEmptyObserver(o))};return IsEmptyObservable}(ObservableBase);var IsEmptyObserver=function(__super__){inherits(IsEmptyObserver,__super__);function IsEmptyObserver(o){this._o=o;__super__.call(this)}IsEmptyObserver.prototype.next=function(){this._o.onNext(false);this._o.onCompleted()};IsEmptyObserver.prototype.error=function(e){this._o.onError(e)};IsEmptyObserver.prototype.completed=function(){this._o.onNext(true);this._o.onCompleted()};return IsEmptyObserver}(AbstractObserver);observableProto.isEmpty=function(){return new IsEmptyObservable(this)};var EveryObservable=function(__super__){inherits(EveryObservable,__super__);function EveryObservable(source,fn){this.source=source;this._fn=fn;__super__.call(this)}EveryObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new EveryObserver(o,this._fn,this.source))};return EveryObservable}(ObservableBase);var EveryObserver=function(__super__){inherits(EveryObserver,__super__);function EveryObserver(o,fn,s){this._o=o;this._fn=fn;this._s=s;this._i=0;__super__.call(this)}EveryObserver.prototype.next=function(x){var result=tryCatch(this._fn)(x,this._i++,this._s);if(result===errorObj){return this._o.onError(result.e)}if(!Boolean(result)){this._o.onNext(false);this._o.onCompleted()}};EveryObserver.prototype.error=function(e){this._o.onError(e)};EveryObserver.prototype.completed=function(){ +this._o.onNext(true);this._o.onCompleted()};return EveryObserver}(AbstractObserver);observableProto.every=function(predicate,thisArg){var fn=bindCallback(predicate,thisArg,3);return new EveryObservable(this,fn)};var IncludesObservable=function(__super__){inherits(IncludesObservable,__super__);function IncludesObservable(source,elem,idx){var n=+idx||0;Math.abs(n)===Infinity&&(n=0);this.source=source;this._elem=elem;this._n=n;__super__.call(this)}IncludesObservable.prototype.subscribeCore=function(o){if(this._n<0){o.onNext(false);o.onCompleted();return disposableEmpty}return this.source.subscribe(new IncludesObserver(o,this._elem,this._n))};return IncludesObservable}(ObservableBase);var IncludesObserver=function(__super__){inherits(IncludesObserver,__super__);function IncludesObserver(o,elem,n){this._o=o;this._elem=elem;this._n=n;this._i=0;__super__.call(this)}function comparer(a,b){return a===0&&b===0||(a===b||isNaN(a)&&isNaN(b))}IncludesObserver.prototype.next=function(x){if(this._i++>=this._n&&comparer(x,this._elem)){this._o.onNext(true);this._o.onCompleted()}};IncludesObserver.prototype.error=function(e){this._o.onError(e)};IncludesObserver.prototype.completed=function(){this._o.onNext(false);this._o.onCompleted()};return IncludesObserver}(AbstractObserver);observableProto.includes=function(searchElement,fromIndex){return new IncludesObservable(this,searchElement,fromIndex)};var CountObservable=function(__super__){inherits(CountObservable,__super__);function CountObservable(source,fn){this.source=source;this._fn=fn;__super__.call(this)}CountObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new CountObserver(o,this._fn,this.source))};return CountObservable}(ObservableBase);var CountObserver=function(__super__){inherits(CountObserver,__super__);function CountObserver(o,fn,s){this._o=o;this._fn=fn;this._s=s;this._i=0;this._c=0;__super__.call(this)}CountObserver.prototype.next=function(x){if(this._fn){var result=tryCatch(this._fn)(x,this._i++,this._s);if(result===errorObj){return this._o.onError(result.e)}Boolean(result)&&this._c++}else{this._c++}};CountObserver.prototype.error=function(e){this._o.onError(e)};CountObserver.prototype.completed=function(){this._o.onNext(this._c);this._o.onCompleted()};return CountObserver}(AbstractObserver);observableProto.count=function(predicate,thisArg){var fn=bindCallback(predicate,thisArg,3);return new CountObservable(this,fn)};var IndexOfObservable=function(__super__){inherits(IndexOfObservable,__super__);function IndexOfObservable(source,e,n){this.source=source;this._e=e;this._n=n;__super__.call(this)}IndexOfObservable.prototype.subscribeCore=function(o){if(this._n<0){o.onNext(-1);o.onCompleted();return disposableEmpty}return this.source.subscribe(new IndexOfObserver(o,this._e,this._n))};return IndexOfObservable}(ObservableBase);var IndexOfObserver=function(__super__){inherits(IndexOfObserver,__super__);function IndexOfObserver(o,e,n){this._o=o;this._e=e;this._n=n;this._i=0;__super__.call(this)}IndexOfObserver.prototype.next=function(x){if(this._i>=this._n&&x===this._e){this._o.onNext(this._i);this._o.onCompleted()}this._i++};IndexOfObserver.prototype.error=function(e){this._o.onError(e)};IndexOfObserver.prototype.completed=function(){this._o.onNext(-1);this._o.onCompleted()};return IndexOfObserver}(AbstractObserver);observableProto.indexOf=function(searchElement,fromIndex){var n=+fromIndex||0;Math.abs(n)===Infinity&&(n=0);return new IndexOfObservable(this,searchElement,n)};var SumObservable=function(__super__){inherits(SumObservable,__super__);function SumObservable(source,fn){this.source=source;this._fn=fn;__super__.call(this)}SumObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new SumObserver(o,this._fn,this.source))};return SumObservable}(ObservableBase);var SumObserver=function(__super__){inherits(SumObserver,__super__);function SumObserver(o,fn,s){this._o=o;this._fn=fn;this._s=s;this._i=0;this._c=0;__super__.call(this)}SumObserver.prototype.next=function(x){if(this._fn){var result=tryCatch(this._fn)(x,this._i++,this._s);if(result===errorObj){return this._o.onError(result.e)}this._c+=result}else{this._c+=x}};SumObserver.prototype.error=function(e){this._o.onError(e)};SumObserver.prototype.completed=function(){this._o.onNext(this._c);this._o.onCompleted()};return SumObserver}(AbstractObserver);observableProto.sum=function(keySelector,thisArg){var fn=bindCallback(keySelector,thisArg,3);return new SumObservable(this,fn)};observableProto.minBy=function(keySelector,comparer){comparer||(comparer=defaultSubComparer);return new ExtremaByObservable(this,keySelector,function(x,y){return comparer(x,y)*-1})};observableProto.min=function(comparer){return this.minBy(identity,comparer).map(function(x){return firstOnly(x)})};observableProto.maxBy=function(keySelector,comparer){comparer||(comparer=defaultSubComparer);return new ExtremaByObservable(this,keySelector,comparer)};observableProto.max=function(comparer){return this.maxBy(identity,comparer).map(function(x){return firstOnly(x)})};var AverageObservable=function(__super__){inherits(AverageObservable,__super__);function AverageObservable(source,fn){this.source=source;this._fn=fn;__super__.call(this)}AverageObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new AverageObserver(o,this._fn,this.source))};return AverageObservable}(ObservableBase);var AverageObserver=function(__super__){inherits(AverageObserver,__super__);function AverageObserver(o,fn,s){this._o=o;this._fn=fn;this._s=s;this._c=0;this._t=0;__super__.call(this)}AverageObserver.prototype.next=function(x){if(this._fn){var r=tryCatch(this._fn)(x,this._c++,this._s);if(r===errorObj){return this._o.onError(r.e)}this._t+=r}else{this._c++;this._t+=x}};AverageObserver.prototype.error=function(e){this._o.onError(e)};AverageObserver.prototype.completed=function(){if(this._c===0){return this._o.onError(new EmptyError)}this._o.onNext(this._t/this._c);this._o.onCompleted()};return AverageObserver}(AbstractObserver);observableProto.average=function(keySelector,thisArg){var source=this,fn;if(isFunction(keySelector)){fn=bindCallback(keySelector,thisArg,3)}return new AverageObservable(source,fn)};observableProto.sequenceEqual=function(second,comparer){var first=this;comparer||(comparer=defaultComparer);return new AnonymousObservable(function(o){var donel=false,doner=false,ql=[],qr=[];var subscription1=first.subscribe(function(x){if(qr.length>0){var v=qr.shift();var equal=tryCatch(comparer)(v,x);if(equal===errorObj){return o.onError(equal.e)}if(!equal){o.onNext(false);o.onCompleted()}}else if(doner){o.onNext(false);o.onCompleted()}else{ql.push(x)}},function(e){o.onError(e)},function(){donel=true;if(ql.length===0){if(qr.length>0){o.onNext(false);o.onCompleted()}else if(doner){o.onNext(true);o.onCompleted()}}});(isArrayLike(second)||isIterable(second))&&(second=observableFrom(second));isPromise(second)&&(second=observableFromPromise(second));var subscription2=second.subscribe(function(x){if(ql.length>0){var v=ql.shift();var equal=tryCatch(comparer)(v,x);if(equal===errorObj){return o.onError(equal.e)}if(!equal){o.onNext(false);o.onCompleted()}}else if(donel){o.onNext(false);o.onCompleted()}else{qr.push(x)}},function(e){o.onError(e)},function(){doner=true;if(qr.length===0){if(ql.length>0){o.onNext(false);o.onCompleted()}else if(donel){o.onNext(true);o.onCompleted()}}});return new BinaryDisposable(subscription1,subscription2)},first)};var ElementAtObservable=function(__super__){inherits(ElementAtObservable,__super__);function ElementAtObservable(source,i,d){this.source=source;this._i=i;this._d=d;__super__.call(this)}ElementAtObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new ElementAtObserver(o,this._i,this._d))};return ElementAtObservable}(ObservableBase);var ElementAtObserver=function(__super__){inherits(ElementAtObserver,__super__);function ElementAtObserver(o,i,d){this._o=o;this._i=i;this._d=d;__super__.call(this)}ElementAtObserver.prototype.next=function(x){if(this._i--===0){this._o.onNext(x);this._o.onCompleted()}};ElementAtObserver.prototype.error=function(e){this._o.onError(e)};ElementAtObserver.prototype.completed=function(){if(this._d===undefined){this._o.onError(new ArgumentOutOfRangeError)}else{this._o.onNext(this._d);this._o.onCompleted()}};return ElementAtObserver}(AbstractObserver);observableProto.elementAt=function(index,defaultValue){if(index<0){throw new ArgumentOutOfRangeError}return new ElementAtObservable(this,index,defaultValue)};var SingleObserver=function(__super__){inherits(SingleObserver,__super__);function SingleObserver(o,obj,s){this._o=o;this._obj=obj;this._s=s;this._i=0;this._hv=false;this._v=null;__super__.call(this)}SingleObserver.prototype.next=function(x){var shouldYield=false;if(this._obj.predicate){var res=tryCatch(this._obj.predicate)(x,this._i++,this._s);if(res===errorObj){return this._o.onError(res.e)}Boolean(res)&&(shouldYield=true)}else if(!this._obj.predicate){shouldYield=true}if(shouldYield){if(this._hv){return this._o.onError(new Error("Sequence contains more than one matching element"))}this._hv=true;this._v=x}};SingleObserver.prototype.error=function(e){this._o.onError(e)};SingleObserver.prototype.completed=function(){if(this._hv){this._o.onNext(this._v);this._o.onCompleted()}else if(this._obj.defaultValue===undefined){this._o.onError(new EmptyError)}else{this._o.onNext(this._obj.defaultValue);this._o.onCompleted()}};return SingleObserver}(AbstractObserver);observableProto.single=function(predicate,thisArg){var obj={},source=this;if(typeof arguments[0]==="object"){obj=arguments[0]}else{obj={predicate:arguments[0],thisArg:arguments[1],defaultValue:arguments[2]}}if(isFunction(obj.predicate)){var fn=obj.predicate;obj.predicate=bindCallback(fn,obj.thisArg,3)}return new AnonymousObservable(function(o){return source.subscribe(new SingleObserver(o,obj,source))},source)};var FirstObservable=function(__super__){inherits(FirstObservable,__super__);function FirstObservable(source,obj){this.source=source;this._obj=obj;__super__.call(this)}FirstObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new FirstObserver(o,this._obj,this.source))};return FirstObservable}(ObservableBase);var FirstObserver=function(__super__){inherits(FirstObserver,__super__);function FirstObserver(o,obj,s){this._o=o;this._obj=obj;this._s=s;this._i=0;__super__.call(this)}FirstObserver.prototype.next=function(x){if(this._obj.predicate){var res=tryCatch(this._obj.predicate)(x,this._i++,this._s);if(res===errorObj){return this._o.onError(res.e)}if(Boolean(res)){this._o.onNext(x);this._o.onCompleted()}}else if(!this._obj.predicate){this._o.onNext(x);this._o.onCompleted()}};FirstObserver.prototype.error=function(e){this._o.onError(e)};FirstObserver.prototype.completed=function(){if(this._obj.defaultValue===undefined){this._o.onError(new EmptyError)}else{this._o.onNext(this._obj.defaultValue);this._o.onCompleted()}};return FirstObserver}(AbstractObserver);observableProto.first=function(){var obj={},source=this;if(typeof arguments[0]==="object"){obj=arguments[0]}else{obj={predicate:arguments[0],thisArg:arguments[1],defaultValue:arguments[2]}}if(isFunction(obj.predicate)){var fn=obj.predicate;obj.predicate=bindCallback(fn,obj.thisArg,3)}return new FirstObservable(this,obj)};var LastObservable=function(__super__){inherits(LastObservable,__super__);function LastObservable(source,obj){this.source=source;this._obj=obj;__super__.call(this)}LastObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new LastObserver(o,this._obj,this.source))};return LastObservable}(ObservableBase);var LastObserver=function(__super__){inherits(LastObserver,__super__);function LastObserver(o,obj,s){this._o=o;this._obj=obj;this._s=s;this._i=0;this._hv=false;this._v=null;__super__.call(this)}LastObserver.prototype.next=function(x){var shouldYield=false;if(this._obj.predicate){var res=tryCatch(this._obj.predicate)(x,this._i++,this._s);if(res===errorObj){return this._o.onError(res.e)}Boolean(res)&&(shouldYield=true)}else if(!this._obj.predicate){shouldYield=true}if(shouldYield){this._hv=true;this._v=x}};LastObserver.prototype.error=function(e){this._o.onError(e)};LastObserver.prototype.completed=function(){if(this._hv){this._o.onNext(this._v);this._o.onCompleted()}else if(this._obj.defaultValue===undefined){this._o.onError(new EmptyError)}else{this._o.onNext(this._obj.defaultValue);this._o.onCompleted()}};return LastObserver}(AbstractObserver);observableProto.last=function(){var obj={},source=this;if(typeof arguments[0]==="object"){obj=arguments[0]}else{obj={predicate:arguments[0],thisArg:arguments[1],defaultValue:arguments[2]}}if(isFunction(obj.predicate)){var fn=obj.predicate;obj.predicate=bindCallback(fn,obj.thisArg,3)}return new LastObservable(this,obj)};var FindValueObserver=function(__super__){inherits(FindValueObserver,__super__);function FindValueObserver(observer,source,callback,yieldIndex){this._o=observer;this._s=source;this._cb=callback;this._y=yieldIndex;this._i=0;__super__.call(this)}FindValueObserver.prototype.next=function(x){var shouldRun=tryCatch(this._cb)(x,this._i,this._s);if(shouldRun===errorObj){return this._o.onError(shouldRun.e)}if(shouldRun){this._o.onNext(this._y?this._i:x);this._o.onCompleted()}else{this._i++}};FindValueObserver.prototype.error=function(e){this._o.onError(e)};FindValueObserver.prototype.completed=function(){this._y&&this._o.onNext(-1);this._o.onCompleted()};return FindValueObserver}(AbstractObserver);function findValue(source,predicate,thisArg,yieldIndex){var callback=bindCallback(predicate,thisArg,3);return new AnonymousObservable(function(o){return source.subscribe(new FindValueObserver(o,source,callback,yieldIndex))},source)}observableProto.find=function(predicate,thisArg){return findValue(this,predicate,thisArg,false)};observableProto.findIndex=function(predicate,thisArg){return findValue(this,predicate,thisArg,true)};var ToSetObservable=function(__super__){inherits(ToSetObservable,__super__);function ToSetObservable(source){this.source=source;__super__.call(this)}ToSetObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new ToSetObserver(o))};return ToSetObservable}(ObservableBase);var ToSetObserver=function(__super__){inherits(ToSetObserver,__super__);function ToSetObserver(o){this._o=o;this._s=new root.Set;__super__.call(this)}ToSetObserver.prototype.next=function(x){this._s.add(x)};ToSetObserver.prototype.error=function(e){this._o.onError(e)};ToSetObserver.prototype.completed=function(){this._o.onNext(this._s);this._o.onCompleted()};return ToSetObserver}(AbstractObserver);observableProto.toSet=function(){if(typeof root.Set==="undefined"){throw new TypeError}return new ToSetObservable(this)};var ToMapObservable=function(__super__){inherits(ToMapObservable,__super__);function ToMapObservable(source,k,e){this.source=source;this._k=k;this._e=e;__super__.call(this)}ToMapObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new ToMapObserver(o,this._k,this._e))};return ToMapObservable}(ObservableBase);var ToMapObserver=function(__super__){inherits(ToMapObserver,__super__);function ToMapObserver(o,k,e){this._o=o;this._k=k;this._e=e;this._m=new root.Map;__super__.call(this)}ToMapObserver.prototype.next=function(x){var key=tryCatch(this._k)(x);if(key===errorObj){return this._o.onError(key.e)}var elem=x;if(this._e){elem=tryCatch(this._e)(x);if(elem===errorObj){return this._o.onError(elem.e)}}this._m.set(key,elem)};ToMapObserver.prototype.error=function(e){this._o.onError(e)};ToMapObserver.prototype.completed=function(){this._o.onNext(this._m);this._o.onCompleted()};return ToMapObserver}(AbstractObserver);observableProto.toMap=function(keySelector,elementSelector){if(typeof root.Map==="undefined"){throw new TypeError}return new ToMapObservable(this,keySelector,elementSelector)};var SliceObservable=function(__super__){inherits(SliceObservable,__super__);function SliceObservable(source,b,e){this.source=source;this._b=b;this._e=e;__super__.call(this)}SliceObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new SliceObserver(o,this._b,this._e))};return SliceObservable}(ObservableBase);var SliceObserver=function(__super__){inherits(SliceObserver,__super__);function SliceObserver(o,b,e){this._o=o;this._b=b;this._e=e;this._i=0;__super__.call(this)}SliceObserver.prototype.next=function(x){if(this._i>=this._b){if(this._e===this._i){this._o.onCompleted()}else{this._o.onNext(x)}}this._i++};SliceObserver.prototype.error=function(e){this._o.onError(e)};SliceObserver.prototype.completed=function(){this._o.onCompleted()};return SliceObserver}(AbstractObserver);observableProto.slice=function(begin,end){var start=begin||0;if(start<0){throw new Rx.ArgumentOutOfRangeError}if(typeof end==="number"&&end=this._n&&x===this._e){this._hv=true;this._v=this._i}this._i++};LastIndexOfObserver.prototype.error=function(e){this._o.onError(e)};LastIndexOfObserver.prototype.completed=function(){if(this._hv){this._o.onNext(this._v)}else{this._o.onNext(-1)}this._o.onCompleted()};return LastIndexOfObserver}(AbstractObserver);observableProto.lastIndexOf=function(searchElement,fromIndex){var n=+fromIndex||0;Math.abs(n)===Infinity&&(n=0);return new LastIndexOfObservable(this,searchElement,n)};Observable.wrap=function(fn){function createObservable(){return Observable.spawn.call(this,fn.apply(this,arguments))}createObservable.__generatorFunction__=fn;return createObservable};var spawn=Observable.spawn=function(){var gen=arguments[0],self=this,args=[];for(var i=1,len=arguments.length;i2){var args=[];for(var i=1,len=arguments.length;i0){o.onNext(q.shift())}}var subscription=combineLatestSource(this.source,this.pauser.startWith(false).distinctUntilChanged(),function(data,shouldFire){return{data:data,shouldFire:shouldFire}}).subscribe(function(results){if(previousShouldFire!==undefined&&results.shouldFire!==previousShouldFire){previousShouldFire=results.shouldFire;if(results.shouldFire){drainQueue()}}else{previousShouldFire=results.shouldFire;if(results.shouldFire){o.onNext(results.data)}else{q.push(results.data)}}},function(err){drainQueue();o.onError(err)},function(){drainQueue();o.onCompleted()});return subscription};PausableBufferedObservable.prototype.pause=function(){this.controller.onNext(false)};PausableBufferedObservable.prototype.resume=function(){this.controller.onNext(true)};return PausableBufferedObservable}(Observable);observableProto.pausableBuffered=function(pauser){return new PausableBufferedObservable(this,pauser)};var ControlledObservable=function(__super__){inherits(ControlledObservable,__super__);function ControlledObservable(source,enableQueue,scheduler){__super__.call(this);this.subject=new ControlledSubject(enableQueue,scheduler);this.source=source.multicast(this.subject).refCount()}ControlledObservable.prototype._subscribe=function(o){return this.source.subscribe(o)};ControlledObservable.prototype.request=function(numberOfItems){return this.subject.request(numberOfItems==null?-1:numberOfItems)};return ControlledObservable}(Observable);var ControlledSubject=function(__super__){inherits(ControlledSubject,__super__);function ControlledSubject(enableQueue,scheduler){enableQueue==null&&(enableQueue=true);__super__.call(this);this.subject=new Subject;this.enableQueue=enableQueue;this.queue=enableQueue?[]:null;this.requestedCount=0;this.requestedDisposable=null;this.error=null;this.hasFailed=false;this.hasCompleted=false;this.scheduler=scheduler||currentThreadScheduler}addProperties(ControlledSubject.prototype,Observer,{_subscribe:function(o){return this.subject.subscribe(o)},onCompleted:function(){this.hasCompleted=true;if(!this.enableQueue||this.queue.length===0){this.subject.onCompleted();this.disposeCurrentRequest()}else{this.queue.push(Notification.createOnCompleted())}},onError:function(error){this.hasFailed=true;this.error=error;if(!this.enableQueue||this.queue.length===0){this.subject.onError(error);this.disposeCurrentRequest()}else{this.queue.push(Notification.createOnError(error))}},onNext:function(value){if(this.requestedCount<=0){this.enableQueue&&this.queue.push(Notification.createOnNext(value))}else{this.requestedCount--===0&&this.disposeCurrentRequest();this.subject.onNext(value)}},_processRequest:function(numberOfItems){if(this.enableQueue){while(this.queue.length>0&&(numberOfItems>0||this.queue[0].kind!=="N")){var first=this.queue.shift();first.accept(this.subject);if(first.kind==="N"){numberOfItems--}else{this.disposeCurrentRequest();this.queue=[]}}}return numberOfItems},request:function(number){this.disposeCurrentRequest();var self=this;this.requestedDisposable=this.scheduler.schedule(number,function(s,i){var remaining=self._processRequest(i);var stopped=self.hasCompleted||self.hasFailed;if(!stopped&&remaining>0){self.requestedCount=remaining;return disposableCreate(function(){self.requestedCount=0})}});return this.requestedDisposable},disposeCurrentRequest:function(){if(this.requestedDisposable){this.requestedDisposable.dispose();this.requestedDisposable=null}}});return ControlledSubject}(Observable);observableProto.controlled=function(enableQueue,scheduler){ +if(enableQueue&&isScheduler(enableQueue)){scheduler=enableQueue;enableQueue=true}if(enableQueue==null){enableQueue=true}return new ControlledObservable(this,enableQueue,scheduler)};var StopAndWaitObservable=function(__super__){inherits(StopAndWaitObservable,__super__);function StopAndWaitObservable(source){__super__.call(this);this.source=source}function scheduleMethod(s,self){self.source.request(1)}StopAndWaitObservable.prototype._subscribe=function(o){this.subscription=this.source.subscribe(new StopAndWaitObserver(o,this,this.subscription));return new BinaryDisposable(this.subscription,defaultScheduler.schedule(this,scheduleMethod))};var StopAndWaitObserver=function(__sub__){inherits(StopAndWaitObserver,__sub__);function StopAndWaitObserver(observer,observable,cancel){__sub__.call(this);this.observer=observer;this.observable=observable;this.cancel=cancel;this.scheduleDisposable=null}StopAndWaitObserver.prototype.completed=function(){this.observer.onCompleted();this.dispose()};StopAndWaitObserver.prototype.error=function(error){this.observer.onError(error);this.dispose()};function innerScheduleMethod(s,self){self.observable.source.request(1)}StopAndWaitObserver.prototype.next=function(value){this.observer.onNext(value);this.scheduleDisposable=defaultScheduler.schedule(this,innerScheduleMethod)};StopAndWaitObservable.dispose=function(){this.observer=null;if(this.cancel){this.cancel.dispose();this.cancel=null}if(this.scheduleDisposable){this.scheduleDisposable.dispose();this.scheduleDisposable=null}__sub__.prototype.dispose.call(this)};return StopAndWaitObserver}(AbstractObserver);return StopAndWaitObservable}(Observable);ControlledObservable.prototype.stopAndWait=function(){return new StopAndWaitObservable(this)};var WindowedObservable=function(__super__){inherits(WindowedObservable,__super__);function WindowedObservable(source,windowSize){__super__.call(this);this.source=source;this.windowSize=windowSize}function scheduleMethod(s,self){self.source.request(self.windowSize)}WindowedObservable.prototype._subscribe=function(o){this.subscription=this.source.subscribe(new WindowedObserver(o,this,this.subscription));return new BinaryDisposable(this.subscription,defaultScheduler.schedule(this,scheduleMethod))};var WindowedObserver=function(__sub__){inherits(WindowedObserver,__sub__);function WindowedObserver(observer,observable,cancel){this.observer=observer;this.observable=observable;this.cancel=cancel;this.received=0;this.scheduleDisposable=null;__sub__.call(this)}WindowedObserver.prototype.completed=function(){this.observer.onCompleted();this.dispose()};WindowedObserver.prototype.error=function(error){this.observer.onError(error);this.dispose()};function innerScheduleMethod(s,self){self.observable.source.request(self.observable.windowSize)}WindowedObserver.prototype.next=function(value){this.observer.onNext(value);this.received=++this.received%this.observable.windowSize;this.received===0&&(this.scheduleDisposable=defaultScheduler.schedule(this,innerScheduleMethod))};WindowedObserver.prototype.dispose=function(){this.observer=null;if(this.cancel){this.cancel.dispose();this.cancel=null}if(this.scheduleDisposable){this.scheduleDisposable.dispose();this.scheduleDisposable=null}__sub__.prototype.dispose.call(this)};return WindowedObserver}(AbstractObserver);return WindowedObservable}(Observable);ControlledObservable.prototype.windowed=function(windowSize){return new WindowedObservable(this,windowSize)};observableProto.pipe=function(dest){var source=this.pausableBuffered();function onDrain(){source.resume()}dest.addListener("drain",onDrain);source.subscribe(function(x){!dest.write(String(x))&&source.pause()},function(err){dest.emit("error",err)},function(){!dest._isStdio&&dest.end();dest.removeListener("drain",onDrain)});source.resume();return dest};var MulticastObservable=function(__super__){inherits(MulticastObservable,__super__);function MulticastObservable(source,fn1,fn2){this.source=source;this._fn1=fn1;this._fn2=fn2;__super__.call(this)}MulticastObservable.prototype.subscribeCore=function(o){var connectable=this.source.multicast(this._fn1());return new BinaryDisposable(this._fn2(connectable).subscribe(o),connectable.connect())};return MulticastObservable}(ObservableBase);observableProto.multicast=function(subjectOrSubjectSelector,selector){return isFunction(subjectOrSubjectSelector)?new MulticastObservable(this,subjectOrSubjectSelector,selector):new ConnectableObservable(this,subjectOrSubjectSelector)};observableProto.publish=function(selector){return selector&&isFunction(selector)?this.multicast(function(){return new Subject},selector):this.multicast(new Subject)};observableProto.share=function(){return this.publish().refCount()};observableProto.publishLast=function(selector){return selector&&isFunction(selector)?this.multicast(function(){return new AsyncSubject},selector):this.multicast(new AsyncSubject)};observableProto.publishValue=function(initialValueOrSelector,initialValue){return arguments.length===2?this.multicast(function(){return new BehaviorSubject(initialValue)},initialValueOrSelector):this.multicast(new BehaviorSubject(initialValueOrSelector))};observableProto.shareValue=function(initialValue){return this.publishValue(initialValue).refCount()};observableProto.replay=function(selector,bufferSize,windowSize,scheduler){return selector&&isFunction(selector)?this.multicast(function(){return new ReplaySubject(bufferSize,windowSize,scheduler)},selector):this.multicast(new ReplaySubject(bufferSize,windowSize,scheduler))};observableProto.shareReplay=function(bufferSize,windowSize,scheduler){return this.replay(null,bufferSize,windowSize,scheduler).refCount()};var InnerSubscription=function(s,o){this._s=s;this._o=o};InnerSubscription.prototype.dispose=function(){if(!this._s.isDisposed&&this._o!==null){var idx=this._s.observers.indexOf(this._o);this._s.observers.splice(idx,1);this._o=null}};var RefCountObservable=function(__super__){inherits(RefCountObservable,__super__);function RefCountObservable(source){this.source=source;this._count=0;this._connectableSubscription=null;__super__.call(this)}RefCountObservable.prototype.subscribeCore=function(o){var subscription=this.source.subscribe(o);++this._count===1&&(this._connectableSubscription=this.source.connect());return new RefCountDisposable(this,subscription)};function RefCountDisposable(p,s){this._p=p;this._s=s;this.isDisposed=false}RefCountDisposable.prototype.dispose=function(){if(!this.isDisposed){this.isDisposed=true;this._s.dispose();--this._p._count===0&&this._p._connectableSubscription.dispose()}};return RefCountObservable}(ObservableBase);var ConnectableObservable=Rx.ConnectableObservable=function(__super__){inherits(ConnectableObservable,__super__);function ConnectableObservable(source,subject){this.source=source;this._connection=null;this._source=source.asObservable();this._subject=subject;__super__.call(this)}function ConnectDisposable(parent,subscription){this._p=parent;this._s=subscription}ConnectDisposable.prototype.dispose=function(){if(this._s){this._s.dispose();this._s=null;this._p._connection=null}};ConnectableObservable.prototype.connect=function(){if(!this._connection){var subscription=this._source.subscribe(this._subject);this._connection=new ConnectDisposable(this,subscription)}return this._connection};ConnectableObservable.prototype._subscribe=function(o){return this._subject.subscribe(o)};ConnectableObservable.prototype.refCount=function(){return new RefCountObservable(this)};return ConnectableObservable}(Observable);observableProto.singleInstance=function(){var source=this,hasObservable=false,observable;function getObservable(){if(!hasObservable){hasObservable=true;observable=source["finally"](function(){hasObservable=false}).publish().refCount()}return observable}return new AnonymousObservable(function(o){return getObservable().subscribe(o)})};observableProto.join=function(right,leftDurationSelector,rightDurationSelector,resultSelector){var left=this;return new AnonymousObservable(function(o){var group=new CompositeDisposable;var leftDone=false,rightDone=false;var leftId=0,rightId=0;var leftMap=new Map,rightMap=new Map;var handleError=function(e){o.onError(e)};group.add(left.subscribe(function(value){var id=leftId++,md=new SingleAssignmentDisposable;leftMap.set(id,value);group.add(md);var duration=tryCatch(leftDurationSelector)(value);if(duration===errorObj){return o.onError(duration.e)}md.setDisposable(duration.take(1).subscribe(noop,handleError,function(){leftMap["delete"](id)&&leftMap.size===0&&leftDone&&o.onCompleted();group.remove(md)}));rightMap.forEach(function(v){var result=tryCatch(resultSelector)(value,v);if(result===errorObj){return o.onError(result.e)}o.onNext(result)})},handleError,function(){leftDone=true;(rightDone||leftMap.size===0)&&o.onCompleted()}));group.add(right.subscribe(function(value){var id=rightId++,md=new SingleAssignmentDisposable;rightMap.set(id,value);group.add(md);var duration=tryCatch(rightDurationSelector)(value);if(duration===errorObj){return o.onError(duration.e)}md.setDisposable(duration.take(1).subscribe(noop,handleError,function(){rightMap["delete"](id)&&rightMap.size===0&&rightDone&&o.onCompleted();group.remove(md)}));leftMap.forEach(function(v){var result=tryCatch(resultSelector)(v,value);if(result===errorObj){return o.onError(result.e)}o.onNext(result)})},handleError,function(){rightDone=true;(leftDone||rightMap.size===0)&&o.onCompleted()}));return group},left)};observableProto.groupJoin=function(right,leftDurationSelector,rightDurationSelector,resultSelector){var left=this;return new AnonymousObservable(function(o){var group=new CompositeDisposable;var r=new RefCountDisposable(group);var leftMap=new Map,rightMap=new Map;var leftId=0,rightId=0;var handleError=function(e){return function(v){v.onError(e)}};function handleError(e){}group.add(left.subscribe(function(value){var s=new Subject;var id=leftId++;leftMap.set(id,s);var result=tryCatch(resultSelector)(value,addRef(s,r));if(result===errorObj){leftMap.forEach(handleError(result.e));return o.onError(result.e)}o.onNext(result);rightMap.forEach(function(v){s.onNext(v)});var md=new SingleAssignmentDisposable;group.add(md);var duration=tryCatch(leftDurationSelector)(value);if(duration===errorObj){leftMap.forEach(handleError(duration.e));return o.onError(duration.e)}md.setDisposable(duration.take(1).subscribe(noop,function(e){leftMap.forEach(handleError(e));o.onError(e)},function(){leftMap["delete"](id)&&s.onCompleted();group.remove(md)}))},function(e){leftMap.forEach(handleError(e));o.onError(e)},function(){o.onCompleted()}));group.add(right.subscribe(function(value){var id=rightId++;rightMap.set(id,value);var md=new SingleAssignmentDisposable;group.add(md);var duration=tryCatch(rightDurationSelector)(value);if(duration===errorObj){leftMap.forEach(handleError(duration.e));return o.onError(duration.e)}md.setDisposable(duration.take(1).subscribe(noop,function(e){leftMap.forEach(handleError(e));o.onError(e)},function(){rightMap["delete"](id);group.remove(md)}));leftMap.forEach(function(v){v.onNext(value)})},function(e){leftMap.forEach(handleError(e));o.onError(e)}));return r},left)};function toArray(x){return x.toArray()}observableProto.buffer=function(){return this.window.apply(this,arguments).flatMap(toArray)};observableProto.window=function(windowOpeningsOrClosingSelector,windowClosingSelector){if(arguments.length===1&&typeof arguments[0]!=="function"){return observableWindowWithBoundaries.call(this,windowOpeningsOrClosingSelector)}return typeof windowOpeningsOrClosingSelector==="function"?observableWindowWithClosingSelector.call(this,windowOpeningsOrClosingSelector):observableWindowWithOpenings.call(this,windowOpeningsOrClosingSelector,windowClosingSelector)};function observableWindowWithOpenings(windowOpenings,windowClosingSelector){return windowOpenings.groupJoin(this,windowClosingSelector,observableEmpty,function(_,win){return win})}function observableWindowWithBoundaries(windowBoundaries){var source=this;return new AnonymousObservable(function(observer){var win=new Subject,d=new CompositeDisposable,r=new RefCountDisposable(d);observer.onNext(addRef(win,r));d.add(source.subscribe(function(x){win.onNext(x)},function(err){win.onError(err);observer.onError(err)},function(){win.onCompleted();observer.onCompleted()}));isPromise(windowBoundaries)&&(windowBoundaries=observableFromPromise(windowBoundaries));d.add(windowBoundaries.subscribe(function(w){win.onCompleted();win=new Subject;observer.onNext(addRef(win,r))},function(err){win.onError(err);observer.onError(err)},function(){win.onCompleted();observer.onCompleted()}));return r},source)}function observableWindowWithClosingSelector(windowClosingSelector){var source=this;return new AnonymousObservable(function(observer){var m=new SerialDisposable,d=new CompositeDisposable(m),r=new RefCountDisposable(d),win=new Subject;observer.onNext(addRef(win,r));d.add(source.subscribe(function(x){win.onNext(x)},function(err){win.onError(err);observer.onError(err)},function(){win.onCompleted();observer.onCompleted()}));function createWindowClose(){var windowClose;try{windowClose=windowClosingSelector()}catch(e){observer.onError(e);return}isPromise(windowClose)&&(windowClose=observableFromPromise(windowClose));var m1=new SingleAssignmentDisposable;m.setDisposable(m1);m1.setDisposable(windowClose.take(1).subscribe(noop,function(err){win.onError(err);observer.onError(err)},function(){win.onCompleted();win=new Subject;observer.onNext(addRef(win,r));createWindowClose()}))}createWindowClose();return r},source)}var PairwiseObservable=function(__super__){inherits(PairwiseObservable,__super__);function PairwiseObservable(source){this.source=source;__super__.call(this)}PairwiseObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new PairwiseObserver(o))};return PairwiseObservable}(ObservableBase);var PairwiseObserver=function(__super__){inherits(PairwiseObserver,__super__);function PairwiseObserver(o){this._o=o;this._p=null;this._hp=false}PairwiseObserver.prototype.next=function(x){if(this._hp){this._o.onNext([this._p,x])}else{this._hp=true}this._p=x};PairwiseObserver.prototype.error=function(err){this._o.onError(err)};PairwiseObserver.prototype.completed=function(){this._o.onCompleted()};return PairwiseObserver}(AbstractObserver);observableProto.pairwise=function(){return new PairwiseObservable(this)};observableProto.partition=function(predicate,thisArg){var fn=bindCallback(predicate,thisArg,3);return[this.filter(predicate,thisArg),this.filter(function(x,i,o){return!fn(x,i,o)})]};var WhileEnumerable=function(__super__){inherits(WhileEnumerable,__super__);function WhileEnumerable(c,s){this.c=c;this.s=s}WhileEnumerable.prototype[$iterator$]=function(){var self=this;return{next:function(){return self.c()?{done:false,value:self.s}:{done:true,value:void 0}}}};return WhileEnumerable}(Enumerable);function enumerableWhile(condition,source){return new WhileEnumerable(condition,source)}observableProto.letBind=observableProto["let"]=function(func){return func(this)};Observable["if"]=function(condition,thenSource,elseSourceOrScheduler){return observableDefer(function(){elseSourceOrScheduler||(elseSourceOrScheduler=observableEmpty());isPromise(thenSource)&&(thenSource=observableFromPromise(thenSource));isPromise(elseSourceOrScheduler)&&(elseSourceOrScheduler=observableFromPromise(elseSourceOrScheduler));typeof elseSourceOrScheduler.now==="function"&&(elseSourceOrScheduler=observableEmpty(elseSourceOrScheduler));return condition()?thenSource:elseSourceOrScheduler})};Observable["for"]=Observable.forIn=function(sources,resultSelector,thisArg){return enumerableOf(sources,resultSelector,thisArg).concat()};var observableWhileDo=Observable["while"]=Observable.whileDo=function(condition,source){isPromise(source)&&(source=observableFromPromise(source));return enumerableWhile(condition,source).concat()};observableProto.doWhile=function(condition){return observableConcat([this,observableWhileDo(condition,this)])};Observable["case"]=function(selector,sources,defaultSourceOrScheduler){return observableDefer(function(){isPromise(defaultSourceOrScheduler)&&(defaultSourceOrScheduler=observableFromPromise(defaultSourceOrScheduler));defaultSourceOrScheduler||(defaultSourceOrScheduler=observableEmpty());isScheduler(defaultSourceOrScheduler)&&(defaultSourceOrScheduler=observableEmpty(defaultSourceOrScheduler));var result=sources[selector()];isPromise(result)&&(result=observableFromPromise(result));return result||defaultSourceOrScheduler})};var ExpandObservable=function(__super__){inherits(ExpandObservable,__super__);function ExpandObservable(source,fn,scheduler){this.source=source;this._fn=fn;this._scheduler=scheduler;__super__.call(this)}function scheduleRecursive(args,recurse){var state=args[0],self=args[1];var work;if(state.q.length>0){work=state.q.shift()}else{state.isAcquired=false;return}var m1=new SingleAssignmentDisposable;state.d.add(m1);m1.setDisposable(work.subscribe(new ExpandObserver(state,self,m1)));recurse([state,self])}ExpandObservable.prototype._ensureActive=function(state){var isOwner=false;if(state.q.length>0){isOwner=!state.isAcquired;state.isAcquired=true}isOwner&&state.m.setDisposable(this._scheduler.scheduleRecursive([state,this],scheduleRecursive))};ExpandObservable.prototype.subscribeCore=function(o){var m=new SerialDisposable,d=new CompositeDisposable(m),state={q:[],m:m,d:d,activeCount:0,isAcquired:false,o:o};state.q.push(this.source);state.activeCount++;this._ensureActive(state);return d};return ExpandObservable}(ObservableBase);var ExpandObserver=function(__super__){inherits(ExpandObserver,__super__);function ExpandObserver(state,parent,m1){this._s=state;this._p=parent;this._m1=m1;__super__.call(this)}ExpandObserver.prototype.next=function(x){this._s.o.onNext(x);var result=tryCatch(this._p._fn)(x);if(result===errorObj){return this._s.o.onError(result.e)}this._s.q.push(result);this._s.activeCount++;this._p._ensureActive(this._s)};ExpandObserver.prototype.error=function(e){this._s.o.onError(e)};ExpandObserver.prototype.completed=function(){this._s.d.remove(this._m1);this._s.activeCount--;this._s.activeCount===0&&this._s.o.onCompleted()};return ExpandObserver}(AbstractObserver);observableProto.expand=function(selector,scheduler){isScheduler(scheduler)||(scheduler=currentThreadScheduler);return new ExpandObservable(this,selector,scheduler)};function argumentsToArray(){var len=arguments.length,args=new Array(len);for(var i=0;i0){var now=scheduler.now();d=new Date(d.getTime()+p);d.getTime()<=now&&(d=new Date(now+p))}observer.onNext(count);self(count+1,new Date(d))})})}function observableTimerTimeSpanAndPeriod(dueTime,period,scheduler){return dueTime===period?new AnonymousObservable(function(observer){return scheduler.schedulePeriodic(0,period,function(count){observer.onNext(count);return count+1})}):observableDefer(function(){return observableTimerDateAndPeriod(new Date(scheduler.now()+dueTime),period,scheduler)})}var observableinterval=Observable.interval=function(period,scheduler){return observableTimerTimeSpanAndPeriod(period,period,isScheduler(scheduler)?scheduler:defaultScheduler)};var observableTimer=Observable.timer=function(dueTime,periodOrScheduler,scheduler){var period;isScheduler(scheduler)||(scheduler=defaultScheduler);if(periodOrScheduler!=null&&typeof periodOrScheduler==="number"){period=periodOrScheduler}else if(isScheduler(periodOrScheduler)){scheduler=periodOrScheduler}if((dueTime instanceof Date||typeof dueTime==="number")&&period===undefined){return _observableTimer(dueTime,scheduler)}if(dueTime instanceof Date&&period!==undefined){return observableTimerDateAndPeriod(dueTime.getTime(),periodOrScheduler,scheduler)}return observableTimerTimeSpanAndPeriod(dueTime,period,scheduler)};function observableDelayRelative(source,dueTime,scheduler){return new AnonymousObservable(function(o){var active=false,cancelable=new SerialDisposable,exception=null,q=[],running=false,subscription;subscription=source.materialize().timestamp(scheduler).subscribe(function(notification){var d,shouldRun;if(notification.value.kind==="E"){q=[];q.push(notification);exception=notification.value.error;shouldRun=!running}else{q.push({value:notification.value,timestamp:notification.timestamp+dueTime});shouldRun=!active;active=true}if(shouldRun){if(exception!==null){o.onError(exception)}else{d=new SingleAssignmentDisposable;cancelable.setDisposable(d);d.setDisposable(scheduler.scheduleRecursiveFuture(null,dueTime,function(_,self){var e,recurseDueTime,result,shouldRecurse;if(exception!==null){return}running=true;do{result=null;if(q.length>0&&q[0].timestamp-scheduler.now()<=0){result=q.shift().value}if(result!==null){result.accept(o)}}while(result!==null);shouldRecurse=false;recurseDueTime=0;if(q.length>0){shouldRecurse=true;recurseDueTime=Math.max(0,q[0].timestamp-scheduler.now())}else{active=false}e=exception;running=false;if(e!==null){o.onError(e)}else if(shouldRecurse){self(null,recurseDueTime)}}))}}});return new BinaryDisposable(subscription,cancelable)},source)}function observableDelayAbsolute(source,dueTime,scheduler){return observableDefer(function(){return observableDelayRelative(source,dueTime-scheduler.now(),scheduler)})}function delayWithSelector(source,subscriptionDelay,delayDurationSelector){var subDelay,selector;if(isFunction(subscriptionDelay)){selector=subscriptionDelay}else{subDelay=subscriptionDelay;selector=delayDurationSelector}return new AnonymousObservable(function(o){var delays=new CompositeDisposable,atEnd=false,subscription=new SerialDisposable;function start(){subscription.setDisposable(source.subscribe(function(x){var delay=tryCatch(selector)(x);if(delay===errorObj){return o.onError(delay.e)}var d=new SingleAssignmentDisposable;delays.add(d);d.setDisposable(delay.subscribe(function(){o.onNext(x);delays.remove(d);done()},function(e){o.onError(e)},function(){o.onNext(x);delays.remove(d);done()}))},function(e){o.onError(e)},function(){atEnd=true;subscription.dispose();done()}))}function done(){atEnd&&delays.length===0&&o.onCompleted()}if(!subDelay){start()}else{subscription.setDisposable(subDelay.subscribe(start,function(e){o.onError(e)},start))}return new BinaryDisposable(subscription,delays)},this)}observableProto.delay=function(){var firstArg=arguments[0];if(typeof firstArg==="number"||firstArg instanceof Date){var dueTime=firstArg,scheduler=arguments[1];isScheduler(scheduler)||(scheduler=defaultScheduler);return dueTime instanceof Date?observableDelayAbsolute(this,dueTime,scheduler):observableDelayRelative(this,dueTime,scheduler)}else if(Observable.isObservable(firstArg)||isFunction(firstArg)){ +return delayWithSelector(this,firstArg,arguments[1])}else{throw new Error("Invalid arguments")}};var DebounceObservable=function(__super__){inherits(DebounceObservable,__super__);function DebounceObservable(source,dt,s){isScheduler(s)||(s=defaultScheduler);this.source=source;this._dt=dt;this._s=s;__super__.call(this)}DebounceObservable.prototype.subscribeCore=function(o){var cancelable=new SerialDisposable;return new BinaryDisposable(this.source.subscribe(new DebounceObserver(o,this.source,this._dt,this._s,cancelable)),cancelable)};return DebounceObservable}(ObservableBase);var DebounceObserver=function(__super__){inherits(DebounceObserver,__super__);function DebounceObserver(observer,source,dueTime,scheduler,cancelable){this._o=observer;this._s=source;this._d=dueTime;this._scheduler=scheduler;this._c=cancelable;this._v=null;this._hv=false;this._id=0;__super__.call(this)}DebounceObserver.prototype.next=function(x){this._hv=true;this._v=x;var currentId=++this._id,d=new SingleAssignmentDisposable;this._c.setDisposable(d);d.setDisposable(this._scheduler.scheduleFuture(this,this._d,function(_,self){self._hv&&self._id===currentId&&self._o.onNext(x);self._hv=false}))};DebounceObserver.prototype.error=function(e){this._c.dispose();this._o.onError(e);this._hv=false;this._id++};DebounceObserver.prototype.completed=function(){this._c.dispose();this._hv&&this._o.onNext(this._v);this._o.onCompleted();this._hv=false;this._id++};return DebounceObserver}(AbstractObserver);function debounceWithSelector(source,durationSelector){return new AnonymousObservable(function(o){var value,hasValue=false,cancelable=new SerialDisposable,id=0;var subscription=source.subscribe(function(x){var throttle=tryCatch(durationSelector)(x);if(throttle===errorObj){return o.onError(throttle.e)}isPromise(throttle)&&(throttle=observableFromPromise(throttle));hasValue=true;value=x;id++;var currentid=id,d=new SingleAssignmentDisposable;cancelable.setDisposable(d);d.setDisposable(throttle.subscribe(function(){hasValue&&id===currentid&&o.onNext(value);hasValue=false;d.dispose()},function(e){o.onError(e)},function(){hasValue&&id===currentid&&o.onNext(value);hasValue=false;d.dispose()}))},function(e){cancelable.dispose();o.onError(e);hasValue=false;id++},function(){cancelable.dispose();hasValue&&o.onNext(value);o.onCompleted();hasValue=false;id++});return new BinaryDisposable(subscription,cancelable)},source)}observableProto.debounce=function(){if(isFunction(arguments[0])){return debounceWithSelector(this,arguments[0])}else if(typeof arguments[0]==="number"){return new DebounceObservable(this,arguments[0],arguments[1])}else{throw new Error("Invalid arguments")}};observableProto.windowWithTime=function(timeSpan,timeShiftOrScheduler,scheduler){var source=this,timeShift;timeShiftOrScheduler==null&&(timeShift=timeSpan);isScheduler(scheduler)||(scheduler=defaultScheduler);if(typeof timeShiftOrScheduler==="number"){timeShift=timeShiftOrScheduler}else if(isScheduler(timeShiftOrScheduler)){timeShift=timeSpan;scheduler=timeShiftOrScheduler}return new AnonymousObservable(function(observer){var groupDisposable,nextShift=timeShift,nextSpan=timeSpan,q=[],refCountDisposable,timerD=new SerialDisposable,totalTime=0;groupDisposable=new CompositeDisposable(timerD),refCountDisposable=new RefCountDisposable(groupDisposable);function createTimer(){var m=new SingleAssignmentDisposable,isSpan=false,isShift=false;timerD.setDisposable(m);if(nextSpan===nextShift){isSpan=true;isShift=true}else if(nextSpan0&&now-this._q[0].interval>=this._d){this._o.onNext(this._q.shift().value)}};SkipLastWithTimeObserver.prototype.error=function(e){this._o.onError(e)};SkipLastWithTimeObserver.prototype.completed=function(){var now=this._s.now();while(this._q.length>0&&now-this._q[0].interval>=this._d){this._o.onNext(this._q.shift().value)}this._o.onCompleted()};return SkipLastWithTimeObserver}(AbstractObserver);observableProto.skipLastWithTime=function(duration,scheduler){isScheduler(scheduler)||(scheduler=defaultScheduler);return new SkipLastWithTimeObservable(this,duration,scheduler)};var TakeLastWithTimeObservable=function(__super__){inherits(TakeLastWithTimeObservable,__super__);function TakeLastWithTimeObservable(source,d,s){this.source=source;this._d=d;this._s=s;__super__.call(this)}TakeLastWithTimeObservable.prototype.subscribeCore=function(o){return this.source.subscribe(new TakeLastWithTimeObserver(o,this._d,this._s))};return TakeLastWithTimeObservable}(ObservableBase);var TakeLastWithTimeObserver=function(__super__){inherits(TakeLastWithTimeObserver,__super__);function TakeLastWithTimeObserver(o,d,s){this._o=o;this._d=d;this._s=s;this._q=[];__super__.call(this)}TakeLastWithTimeObserver.prototype.next=function(x){var now=this._s.now();this._q.push({interval:now,value:x});while(this._q.length>0&&now-this._q[0].interval>=this._d){this._q.shift()}};TakeLastWithTimeObserver.prototype.error=function(e){this._o.onError(e)};TakeLastWithTimeObserver.prototype.completed=function(){var now=this._s.now();while(this._q.length>0){var next=this._q.shift();if(now-next.interval<=this._d){this._o.onNext(next.value)}}this._o.onCompleted()};return TakeLastWithTimeObserver}(AbstractObserver);observableProto.takeLastWithTime=function(duration,scheduler){isScheduler(scheduler)||(scheduler=defaultScheduler);return new TakeLastWithTimeObservable(this,duration,scheduler)};observableProto.takeLastBufferWithTime=function(duration,scheduler){var source=this;isScheduler(scheduler)||(scheduler=defaultScheduler);return new AnonymousObservable(function(o){var q=[];return source.subscribe(function(x){var now=scheduler.now();q.push({interval:now,value:x});while(q.length>0&&now-q[0].interval>=duration){q.shift()}},function(e){o.onError(e)},function(){var now=scheduler.now(),res=[];while(q.length>0){var next=q.shift();now-next.interval<=duration&&res.push(next.value)}o.onNext(res);o.onCompleted()})},source)};var TakeWithTimeObservable=function(__super__){inherits(TakeWithTimeObservable,__super__);function TakeWithTimeObservable(source,d,s){this.source=source;this._d=d;this._s=s;__super__.call(this)}function scheduleMethod(s,o){o.onCompleted()}TakeWithTimeObservable.prototype.subscribeCore=function(o){return new BinaryDisposable(this._s.scheduleFuture(o,this._d,scheduleMethod),this.source.subscribe(o))};return TakeWithTimeObservable}(ObservableBase);observableProto.takeWithTime=function(duration,scheduler){isScheduler(scheduler)||(scheduler=defaultScheduler);return new TakeWithTimeObservable(this,duration,scheduler)};var SkipWithTimeObservable=function(__super__){inherits(SkipWithTimeObservable,__super__);function SkipWithTimeObservable(source,d,s){this.source=source;this._d=d;this._s=s;this._open=false;__super__.call(this)}function scheduleMethod(s,self){self._open=true}SkipWithTimeObservable.prototype.subscribeCore=function(o){return new BinaryDisposable(this._s.scheduleFuture(this,this._d,scheduleMethod),this.source.subscribe(new SkipWithTimeObserver(o,this)))};return SkipWithTimeObservable}(ObservableBase);var SkipWithTimeObserver=function(__super__){inherits(SkipWithTimeObserver,__super__);function SkipWithTimeObserver(o,p){this._o=o;this._p=p;__super__.call(this)}SkipWithTimeObserver.prototype.next=function(x){this._p._open&&this._o.onNext(x)};SkipWithTimeObserver.prototype.error=function(e){this._o.onError(e)};SkipWithTimeObserver.prototype.completed=function(){this._o.onCompleted()};return SkipWithTimeObserver}(AbstractObserver);observableProto.skipWithTime=function(duration,scheduler){isScheduler(scheduler)||(scheduler=defaultScheduler);return new SkipWithTimeObservable(this,duration,scheduler)};var SkipUntilWithTimeObservable=function(__super__){inherits(SkipUntilWithTimeObservable,__super__);function SkipUntilWithTimeObservable(source,startTime,scheduler){this.source=source;this._st=startTime;this._s=scheduler;__super__.call(this)}function scheduleMethod(s,state){state._open=true}SkipUntilWithTimeObservable.prototype.subscribeCore=function(o){this._open=false;return new BinaryDisposable(this._s.scheduleFuture(this,this._st,scheduleMethod),this.source.subscribe(new SkipUntilWithTimeObserver(o,this)))};return SkipUntilWithTimeObservable}(ObservableBase);var SkipUntilWithTimeObserver=function(__super__){inherits(SkipUntilWithTimeObserver,__super__);function SkipUntilWithTimeObserver(o,p){this._o=o;this._p=p;__super__.call(this)}SkipUntilWithTimeObserver.prototype.next=function(x){this._p._open&&this._o.onNext(x)};SkipUntilWithTimeObserver.prototype.error=function(e){this._o.onError(e)};SkipUntilWithTimeObserver.prototype.completed=function(){this._o.onCompleted()};return SkipUntilWithTimeObserver}(AbstractObserver);observableProto.skipUntilWithTime=function(startTime,scheduler){isScheduler(scheduler)||(scheduler=defaultScheduler);return new SkipUntilWithTimeObservable(this,startTime,scheduler)};observableProto.takeUntilWithTime=function(endTime,scheduler){isScheduler(scheduler)||(scheduler=defaultScheduler);var source=this;return new AnonymousObservable(function(o){return new BinaryDisposable(scheduler.scheduleFuture(o,endTime,function(_,o){o.onCompleted()}),source.subscribe(o))},source)};observableProto.throttle=function(windowDuration,scheduler){isScheduler(scheduler)||(scheduler=defaultScheduler);var duration=+windowDuration||0;if(duration<=0){throw new RangeError("windowDuration cannot be less or equal zero.")}var source=this;return new AnonymousObservable(function(o){var lastOnNext=0;return source.subscribe(function(x){var now=scheduler.now();if(lastOnNext===0||now-lastOnNext>=duration){lastOnNext=now;o.onNext(x)}},function(e){o.onError(e)},function(){o.onCompleted()})},source)};var TransduceObserver=function(__super__){inherits(TransduceObserver,__super__);function TransduceObserver(o,xform){this._o=o;this._xform=xform;__super__.call(this)}TransduceObserver.prototype.next=function(x){var res=tryCatch(this._xform["@@transducer/step"]).call(this._xform,this._o,x);if(res===errorObj){this._o.onError(res.e)}};TransduceObserver.prototype.error=function(e){this._o.onError(e)};TransduceObserver.prototype.completed=function(){this._xform["@@transducer/result"](this._o)};return TransduceObserver}(AbstractObserver);function transformForObserver(o){return{"@@transducer/init":function(){return o},"@@transducer/step":function(obs,input){return obs.onNext(input)},"@@transducer/result":function(obs){return obs.onCompleted()}}}observableProto.transduce=function(transducer){var source=this;return new AnonymousObservable(function(o){var xform=transducer(transformForObserver(o));return source.subscribe(new TransduceObserver(o,xform))},source)};var SwitchFirstObservable=function(__super__){inherits(SwitchFirstObservable,__super__);function SwitchFirstObservable(source){this.source=source;__super__.call(this)}SwitchFirstObservable.prototype.subscribeCore=function(o){var m=new SingleAssignmentDisposable,g=new CompositeDisposable,state={hasCurrent:false,isStopped:false,o:o,g:g};g.add(m);m.setDisposable(this.source.subscribe(new SwitchFirstObserver(state)));return g};return SwitchFirstObservable}(ObservableBase);var SwitchFirstObserver=function(__super__){inherits(SwitchFirstObserver,__super__);function SwitchFirstObserver(state){this._s=state;__super__.call(this)}SwitchFirstObserver.prototype.next=function(x){if(!this._s.hasCurrent){this._s.hasCurrent=true;isPromise(x)&&(x=observableFromPromise(x));var inner=new SingleAssignmentDisposable;this._s.g.add(inner);inner.setDisposable(x.subscribe(new InnerObserver(this._s,inner)))}};SwitchFirstObserver.prototype.error=function(e){this._s.o.onError(e)};SwitchFirstObserver.prototype.completed=function(){this._s.isStopped=true;!this._s.hasCurrent&&this._s.g.length===1&&this._s.o.onCompleted()};inherits(InnerObserver,__super__);function InnerObserver(state,inner){this._s=state;this._i=inner;__super__.call(this)}InnerObserver.prototype.next=function(x){this._s.o.onNext(x)};InnerObserver.prototype.error=function(e){this._s.o.onError(e)};InnerObserver.prototype.completed=function(){this._s.g.remove(this._i);this._s.hasCurrent=false;this._s.isStopped&&this._s.g.length===1&&this._s.o.onCompleted()};return SwitchFirstObserver}(AbstractObserver);observableProto.switchFirst=function(){return new SwitchFirstObservable(this)};observableProto.flatMapFirst=observableProto.selectManyFirst=function(selector,resultSelector,thisArg){return new FlatMapObservable(this,selector,resultSelector,thisArg).switchFirst()};Rx.Observable.prototype.flatMapWithMaxConcurrent=function(limit,selector,resultSelector,thisArg){return new FlatMapObservable(this,selector,resultSelector,thisArg).merge(limit)};var VirtualTimeScheduler=Rx.VirtualTimeScheduler=function(__super__){inherits(VirtualTimeScheduler,__super__);function VirtualTimeScheduler(initialClock,comparer){this.clock=initialClock;this.comparer=comparer;this.isEnabled=false;this.queue=new PriorityQueue(1024);__super__.call(this)}var VirtualTimeSchedulerPrototype=VirtualTimeScheduler.prototype;VirtualTimeSchedulerPrototype.now=function(){return this.toAbsoluteTime(this.clock)};VirtualTimeSchedulerPrototype.schedule=function(state,action){return this.scheduleAbsolute(state,this.clock,action)};VirtualTimeSchedulerPrototype.scheduleFuture=function(state,dueTime,action){var dt=dueTime instanceof Date?this.toRelativeTime(dueTime-this.now()):this.toRelativeTime(dueTime);return this.scheduleRelative(state,dt,action)};VirtualTimeSchedulerPrototype.add=notImplemented;VirtualTimeSchedulerPrototype.toAbsoluteTime=notImplemented;VirtualTimeSchedulerPrototype.toRelativeTime=notImplemented;VirtualTimeSchedulerPrototype.schedulePeriodic=function(state,period,action){var s=new SchedulePeriodicRecursive(this,state,period,action);return s.start()};VirtualTimeSchedulerPrototype.scheduleRelative=function(state,dueTime,action){var runAt=this.add(this.clock,dueTime);return this.scheduleAbsolute(state,runAt,action)};VirtualTimeSchedulerPrototype.start=function(){if(!this.isEnabled){this.isEnabled=true;do{var next=this.getNext();if(next!==null){this.comparer(next.dueTime,this.clock)>0&&(this.clock=next.dueTime);next.invoke()}else{this.isEnabled=false}}while(this.isEnabled)}};VirtualTimeSchedulerPrototype.stop=function(){this.isEnabled=false};VirtualTimeSchedulerPrototype.advanceTo=function(time){var dueToClock=this.comparer(this.clock,time);if(this.comparer(this.clock,time)>0){throw new ArgumentOutOfRangeError}if(dueToClock===0){return}if(!this.isEnabled){this.isEnabled=true;do{var next=this.getNext();if(next!==null&&this.comparer(next.dueTime,time)<=0){this.comparer(next.dueTime,this.clock)>0&&(this.clock=next.dueTime);next.invoke()}else{this.isEnabled=false}}while(this.isEnabled);this.clock=time}};VirtualTimeSchedulerPrototype.advanceBy=function(time){var dt=this.add(this.clock,time),dueToClock=this.comparer(this.clock,dt);if(dueToClock>0){throw new ArgumentOutOfRangeError}if(dueToClock===0){return}this.advanceTo(dt)};VirtualTimeSchedulerPrototype.sleep=function(time){var dt=this.add(this.clock,time);if(this.comparer(this.clock,dt)>=0){throw new ArgumentOutOfRangeError}this.clock=dt};VirtualTimeSchedulerPrototype.getNext=function(){while(this.queue.length>0){var next=this.queue.peek();if(next.isCancelled()){this.queue.dequeue()}else{return next}}return null};VirtualTimeSchedulerPrototype.scheduleAbsolute=function(state,dueTime,action){var self=this;function run(scheduler,state1){self.queue.remove(si);return action(scheduler,state1)}var si=new ScheduledItem(this,state,run,dueTime,this.comparer);this.queue.enqueue(si);return si.disposable};return VirtualTimeScheduler}(Scheduler);Rx.HistoricalScheduler=function(__super__){inherits(HistoricalScheduler,__super__);function HistoricalScheduler(initialClock,comparer){var clock=initialClock==null?0:initialClock;var cmp=comparer||defaultSubComparer;__super__.call(this,clock,cmp)}var HistoricalSchedulerProto=HistoricalScheduler.prototype;HistoricalSchedulerProto.add=function(absolute,relative){return absolute+relative};HistoricalSchedulerProto.toAbsoluteTime=function(absolute){return new Date(absolute).getTime()};HistoricalSchedulerProto.toRelativeTime=function(timeSpan){return timeSpan};return HistoricalScheduler}(Rx.VirtualTimeScheduler);function OnNextPredicate(predicate){this.predicate=predicate}OnNextPredicate.prototype.equals=function(other){if(other===this){return true}if(other==null){return false}if(other.kind!=="N"){return false}return this.predicate(other.value)};function OnErrorPredicate(predicate){this.predicate=predicate}OnErrorPredicate.prototype.equals=function(other){if(other===this){return true}if(other==null){return false}if(other.kind!=="E"){return false}return this.predicate(other.error)};var ReactiveTest=Rx.ReactiveTest={created:100,subscribed:200,disposed:1e3,onNext:function(ticks,value){return typeof value==="function"?new Recorded(ticks,new OnNextPredicate(value)):new Recorded(ticks,Notification.createOnNext(value))},onError:function(ticks,error){return typeof error==="function"?new Recorded(ticks,new OnErrorPredicate(error)):new Recorded(ticks,Notification.createOnError(error))},onCompleted:function(ticks){return new Recorded(ticks,Notification.createOnCompleted())},subscribe:function(start,end){return new Subscription(start,end)}};var Recorded=Rx.Recorded=function(time,value,comparer){this.time=time;this.value=value;this.comparer=comparer||defaultComparer};Recorded.prototype.equals=function(other){return this.time===other.time&&this.comparer(this.value,other.value)};Recorded.prototype.toString=function(){return this.value.toString()+"@"+this.time};var Subscription=Rx.Subscription=function(start,end){this.subscribe=start;this.unsubscribe=end||Number.MAX_VALUE};Subscription.prototype.equals=function(other){return this.subscribe===other.subscribe&&this.unsubscribe===other.unsubscribe};Subscription.prototype.toString=function(){return"("+this.subscribe+", "+(this.unsubscribe===Number.MAX_VALUE?"Infinite":this.unsubscribe)+")"};var MockDisposable=Rx.MockDisposable=function(scheduler){this.scheduler=scheduler;this.disposes=[];this.disposes.push(this.scheduler.clock)};MockDisposable.prototype.dispose=function(){this.disposes.push(this.scheduler.clock)};var MockObserver=function(__super__){inherits(MockObserver,__super__);function MockObserver(scheduler){__super__.call(this);this.scheduler=scheduler;this.messages=[]}var MockObserverPrototype=MockObserver.prototype;MockObserverPrototype.onNext=function(value){this.messages.push(new Recorded(this.scheduler.clock,Notification.createOnNext(value)))};MockObserverPrototype.onError=function(e){this.messages.push(new Recorded(this.scheduler.clock,Notification.createOnError(e)))};MockObserverPrototype.onCompleted=function(){this.messages.push(new Recorded(this.scheduler.clock,Notification.createOnCompleted()))};return MockObserver}(Observer);function MockPromise(scheduler,messages){var self=this;this.scheduler=scheduler;this.messages=messages;this.subscriptions=[];this.observers=[];for(var i=0,len=this.messages.length;iy?1:x0},onCompleted:function(){checkDisposed(this);if(!this.isStopped){this.isStopped=true;for(var i=0,os=cloneArray(this.observers),len=os.length;i0},onCompleted:function(){var i,len;checkDisposed(this);if(!this.isStopped){this.isStopped=true;var os=cloneArray(this.observers),len=os.length;if(this.hasValue){for(i=0;i0},onCompleted:function(){checkDisposed(this);if(this.isStopped){return}this.isStopped=true;for(var i=0,os=cloneArray(this.observers),len=os.length;i0},_trim:function(now){while(this.q.length>this.bufferSize){this.q.shift()}while(this.q.length>0&&now-this.q[0].interval>this.windowSize){this.q.shift()}},onNext:function(value){checkDisposed(this);if(this.isStopped){return}var now=this.scheduler.now();this.q.push({interval:now,value:value});this._trim(now);for(var i=0,os=cloneArray(this.observers),len=os.length;i=0;i--){index=bottom+(top-bottom>>1);pointerId=todosList[index].id;if(pointerId===todoid){return index}else if(pointerIdtodoid){top=index}}return null}function makeModification$(actions){var clearInputMod$=actions.clearInput$.map(function(){return function(todosData){return todosData}});var insertTodoMod$=actions.insertTodo$.map(function(todoTitle){return function(todosData){var lastId=todosData.list.length>0?todosData.list[todosData.list.length-1].id:0;todosData.list.push({id:lastId+1,title:todoTitle,completed:false});return todosData}});var editTodoMod$=actions.editTodo$.map(function(action){return function(todosData){var todoIndex=searchTodoIndex(todosData.list,action.id);todosData.list[todoIndex].title=action.title;return todosData}});var toggleTodoMod$=actions.toggleTodo$.map(function(action){return function(todosData){var todoIndex=searchTodoIndex(todosData.list,action.id);var previousCompleted=todosData.list[todoIndex].completed;todosData.list[todoIndex].completed=!previousCompleted;return todosData}});var toggleAllMod$=actions.toggleAll$.map(function(){return function(todosData){var allAreCompleted=todosData.list.reduce(function(x,y){return x&&y.completed},true);todosData.list.forEach(function(todoData){todoData.completed=allAreCompleted?false:true});return todosData}});var deleteTodoMod$=actions.deleteTodo$.map(function(action){return function(todosData){var todoIndex=searchTodoIndex(todosData.list,action.id);todosData.list.splice(todoIndex,1);return todosData}});var deleteCompletedsMod$=actions.deleteCompleteds$.map(function(){return function(todosData){todosData.list=todosData.list.filter(function(todoData){return todoData.completed===false});return todosData}});var changeRouteMod$=actions.changeRoute$.startWith("/").map(function(route){var filterFn=getFilterFn(route);return function(todosData){todosData.filter=route.replace("/","").trim();todosData.filterFn=filterFn;return todosData}});return _rx.Observable.merge(insertTodoMod$,deleteTodoMod$,toggleTodoMod$,toggleAllMod$,clearInputMod$,deleteCompletedsMod$,editTodoMod$,changeRouteMod$)}function model(actions,sourceTodosData$){var modification$=makeModification$(actions);return sourceTodosData$.concat(modification$).scan(function(todosData,modFn){return modFn(todosData)}).shareReplay(1)}exports["default"]=model;module.exports=exports["default"]},{rx:66}],72:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=serialize;function serialize(todos$){return todos$.map(function(todosData){return JSON.stringify({list:todosData.list.map(function(todoData){return{title:todoData.title,completed:todoData.completed,id:todoData.id}})})})}module.exports=exports["default"]},{}],73:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=deserialize;function merge(){var result={};for(var i=0;i0?(0,_cycleDom.button)(".clear-completed","Clear completed ("+amountCompleted+")"):null])}function view(todos$){return todos$.map(function(todos){return(0,_cycleDom.div)([renderHeader(),renderMainSection(todos),renderFooter(todos)])})}module.exports=exports["default"]},{"@cycle/dom":2}],75:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _extends=Object.assign||function(target){for(var i=1;i=0;i--){index=bottom+(top-bottom>>1);pointerId=todosList[index].id;if(pointerId===todoid){return index}else if(pointerIdtodoid){top=index}}return null}function makeModification$(actions){var clearInputMod$=actions.clearInput$.map(function(){return function(todosData){return todosData}});var insertTodoMod$=actions.insertTodo$.map(function(todoTitle){return function(todosData){var lastId=todosData.list.length>0?todosData.list[todosData.list.length-1].id:0;todosData.list.push({id:lastId+1,title:todoTitle,completed:false});return todosData}});var editTodoMod$=actions.editTodo$.map(function(action){return function(todosData){var todoIndex=searchTodoIndex(todosData.list,action.id);todosData.list[todoIndex].title=action.title;return todosData}});var toggleTodoMod$=actions.toggleTodo$.map(function(action){return function(todosData){var todoIndex=searchTodoIndex(todosData.list,action.id);var previousCompleted=todosData.list[todoIndex].completed;todosData.list[todoIndex].completed=!previousCompleted;return todosData}});var toggleAllMod$=actions.toggleAll$.map(function(){return function(todosData){var allAreCompleted=todosData.list.reduce(function(x,y){return x&&y.completed},true);todosData.list.forEach(function(todoData){todoData.completed=allAreCompleted?false:true});return todosData}});var deleteTodoMod$=actions.deleteTodo$.map(function(action){return function(todosData){var todoIndex=searchTodoIndex(todosData.list,action.id);todosData.list.splice(todoIndex,1);return todosData}});var deleteCompletedsMod$=actions.deleteCompleteds$.map(function(){return function(todosData){todosData.list=todosData.list.filter(function(todoData){return todoData.completed===false});return todosData}});var changeRouteMod$=actions.changeRoute$.startWith("/").map(function(route){var filterFn=getFilterFn(route);return function(todosData){todosData.filter=route.replace("/","").trim();todosData.filterFn=filterFn;return todosData}});return _rx.Observable.merge(insertTodoMod$,deleteTodoMod$,toggleTodoMod$,toggleAllMod$,clearInputMod$,deleteCompletedsMod$,editTodoMod$,changeRouteMod$)}function model(actions,sourceTodosData$){var modification$=makeModification$(actions);return sourceTodosData$.concat(modification$).scan(function(todosData,modFn){return modFn(todosData)}).shareReplay(1)}exports["default"]=model;module.exports=exports["default"]},{rx:66}],78:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=serialize;function serialize(todos$){return todos$.map(function(todosData){return JSON.stringify({list:todosData.list.map(function(todoData){return{title:todoData.title,completed:todoData.completed,id:todoData.id}})})})}module.exports=exports["default"]},{}],79:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=deserialize;function merge(){var result={};for(var i=0;i0?(0,_cycleDom.button)(".clear-completed","Clear completed ("+amountCompleted+")"):null])}function view(todos$){return todos$.map(function(todos){return(0,_cycleDom.div)([renderHeader(),renderMainSection(todos),renderFooter(todos)])})}module.exports=exports["default"]},{"@cycle/dom":2}],81:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i'); +} + +.todo-list li .toggle:checked:after { + content: url('data:image/svg+xml;utf8,'); +} + +.todo-list li label { + white-space: pre-line; + word-break: break-all; + padding: 15px 60px 15px 15px; + margin-left: 45px; + display: block; + line-height: 1.2; + transition: color 0.4s; +} + +.todo-list li.completed label { + color: #d9d9d9; + text-decoration: line-through; +} + +.todo-list li .destroy { + display: none; + position: absolute; + top: 0; + right: 10px; + bottom: 0; + width: 40px; + height: 40px; + margin: auto 0; + font-size: 30px; + color: #cc9a9a; + margin-bottom: 11px; + transition: color 0.2s ease-out; +} + +.todo-list li .destroy:hover { + color: #af5b5e; +} + +.todo-list li .destroy:after { + content: '×'; +} + +.todo-list li:hover .destroy { + display: block; +} + +.todo-list li .edit { + display: none; +} + +.todo-list li.editing:last-child { + margin-bottom: -1px; +} + +.footer { + color: #777; + padding: 10px 15px; + height: 20px; + text-align: center; + border-top: 1px solid #e6e6e6; +} + +.footer:before { + content: ''; + position: absolute; + right: 0; + bottom: 0; + left: 0; + height: 50px; + overflow: hidden; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), + 0 8px 0 -3px #f6f6f6, + 0 9px 1px -3px rgba(0, 0, 0, 0.2), + 0 16px 0 -6px #f6f6f6, + 0 17px 2px -6px rgba(0, 0, 0, 0.2); +} + +.todo-count { + float: left; + text-align: left; +} + +.todo-count strong { + font-weight: 300; +} + +.filters { + margin: 0; + padding: 0; + list-style: none; + position: absolute; + right: 0; + left: 0; +} + +.filters li { + display: inline; +} + +.filters li a { + color: inherit; + margin: 3px; + padding: 3px 7px; + text-decoration: none; + border: 1px solid transparent; + border-radius: 3px; +} + +.filters li a.selected, +.filters li a:hover { + border-color: rgba(175, 47, 47, 0.1); +} + +.filters li a.selected { + border-color: rgba(175, 47, 47, 0.2); +} + +.clear-completed, +html .clear-completed:active { + float: right; + position: relative; + line-height: 20px; + text-decoration: none; + cursor: pointer; +} + +.clear-completed:hover { + text-decoration: underline; +} + +.info { + margin: 65px auto 0; + color: #bfbfbf; + font-size: 10px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-align: center; +} + +.info p { + line-height: 1; +} + +.info a { + color: inherit; + text-decoration: none; + font-weight: 400; +} + +.info a:hover { + text-decoration: underline; +} + +/* + Hack to remove background from Mobile Safari. + Can't use it globally since it destroys checkboxes in Firefox +*/ +@media screen and (-webkit-min-device-pixel-ratio:0) { + .toggle-all, + .todo-list li .toggle { + background: none; + } + + .todo-list li .toggle { + height: 40px; + } + + .toggle-all { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); + -webkit-appearance: none; + appearance: none; + } +} + +@media (max-width: 430px) { + .footer { + height: 50px; + } + + .filters { + bottom: 10px; + } +} diff --git a/examples/cyclejs/node_modules/todomvc-app-css/package.json b/examples/cyclejs/node_modules/todomvc-app-css/package.json new file mode 100644 index 0000000000..8fb2379517 --- /dev/null +++ b/examples/cyclejs/node_modules/todomvc-app-css/package.json @@ -0,0 +1,96 @@ +{ + "_args": [ + [ + "todomvc-app-css@2.0.3", + "/Users/staltz/oss/cycle/todomvc-cycle" + ] + ], + "_from": "todomvc-app-css@2.0.3", + "_id": "todomvc-app-css@2.0.3", + "_inCache": true, + "_installable": true, + "_location": "/todomvc-app-css", + "_nodeVersion": "4.2.1", + "_npmUser": { + "email": "sindresorhus@gmail.com", + "name": "sindresorhus" + }, + "_npmVersion": "2.14.7", + "_phantomChildren": {}, + "_requested": { + "name": "todomvc-app-css", + "raw": "todomvc-app-css@2.0.3", + "rawSpec": "2.0.3", + "scope": null, + "spec": "2.0.3", + "type": "version" + }, + "_requiredBy": [ + "/" + ], + "_resolved": "https://registry.npmjs.org/todomvc-app-css/-/todomvc-app-css-2.0.3.tgz", + "_shasum": "3f6a9e5a9e6303d90f0f4e4b3d4363676d5c1936", + "_shrinkwrap": null, + "_spec": "todomvc-app-css@2.0.3", + "_where": "/Users/staltz/oss/cycle/todomvc-cycle", + "author": { + "email": "sindresorhus@gmail.com", + "name": "Sindre Sorhus", + "url": "sindresorhus.com" + }, + "bugs": { + "url": "https://github.com/tastejs/todomvc-app-css/issues" + }, + "dependencies": {}, + "description": "CSS for TodoMVC apps", + "devDependencies": {}, + "directories": {}, + "dist": { + "shasum": "3f6a9e5a9e6303d90f0f4e4b3d4363676d5c1936", + "tarball": "https://registry.npmjs.org/todomvc-app-css/-/todomvc-app-css-2.0.3.tgz" + }, + "files": [ + "index.css" + ], + "gitHead": "18b796505e44bd7fcf1c92d2a5a7a754d2f23e7f", + "homepage": "https://github.com/tastejs/todomvc-app-css", + "keywords": [ + "todomvc", + "tastejs", + "app", + "todo", + "template", + "css", + "style", + "stylesheet" + ], + "license": "CC-BY-4.0", + "maintainers": [ + { + "email": "sindresorhus@gmail.com", + "name": "sindresorhus" + }, + { + "email": "addyosmani@gmail.com", + "name": "addyosmani" + }, + { + "email": "phartig@rdrei.net", + "name": "passy" + }, + { + "email": "sawchuk@gmail.com", + "name": "stephenplusplus" + } + ], + "name": "todomvc-app-css", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/tastejs/todomvc-app-css.git" + }, + "scripts": {}, + "style": "index.css", + "version": "2.0.3" +} diff --git a/examples/cyclejs/node_modules/todomvc-app-css/readme.md b/examples/cyclejs/node_modules/todomvc-app-css/readme.md new file mode 100644 index 0000000000..6ddbebf024 --- /dev/null +++ b/examples/cyclejs/node_modules/todomvc-app-css/readme.md @@ -0,0 +1,28 @@ +# todomvc-app-css + +> CSS for TodoMVC apps + +![](screenshot.png) + + +## Install + + +``` +$ npm install --save todomvc-app-css +``` + + +## Getting started + +```html + +``` + +See the [TodoMVC app template](https://github.com/tastejs/todomvc-app-template). + + + +## License + +Creative Commons License
This work by Sindre Sorhus is licensed under a Creative Commons Attribution 4.0 International License. diff --git a/examples/cyclejs/node_modules/todomvc-common/base.css b/examples/cyclejs/node_modules/todomvc-common/base.css new file mode 100644 index 0000000000..da65968a73 --- /dev/null +++ b/examples/cyclejs/node_modules/todomvc-common/base.css @@ -0,0 +1,141 @@ +hr { + margin: 20px 0; + border: 0; + border-top: 1px dashed #c5c5c5; + border-bottom: 1px dashed #f7f7f7; +} + +.learn a { + font-weight: normal; + text-decoration: none; + color: #b83f45; +} + +.learn a:hover { + text-decoration: underline; + color: #787e7e; +} + +.learn h3, +.learn h4, +.learn h5 { + margin: 10px 0; + font-weight: 500; + line-height: 1.2; + color: #000; +} + +.learn h3 { + font-size: 24px; +} + +.learn h4 { + font-size: 18px; +} + +.learn h5 { + margin-bottom: 0; + font-size: 14px; +} + +.learn ul { + padding: 0; + margin: 0 0 30px 25px; +} + +.learn li { + line-height: 20px; +} + +.learn p { + font-size: 15px; + font-weight: 300; + line-height: 1.3; + margin-top: 0; + margin-bottom: 0; +} + +#issue-count { + display: none; +} + +.quote { + border: none; + margin: 20px 0 60px 0; +} + +.quote p { + font-style: italic; +} + +.quote p:before { + content: '“'; + font-size: 50px; + opacity: .15; + position: absolute; + top: -20px; + left: 3px; +} + +.quote p:after { + content: '”'; + font-size: 50px; + opacity: .15; + position: absolute; + bottom: -42px; + right: 3px; +} + +.quote footer { + position: absolute; + bottom: -40px; + right: 0; +} + +.quote footer img { + border-radius: 3px; +} + +.quote footer a { + margin-left: 5px; + vertical-align: middle; +} + +.speech-bubble { + position: relative; + padding: 10px; + background: rgba(0, 0, 0, .04); + border-radius: 5px; +} + +.speech-bubble:after { + content: ''; + position: absolute; + top: 100%; + right: 30px; + border: 13px solid transparent; + border-top-color: rgba(0, 0, 0, .04); +} + +.learn-bar > .learn { + position: absolute; + width: 272px; + top: 8px; + left: -300px; + padding: 10px; + border-radius: 5px; + background-color: rgba(255, 255, 255, .6); + transition-property: left; + transition-duration: 500ms; +} + +@media (min-width: 899px) { + .learn-bar { + width: auto; + padding-left: 300px; + } + + .learn-bar > .learn { + left: 8px; + } +} diff --git a/examples/cyclejs/node_modules/todomvc-common/base.js b/examples/cyclejs/node_modules/todomvc-common/base.js new file mode 100644 index 0000000000..44fb50c613 --- /dev/null +++ b/examples/cyclejs/node_modules/todomvc-common/base.js @@ -0,0 +1,244 @@ +/* global _ */ +(function () { + 'use strict'; + + /* jshint ignore:start */ + // Underscore's Template Module + // Courtesy of underscorejs.org + var _ = (function (_) { + _.defaults = function (object) { + if (!object) { + return object; + } + for (var argsIndex = 1, argsLength = arguments.length; argsIndex < argsLength; argsIndex++) { + var iterable = arguments[argsIndex]; + if (iterable) { + for (var key in iterable) { + if (object[key] == null) { + object[key] = iterable[key]; + } + } + } + } + return object; + } + + // By default, Underscore uses ERB-style template delimiters, change the + // following template settings to use alternative delimiters. + _.templateSettings = { + evaluate : /<%([\s\S]+?)%>/g, + interpolate : /<%=([\s\S]+?)%>/g, + escape : /<%-([\s\S]+?)%>/g + }; + + // When customizing `templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. + var noMatch = /(.)^/; + + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\t': 't', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g; + + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + _.template = function(text, data, settings) { + var render; + settings = _.defaults({}, settings, _.templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = new RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset) + .replace(escaper, function(match) { return '\\' + escapes[match]; }); + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } + if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } + if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + index = offset + match.length; + return match; + }); + source += "';\n"; + + // If a variable is not specified, place data values in local scope. + if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + "return __p;\n"; + + try { + render = new Function(settings.variable || 'obj', '_', source); + } catch (e) { + e.source = source; + throw e; + } + + if (data) return render(data, _); + var template = function(data) { + return render.call(this, data, _); + }; + + // Provide the compiled function source as a convenience for precompilation. + template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}'; + + return template; + }; + + return _; + })({}); + + if (location.hostname === 'todomvc.com') { + window._gaq = [['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script')); + } + /* jshint ignore:end */ + + function redirect() { + if (location.hostname === 'tastejs.github.io') { + location.href = location.href.replace('tastejs.github.io/todomvc', 'todomvc.com'); + } + } + + function findRoot() { + var base = location.href.indexOf('examples/'); + return location.href.substr(0, base); + } + + function getFile(file, callback) { + if (!location.host) { + return console.info('Miss the info bar? Run TodoMVC from a server to avoid a cross-origin error.'); + } + + var xhr = new XMLHttpRequest(); + + xhr.open('GET', findRoot() + file, true); + xhr.send(); + + xhr.onload = function () { + if (xhr.status === 200 && callback) { + callback(xhr.responseText); + } + }; + } + + function Learn(learnJSON, config) { + if (!(this instanceof Learn)) { + return new Learn(learnJSON, config); + } + + var template, framework; + + if (typeof learnJSON !== 'object') { + try { + learnJSON = JSON.parse(learnJSON); + } catch (e) { + return; + } + } + + if (config) { + template = config.template; + framework = config.framework; + } + + if (!template && learnJSON.templates) { + template = learnJSON.templates.todomvc; + } + + if (!framework && document.querySelector('[data-framework]')) { + framework = document.querySelector('[data-framework]').dataset.framework; + } + + this.template = template; + + if (learnJSON.backend) { + this.frameworkJSON = learnJSON.backend; + this.frameworkJSON.issueLabel = framework; + this.append({ + backend: true + }); + } else if (learnJSON[framework]) { + this.frameworkJSON = learnJSON[framework]; + this.frameworkJSON.issueLabel = framework; + this.append(); + } + + this.fetchIssueCount(); + } + + Learn.prototype.append = function (opts) { + var aside = document.createElement('aside'); + aside.innerHTML = _.template(this.template, this.frameworkJSON); + aside.className = 'learn'; + + if (opts && opts.backend) { + // Remove demo link + var sourceLinks = aside.querySelector('.source-links'); + var heading = sourceLinks.firstElementChild; + var sourceLink = sourceLinks.lastElementChild; + // Correct link path + var href = sourceLink.getAttribute('href'); + sourceLink.setAttribute('href', href.substr(href.lastIndexOf('http'))); + sourceLinks.innerHTML = heading.outerHTML + sourceLink.outerHTML; + } else { + // Localize demo links + var demoLinks = aside.querySelectorAll('.demo-link'); + Array.prototype.forEach.call(demoLinks, function (demoLink) { + if (demoLink.getAttribute('href').substr(0, 4) !== 'http') { + demoLink.setAttribute('href', findRoot() + demoLink.getAttribute('href')); + } + }); + } + + document.body.className = (document.body.className + ' learn-bar').trim(); + document.body.insertAdjacentHTML('afterBegin', aside.outerHTML); + }; + + Learn.prototype.fetchIssueCount = function () { + var issueLink = document.getElementById('issue-count-link'); + if (issueLink) { + var url = issueLink.href.replace('https://github.com', 'https://api.github.com/repos'); + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.onload = function (e) { + var parsedResponse = JSON.parse(e.target.responseText); + if (parsedResponse instanceof Array) { + var count = parsedResponse.length + if (count !== 0) { + issueLink.innerHTML = 'This app has ' + count + ' open issues'; + document.getElementById('issue-count').style.display = 'inline'; + } + } + }; + xhr.send(); + } + }; + + redirect(); + getFile('learn.json', Learn); +})(); diff --git a/examples/cyclejs/node_modules/todomvc-common/package.json b/examples/cyclejs/node_modules/todomvc-common/package.json new file mode 100644 index 0000000000..7296c94b3c --- /dev/null +++ b/examples/cyclejs/node_modules/todomvc-common/package.json @@ -0,0 +1,90 @@ +{ + "_args": [ + [ + "todomvc-common@1.0.1", + "/Users/staltz/oss/cycle/todomvc-cycle" + ] + ], + "_from": "todomvc-common@1.0.1", + "_id": "todomvc-common@1.0.1", + "_inCache": true, + "_installable": true, + "_location": "/todomvc-common", + "_npmUser": { + "email": "sindresorhus@gmail.com", + "name": "sindresorhus" + }, + "_npmVersion": "1.4.28", + "_phantomChildren": {}, + "_requested": { + "name": "todomvc-common", + "raw": "todomvc-common@1.0.1", + "rawSpec": "1.0.1", + "scope": null, + "spec": "1.0.1", + "type": "version" + }, + "_requiredBy": [ + "/" + ], + "_resolved": "https://registry.npmjs.org/todomvc-common/-/todomvc-common-1.0.1.tgz", + "_shasum": "547af687c3152bb57eb2d3f7c527a0ef44e3c831", + "_shrinkwrap": null, + "_spec": "todomvc-common@1.0.1", + "_where": "/Users/staltz/oss/cycle/todomvc-cycle", + "author": { + "name": "TasteJS" + }, + "bugs": { + "url": "https://github.com/tastejs/todomvc-common/issues" + }, + "dependencies": {}, + "description": "Common TodoMVC utilities used by our apps", + "devDependencies": {}, + "directories": {}, + "dist": { + "shasum": "547af687c3152bb57eb2d3f7c527a0ef44e3c831", + "tarball": "https://registry.npmjs.org/todomvc-common/-/todomvc-common-1.0.1.tgz" + }, + "files": [ + "base.js", + "base.css" + ], + "gitHead": "a5e821ea0bd6974a827834eeae0e5e6e05538abd", + "homepage": "https://github.com/tastejs/todomvc-common", + "keywords": [ + "todomvc", + "tastejs", + "util", + "utilities" + ], + "license": "MIT", + "main": "base.js", + "maintainers": [ + { + "email": "sindresorhus@gmail.com", + "name": "sindresorhus" + }, + { + "email": "addyosmani@gmail.com", + "name": "addyosmani" + }, + { + "email": "phartig@rdrei.net", + "name": "passy" + }, + { + "email": "sawchuk@gmail.com", + "name": "stephenplusplus" + } + ], + "name": "todomvc-common", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/tastejs/todomvc-common.git" + }, + "scripts": {}, + "version": "1.0.1" +} diff --git a/examples/cyclejs/node_modules/todomvc-common/readme.md b/examples/cyclejs/node_modules/todomvc-common/readme.md new file mode 100644 index 0000000000..7a5de5118f --- /dev/null +++ b/examples/cyclejs/node_modules/todomvc-common/readme.md @@ -0,0 +1,15 @@ +# todomvc-common + +> Common TodoMVC utilities used by our apps + + +## Install + +``` +$ npm install --save todomvc-common +``` + + +## License + +MIT © [TasteJS](http://tastejs.com) diff --git a/examples/cyclejs/package.json b/examples/cyclejs/package.json new file mode 100644 index 0000000000..78d9cdec0f --- /dev/null +++ b/examples/cyclejs/package.json @@ -0,0 +1,52 @@ +{ + "name": "todomvc-cycle", + "version": "0.0.0", + "author": "Andre Staltz", + "repository": { + "type": "git", + "url": "git@github.com:staltz/todomvc-cycle.git" + }, + "license": "MIT", + "private": true, + "contributors": [ + { + "name": "Frederik Krautwald" + }, + { + "name": "Kahlil Lechelt", + "email": "hello@kahlil.info" + } + ], + "dependencies": { + "@cycle/collection": "^0.3.0", + "@cycle/dom": "10.0.0-rc33", + "@cycle/history": "^4.0.0", + "@cycle/isolate": "1.4.x", + "@cycle/storage": "3.0.0-rc2", + "@cycle/xstream-run": "3.0.0", + "history": "^3.0.0", + "todomvc-app-css": "2.0.3", + "todomvc-common": "1.0.1", + "xstream": "^5.0.5" + }, + "devDependencies": { + "babel-plugin-transform-object-rest-spread": "^6.6.5", + "babel-preset-es2015": "^6.3.13", + "babel-register": "^6.4.3", + "babelify": "^7.2.0", + "browserify": "12.0.1", + "live-server": "^0.9.0", + "mkdirp": "^0.5.1", + "npm-run-all": "^1.4.0", + "uglify-js": "2.6.1", + "watchify": "^3.6.1" + }, + "scripts": { + "build-debug": "mkdirp js && browserify src/app.js -t babelify --outfile js/app.js", + "watch:js": "mkdirp js && watchify src/app.js -t babelify --outfile js/app.js -dv", + "serve": "live-server ./", + "uglify": "uglifyjs js/app.js -o js/app.min.js", + "build": "npm run build-debug && npm run uglify", + "start": "npm-run-all --parallel watch:js serve" + } +} diff --git a/examples/cyclejs/src/app.js b/examples/cyclejs/src/app.js new file mode 100644 index 0000000000..e725549619 --- /dev/null +++ b/examples/cyclejs/src/app.js @@ -0,0 +1,28 @@ +import {run} from '@cycle/xstream-run'; +import {makeDOMDriver} from '@cycle/dom'; +import {makeHistoryDriver} from '@cycle/history' +import {createHistory} from 'history'; +import storageDriver from '@cycle/storage'; +// THE MAIN FUNCTION +// This is the todo list component. +import TaskList from './components/TaskList/index'; + +const main = TaskList; + +// THE ENTRY POINT +// This is where the whole story starts. +// `run` receives a main function and an object +// with the drivers. +run(main, { + // THE DOM DRIVER + // `makeDOMDriver(container)` from Cycle DOM returns a + // driver function to interact with the DOM. + DOM: makeDOMDriver('.todoapp', {transposition: true}), + // THE HISTORY DRIVER + // A driver to interact with browser history + History: makeHistoryDriver(createHistory(), {capture: true}), + // THE STORAGE DRIVER + // The storage driver which can be used to access values for + // local- and sessionStorage keys as streams. + storage: storageDriver +}); diff --git a/examples/cyclejs/src/components/Task/index.js b/examples/cyclejs/src/components/Task/index.js new file mode 100644 index 0000000000..64613a8a20 --- /dev/null +++ b/examples/cyclejs/src/components/Task/index.js @@ -0,0 +1,20 @@ +import intent from './intent'; +import model from './model'; +import view from './view'; + +// THE TODO ITEM FUNCTION +// This is a simple todo item component, +// structured with the MVI-pattern. +function Task(sources) { + let action$ = intent(sources); + let state$ = model(sources.props$, action$); + let vtree$ = view(state$); + + return { + DOM: vtree$, + action$, + state$ + }; +} + +export default Task; diff --git a/examples/cyclejs/src/components/Task/intent.js b/examples/cyclejs/src/components/Task/intent.js new file mode 100644 index 0000000000..30c662a1a5 --- /dev/null +++ b/examples/cyclejs/src/components/Task/intent.js @@ -0,0 +1,40 @@ +import xs from 'xstream'; +import {ENTER_KEY, ESC_KEY} from '../../utils'; + +// THE TODO ITEM INTENT +// This intent function returns a stream of all the different, +// actions that can be taken on a todo. +function intent(sources) { + // THE INTENT MERGE + // Merge all actions into one stream. + return xs.merge( + // THE DESTROY ACTION STREAM + sources.DOM.select('.destroy').events('click') + .mapTo({type: 'destroy'}), + + // THE TOGGLE ACTION STREAM + sources.DOM.select('.toggle').events('change') + .map(ev => ev.target.checked) + .map(payload => ({type: 'toggle', payload})), + sources.action$ + .filter(action => action.type === 'toggleAll') + .map(action => ({...action, type: 'toggle'})), + + // THE START EDIT ACTION STREAM + sources.DOM.select('label').events('dblclick') + .mapTo({type: 'startEdit'}), + + // THE ESC KEY ACTION STREAM + sources.DOM.select('.edit').events('keyup') + .filter(ev => ev.keyCode === ESC_KEY) + .mapTo({type: 'cancelEdit'}), + + // THE ENTER KEY ACTION STREAM + sources.DOM.select('.edit').events('keyup') + .filter(ev => ev.keyCode === ENTER_KEY) + .compose(s => xs.merge(s, sources.DOM.select('.edit').events('blur', true))) + .map(ev => ({title: ev.target.value, type: 'doneEdit'})) + ); +} + +export default intent; diff --git a/examples/cyclejs/src/components/Task/model.js b/examples/cyclejs/src/components/Task/model.js new file mode 100644 index 0000000000..474f16141e --- /dev/null +++ b/examples/cyclejs/src/components/Task/model.js @@ -0,0 +1,60 @@ +import xs from 'xstream'; + +function makeReducer$(action$) { + let startEditReducer$ = action$ + .filter(action => action.type === 'startEdit') + .mapTo(function startEditReducer(data) { + return { + ...data, + editing: true + }; + }); + + let doneEditReducer$ = action$ + .filter(action => action.type === 'doneEdit') + .map(action => function doneEditReducer(data) { + return { + ...data, + title: action.payload, + editing: false + }; + }); + + let cancelEditReducer$ = action$ + .filter(action => action.type === 'cancelEdit') + .mapTo(function cancelEditReducer(data) { + return { + ...data, + editing: false + }; + }); + + let toggleReducer$ = action$ + .filter(action => action.type === 'toggle') + .map(action => function toggleReducer(data) { + return { + ...data, + completed: action.payload + }; + }); + + return xs.merge( + startEditReducer$, + doneEditReducer$, + cancelEditReducer$, + toggleReducer$ + ); +} + +function model(props$, action$) { + // THE SANITIZED PROPERTIES + // If the list item has no data set it as empty and not completed. + let sanitizedProps$ = props$.startWith({title: '', completed: false}); + let reducer$ = makeReducer$(action$); + + return sanitizedProps$.map(props => + reducer$.fold((data, reducer) => reducer(data), props) + ).flatten().remember(); +} + +export default model; diff --git a/examples/cyclejs/src/components/Task/view.js b/examples/cyclejs/src/components/Task/view.js new file mode 100644 index 0000000000..3f60c5450e --- /dev/null +++ b/examples/cyclejs/src/components/Task/view.js @@ -0,0 +1,34 @@ +import {button, div, input, label, li} from '@cycle/dom'; + +function view(state$) { + return state$.map(({title, completed, editing}) => { + let todoRootClasses = { + completed, + editing, + }; + + return li('.todoRoot', {class: todoRootClasses}, [ + div('.view', [ + input('.toggle', { + props: {type: 'checkbox', checked: completed}, + }), + label(title), + button('.destroy') + ]), + input('.edit', { + props: {type: 'text'}, + hook: { + update: (oldVNode, {elm}) => { + elm.value = title; + if (editing) { + elm.focus(); + elm.selectionStart = elm.value.length; + } + } + } + }) + ]); + }); +} + +export default view; diff --git a/examples/cyclejs/src/components/TaskList/index.js b/examples/cyclejs/src/components/TaskList/index.js new file mode 100644 index 0000000000..c261c32f70 --- /dev/null +++ b/examples/cyclejs/src/components/TaskList/index.js @@ -0,0 +1,106 @@ +import xs from 'xstream'; +import isolate from '@cycle/isolate' +import intent from './intent'; +import model from './model'; +import view from './view'; +import deserialize from './storage-source'; +import serialize from './storage-sink'; +import Task from '../Task/index'; +import Collection from '@cycle/collection'; + +// THE TASKLIST COMPONENT +// This is the TaskList component which is being exported below. +function TaskList(sources) { + // THE LOCALSTORAGE STREAM + // Here we create a localStorage stream that only streams + // the first value read from localStorage in order to + // supply the application with initial state. + let localStorage$ = sources.storage.local.getItem('todos-cycle').take(1); + // THE INITIAL TODO DATA + // The `deserialize` function takes the serialized JSON stored in localStorage + // and turns it into a stream sending a JSON object. + let sourceTodosData$ = deserialize(localStorage$); + // THE INTENT (MVI PATTERN) + // Pass relevant sources to the intent function, which set up + // streams that model the users actions. + let action$ = intent(sources.DOM, sources.History); + // THE MODEL (MVI PATTERN) + // Actions get passed to the model function which transforms the data + // coming through and prepares the data for the view. + let state$ = model(action$, sourceTodosData$); + // THE ITEM ADDITION STREAM + // Emits objects of sources specific to each item. + // Merges stored items with new items + let add$ = xs.merge( + sourceTodosData$ + .map(data => data.list.map(props => ({props$: xs.of(props)}))), + action$ + .filter(action => action.type === 'insertTodo') + .map(action => ({ + props$: xs.of({ + title: action.payload, + completed: false + }) + })) + ); + // THE ITEM REMOVAL SELECTOR FUNCTION + // This function takes item's sinks and returns a stream representing + // its removal. Merges internal removals and `deleteCompleteds` actions + function removeSelector(itemSinks) { + let deleteCompleteds$ = action$ + .filter(action => action.type === 'deleteCompleteds'); + return xs.merge( + // Consider deleteCompleteds$ only if the task is completed. + // analogue of rx pausable + itemSinks.state$ + .map(state => deleteCompleteds$.filter(() => state.completed)) + .flatten(), + itemSinks.action$ + .filter(action => action.type === 'destroy') + ); + } + // THE COLLECTION STREAM + // Collection function takes a component function, a common sources object, + // a stream of item additions, and a selector function from item sinks to + // a stream of removals + let list$ = Collection( + Task, + { + DOM: sources.DOM, + action$: action$ + .filter(action => action.type === 'toggleAll') + }, + add$, + removeSelector + ); + // THE COMBINED CHILDREN VTREE AND STATE STREAMS + let todoVtrees$ = Collection.pluck(list$, itemSinks => itemSinks.DOM); + let todoStates$ = Collection.pluck(list$, itemSinks => itemSinks.state$); + + let amendedState$ = xs.combine(state$, todoVtrees$, todoStates$) + .map(([parentState, todoVtrees, todoStates]) => ({ + ...parentState, + list: todoStates.map((state, i) => ({ + ...state, + todoItem: {DOM: todoVtrees[i]} + })) + })); + // THE VIEW (MVI PATTERN) + // We render state as markup for the DOM. + let vdom$ = view(amendedState$); + // WRITE TO LOCALSTORAGE + // The latest state is written to localStorage. + let storage$ = serialize(todoStates$).map((state) => ({ + key: 'todos-cycle', value: state + })); + // COMPLETE THE CYCLE + // Write the virtual dom stream to the DOM and write the + // storage stream to localStorage. + let sinks = { + DOM: vdom$, + storage: storage$, + }; + return sinks; +} + +export default TaskList; diff --git a/examples/cyclejs/src/components/TaskList/intent.js b/examples/cyclejs/src/components/TaskList/intent.js new file mode 100644 index 0000000000..6a65c70fa9 --- /dev/null +++ b/examples/cyclejs/src/components/TaskList/intent.js @@ -0,0 +1,52 @@ +import xs from 'xstream'; +import dropRepeats from 'xstream/extra/dropRepeats'; +import {ENTER_KEY, ESC_KEY} from '../../utils'; + +// THE INTENT FOR THE LIST +export default function intent(DOMSource, History) { + return xs.merge( + // THE ROUTE STREAM + // A stream that provides the path whenever the route changes. + History + .startWith({pathname: '/'}) + .map(location => location.pathname) + .compose(dropRepeats()) + .map(payload => ({type: 'changeRoute', payload})), + + // THE URL STREAM + // A stream of URL clicks in the app + DOMSource.select('a').events('click') + .map(event => event.target.hash.replace('#', '')) + .map(payload => ({type: 'url', payload})), + + // CLEAR INPUT STREAM + // A stream of ESC key strokes in the `.new-todo` field. + DOMSource.select('.new-todo').events('keydown') + .filter(ev => ev.keyCode === ESC_KEY) + .map(payload => ({type: 'clearInput', payload})), + + // ENTER KEY STREAM + // A stream of ENTER key strokes in the `.new-todo` field. + DOMSource.select('.new-todo').events('keydown') + // Trim value and only let the data through when there + // is anything but whitespace in the field and the ENTER key was hit. + .filter(ev => { + let trimmedVal = String(ev.target.value).trim(); + return ev.keyCode === ENTER_KEY && trimmedVal; + }) + // Return the trimmed value. + .map(ev => String(ev.target.value).trim()) + .map(payload => ({type: 'insertTodo', payload})), + + // TOGGLE ALL STREAM + // Create a stream out of the clicks on the `.toggle-all` button. + DOMSource.select('.toggle-all').events('click') + .map(ev => ev.target.checked) + .map(payload => ({type: 'toggleAll', payload})), + + // DELETE COMPLETED TODOS STREAM + // A stream of click events on the `.clear-completed` element. + DOMSource.select('.clear-completed').events('click') + .mapTo({type: 'deleteCompleteds'}) + ); +}; diff --git a/examples/cyclejs/src/components/TaskList/model.js b/examples/cyclejs/src/components/TaskList/model.js new file mode 100644 index 0000000000..1df793bba9 --- /dev/null +++ b/examples/cyclejs/src/components/TaskList/model.js @@ -0,0 +1,62 @@ +import xs from 'xstream'; +import concat from 'xstream/extra/concat'; + +// A helper function that provides filter functions +// depending on the route value. +function getFilterFn(route) { + switch (route) { + case '/active': return (task => task.completed === false); + case '/completed': return (task => task.completed === true); + default: return () => true; // allow anything + } +} + +// MAKE REDUCER STREAM +// A function that takes the actions on the todo list +// and returns a stream of "reducers": functions that expect the current +// todosData (the state) and return a new version of todosData. +function makeReducer$(action$) { + let clearInputReducer$ = action$ + .filter(a => a.type === 'clearInput') + .mapTo(function clearInputReducer(todosData) { + return todosData; + }); + + let changeRouteReducer$ = action$ + .filter(a => a.type === 'changeRoute') + .map(a => a.payload) + .startWith('/') + .map(path => { + let filterFn = getFilterFn(path); + return function changeRouteReducer(todosData) { + todosData.filter = path.replace('/', '').trim(); + todosData.filterFn = filterFn; + return todosData; + }; + }); + + return xs.merge( + clearInputReducer$, + changeRouteReducer$ + ); +} + +// THIS IS THE MODEL FUNCTION +// It expects the actions coming in from the sources +function model(action$, sourceTodosData$) { + // THE BUSINESS LOGIC + // Actions are passed to the `makeReducer$` function + // which creates a stream of reducer functions that needs + // to be applied on the todoData when an action happens. + let reducer$ = makeReducer$(action$); + + // RETURN THE MODEL DATA + return sourceTodosData$.map(sourceTodosData => + reducer$.fold((todosData, reducer) => reducer(todosData), sourceTodosData) + ).flatten() + // Make this remember its latest event, so late listeners + // will be updated with the latest state. + .remember(); +} + +export default model; diff --git a/examples/cyclejs/src/components/TaskList/storage-sink.js b/examples/cyclejs/src/components/TaskList/storage-sink.js new file mode 100644 index 0000000000..eaa75c64e2 --- /dev/null +++ b/examples/cyclejs/src/components/TaskList/storage-sink.js @@ -0,0 +1,14 @@ +// Turn the data object that contains +// the todos into a string for localStorage. +export default function serialize(todos$) { + return todos$.map(todosData => JSON.stringify( + { + list: todosData.map(todoData => + ({ + title: todoData.title, + completed: todoData.completed + }) + ) + } + )); +}; diff --git a/examples/cyclejs/src/components/TaskList/storage-source.js b/examples/cyclejs/src/components/TaskList/storage-source.js new file mode 100644 index 0000000000..6743553642 --- /dev/null +++ b/examples/cyclejs/src/components/TaskList/storage-source.js @@ -0,0 +1,30 @@ +function merge() { + let result = {}; + for (let i = 0; i < arguments.length; i++) { + let object = arguments[i]; + for (let key in object) { + if (object.hasOwnProperty(key)) { + result[key] = object[key]; + } + } + } + return result; +} + +let safeJSONParse = str => JSON.parse(str) || {}; + +let mergeWithDefaultTodosData = todosData => { + return merge({ + list: [], + filter: '', + filterFn: () => true, // allow anything + }, todosData); +} + +// Take localStorage todoData stream and transform into +// a JavaScript object. Set default data. +export default function deserialize(localStorageValue$) { + return localStorageValue$ + .map(safeJSONParse) + .map(mergeWithDefaultTodosData); +}; diff --git a/examples/cyclejs/src/components/TaskList/view.js b/examples/cyclejs/src/components/TaskList/view.js new file mode 100644 index 0000000000..a359e95c82 --- /dev/null +++ b/examples/cyclejs/src/components/TaskList/view.js @@ -0,0 +1,84 @@ +import {a, button, div, footer, h1, header, input, li, + section, span, strong, ul} from '@cycle/dom'; + +function renderHeader() { + return header('.header', [ + h1('todos'), + input('.new-todo', { + props: { + type: 'text', + placeholder: 'What needs to be done?', + autofocus: true, + name: 'newTodo' + }, + hook: { + update: (oldVNode, {elm}) => { + elm.value = ''; + }, + }, + }) + ]); +} + +function renderMainSection(todosData) { + let allCompleted = todosData.list.reduce((x, y) => x && y.completed, true); + let sectionStyle = {'display': todosData.list.length ? '' : 'none'}; + + return section('.main', {style: sectionStyle}, [ + input('.toggle-all', { + props: {type: 'checkbox', checked: allCompleted}, + }), + ul('.todo-list', todosData.list + .filter(todosData.filterFn) + .map(data => data.todoItem.DOM) + ) + ]); +} + +function renderFilterButton(todosData, filterTag, path, label) { + return li([ + a({ + props: {href: path}, + class: {selected: todosData.filter === filterTag} + }, label) + ]); +} + +function renderFooter(todosData) { + let amountCompleted = todosData.list + .filter(todoData => todoData.completed) + .length; + let amountActive = todosData.list.length - amountCompleted; + let footerStyle = {'display': todosData.list.length ? '' : 'none'}; + + return footer('.footer', {style: footerStyle}, [ + span('.todo-count', [ + strong(String(amountActive)), + ' item' + (amountActive !== 1 ? 's' : '') + ' left' + ]), + ul('.filters', [ + renderFilterButton(todosData, '', '/', 'All'), + renderFilterButton(todosData, 'active', '/active', 'Active'), + renderFilterButton(todosData, 'completed', '/completed', 'Completed'), + ]), + (amountCompleted > 0 ? + button('.clear-completed', 'Clear completed (' + amountCompleted + ')') + : null + ) + ]) +} + +// THE VIEW +// This function expects the stream of todosData +// from the model function and turns it into a +// virtual DOM stream that is then ultimately returned into +// the DOM sink in the index.js. +export default function view(todos$) { + return todos$.map(todos => + div([ + renderHeader(), + renderMainSection(todos), + renderFooter(todos) + ]) + ); +}; diff --git a/examples/cyclejs/src/utils.js b/examples/cyclejs/src/utils.js new file mode 100644 index 0000000000..68033e65ed --- /dev/null +++ b/examples/cyclejs/src/utils.js @@ -0,0 +1,4 @@ +const ENTER_KEY = 13; +const ESC_KEY = 27; + +export {ENTER_KEY, ESC_KEY}; From f142e0234286f5feb872f4fc0dc21bdcf0999dda Mon Sep 17 00:00:00 2001 From: nin-jin Date: Wed, 1 Feb 2017 16:33:29 +0300 Subject: [PATCH 09/53] New mol version. --- benchmark/index.html | 4 +- examples/mol/-/web.css | 334 +++--- examples/mol/-/web.css.map | 36 +- examples/mol/-/web.js | 1797 +++++++++++++++++------------ examples/mol/-/web.js.map | 2 +- examples/mol/-/web.locale=en.json | 14 +- examples/mol/index.html | 2 +- 7 files changed, 1296 insertions(+), 893 deletions(-) diff --git a/benchmark/index.html b/benchmark/index.html index 7f80abddfa..21da69503c 100644 --- a/benchmark/index.html +++ b/benchmark/index.html @@ -83,9 +83,9 @@ var sandbox = document.getElementById( 'sandbox' ) var selector = { - adder : '#new-todo,.new-todo,.todo__new,[mol_app_todomvc_adder]' , + adder : '#new-todo,.new-todo,.todo__new,[mol_app_todomvc_add]' , adderForm : '#todo-form,.todo-form,#header form' , - dropper : '.destroy,[mol_app_todomvc_tasker_dropper]' , + dropper : '.destroy,[mol_app_todomvc_task_row_drop]' , } function meta() { diff --git a/examples/mol/-/web.css b/examples/mol/-/web.css index 379ac9c1c5..b4e8b76286 100644 --- a/examples/mol/-/web.css +++ b/examples/mol/-/web.css @@ -1,14 +1,20 @@ -[mol_viewer_root] { +[mol_view] { + -webkit-transition-property: background-color, height, width, min-height, min-width, max-width, max-height, -webkit-transform; + transition-property: background-color, height, width, min-height, min-width, max-width, max-height, -webkit-transform; + transition-property: background-color, height, width, min-height, min-width, max-width, max-height, transform; + transition-property: background-color, height, width, min-height, min-width, max-width, max-height, transform, -webkit-transform; + -webkit-transition-duration: .1s; + transition-duration: .1s; + -webkit-appearance: none +} +[mol_view_root] { margin: 0; padding: 0; width: 100%; height: 100%; - font: 12pt/1.25 "-apple-system", BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif + font: 12pt/1.5 "-apple-system", BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif } -/*body[mol_viewer_root] {*/ -/*position: fixed;*/ -/*}*/ -[mol_viewer_error] { +[mol_view_error] { background-image: -webkit-repeating-linear-gradient( 315deg, rgba(255, 220, 220, 1), @@ -25,20 +31,20 @@ ) !important; background-size: 28px 28px !important } -[mol_viewer_error] * { +[mol_view_error] * { background: none !important } -@-webkit-keyframes mol_viewer_wait_show { +@-webkit-keyframes mol_view_wait_show { from { background: none } } -@keyframes mol_viewer_wait_show { +@keyframes mol_view_wait_show { from { background: none } } -@-webkit-keyframes mol_viewer_wait_move { +@-webkit-keyframes mol_view_wait_move { from { background-position: 0 0 } @@ -46,7 +52,7 @@ background-position: 28px 0 } } -@keyframes mol_viewer_wait_move { +@keyframes mol_view_wait_move { from { background-position: 0 0 } @@ -54,29 +60,29 @@ background-position: 28px 0 } } -[mol_viewer_error="$mol_atom_wait"] , -[mol_viewer_error="$mol_atom_wait"] * { +[mol_view_error="$mol_atom_wait"] , +[mol_view_error="$mol_atom_wait"] * { background-image: -webkit-repeating-linear-gradient( 45deg, - rgba(0, 0, 0, .01), - rgba(0, 0, 0, .01) 9px, - rgba(255, 255, 255, .01) 10px, - rgba(255, 255, 255, .01) 20px + rgba(91, 136, 200, 0.025), + rgba(91, 136, 200, 0.025) 9px, + rgba(255, 255, 255, .015) 10px, + rgba(255, 255, 255, .015) 20px ) !important; background-image: repeating-linear-gradient( 45deg, - rgba(0, 0, 0, .01), - rgba(0, 0, 0, .01) 9px, - rgba(255, 255, 255, .01) 10px, - rgba(255, 255, 255, .01) 20px + rgba(91, 136, 200, 0.025), + rgba(91, 136, 200, 0.025) 9px, + rgba(255, 255, 255, .015) 10px, + rgba(255, 255, 255, .015) 20px ) !important; background-size: 28px 28px !important; - -webkit-animation: mol_viewer_wait_show .5s ease-in , mol_viewer_wait_move .25s steps(6) infinite !important; - animation: mol_viewer_wait_show .5s ease-in , mol_viewer_wait_move .25s steps(6) infinite !important + -webkit-animation: mol_view_wait_show .5s ease-in , mol_view_wait_move .25s steps(6) infinite !important; + animation: mol_view_wait_show .5s ease-in , mol_view_wait_move .25s steps(6) infinite !important } -[mol_stringer] { +[mol_string] { box-sizing: border-box; - box-shadow: 0 0 0 1px rgba(220, 220, 220, 1); + box-shadow: 0 0 0 1px rgba(230, 230, 230, 1); outline-offset: 0; border: none; border-radius: 2px; @@ -88,27 +94,30 @@ position: relative; z-index: 0; font: inherit; - -webkit-box-flex: 1000; - -ms-flex: 1000 1 auto; - flex: 1000 1 auto; + -webkit-box-flex: 0; + -ms-flex: 0 1 auto; + flex: 0 1 auto; width: 8em; background: #eee; - color: gray + color: gray; + margin: auto } -[mol_stringer]:enabled { +[mol_string]:enabled { background: white; color: rgba(0, 0, 0, .9) } -[mol_stringer]:enabled:hover , -[mol_stringer]:focus { +[mol_string]:enabled:hover , +[mol_string]:focus { outline: none; - box-shadow: 0 0 0 1px rgb(211, 80, 91); z-index: 1 } -[mol_stringer]::-ms-clear { +[mol_string]:focus { + box-shadow: 0 0 0 1px rgba(0, 0, 0, .2) +} +[mol_string]::-ms-clear { display: none } -[mol_clicker] { +[mol_button] { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; @@ -116,11 +125,11 @@ border: none; font: inherit; background: none; - box-shadow: 0 0 0 1px rgba(220, 220, 220, 1); + box-shadow: 0 0 0 1px rgba(230, 230, 230, 1); border-radius: 2px; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; + -webkit-box-flex: 0; + -ms-flex: 0 1 auto; + flex: 0 1 auto; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; @@ -133,56 +142,83 @@ text-align: center; padding: 8px; padding: .5rem; - display: -webkit-box; - display: -ms-flexbox; - display: flex; + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; text-decoration: inherit; color: inherit; - cursor: default; - opacity: .9; - position: relative + cursor: inherit; + position: relative; + box-sizing: border-box; + margin: auto } -[mol_clicker_button][disabled] { - background: #eee; +[mol_button][disabled] { color: gray } -[mol_clicker_major]:not([disabled]) { +[mol_button_minor]:not([disabled]) { + background: rgba(245, 245, 245, .9); + color: rgba(0, 0, 0, .9) +} +[mol_button_major]:not([disabled]) { background: rgb(211, 80, 91); color: rgb(251, 254, 254); - box-shadow: 0 0 0 1px rgba(220, 220, 220, 1) + box-shadow: 0 0 0 1px rgba(230, 230, 230, 1) } -[mol_clicker_danger]:not([disabled]) { - background: rgba(255, 0, 0, .51); +[mol_button_danger]:not([disabled]) { + background: rgba(255, 50, 50, .75); color: white } -[mol_clicker]:not([disabled]):hover , -[mol_clicker]:focus { - outline: none; - z-index: 2; +[mol_button]:not([disabled]):hover { + z-index: 1; cursor: pointer; - opacity: 1; - box-shadow: 0 0 0 1px rgb(211, 80, 91) + background: rgba(0, 0, 0, .05) } -[mol_linker] { +[mol_button_minor]:not([disabled]):hover { + background: rgb(240, 240, 240); + color: rgba(0, 0, 0, .9) +} +[mol_button]:focus { + z-index: 1; + outline: none; + box-shadow: 0 0 0 1px rgba(0, 0, 0, .2) +} +[mol_button_major]:not([disabled]):hover { + background: rgb(206, 59, 71) +} +[mol_button_danger]:not([disabled]):hover { + background: rgba(255, 26, 26, 0.75) +} +[mol_link] { text-decoration: none; color: hsl(215, 50%, 57%); cursor: pointer; border-radius: 2px; - display: inline-block; + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; padding: 8px; padding: .5rem; - box-sizing: border-box + box-sizing: border-box; + -webkit-box-align: baseline; + -ms-flex-align: baseline; + align-items: baseline } -[mol_linker_current] { - color: inherit; - cursor: default +[mol_link]:not([mol_link_current]):hover { + background-color: rgba(0, 0, 0, .05) } -[mol_linker]:focus , -[mol_linker]:not([mol_linker_current]):hover { - outline: none; - box-shadow: 0 0 0 1px rgb(211, 80, 91) +[mol_link]:not([mol_link_current]):focus { + /*box-shadow: 0 0 0 1px var(--mol_skin_focus);*/ + background-color: rgba(0, 0, 0, .05); + box-shadow: 0 0 0 1px var(--mol_skin_hover_line) +} +[mol_link_current] { + background-color: hsl(215, 50%, 57%); + color: rgb(251, 252, 254) } -[mol_checker] { +[mol_link]:focus { + outline: none +} +[mol_check] { -webkit-box-flex: 0; -ms-flex: 0 1 auto; flex: 0 1 auto; @@ -196,87 +232,102 @@ align-content: center; border: none; font-weight: normal; - box-shadow: none + box-shadow: none; + text-align: left } -[mol_checker_icon] { +[mol_check]:not([mol_check_checked]) { + /*background: transparent;*/ + color: inherit +} +[mol_check_icon] { display: -webkit-inline-box; display: -ms-inline-flexbox; display: inline-flex; - vertical-align: -10% + /*vertical-align: -10%;*/ + vertical-align: middle } -[mol_checker_labeler] { +[mol_check_label] { display: -webkit-inline-box; display: -ms-inline-flexbox; display: inline-flex } -[mol_scroller] { +[mol_scroll] { overflow: auto; overflow-y: scroll; - -webkit-box-flex: 0; - -ms-flex: 0 1 auto; - flex: 0 1 auto; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; box-sizing: border-box; will-change: scroll-position; -webkit-transform: translateZ(0); transform: translateZ(0); - box-shadow: 0 0 0 1px rgba(220, 220, 220, 1); + box-shadow: 0 0 0 1px rgba(230, 230, 230, 1); max-height: 100%; - -webkit-overflow-scrolling: touch + max-width: 100%; + -webkit-overflow-scrolling: touch; + -ms-flex-item-align: stretch; + -ms-grid-row-align: stretch; + align-self: stretch } @media print { - [mol_scroller] { + [mol_scroll] { overflow: visible } } -[mol_lister] { - will-change: contents +[mol_list] { + will-change: contents; + display: block } -[mol_barer] { +[mol_bar] { display: -webkit-box; display: -ms-flexbox; display: flex; - box-shadow: 0 0 0 1px rgba(220, 220, 220, 1); - border-radius: 2px -} -[mol_barer] > *:first-child { - border-radius: 2px 0 0 2px + box-shadow: 0 0 0 1px rgba(230, 230, 230, 1); + border-radius: 2px; + margin: auto } -[mol_barer] > *:not(:first-child):not(:last-child) { +[mol_bar] > * { border-radius: 0 } -[mol_barer] > *:not(:first-child) { +[mol_bar] > *:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px +} +[mol_bar] > *:not(:first-child) { margin-left: 1px } -[mol_barer] > *:last-child { - border-radius: 0 2px 2px 0 +[mol_bar] > *:last-child { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px } [mol_app_todomvc] { -ms-flex-item-align: stretch; -ms-grid-row-align: stretch; align-self: stretch; width: 100%; - height: 100% -} -[mol_app_todomvc] [mol_stringer] , -[mol_app_todomvc] [mol_stringer]:focus , -[mol_app_todomvc] [mol_stringer]:hover , -[mol_app_todomvc] [mol_clicker] , -[mol_app_todomvc] [mol_clicker]:focus , -[mol_app_todomvc] [mol_clicker]:hover , -[mol_app_todomvc] [mol_linker] , -[mol_app_todomvc] [mol_linker]:focus , -[mol_app_todomvc] [mol_linker]:hover { - box-shadow: none -} -[mol_app_todomvc] [mol_stringer] , -[mol_app_todomvc] [mol_linker] { - background: transparent -} -[mol_app_todomvc] [mol_linker]:not([mol_linker_current]):hover , -[mol_app_todomvc] [mol_linker]:not([mol_linker_current]):focus { + background: #f5f5f5; + margin: 0 +} +[mol_app_todomvc] [mol_string] , +[mol_app_todomvc] [mol_string]:focus , +[mol_app_todomvc] [mol_string]:hover , +[mol_app_todomvc] [mol_button] , +[mol_app_todomvc] [mol_button]:focus , +[mol_app_todomvc] [mol_button]:hover , +[mol_app_todomvc] [mol_link] , +[mol_app_todomvc] [mol_link]:focus , +[mol_app_todomvc] [mol_link]:hover { + box-shadow: none; + background-color: transparent +} +[mol_app_todomvc] [mol_link_current] { + color: black +} +[mol_app_todomvc] [mol_link]:not([mol_link_current]):hover , +[mol_app_todomvc] [mol_link]:not([mol_link_current]):focus { text-decoration: underline } -[mol_app_todomvc_allCompleter] { +[mol_app_todomvc_head_complete] { -webkit-box-flex: 0; -ms-flex: 0 0 64px; flex: 0 0 64px; @@ -290,20 +341,23 @@ -ms-flex-pack: center; justify-content: center } -[mol_app_todomvc_allCompleter]:disabled { +[mol_app_todomvc_head_complete]:disabled { visibility: hidden } -[mol_app_todomvc_allCompleter][mol_checker_checked] { +[mol_app_todomvc_head_complete][mol_check_checked] { opacity: 1 } -[mol_app_todomvc_adder] { - padding: 0 +[mol_app_todomvc_add] { + padding: 0; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto } -[mol_app_todomvc_lister] { +[mol_app_todomvc_list] { font-size: 24px; font-size: 1.5rem } -[mol_app_todomvc_paneler] { +[mol_app_todomvc_panel] { box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .2), 0 25px 50px 0 rgba(0, 0, 0, .1); max-width: 608px; max-width: 38rem; @@ -316,9 +370,11 @@ -ms-flex-direction: column; flex-direction: column; margin: 0 auto 32px; - margin: 0 auto 2rem + margin: 0 auto 2rem; + -webkit-transition: none; + transition: none } -[mol_app_todomvc_header] { +[mol_app_todomvc_head] { font-size: 24px; font-size: 1.5rem; padding: 0; @@ -328,7 +384,8 @@ height: 64px; height: 4rem } -[mol_app_todomvc_titler] { +[mol_app_todomvc_title] { + display: block; padding: 4px; padding: .25rem; font-size: 112px; @@ -338,7 +395,7 @@ color: rgba(175, 47, 47, .15); text-rendering: optimizeLegibility } -[mol_app_todomvc_tasker] { +[mol_app_todomvc_task_row] { display: -webkit-box; display: -ms-flexbox; display: flex; @@ -347,27 +404,30 @@ height: 64px; height: 4rem } -[mol_app_todomvc_tasker_completer] { +[mol_app_todomvc_task_row_complete] { -webkit-box-flex: 0; -ms-flex: 0 0 64px; flex: 0 0 64px; -ms-flex: 0 0 4rem; flex: 0 0 4rem; + padding: 16px; + padding: 1rem; background: no-repeat center center url('data:image/svg+xml;utf8,') } -[mol_app_todomvc_tasker_completer][mol_checker_checked] { +[mol_app_todomvc_task_row_complete][mol_check_checked] { background: no-repeat center center url('data:image/svg+xml;utf8,') } -[mol_app_todomvc_tasker_titler] { +[mol_app_todomvc_task_row_title] { padding: 0; - -webkit-transition: all 0.4s; - transition: all 0.4s + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto } -[mol_app_todomvc_tasker_completed] [mol_app_todomvc_tasker_titler] { +[mol_app_todomvc_task_row_completed] [mol_app_todomvc_task_row_title] { color: #d9d9d9; text-decoration: line-through } -[mol_app_todomvc_tasker_dropper] { +[mol_app_todomvc_task_row_drop] { font-size: 20px; font-size: 1.25rem; -webkit-box-flex: 0; @@ -376,13 +436,11 @@ -ms-flex: 0 04rem; flex: 0 04rem } -[mol_app_todomvc_tasker]:not(:hover) [mol_app_todomvc_tasker_dropper]:not(:focus) { +[mol_app_todomvc_task_row]:not(:hover) [mol_app_todomvc_task_row_drop]:not(:focus) { opacity: 0; - color: #cc9a9a; - -webkit-transition: all 0.2s ease-out; - transition: all 0.2s ease-out + color: #cc9a9a } -[mol_app_todomvc_footer] { +[mol_app_todomvc_foot] { display: -webkit-box; display: -ms-flexbox; display: flex; @@ -399,7 +457,7 @@ border-top: 1px solid #ededed; box-shadow: 0 1px 1px rgba(0, 0, 0, .2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, .2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, .2) } -[mol_app_todomvc_pendinger] { +[mol_app_todomvc_pending] { padding: 4px; padding: .25rem; -webkit-box-flex: 0; @@ -422,18 +480,18 @@ margin: .25rem; box-shadow: none } -[mol_app_todomvc_sanitizer] { +[mol_app_todomvc_sanitize] { -webkit-box-flex: 0; -ms-flex: 0 1 auto; flex: 0 1 auto; padding: 4px; padding: .25rem } -[mol_app_todomvc_sanitizer]:disabled { +[mol_app_todomvc_sanitize][disabled] { visibility: hidden } -[mol_app_todomvc_sanitizer]:hover , -[mol_app_todomvc_sanitizer]:focus { +[mol_app_todomvc_sanitize]:hover , +[mol_app_todomvc_sanitize]:focus { text-decoration: underline } diff --git a/examples/mol/-/web.css.map b/examples/mol/-/web.css.map index df7243e9f7..e57740c27a 100644 --- a/examples/mol/-/web.css.map +++ b/examples/mol/-/web.css.map @@ -1,28 +1,28 @@ { "version": 3, "sources": [ - "../../../viewer/viewer.css", - "../../../stringer/stringer.css", - "../../../clicker/clicker.css", - "../../../linker/linker.view.css", - "../../../checker/checker.css", - "../../../scroller/scroller.view.css", - "../../../lister/lister.view.css", - "../../../barer/barer.css", + "../../../view/view.css", + "../../../string/string.css", + "../../../button/button.css", + "../../../link/link.view.css", + "../../../check/check.css", + "../../../scroll/scroll.view.css", + "../../../list/list.view.css", + "../../../bar/bar.view.css", "../todomvc.css" ], "names": [], - "mappings": "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", + "mappings": "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", "file": "web.css", "sourcesContent": [ - "[mol_viewer_root] {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\theight: 100%;\n\tfont: var(--mol_skin_font);\n}\n\n/*body[mol_viewer_root] {*/\n\t/*position: fixed;*/\n/*}*/\n\n\n[mol_viewer_error] {\n\tbackground-image: repeating-linear-gradient(\n\t\t135deg,\n\t\trgba(255,220,220,1),\n\t\trgba(255,220,220,1) 11px,\n\t\trgba(255,255,220,1) 10px,\n\t\trgba(255,255,220,1) 20px\n\t) !important;\n\tbackground-size: 28px 28px !important;\n}\n[mol_viewer_error] * {\n\tbackground: none !important;\n}\n\n@keyframes mol_viewer_wait_show {\n\tfrom {\n\t\tbackground: none;\n\t}\n}\n\n@keyframes mol_viewer_wait_move {\n\tfrom {\n\t\tbackground-position: 0 0;\n\t}\n\tto {\n\t\tbackground-position: 28px 0;\n\t}\n}\n\n[mol_viewer_error=\"$mol_atom_wait\"] ,\n[mol_viewer_error=\"$mol_atom_wait\"] * {\n\tbackground-image: repeating-linear-gradient(\n\t\t45deg,\n\t\trgba(0,0,0,.01),\n\t\trgba(0,0,0,.01) 9px,\n\t\trgba(255,255,255,.01) 10px,\n\t\trgba(255,255,255,.01) 20px\n\t) !important;\n\tbackground-size: 28px 28px !important;\n\tanimation: mol_viewer_wait_show .5s ease-in , mol_viewer_wait_move .25s steps(6) infinite !important;\n}\n", - "[mol_stringer] {\n\tbox-sizing: border-box;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n\toutline-offset: 0;\n\tborder: none;\n\tborder-radius: var(--mol_skin_round);\n\twhite-space: nowrap;\n\toverflow: hidden;\n\tpadding: .5rem;\n\ttext-align: left;\n\tposition: relative;\n\tz-index: 0;\n\tfont: inherit;\n\tflex: 1000 1 auto;\n\twidth: 8em;\n\tbackground: var(--mol_skin_passive);\n\tcolor: var(--mol_skin_passive_text);\n}\n\n[mol_stringer]:enabled {\n\tbackground: var(--mol_skin_card);\n\tcolor: var(--mol_skin_light_text);\n}\n\n[mol_stringer]:enabled:hover ,\n[mol_stringer]:focus {\n\toutline: none;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_focus);\n\tz-index: 1;\n}\n\n[mol_stringer]::-ms-clear {\n\tdisplay: none;\n}\n", - "[mol_clicker] {\n\tuser-select: none;\n\tborder: none;\n\tfont: inherit;\n\tbackground: none;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n\tborder-radius: var(--mol_skin_round);\n\tflex: 1 1 auto;\n\tjustify-content: center;\n\talign-content: center;\n\talign-items: center;\n\tvertical-align: middle;\n\ttext-align: center;\n\tpadding: .5rem;\n\tdisplay: flex;\n\ttext-decoration: inherit;\n\tcolor: inherit;\n\tcursor: default;\n\topacity: .9;\n\tposition: relative;\n}\n\n[mol_clicker_button][disabled] {\n\tbackground: var(--mol_skin_passive);\n\tcolor: var(--mol_skin_passive_text);\n}\n\n[mol_clicker_major]:not([disabled]) {\n\tbackground: var(--mol_skin_accent);\n\tcolor: var(--mol_skin_accent_text);\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n}\n\n[mol_clicker_danger]:not([disabled]) {\n\tbackground: var(--mol_skin_warn);\n\tcolor: var(--mol_skin_warn_text);\n}\n\n[mol_clicker]:not([disabled]):hover ,\n[mol_clicker]:focus {\n\toutline: none;\n\tz-index: 2;\n\tcursor: pointer;\n\topacity: 1;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_focus);\n}\n", - "[mol_linker] {\n\ttext-decoration: none;\n\tcolor: var(--mol_skin_base);\n\tcursor: pointer;\n\tborder-radius: var(--mol_skin_round);\n\tdisplay: inline-block;\n\tpadding: .5rem;\n\tbox-sizing: border-box;\n}\n\n[mol_linker_current] {\n\tcolor: inherit;\n\tcursor: default;\n}\n\n[mol_linker]:focus ,\n[mol_linker]:not([mol_linker_current]):hover {\n\toutline: none;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_focus);\n}\n", - "[mol_checker] {\n\tflex: 0 1 auto;\n\tjustify-content: flex-start;\n\talign-items: center;\n\talign-content: center;\n\tborder: none;\n\tfont-weight: normal;\n\tbox-shadow: none;\n}\n\n[mol_checker_icon] {\n\tdisplay: inline-flex;\n\tvertical-align: -10%;\n}\n\n[mol_checker_labeler] {\n\tdisplay: inline-flex;\n}\n", - "[mol_scroller] {\n\toverflow: auto;\n\toverflow-y: scroll;\n\tflex: 0 1 auto;\n\tbox-sizing: border-box;\n\twill-change: scroll-position;\n\ttransform: translateZ(0);\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n\tmax-height: 100%;\n\t-webkit-overflow-scrolling: touch;\n}\n\n@media print {\n\t[mol_scroller] {\n\t\toverflow: visible;\n\t}\n}\n", - "[mol_lister] {\n\twill-change: contents;\n}\n", - "[mol_barer] {\n\tdisplay: flex;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n\tborder-radius: var(--mol_skin_round);\n}\n\n[mol_barer] > *:first-child {\n\tborder-radius: var(--mol_skin_round) 0 0 var(--mol_skin_round);\n}\n\n[mol_barer] > *:not(:first-child):not(:last-child) {\n\tborder-radius: 0;\n}\n\n[mol_barer] > *:not(:first-child) {\n\tmargin-left: 1px;\n}\n\n[mol_barer] > *:last-child {\n\tborder-radius: 0 var(--mol_skin_round) var(--mol_skin_round) 0;\n}\n", - "[mol_app_todomvc] {\n\talign-self: stretch;\n\twidth: 100%;\n\theight: 100%;\n}\n\n[mol_app_todomvc] [mol_stringer] ,\n[mol_app_todomvc] [mol_stringer]:focus ,\n[mol_app_todomvc] [mol_stringer]:hover ,\n[mol_app_todomvc] [mol_clicker] ,\n[mol_app_todomvc] [mol_clicker]:focus ,\n[mol_app_todomvc] [mol_clicker]:hover ,\n[mol_app_todomvc] [mol_linker] ,\n[mol_app_todomvc] [mol_linker]:focus ,\n[mol_app_todomvc] [mol_linker]:hover {\n\tbox-shadow: none;\n}\n\n[mol_app_todomvc] [mol_stringer] ,\n[mol_app_todomvc] [mol_linker] {\n\tbackground: transparent;\n}\n\n[mol_app_todomvc] [mol_linker]:not([mol_linker_current]):hover ,\n[mol_app_todomvc] [mol_linker]:not([mol_linker_current]):focus {\n\ttext-decoration: underline;\n}\n\n[mol_app_todomvc_allCompleter] {\n\tflex: 0 0 4rem;\n\ttransform: rotate( 90deg );\n\topacity: .5;\n\tpadding: 0;\n\tjustify-content: center;\n}\n[mol_app_todomvc_allCompleter]:disabled {\n\tvisibility: hidden;\n}\n[mol_app_todomvc_allCompleter][mol_checker_checked] {\n\topacity: 1;\n}\n\n[mol_app_todomvc_adder] {\n\tpadding: 0;\n}\n\n[mol_app_todomvc_lister] {\n\tfont-size: 1.5rem;\n}\n\n[mol_app_todomvc_paneler] {\n\tbox-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1);\n\tmax-width: 38rem;\n\tbackground: white;\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 0 auto 2rem;\n}\n\n[mol_app_todomvc_header] {\n\tfont-size: 1.5rem;\n\tpadding: 0;\n\tdisplay: flex;\n\theight: 4rem;\n}\n\n[mol_app_todomvc_titler] {\n\tpadding: .25rem;\n\tfont-size: 7rem;\n\tfont-weight: 100;\n\ttext-align: center;\n\tcolor: rgba(175, 47, 47, 0.15);\n\ttext-rendering: optimizeLegibility;\n}\n\n[mol_app_todomvc_tasker] {\n\tdisplay: flex;\n\tbackground: white;\n\tbox-shadow: 0 -1px 0 0 #ededed;\n\theight: 4rem;\n}\n\n[mol_app_todomvc_tasker_completer] {\n\tflex: 0 0 4rem;\n\tbackground: no-repeat center center url('data:image/svg+xml;utf8,');\n}\n[mol_app_todomvc_tasker_completer][mol_checker_checked] {\n\tbackground: no-repeat center center url('data:image/svg+xml;utf8,')\n}\n\n[mol_app_todomvc_tasker_titler] {\n\tpadding: 0;\n\ttransition: all 0.4s;\n}\n\n[mol_app_todomvc_tasker_completed] [mol_app_todomvc_tasker_titler] {\n\tcolor: #d9d9d9;\n\ttext-decoration: line-through;\n}\n\n[mol_app_todomvc_tasker_dropper] {\n\tfont-size: 1.25rem;\n\tflex: 0 04rem;\n}\n[mol_app_todomvc_tasker]:not(:hover) [mol_app_todomvc_tasker_dropper]:not(:focus) {\n\topacity: 0;\n\tcolor: #cc9a9a;\n\ttransition: all 0.2s ease-out;\n}\n\n[mol_app_todomvc_footer] {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: baseline;\n\tpadding: .5rem 1rem;\n\tcolor: #777;\n\tfont-size: .85rem;\n\tborder-top: 1px solid #ededed;\n\tbox-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2);\n}\n\n[mol_app_todomvc_pendinger] {\n\tpadding: .25rem;\n\tflex: 0 1 6rem;\n}\n\n[mol_app_todomvc_filter] {\n\tflex: 1 100 auto;\n\tdisplay: flex;\n\tjustify-content: center;\n\tmargin: .25rem;\n\tbox-shadow: none;\n}\n\n[mol_app_todomvc_sanitizer] {\n\tflex: 0 1 auto;\n\tpadding: .25rem;\n}\n[mol_app_todomvc_sanitizer]:disabled {\n\tvisibility: hidden;\n}\n\n[mol_app_todomvc_sanitizer]:hover ,\n[mol_app_todomvc_sanitizer]:focus {\n\ttext-decoration: underline;\n}\n\n" + "[mol_view] {\n\ttransition-property: background-color, height, width, min-height, min-width, max-width, max-height, transform;\n\ttransition-duration: .1s;\n\t-webkit-appearance: none;\n}\n\n[mol_view_root] {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\theight: 100%;\n\tfont: var(--mol_skin_font);\n}\n\n[mol_view_error] {\n\tbackground-image: repeating-linear-gradient(\n\t\t135deg,\n\t\trgba(255,220,220,1),\n\t\trgba(255,220,220,1) 11px,\n\t\trgba(255,255,220,1) 10px,\n\t\trgba(255,255,220,1) 20px\n\t) !important;\n\tbackground-size: 28px 28px !important;\n}\n[mol_view_error] * {\n\tbackground: none !important;\n}\n\n@keyframes mol_view_wait_show {\n\tfrom {\n\t\tbackground: none;\n\t}\n}\n\n@keyframes mol_view_wait_move {\n\tfrom {\n\t\tbackground-position: 0 0;\n\t}\n\tto {\n\t\tbackground-position: 28px 0;\n\t}\n}\n\n[mol_view_error=\"$mol_atom_wait\"] ,\n[mol_view_error=\"$mol_atom_wait\"] * {\n\tbackground-image: repeating-linear-gradient(\n\t\t45deg,\n\t\tcolor( var(--mol_skin_base) alpha(.025) ),\n\t\tcolor( var(--mol_skin_base) alpha(.025) ) 9px,\n\t\trgba(255,255,255,.015) 10px,\n\t\trgba(255,255,255,.015) 20px\n\t) !important;\n\tbackground-size: 28px 28px !important;\n\tanimation: mol_view_wait_show .5s ease-in , mol_view_wait_move .25s steps(6) infinite !important;\n}\n", + "[mol_string] {\n\tbox-sizing: border-box;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n\toutline-offset: 0;\n\tborder: none;\n\tborder-radius: var(--mol_skin_round);\n\twhite-space: nowrap;\n\toverflow: hidden;\n\tpadding: .5rem;\n\ttext-align: left;\n\tposition: relative;\n\tz-index: 0;\n\tfont: inherit;\n\tflex: 0 1 auto;\n\twidth: 8em;\n\tbackground: var(--mol_skin_passive);\n\tcolor: var(--mol_skin_passive_text);\n\tmargin: auto;\n}\n\n[mol_string]:enabled {\n\tbackground: var(--mol_skin_card);\n\tcolor: var(--mol_skin_light_text);\n}\n\n[mol_string]:enabled:hover ,\n[mol_string]:focus {\n\toutline: none;\n\tz-index: 1;\n}\n\n[mol_string]:focus {\n\tbox-shadow: 0 0 0 1px var(--mol_skin_focus_line);\n}\n\n[mol_string]::-ms-clear {\n\tdisplay: none;\n}\n", + "[mol_button] {\n\tuser-select: none;\n\tborder: none;\n\tfont: inherit;\n\tbackground: none;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n\tborder-radius: var(--mol_skin_round);\n\tflex: 0 1 auto;\n\tjustify-content: center;\n\talign-content: center;\n\talign-items: center;\n\tvertical-align: middle;\n\ttext-align: center;\n\tpadding: .5rem;\n\tdisplay: inline-flex;\n\ttext-decoration: inherit;\n\tcolor: inherit;\n\tcursor: inherit;\n\tposition: relative;\n\tbox-sizing: border-box;\n\tmargin: auto;\n}\n\n[mol_button][disabled] {\n\tcolor: var(--mol_skin_passive_text);\n}\n\n[mol_button_minor]:not([disabled]) {\n\tbackground: var(--mol_skin_button);\n\tcolor: var(--mol_skin_light_text);\n}\n\n[mol_button_major]:not([disabled]) {\n\tbackground: var(--mol_skin_accent);\n\tcolor: var(--mol_skin_accent_text);\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n}\n\n[mol_button_danger]:not([disabled]) {\n\tbackground: var(--mol_skin_warn);\n\tcolor: var(--mol_skin_warn_text);\n}\n\n[mol_button]:not([disabled]):hover {\n\tz-index: 1;\n\tcursor: pointer;\n\tbackground: var(--mol_skin_hover);\n}\n\n[mol_button_minor]:not([disabled]):hover {\n\tbackground: var(--mol_skin_light_hover);\n\tcolor: var(--mol_skin_light_text);\n}\n\n[mol_button]:focus {\n\tz-index: 1;\n\toutline: none;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_focus_line);\n}\n\n[mol_button_major]:not([disabled]):hover {\n\tbackground: var(--mol_skin_accent_hover);\n}\n\n[mol_button_danger]:not([disabled]):hover {\n\tbackground: var(--mol_skin_warn_hover);\n}\n", + "[mol_link] {\n\ttext-decoration: none;\n\tcolor: var(--mol_skin_base);\n\tcursor: pointer;\n\tborder-radius: var(--mol_skin_round);\n\tdisplay: inline-flex;\n\tpadding: .5rem;\n\tbox-sizing: border-box;\n\talign-items: baseline;\n}\n\n[mol_link]:not([mol_link_current]):hover {\n\tbackground-color: var(--mol_skin_hover);\n}\n\n[mol_link]:not([mol_link_current]):focus {\n\t/*box-shadow: 0 0 0 1px var(--mol_skin_focus);*/\n\tbackground-color: var(--mol_skin_hover);\n\tbox-shadow: 0 0 0 1px var(--mol_skin_hover_line);\n}\n\n[mol_link_current] {\n\tbackground-color: var(--mol_skin_base);\n\tcolor: var(--mol_skin_base_text);\n}\n\n[mol_link]:focus {\n\toutline: none;\n}\n", + "[mol_check] {\n\tflex: 0 1 auto;\n\tjustify-content: flex-start;\n\talign-items: center;\n\talign-content: center;\n\tborder: none;\n\tfont-weight: normal;\n\tbox-shadow: none;\n\ttext-align: left;\n}\n\n[mol_check]:not([mol_check_checked]) {\n\t/*background: transparent;*/\n\tcolor: inherit;\n}\n\n[mol_check_icon] {\n\tdisplay: inline-flex;\n\t/*vertical-align: -10%;*/\n\tvertical-align: middle;\n}\n\n[mol_check_label] {\n\tdisplay: inline-flex;\n}\n", + "[mol_scroll] {\n\toverflow: auto;\n\toverflow-y: scroll;\n\tflex: 1 1 auto;\n\tbox-sizing: border-box;\n\twill-change: scroll-position;\n\ttransform: translateZ(0);\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n\tmax-height: 100%;\n\tmax-width: 100%;\n\t-webkit-overflow-scrolling: touch;\n\talign-self: stretch;\n}\n\n@media print {\n\t[mol_scroll] {\n\t\toverflow: visible;\n\t}\n}\n", + "[mol_list] {\n\twill-change: contents;\n\tdisplay: block;\n}\n", + "[mol_bar] {\n\tdisplay: flex;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n\tborder-radius: var(--mol_skin_round);\n\tmargin: auto;\n}\n\n[mol_bar] > * {\n\tborder-radius: 0;\n}\n\n[mol_bar] > *:first-child {\n\tborder-top-left-radius: var(--mol_skin_round);\n\tborder-bottom-left-radius: var(--mol_skin_round);\n}\n\n[mol_bar] > *:not(:first-child) {\n\tmargin-left: 1px;\n}\n\n[mol_bar] > *:last-child {\n\tborder-top-right-radius: var(--mol_skin_round);\n\tborder-bottom-right-radius: var(--mol_skin_round);\n}\n", + "[mol_app_todomvc] {\n\talign-self: stretch;\n\twidth: 100%;\n\tbackground: #f5f5f5;\n\tmargin: 0;\n}\n\n[mol_app_todomvc] [mol_string] ,\n[mol_app_todomvc] [mol_string]:focus ,\n[mol_app_todomvc] [mol_string]:hover ,\n[mol_app_todomvc] [mol_button] ,\n[mol_app_todomvc] [mol_button]:focus ,\n[mol_app_todomvc] [mol_button]:hover ,\n[mol_app_todomvc] [mol_link] ,\n[mol_app_todomvc] [mol_link]:focus ,\n[mol_app_todomvc] [mol_link]:hover {\n\tbox-shadow: none;\n\tbackground-color: transparent;\n}\n\n[mol_app_todomvc] [mol_link_current] {\n\tcolor: black;\n}\n\n[mol_app_todomvc] [mol_link]:not([mol_link_current]):hover ,\n[mol_app_todomvc] [mol_link]:not([mol_link_current]):focus {\n\ttext-decoration: underline;\n}\n\n[mol_app_todomvc_head_complete] {\n\tflex: 0 0 4rem;\n\ttransform: rotate( 90deg );\n\topacity: .5;\n\tpadding: 0;\n\tjustify-content: center;\n}\n[mol_app_todomvc_head_complete]:disabled {\n\tvisibility: hidden;\n}\n[mol_app_todomvc_head_complete][mol_check_checked] {\n\topacity: 1;\n}\n\n[mol_app_todomvc_add] {\n\tpadding: 0;\n\tflex: 1 1 auto;\n}\n\n[mol_app_todomvc_list] {\n\tfont-size: 1.5rem;\n}\n\n[mol_app_todomvc_panel] {\n\tbox-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1);\n\tmax-width: 38rem;\n\tbackground: white;\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 0 auto 2rem;\n\ttransition: none;\n}\n\n[mol_app_todomvc_head] {\n\tfont-size: 1.5rem;\n\tpadding: 0;\n\tdisplay: flex;\n\theight: 4rem;\n}\n\n[mol_app_todomvc_title] {\n\tdisplay: block;\n\tpadding: .25rem;\n\tfont-size: 7rem;\n\tfont-weight: 100;\n\ttext-align: center;\n\tcolor: rgba(175, 47, 47, 0.15);\n\ttext-rendering: optimizeLegibility;\n}\n\n[mol_app_todomvc_task_row] {\n\tdisplay: flex;\n\tbackground: white;\n\tbox-shadow: 0 -1px 0 0 #ededed;\n\theight: 4rem;\n}\n\n[mol_app_todomvc_task_row_complete] {\n\tflex: 0 0 4rem;\n\tpadding: 1rem;\n\tbackground: no-repeat center center url('data:image/svg+xml;utf8,');\n}\n[mol_app_todomvc_task_row_complete][mol_check_checked] {\n\tbackground: no-repeat center center url('data:image/svg+xml;utf8,')\n}\n\n[mol_app_todomvc_task_row_title] {\n\tpadding: 0;\n\tflex: 1 1 auto;\n}\n\n[mol_app_todomvc_task_row_completed] [mol_app_todomvc_task_row_title] {\n\tcolor: #d9d9d9;\n\ttext-decoration: line-through;\n}\n\n[mol_app_todomvc_task_row_drop] {\n\tfont-size: 1.25rem;\n\tflex: 0 04rem;\n}\n[mol_app_todomvc_task_row]:not(:hover) [mol_app_todomvc_task_row_drop]:not(:focus) {\n\topacity: 0;\n\tcolor: #cc9a9a;\n}\n\n[mol_app_todomvc_foot] {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: baseline;\n\tpadding: .5rem 1rem;\n\tcolor: #777;\n\tfont-size: .85rem;\n\tborder-top: 1px solid #ededed;\n\tbox-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2);\n}\n\n[mol_app_todomvc_pending] {\n\tpadding: .25rem;\n\tflex: 0 1 6rem;\n}\n\n[mol_app_todomvc_filter] {\n\tflex: 1 100 auto;\n\tdisplay: flex;\n\tjustify-content: center;\n\tmargin: .25rem;\n\tbox-shadow: none;\n}\n\n[mol_app_todomvc_sanitize] {\n\tflex: 0 1 auto;\n\tpadding: .25rem;\n}\n[mol_app_todomvc_sanitize][disabled] {\n\tvisibility: hidden;\n}\n\n[mol_app_todomvc_sanitize]:hover ,\n[mol_app_todomvc_sanitize]:focus {\n\ttext-decoration: underline;\n}\n" ] } \ No newline at end of file diff --git a/examples/mol/-/web.js b/examples/mol/-/web.js index c5ac89481c..41fc921d06 100644 --- a/examples/mol/-/web.js +++ b/examples/mol/-/web.js @@ -58,36 +58,22 @@ var $; || (self['displayName'] = Function.prototype.toString.call(self) .match(/^function ([a-z0-9_$]*)/)[1]); }; - $mol_object.prototype.objectClassNames = function () { - if (this.hasOwnProperty('objectClassNames()')) - return this['objectClassNames()']; - var names = []; - var current = this; - while (current) { - var name = current.constructor.toString(); - if (!name) - continue; - names.push(name); - current = Object.getPrototypeOf(current); - } - return this['objectClassNames()'] = names; - }; - $mol_object.prototype.objectOwner = function (next) { - if (this['objectOwner()']) - return this['objectOwner()']; - return this['objectOwner()'] = next; + $mol_object.prototype.object_owner = function (next) { + if (this['object_owner()']) + return this['object_owner()']; + return this['object_owner()'] = next; }; - $mol_object.prototype.objectField = function (next) { - if (this['objectField()']) - return this['objectField()'] || ''; - return this['objectField()'] = next; + $mol_object.prototype.object_field = function (next) { + if (this['object_field()']) + return this['object_field()'] || ''; + return this['object_field()'] = next; }; $mol_object.prototype.toString = function () { var path = ''; - var owner = this.objectOwner(); + var owner = this.object_owner(); if (owner) path = owner.toString(); - var field = this.objectField(); + var field = this.object_field(); if (field) path += '.' + field; return path; @@ -362,6 +348,35 @@ var $; $.$mol_state_stack = new $.$mol_dict(); })($ || ($ = {})); //stack.js.map +; +void function() { + + if( typeof alert === 'function' ) { + var nativeAlert = alert + window.alert = function alert( message ) { + console.warn( 'Alerts causes atom synchronization problems in IE. Use custom notificator instead.' ) + return nativeAlert( message ) + } + } + + if( typeof confirm === 'function' ) { + var nativeConfirm = confirm + window.confirm = function confirm( question ) { + console.warn( 'Confirms causes atom synchronization problems in IE. Use custom dialog instead.' ) + return nativeConfirm( question ) + } + } + + if( typeof confirm === 'function' ) { + var nativePrompt = prompt + window.prompt = function prompt( question , def ) { + console.warn( 'Prompts causes atom synchronization problems in IE. Use custom dialog instead.' ) + return nativePrompt( question , def ) + } + } + +}() + ; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; @@ -397,7 +412,7 @@ var $; var host = this.host; var value = host[this.field]; if (value instanceof $.$mol_object) { - if ((value.objectOwner() === host) && (value.objectField() === this.field)) { + if ((value.object_owner() === host) && (value.object_field() === this.field)) { value.destroyed(true); } } @@ -413,8 +428,8 @@ var $; } }; $mol_atom.prototype.unlink = function () { - this.disobeyAll(); - this.checkSlaves(); + this.disobey_all(); + this.check_slaves(); }; $mol_atom.prototype.toString = function () { return this.host + "." + this.field; @@ -483,51 +498,60 @@ var $; } }; $mol_atom.prototype.set = function (next) { - this._next = next; + var next_normal = this.normalize(next, this._next); + if (next_normal === this._next) + return this._next; + this._next = next_normal; this.obsolete(); return this.get(); }; - $mol_atom.prototype.push = function (next) { - var host = this.host; - var prev = host[this.field]; - if (next === void null) - next = prev; - comparing: if ((next !== prev) && (next instanceof Array) && (prev instanceof Array) && (next.length === prev.length)) { - for (var i = 0; i < next['length']; ++i) { + $mol_atom.prototype.normalize = function (next, prev) { + if (next === prev) + return next; + if ((next instanceof Array) && (prev instanceof Array) && (next.length === prev.length)) { + for (var i = 0; i < next.length; ++i) { if (next[i] !== prev[i]) - break comparing; + return next; } - next = prev; + return prev; } - if (prev !== next) { - if (next instanceof $.$mol_object) { - next['objectField'](this.field); - next['objectOwner'](host); - } - if ((typeof Proxy === 'function') && (next instanceof Error)) { - next = new Proxy(next, { - get: function (target) { - throw target.valueOf(); - }, - ownKeys: function (target) { - throw target.valueOf(); - }, - }); - } - host[this.field] = next; - this.log(['push', next, prev]); - this.obsoleteSlaves(); - } - this.status = $mol_atom_status.actual; + return next; + }; + $mol_atom.prototype.push = function (next_raw) { this._next = void null; + this.status = $mol_atom_status.actual; + var host = this.host; + var prev = host[this.field]; + if (next_raw === void null) + return prev; + var next = (next_raw instanceof Error) ? next_raw : this.normalize(next_raw, prev); + if (next === prev) + return prev; + if (next instanceof $.$mol_object) { + next.object_field(this.field); + next.object_owner(host); + } + if ((typeof Proxy === 'function') && (next instanceof Error)) { + next = new Proxy(next, { + get: function (target) { + throw target.valueOf(); + }, + ownKeys: function (target) { + throw target.valueOf(); + }, + }); + } + host[this.field] = next; + this.log(['push', next, prev]); + this.obsolete_slaves(); return next; }; - $mol_atom.prototype.obsoleteSlaves = function () { + $mol_atom.prototype.obsolete_slaves = function () { if (!this.slaves) return; this.slaves.forEach(function (slave) { return slave.obsolete(); }); }; - $mol_atom.prototype.checkSlaves = function () { + $mol_atom.prototype.check_slaves = function () { if (this.slaves) { this.slaves.forEach(function (slave) { return slave.check(); }); } @@ -539,7 +563,7 @@ var $; $mol_atom.prototype.check = function () { if (this.status === $mol_atom_status.actual) { this.status = $mol_atom_status.checking; - this.checkSlaves(); + this.check_slaves(); } }; $mol_atom.prototype.obsolete = function () { @@ -547,7 +571,7 @@ var $; return; this.log(['obsolete']); this.status = $mol_atom_status.obsolete; - this.checkSlaves(); + this.check_slaves(); return void null; }; $mol_atom.prototype.lead = function (slave) { @@ -578,7 +602,7 @@ var $; return; this.masters.delete(master); }; - $mol_atom.prototype.disobeyAll = function () { + $mol_atom.prototype.disobey_all = function () { var _this = this; if (!this.masters) return; @@ -702,6 +726,8 @@ var $; var fieldA = field + '@'; var atom = host[fieldA]; if (!atom) { + if (force && (next === void null)) + return next; host[fieldA] = atom = new $.$mol_atom(host, value.bind(host), field); if (config) atom.autoFresh = !config.lazy; @@ -721,6 +747,8 @@ var $; var fieldA = field + '@'; var atom = host[fieldA]; if (!atom) { + if (force && (next === void null)) + return next; host[fieldA] = atom = new $.$mol_atom(host, value.bind(host, key), field); if (config) atom.autoFresh = !config.lazy; @@ -783,98 +811,129 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, }; var $; (function ($) { - $.$mol_viewer_context = {}; - $.$mol_viewer_context.$mol_viewer_heightLimit = function () { return $.$mol_window.size().height; }; - var $mol_viewer = (function (_super) { - __extends($mol_viewer, _super); - function $mol_viewer() { + $.$mol_view_context = {}; + $.$mol_view_context.$mol_view_visible_width = function () { return $.$mol_window.size().width; }; + $.$mol_view_context.$mol_view_visible_height = function () { return $.$mol_window.size().height; }; + var $mol_view = (function (_super) { + __extends($mol_view, _super); + function $mol_view() { return _super.apply(this, arguments) || this; } - $mol_viewer.root = function (id) { + $mol_view.Root = function (id) { return new this; }; - $mol_viewer.prototype.title = function () { + $mol_view.prototype.title = function () { return this.Class().toString(); }; - $mol_viewer.statePrefix = function () { + $mol_view.state_prefix = function () { return ''; }; - $mol_viewer.prototype.statePrefix = function () { - var owner = this.objectOwner(); - return owner ? owner.statePrefix() : ''; + $mol_view.prototype.focused = function (next) { + var value = $.$mol_view_selection.focused(next === void 0 ? void 0 : [this.dom_node()]); + return value.indexOf(this.dom_node()) !== -1; + }; + $mol_view.prototype.state_prefix = function () { + var owner = this.object_owner(); + return owner ? owner.state_prefix() : ''; }; - $mol_viewer.prototype.stateKey = function (postfix) { - return this.statePrefix() + postfix; + $mol_view.prototype.state_key = function (postfix) { + return this.state_prefix() + postfix; }; - $mol_viewer.prototype.context = function (next) { - return next || $.$mol_viewer_context; + $mol_view.prototype.context = function (next) { + return next || $.$mol_view_context; }; - $mol_viewer.prototype.contextSub = function () { + $mol_view.prototype.context_sub = function () { return this.context(); }; - $mol_viewer.prototype.tagName = function () { return 'div'; }; - $mol_viewer.prototype.nameSpace = function () { return 'http://www.w3.org/1999/xhtml'; }; - $mol_viewer.prototype.childs = function () { + $mol_view.prototype.dom_name = function () { + return this.constructor.toString().replace('$', ''); + }; + $mol_view.prototype.dom_name_space = function () { return 'http://www.w3.org/1999/xhtml'; }; + $mol_view.prototype.sub = function () { return null; }; - $mol_viewer.prototype.childsVisible = function () { - var childs = this.childs(); - if (!childs) - return childs; - var context = this.contextSub(); - childs.forEach(function (child) { - if (child instanceof $mol_viewer) { + $mol_view.prototype.sub_visible = function () { + var sub = this.sub(); + if (!sub) + return sub; + var context = this.context_sub(); + sub.forEach(function (child) { + if (child instanceof $mol_view) { child.context(context); } }); - return childs; - }; - $mol_viewer.prototype.heightMinimal = function () { - return 0; + return sub; + }; + $mol_view.prototype.minimal_width = function () { + var sub = this.sub(); + if (!sub) + return 0; + var min = 0; + sub.forEach(function (view) { + if (view instanceof $mol_view) { + min = Math.max(min, view.minimal_width()); + } + }); + return min; + }; + $mol_view.prototype.minimal_height = function () { + var sub = this.sub(); + if (!sub) + return 0; + var min = 0; + sub.forEach(function (view) { + if (view instanceof $mol_view) { + min = Math.max(min, view.minimal_height()); + } + }); + return min; }; - $mol_viewer.prototype.DOMNode = function (next) { - var _this = this; + $mol_view.prototype.dom_node = function (next) { var path = this.toString(); var next2 = next; if (!next2) { - next2 = this['DOMNode()']; + next2 = this['dom_node()']; if (next2) return next2; next2 = document.getElementById(path); if (next2) { - if (next2['$mol_viewer']) { - return this['DOMNode()'] = next2; + if (next2['$mol_view']) { + return this['dom_node()'] = next2; } } else { - next2 = document.createElementNS(this.nameSpace(), this.tagName()); + next2 = document.createElementNS(this.dom_name_space(), this.dom_name()); } } next2.id = path; - void (next2['$mol_viewer'] = this); - this['DOMNode()'] = next2; - var ownerProto = this.objectOwner() && Object.getPrototypeOf(this.objectOwner()); - if (ownerProto && ownerProto['objectClassNames']) { - var suffix = '_' + this.objectField().replace(/\(.*/, ''); - for (var _i = 0, _a = ownerProto['objectClassNames'](); _i < _a.length; _i++) { - var className = _a[_i]; - var attrName = className.replace(/\$/g, '') + suffix; + void (next2['$mol_view'] = this); + this['dom_node()'] = next2; + var ownerProto = this.object_owner() && Object.getPrototypeOf(this.object_owner()); + if (ownerProto) { + var suffix = this.object_field().replace(/\(.*/, ''); + var suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1); + while (ownerProto && (ownerProto instanceof $mol_view) && (suffix in ownerProto)) { + var attrName = ownerProto.constructor.toString().replace(/\$/g, '') + suffix2; next2.setAttribute(attrName, ''); - if (className === '$mol_viewer') - break; + ownerProto = Object.getPrototypeOf(ownerProto); } } var proto = Object.getPrototypeOf(this); - for (var _b = 0, _c = proto['objectClassNames'](); _b < _c.length; _b++) { - var className = _c[_b]; - next2.setAttribute(className.replace(/\$/g, ''), ''); - if (className === '$mol_viewer') + while (proto) { + var attrName = proto.constructor.toString().replace(/\$/g, '').toLowerCase(); + next2.setAttribute(attrName, ''); + if (!(proto instanceof $mol_view)) break; + proto = Object.getPrototypeOf(proto); } - var events = this.event(); + $mol_view.bind_event(next2, this.event()); + return next2; + }; + $mol_view.bind_event = function (node, events) { + var _this = this; var _loop_1 = function (name_1) { var handle = events[name_1]; - next2.addEventListener(name_1, function (event) { + node.addEventListener(name_1, function (event) { $.$mol_atom_task(_this + ".event()['" + name_1 + "']", function () { handle(event); }).get(); @@ -883,18 +942,17 @@ var $; for (var name_1 in events) { _loop_1(name_1); } - return next2; }; - $mol_viewer.renderChilds = function (node, childs) { - if (childs == null) + $mol_view.render_sub = function (node, sub) { + if (sub == null) return; var nextNode = node.firstChild; - for (var _i = 0, childs_1 = childs; _i < childs_1.length; _i++) { - var view = childs_1[_i]; + for (var _i = 0, sub_1 = sub; _i < sub_1.length; _i++) { + var view = sub_1[_i]; if (view == null) { } else if (typeof view === 'object') { - var existsNode = ((view instanceof $mol_viewer) ? view.DOMNode() : view.valueOf()); + var existsNode = ((view instanceof $mol_view) ? view.dom_node() : view.valueOf()); while (true) { if (!nextNode) { node.appendChild(existsNode); @@ -926,15 +984,21 @@ var $; nextNode = currNode.nextSibling; node.removeChild(currNode); } - for (var _a = 0, childs_2 = childs; _a < childs_2.length; _a++) { - var view = childs_2[_a]; - if (view instanceof $mol_viewer) - view.DOMTree(); + for (var _a = 0, sub_2 = sub; _a < sub_2.length; _a++) { + var view = sub_2[_a]; + if (view instanceof $mol_view) { + try { + view.dom_tree(); + } + catch (e) { + console.error(e); + } + } } }; - $mol_viewer.renderAttrs = function (node, attrs) { + $mol_view.render_attr = function (node, attrs) { for (var name_2 in attrs) { - var val = attrs[name_2](); + var val = attrs[name_2]; if ((val == null) || (val === false)) { node.removeAttribute(name_2); } @@ -946,79 +1010,93 @@ var $; } } }; - $mol_viewer.renderFields = function (node, fields) { - var _loop_2 = function (path) { - var names = path.split('.'); - var obj = node; - for (var i = 0; i < names.length - 1; ++i) { - if (names[i]) - obj = obj[names[i]]; - } - var field = names[names.length - 1]; - var val = fields[path](); - if (obj[field] !== val) { - obj[field] = val; - if (obj[field] !== val) { - new $.$mol_defer(function () { return fields[path](obj[field]); }); - } - } - }; - for (var path in fields) { - _loop_2(path); + $mol_view.render_style = function (node, styles) { + for (var name_3 in styles) { + var val = styles[name_3]; + if (typeof val === 'number') + val = val + "px"; + var style = node.style; + style[name_3] = val; + } + }; + $mol_view.render_field = function (node, field) { + for (var key in field) { + var val = field[key]; + if (node[key] !== val) + node[key] = val; } }; - $mol_viewer.prototype.DOMTree = function () { - var node = this.DOMNode(); + $mol_view.prototype.dom_tree = function () { + var node = this.dom_node(); try { - $mol_viewer.renderChilds(node, this.childsVisible()); - $mol_viewer.renderAttrs(node, this.attr()); - $mol_viewer.renderFields(node, this.field()); + $mol_view.render_attr(node, this.attr()); + $mol_view.render_style(node, this.style()); + $mol_view.render_sub(node, this.sub_visible()); + $mol_view.render_field(node, this.field()); return node; } catch (error) { - if (!error['$mol_viewer_catched']) { - node.setAttribute('mol_viewer_error', error.name); - error['$mol_viewer_catched'] = true; + if (!error['$mol_view_catched']) { + node.setAttribute('mol_view_error', error.name); + error['$mol_view_catched'] = true; } throw error; } }; - $mol_viewer.prototype.attr = function () { + $mol_view.prototype.attr = function () { return { - 'mol_viewer_error': function () { return false; } + 'mol_view_error': false }; }; - $mol_viewer.prototype.field = function () { + $mol_view.prototype.style = function () { return {}; }; - $mol_viewer.prototype.event = function () { return {}; }; - $mol_viewer.prototype.localizationContexts = function () { - return Object.getPrototypeOf(this).objectClassNames(); + $mol_view.prototype.field = function () { + return {}; + }; + $mol_view.prototype.event = function () { return {}; }; + $mol_view.prototype.locale_contexts = function () { + var contexts = []; + var proto = Object.getPrototypeOf(this); + while (proto && (proto instanceof $mol_view)) { + contexts.push(proto.constructor.toString()); + proto = Object.getPrototypeOf(proto); + } + return contexts; }; - return $mol_viewer; + return $mol_view; }($.$mol_object)); __decorate([ $.$mol_mem() - ], $mol_viewer.prototype, "context", null); + ], $mol_view.prototype, "focused", null); + __decorate([ + $.$mol_mem() + ], $mol_view.prototype, "context", null); __decorate([ $.$mol_mem() - ], $mol_viewer.prototype, "DOMTree", null); + ], $mol_view.prototype, "minimal_width", null); + __decorate([ + $.$mol_mem() + ], $mol_view.prototype, "minimal_height", null); + __decorate([ + $.$mol_mem() + ], $mol_view.prototype, "dom_tree", null); __decorate([ $.$mol_mem_key() - ], $mol_viewer, "root", null); - $.$mol_viewer = $mol_viewer; + ], $mol_view, "Root", null); + $.$mol_view = $mol_view; })($ || ($ = {})); -//viewer.js.map +//view.js.map ; var $; (function ($) { document.addEventListener(window.cordova ? 'deviceready' : 'DOMContentLoaded', function (event) { - var nodes = document.querySelectorAll('[mol_viewer_root]'); + var nodes = document.querySelectorAll('[mol_view_root]'); var _loop_1 = function (i) { - var view = $[nodes.item(i).getAttribute('mol_viewer_root')].root(i); - view.DOMNode(nodes.item(i)); - var win = new $.$mol_atom("$mol_viewer.root(" + i + ")", function () { - view.DOMTree(); + var view = $[nodes.item(i).getAttribute('mol_view_root')].Root(i); + view.dom_node(nodes.item(i)); + var win = new $.$mol_atom("$mol_view.Root(" + i + ")", function () { + view.dom_tree(); document.title = view.title(); return null; }); @@ -1030,27 +1108,160 @@ var $; $.$mol_defer.run(); }); })($ || ($ = {})); -//viewer.web.js.map +//view.web.js.map ; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; var $; (function ($) { - function $mol_merge_dict(target, source) { - var result = {}; - for (var key in target) - result[key] = target[key]; - for (var key in source) - result[key] = source[key]; - return result; - } - $.$mol_merge_dict = $mol_merge_dict; + var $mol_view_selection = (function (_super) { + __extends($mol_view_selection, _super); + function $mol_view_selection() { + return _super.apply(this, arguments) || this; + } + $mol_view_selection.focused = function (next, force) { + if (next === void 0) + return []; + if (next.length !== 1) + throw new Error('Length must be equals 1'); + var node = next[0]; + node.focus(); + }; + $mol_view_selection.position = function () { + var diff = []; + for (var _i = 0; _i < arguments.length; _i++) { + diff[_i] = arguments[_i]; + } + if (diff.length) { + if (!diff[0]) + return diff[0]; + var start = diff[0].start; + var end = diff[0].end; + if (!(start <= end)) + throw new Error("Wrong offsets (" + start + "," + end + ")"); + var root = document.getElementById(diff[0].id); + root.focus(); + var range = new Range; + var cur = root.firstChild; + while (cur !== root) { + while (cur.firstChild) + cur = cur.firstChild; + if (cur.nodeValue) { + var length = cur.nodeValue.length; + if (length >= start) + break; + start -= length; + } + while (!cur.nextSibling) { + cur = cur.parentNode; + if (cur === root) { + start = root.childNodes.length; + break; + } + } + } + range.setStart(cur, start); + var cur = root.firstChild; + while (cur !== root) { + while (cur.firstChild) + cur = cur.firstChild; + if (cur.nodeValue) { + var length = cur.nodeValue.length; + if (length >= end) + break; + end -= length; + } + while (!cur.nextSibling) { + cur = cur.parentNode; + if (cur === root) { + end = root.childNodes.length; + break; + } + } + } + range.setEnd(cur, end); + var sel = document.getSelection(); + sel.removeAllRanges(); + sel.addRange(range); + return diff[0]; + } + else { + var sel = document.getSelection(); + if (sel.rangeCount === 0) + return null; + var range = sel.getRangeAt(0); + var el = range.commonAncestorContainer; + while (el && !el.id) + el = el.parentElement; + if (!el) + return { id: null, start: 0, end: 0 }; + var meter = new Range; + meter.selectNodeContents(el); + meter.setEnd(range.startContainer, range.startOffset); + var startOffset = meter.toString().length; + meter.setEnd(range.endContainer, range.endOffset); + var endOffset = meter.toString().length; + return { id: el.id, start: startOffset, end: endOffset }; + } + }; + $mol_view_selection.onFocus = function (event) { + var parents = []; + var element = event.target; + while (element) { + parents.push(element); + element = element.parentElement; + } + $mol_view_selection.focused(parents, $.$mol_atom_force); + }; + $mol_view_selection.onBlur = function (event) { + $mol_view_selection.focused([], $.$mol_atom_force); + }; + return $mol_view_selection; + }($.$mol_object)); + __decorate([ + $.$mol_mem() + ], $mol_view_selection, "focused", null); + __decorate([ + $.$mol_mem() + ], $mol_view_selection, "position", null); + $.$mol_view_selection = $mol_view_selection; })($ || ($ = {})); -//dict.js.map +//selection.js.map +; +var $; +(function ($) { + document.addEventListener('selectionchange', function (event) { + $.$mol_view_selection.position(void 0); + }); + document.addEventListener('focusin', $.$mol_view_selection.onFocus); + document.addEventListener('focus', $.$mol_view_selection.onFocus, true); + document.addEventListener('focusout', $.$mol_view_selection.onBlur); + document.addEventListener('blur', $.$mol_view_selection.onBlur, true); +})($ || ($ = {})); +//selection.web.js.map ; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; +}; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -1059,66 +1270,65 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, }; var $; (function ($) { - var $mol_stringer = (function (_super) { - __extends($mol_stringer, _super); - function $mol_stringer() { + var $mol_string = (function (_super) { + __extends($mol_string, _super); + function $mol_string() { return _super.apply(this, arguments) || this; } - $mol_stringer.prototype.tagName = function () { + $mol_string.prototype.dom_name = function () { return "input"; }; - $mol_stringer.prototype.enabled = function () { + $mol_string.prototype.enabled = function () { return true; }; - $mol_stringer.prototype.hint = function () { - return ""; + $mol_string.prototype.disabled = function () { + return false; }; - $mol_stringer.prototype.type = function () { - return "text"; + $mol_string.prototype.value = function (val) { + return (val !== void 0) ? val : ""; }; - $mol_stringer.prototype.attr = function () { - var _this = this; - return $.$mol_merge_dict(_super.prototype.attr.call(this), { - "placeholder": function () { return _this.hint(); }, - "type": function () { return _this.type(); }, - }); + $mol_string.prototype.value_changed = function (val) { + return this.value(val); }; - $mol_stringer.prototype.disabled = function () { - return false; + $mol_string.prototype.autofocus = function (val) { + return (val !== void 0) ? val : false; }; - $mol_stringer.prototype.value = function (next) { - return (next !== void 0) ? next : ""; + $mol_string.prototype.hint = function () { + return ""; }; - $mol_stringer.prototype.valueChanged = function (next) { - return this.value(next); + $mol_string.prototype.type = function (val) { + return (val !== void 0) ? val : "text"; }; - $mol_stringer.prototype.field = function () { - var _this = this; - return $.$mol_merge_dict(_super.prototype.field.call(this), { - "disabled": function () { return _this.disabled(); }, - "value": function () { return _this.valueChanged(); }, - }); + $mol_string.prototype.field = function () { + return (__assign({}, _super.prototype.field.call(this), { "disabled": this.disabled(), "value": this.value_changed(), "autofocus": this.autofocus(), "placeholder": this.hint(), "type": this.type() })); }; - $mol_stringer.prototype.eventChange = function (next) { - return (next !== void 0) ? next : null; + $mol_string.prototype.event_change = function (event) { + return (event !== void 0) ? event : null; }; - $mol_stringer.prototype.event = function () { + $mol_string.prototype.event = function () { var _this = this; - return $.$mol_merge_dict(_super.prototype.event.call(this), { - "input": function (next) { return _this.eventChange(next); }, - }); + return (__assign({}, _super.prototype.event.call(this), { "input": function (event) { return _this.event_change(event); } })); }; - return $mol_stringer; - }($.$mol_viewer)); + return $mol_string; + }($.$mol_view)); + __decorate([ + $.$mol_mem() + ], $mol_string.prototype, "value", null); __decorate([ $.$mol_mem() - ], $mol_stringer.prototype, "value", null); + ], $mol_string.prototype, "value_changed", null); __decorate([ $.$mol_mem() - ], $mol_stringer.prototype, "eventChange", null); - $.$mol_stringer = $mol_stringer; + ], $mol_string.prototype, "autofocus", null); + __decorate([ + $.$mol_mem() + ], $mol_string.prototype, "type", null); + __decorate([ + $.$mol_mem() + ], $mol_string.prototype, "event_change", null); + $.$mol_string = $mol_string; })($ || ($ = {})); -//stringer.view.tree.js.map +//string.view.tree.js.map ; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; @@ -1129,29 +1339,144 @@ var $; (function ($) { var $mol; (function ($mol) { - var $mol_stringer = (function (_super) { - __extends($mol_stringer, _super); - function $mol_stringer() { + var $mol_string = (function (_super) { + __extends($mol_string, _super); + function $mol_string() { return _super.apply(this, arguments) || this; } - $mol_stringer.prototype.eventChange = function (next) { - this.value(this.DOMNode().value.trim()); + $mol_string.prototype.event_change = function (next) { + this.value(this.dom_node().value.trim()); }; - $mol_stringer.prototype.disabled = function () { + $mol_string.prototype.disabled = function () { return !this.enabled(); }; - return $mol_stringer; - }($.$mol_stringer)); - $mol.$mol_stringer = $mol_stringer; + return $mol_string; + }($.$mol_string)); + $mol.$mol_string = $mol_string; })($mol = $.$mol || ($.$mol = {})); })($ || ($ = {})); -//stringer.view.js.map +//string.view.js.map +; +var $; +(function ($) { + var $mol_keyboard_code; + (function ($mol_keyboard_code) { + $mol_keyboard_code[$mol_keyboard_code["backspace"] = 8] = "backspace"; + $mol_keyboard_code[$mol_keyboard_code["tab"] = 9] = "tab"; + $mol_keyboard_code[$mol_keyboard_code["enter"] = 13] = "enter"; + $mol_keyboard_code[$mol_keyboard_code["shift"] = 16] = "shift"; + $mol_keyboard_code[$mol_keyboard_code["ctrl"] = 17] = "ctrl"; + $mol_keyboard_code[$mol_keyboard_code["alt"] = 18] = "alt"; + $mol_keyboard_code[$mol_keyboard_code["pause"] = 19] = "pause"; + $mol_keyboard_code[$mol_keyboard_code["capsLock"] = 20] = "capsLock"; + $mol_keyboard_code[$mol_keyboard_code["escape"] = 27] = "escape"; + $mol_keyboard_code[$mol_keyboard_code["space"] = 32] = "space"; + $mol_keyboard_code[$mol_keyboard_code["pageUp"] = 33] = "pageUp"; + $mol_keyboard_code[$mol_keyboard_code["pageDown"] = 34] = "pageDown"; + $mol_keyboard_code[$mol_keyboard_code["end"] = 35] = "end"; + $mol_keyboard_code[$mol_keyboard_code["home"] = 36] = "home"; + $mol_keyboard_code[$mol_keyboard_code["left"] = 37] = "left"; + $mol_keyboard_code[$mol_keyboard_code["up"] = 38] = "up"; + $mol_keyboard_code[$mol_keyboard_code["right"] = 39] = "right"; + $mol_keyboard_code[$mol_keyboard_code["down"] = 40] = "down"; + $mol_keyboard_code[$mol_keyboard_code["insert"] = 45] = "insert"; + $mol_keyboard_code[$mol_keyboard_code["delete"] = 46] = "delete"; + $mol_keyboard_code[$mol_keyboard_code["key0"] = 48] = "key0"; + $mol_keyboard_code[$mol_keyboard_code["key1"] = 49] = "key1"; + $mol_keyboard_code[$mol_keyboard_code["key2"] = 50] = "key2"; + $mol_keyboard_code[$mol_keyboard_code["key3"] = 51] = "key3"; + $mol_keyboard_code[$mol_keyboard_code["key4"] = 52] = "key4"; + $mol_keyboard_code[$mol_keyboard_code["key5"] = 53] = "key5"; + $mol_keyboard_code[$mol_keyboard_code["key6"] = 54] = "key6"; + $mol_keyboard_code[$mol_keyboard_code["key7"] = 55] = "key7"; + $mol_keyboard_code[$mol_keyboard_code["key8"] = 56] = "key8"; + $mol_keyboard_code[$mol_keyboard_code["key9"] = 57] = "key9"; + $mol_keyboard_code[$mol_keyboard_code["A"] = 65] = "A"; + $mol_keyboard_code[$mol_keyboard_code["B"] = 66] = "B"; + $mol_keyboard_code[$mol_keyboard_code["C"] = 67] = "C"; + $mol_keyboard_code[$mol_keyboard_code["D"] = 68] = "D"; + $mol_keyboard_code[$mol_keyboard_code["E"] = 69] = "E"; + $mol_keyboard_code[$mol_keyboard_code["F"] = 70] = "F"; + $mol_keyboard_code[$mol_keyboard_code["G"] = 71] = "G"; + $mol_keyboard_code[$mol_keyboard_code["H"] = 72] = "H"; + $mol_keyboard_code[$mol_keyboard_code["I"] = 73] = "I"; + $mol_keyboard_code[$mol_keyboard_code["J"] = 74] = "J"; + $mol_keyboard_code[$mol_keyboard_code["K"] = 75] = "K"; + $mol_keyboard_code[$mol_keyboard_code["L"] = 76] = "L"; + $mol_keyboard_code[$mol_keyboard_code["M"] = 77] = "M"; + $mol_keyboard_code[$mol_keyboard_code["N"] = 78] = "N"; + $mol_keyboard_code[$mol_keyboard_code["O"] = 79] = "O"; + $mol_keyboard_code[$mol_keyboard_code["P"] = 80] = "P"; + $mol_keyboard_code[$mol_keyboard_code["Q"] = 81] = "Q"; + $mol_keyboard_code[$mol_keyboard_code["R"] = 82] = "R"; + $mol_keyboard_code[$mol_keyboard_code["S"] = 83] = "S"; + $mol_keyboard_code[$mol_keyboard_code["T"] = 84] = "T"; + $mol_keyboard_code[$mol_keyboard_code["U"] = 85] = "U"; + $mol_keyboard_code[$mol_keyboard_code["V"] = 86] = "V"; + $mol_keyboard_code[$mol_keyboard_code["W"] = 87] = "W"; + $mol_keyboard_code[$mol_keyboard_code["X"] = 88] = "X"; + $mol_keyboard_code[$mol_keyboard_code["Y"] = 89] = "Y"; + $mol_keyboard_code[$mol_keyboard_code["Z"] = 90] = "Z"; + $mol_keyboard_code[$mol_keyboard_code["metaLeft"] = 91] = "metaLeft"; + $mol_keyboard_code[$mol_keyboard_code["metaRight"] = 92] = "metaRight"; + $mol_keyboard_code[$mol_keyboard_code["select"] = 93] = "select"; + $mol_keyboard_code[$mol_keyboard_code["numpad0"] = 96] = "numpad0"; + $mol_keyboard_code[$mol_keyboard_code["numpad1"] = 97] = "numpad1"; + $mol_keyboard_code[$mol_keyboard_code["numpad2"] = 98] = "numpad2"; + $mol_keyboard_code[$mol_keyboard_code["numpad3"] = 99] = "numpad3"; + $mol_keyboard_code[$mol_keyboard_code["numpad4"] = 100] = "numpad4"; + $mol_keyboard_code[$mol_keyboard_code["numpad5"] = 101] = "numpad5"; + $mol_keyboard_code[$mol_keyboard_code["numpad6"] = 102] = "numpad6"; + $mol_keyboard_code[$mol_keyboard_code["numpad7"] = 103] = "numpad7"; + $mol_keyboard_code[$mol_keyboard_code["numpad8"] = 104] = "numpad8"; + $mol_keyboard_code[$mol_keyboard_code["numpad9"] = 105] = "numpad9"; + $mol_keyboard_code[$mol_keyboard_code["multiply"] = 106] = "multiply"; + $mol_keyboard_code[$mol_keyboard_code["add"] = 107] = "add"; + $mol_keyboard_code[$mol_keyboard_code["subtract"] = 109] = "subtract"; + $mol_keyboard_code[$mol_keyboard_code["decimal"] = 110] = "decimal"; + $mol_keyboard_code[$mol_keyboard_code["divide"] = 111] = "divide"; + $mol_keyboard_code[$mol_keyboard_code["F1"] = 112] = "F1"; + $mol_keyboard_code[$mol_keyboard_code["F2"] = 113] = "F2"; + $mol_keyboard_code[$mol_keyboard_code["F3"] = 114] = "F3"; + $mol_keyboard_code[$mol_keyboard_code["F4"] = 115] = "F4"; + $mol_keyboard_code[$mol_keyboard_code["F5"] = 116] = "F5"; + $mol_keyboard_code[$mol_keyboard_code["F6"] = 117] = "F6"; + $mol_keyboard_code[$mol_keyboard_code["F7"] = 118] = "F7"; + $mol_keyboard_code[$mol_keyboard_code["F8"] = 119] = "F8"; + $mol_keyboard_code[$mol_keyboard_code["F9"] = 120] = "F9"; + $mol_keyboard_code[$mol_keyboard_code["F10"] = 121] = "F10"; + $mol_keyboard_code[$mol_keyboard_code["F11"] = 122] = "F11"; + $mol_keyboard_code[$mol_keyboard_code["F12"] = 123] = "F12"; + $mol_keyboard_code[$mol_keyboard_code["numLock"] = 144] = "numLock"; + $mol_keyboard_code[$mol_keyboard_code["scrollLock"] = 145] = "scrollLock"; + $mol_keyboard_code[$mol_keyboard_code["semicolon"] = 186] = "semicolon"; + $mol_keyboard_code[$mol_keyboard_code["equals"] = 187] = "equals"; + $mol_keyboard_code[$mol_keyboard_code["comma"] = 188] = "comma"; + $mol_keyboard_code[$mol_keyboard_code["dash"] = 189] = "dash"; + $mol_keyboard_code[$mol_keyboard_code["period"] = 190] = "period"; + $mol_keyboard_code[$mol_keyboard_code["forwardSlash"] = 191] = "forwardSlash"; + $mol_keyboard_code[$mol_keyboard_code["graveAccent"] = 192] = "graveAccent"; + $mol_keyboard_code[$mol_keyboard_code["bracketOpen"] = 219] = "bracketOpen"; + $mol_keyboard_code[$mol_keyboard_code["slashBack"] = 220] = "slashBack"; + $mol_keyboard_code[$mol_keyboard_code["bracketClose"] = 221] = "bracketClose"; + $mol_keyboard_code[$mol_keyboard_code["quoteSingle"] = 222] = "quoteSingle"; + })($mol_keyboard_code = $.$mol_keyboard_code || ($.$mol_keyboard_code = {})); +})($ || ($ = {})); +//code.js.map ; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; +}; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -1160,50 +1485,50 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, }; var $; (function ($) { - var $mol_clicker = (function (_super) { - __extends($mol_clicker, _super); - function $mol_clicker() { + var $mol_button = (function (_super) { + __extends($mol_button, _super); + function $mol_button() { return _super.apply(this, arguments) || this; } - $mol_clicker.prototype.tagName = function () { - return "button"; - }; - $mol_clicker.prototype.enabled = function () { + $mol_button.prototype.enabled = function () { return true; }; - $mol_clicker.prototype.eventClick = function (next) { - return (next !== void 0) ? next : null; + $mol_button.prototype.event_click = function (event) { + return (event !== void 0) ? event : null; + }; + $mol_button.prototype.event_activate = function (event) { + return this.event_click(event); }; - $mol_clicker.prototype.eventActivate = function (next) { - return this.eventClick(next); + $mol_button.prototype.evenet_key_press = function (event) { + return (event !== void 0) ? event : null; }; - $mol_clicker.prototype.event = function () { + $mol_button.prototype.event = function () { var _this = this; - return $.$mol_merge_dict(_super.prototype.event.call(this), { - "click": function (next) { return _this.eventActivate(next); }, - }); + return (__assign({}, _super.prototype.event.call(this), { "click": function (event) { return _this.event_activate(event); }, "keypress": function (event) { return _this.evenet_key_press(event); } })); }; - $mol_clicker.prototype.disabled = function () { + $mol_button.prototype.disabled = function () { return false; }; - $mol_clicker.prototype.attr = function () { - var _this = this; - return $.$mol_merge_dict(_super.prototype.attr.call(this), { - "disabled": function () { return _this.disabled(); }, - "tabindex": function () { return "0"; }, - }); + $mol_button.prototype.tab_index = function () { + return "0"; }; - return $mol_clicker; - }($.$mol_viewer)); + $mol_button.prototype.attr = function () { + return (__assign({}, _super.prototype.attr.call(this), { "disabled": this.disabled(), "role": "button", "tabindex": this.tab_index() })); + }; + return $mol_button; + }($.$mol_view)); + __decorate([ + $.$mol_mem() + ], $mol_button.prototype, "event_click", null); __decorate([ $.$mol_mem() - ], $mol_clicker.prototype, "eventClick", null); + ], $mol_button.prototype, "event_activate", null); __decorate([ $.$mol_mem() - ], $mol_clicker.prototype, "eventActivate", null); - $.$mol_clicker = $mol_clicker; + ], $mol_button.prototype, "evenet_key_press", null); + $.$mol_button = $mol_button; })($ || ($ = {})); -//clicker.view.tree.js.map +//button.view.tree.js.map ; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; @@ -1214,25 +1539,32 @@ var $; (function ($) { var $mol; (function ($mol) { - var $mol_clicker = (function (_super) { - __extends($mol_clicker, _super); - function $mol_clicker() { + var $mol_button = (function (_super) { + __extends($mol_button, _super); + function $mol_button() { return _super.apply(this, arguments) || this; } - $mol_clicker.prototype.disabled = function () { + $mol_button.prototype.disabled = function () { return !this.enabled(); }; - $mol_clicker.prototype.eventActivate = function (next) { + $mol_button.prototype.event_activate = function (next) { if (!this.enabled()) return; - this.eventClick(next); + this.event_click(next); }; - return $mol_clicker; - }($.$mol_clicker)); - $mol.$mol_clicker = $mol_clicker; + $mol_button.prototype.evenet_key_press = function (event) { + if (event.keyCode === $.$mol_keyboard_code.enter) + return this.event_activate(event); + }; + $mol_button.prototype.tab_index = function () { + return this.enabled() ? _super.prototype.tab_index.call(this) : null; + }; + return $mol_button; + }($.$mol_button)); + $mol.$mol_button = $mol_button; })($mol = $.$mol || ($.$mol = {})); })($ || ($ = {})); -//clicker.view.js.map +//button.view.js.map ; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; @@ -1241,46 +1573,50 @@ var __extends = (this && this.__extends) || function (d, b) { }; var $; (function ($) { - var $mol_clicker_button = (function (_super) { - __extends($mol_clicker_button, _super); - function $mol_clicker_button() { + var $mol_button_major = (function (_super) { + __extends($mol_button_major, _super); + function $mol_button_major() { return _super.apply(this, arguments) || this; } - return $mol_clicker_button; - }($.$mol_clicker)); - $.$mol_clicker_button = $mol_clicker_button; + return $mol_button_major; + }($.$mol_button)); + $.$mol_button_major = $mol_button_major; })($ || ($ = {})); (function ($) { - var $mol_clicker_major = (function (_super) { - __extends($mol_clicker_major, _super); - function $mol_clicker_major() { + var $mol_button_minor = (function (_super) { + __extends($mol_button_minor, _super); + function $mol_button_minor() { return _super.apply(this, arguments) || this; } - return $mol_clicker_major; - }($.$mol_clicker_button)); - $.$mol_clicker_major = $mol_clicker_major; + return $mol_button_minor; + }($.$mol_button)); + $.$mol_button_minor = $mol_button_minor; })($ || ($ = {})); (function ($) { - var $mol_clicker_minor = (function (_super) { - __extends($mol_clicker_minor, _super); - function $mol_clicker_minor() { + var $mol_button_danger = (function (_super) { + __extends($mol_button_danger, _super); + function $mol_button_danger() { return _super.apply(this, arguments) || this; } - return $mol_clicker_minor; - }($.$mol_clicker_button)); - $.$mol_clicker_minor = $mol_clicker_minor; + return $mol_button_danger; + }($.$mol_button)); + $.$mol_button_danger = $mol_button_danger; })($ || ($ = {})); +//button_types.view.tree.js.map +; +var $; (function ($) { - var $mol_clicker_danger = (function (_super) { - __extends($mol_clicker_danger, _super); - function $mol_clicker_danger() { - return _super.apply(this, arguments) || this; - } - return $mol_clicker_danger; - }($.$mol_clicker_button)); - $.$mol_clicker_danger = $mol_clicker_danger; + function $mol_merge_dict(target, source) { + var result = {}; + for (var key in target) + result[key] = target[key]; + for (var key in source) + result[key] = source[key]; + return result; + } + $.$mol_merge_dict = $mol_merge_dict; })($ || ($ = {})); -//clicker_types.view.tree.js.map +//dict.js.map ; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; @@ -1373,40 +1709,44 @@ var __extends = (this && this.__extends) || function (d, b) { function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; +}; var $; (function ($) { - var $mol_linker = (function (_super) { - __extends($mol_linker, _super); - function $mol_linker() { + var $mol_link = (function (_super) { + __extends($mol_link, _super); + function $mol_link() { return _super.apply(this, arguments) || this; } - $mol_linker.prototype.heightMinimal = function () { + $mol_link.prototype.minimal_height = function () { return 36; }; - $mol_linker.prototype.tagName = function () { + $mol_link.prototype.dom_name = function () { return "a"; }; - $mol_linker.prototype.uri = function () { + $mol_link.prototype.uri = function () { return ""; }; - $mol_linker.prototype.current = function () { + $mol_link.prototype.current = function () { return false; }; - $mol_linker.prototype.attr = function () { - var _this = this; - return $.$mol_merge_dict(_super.prototype.attr.call(this), { - "href": function () { return _this.uri(); }, - "mol_linker_current": function () { return _this.current(); }, - }); + $mol_link.prototype.attr = function () { + return (__assign({}, _super.prototype.attr.call(this), { "href": this.uri(), "mol_link_current": this.current() })); }; - $mol_linker.prototype.arg = function () { + $mol_link.prototype.arg = function () { return ({}); }; - return $mol_linker; - }($.$mol_viewer)); - $.$mol_linker = $mol_linker; + return $mol_link; + }($.$mol_view)); + $.$mol_link = $mol_link; })($ || ($ = {})); -//linker.view.tree.js.map +//link.view.tree.js.map ; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; @@ -1423,27 +1763,23 @@ var $; (function ($) { var $mol; (function ($mol) { - var $mol_linker = (function (_super) { - __extends($mol_linker, _super); - function $mol_linker() { + var $mol_link = (function (_super) { + __extends($mol_link, _super); + function $mol_link() { return _super.apply(this, arguments) || this; } - $mol_linker.prototype.uri = function () { - var patch = {}; - var arg = this.arg(); - for (var key in arg) - patch[key] = arg[key](); - return new $.$mol_state_arg(this.statePrefix()).link(patch); + $mol_link.prototype.uri = function () { + return new $.$mol_state_arg(this.state_prefix()).link(this.arg()); }; - $mol_linker.prototype.current = function () { + $mol_link.prototype.current = function () { return this.uri() === $.$mol_state_arg.link({}); }; - return $mol_linker; - }($.$mol_linker)); + return $mol_link; + }($.$mol_link)); __decorate([ $.$mol_mem() - ], $mol_linker.prototype, "uri", null); - $mol.$mol_linker = $mol_linker; + ], $mol_link.prototype, "uri", null); + $mol.$mol_link = $mol_link; })($mol = $.$mol || ($.$mol = {})); })($ || ($ = {})); //linker.view.js.map @@ -1453,6 +1789,14 @@ var __extends = (this && this.__extends) || function (d, b) { function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; +}; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -1461,46 +1805,43 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, }; var $; (function ($) { - var $mol_checker = (function (_super) { - __extends($mol_checker, _super); - function $mol_checker() { + var $mol_check = (function (_super) { + __extends($mol_check, _super); + function $mol_check() { return _super.apply(this, arguments) || this; } - $mol_checker.prototype.checked = function (next) { - return (next !== void 0) ? next : false; + $mol_check.prototype.checked = function (val) { + return (val !== void 0) ? val : false; }; - $mol_checker.prototype.attr = function () { - var _this = this; - return $.$mol_merge_dict(_super.prototype.attr.call(this), { - "mol_checker_checked": function (next) { return _this.checked(next); }, - }); + $mol_check.prototype.attr = function () { + return (__assign({}, _super.prototype.attr.call(this), { "mol_check_checked": this.checked(), "aria-checked": this.checked(), "role": "checkbox" })); }; - $mol_checker.prototype.icon = function () { + $mol_check.prototype.Icon = function () { return null; }; - $mol_checker.prototype.label = function () { + $mol_check.prototype.label = function () { return []; }; - $mol_checker.prototype.labeler = function (next) { + $mol_check.prototype.Label = function () { var _this = this; - return new $.$mol_viewer().setup(function (obj) { - obj.childs = function () { return [].concat(_this.label()); }; + return new $.$mol_view().setup(function (obj) { + obj.sub = function () { return [].concat(_this.label()); }; }); }; - $mol_checker.prototype.childs = function () { - return [].concat(this.icon(), this.labeler()); + $mol_check.prototype.sub = function () { + return [].concat(this.Icon(), this.Label()); }; - return $mol_checker; - }($.$mol_clicker)); + return $mol_check; + }($.$mol_button)); __decorate([ $.$mol_mem() - ], $mol_checker.prototype, "checked", null); + ], $mol_check.prototype, "checked", null); __decorate([ $.$mol_mem() - ], $mol_checker.prototype, "labeler", null); - $.$mol_checker = $mol_checker; + ], $mol_check.prototype, "Label", null); + $.$mol_check = $mol_check; })($ || ($ = {})); -//checker.view.tree.js.map +//check.view.tree.js.map ; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; @@ -1511,21 +1852,20 @@ var $; (function ($) { var $mol; (function ($mol) { - var $mol_checker = (function (_super) { - __extends($mol_checker, _super); - function $mol_checker() { + var $mol_check = (function (_super) { + __extends($mol_check, _super); + function $mol_check() { return _super.apply(this, arguments) || this; } - $mol_checker.prototype.eventClick = function (next) { + $mol_check.prototype.event_click = function (next) { this.checked(!this.checked()); - next.preventDefault(); }; - return $mol_checker; - }($.$mol_checker)); - $mol.$mol_checker = $mol_checker; + return $mol_check; + }($.$mol_check)); + $mol.$mol_check = $mol_check; })($mol = $.$mol || ($.$mol = {})); })($ || ($ = {})); -//checker.view.js.map +//check.view.js.map ; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; @@ -1572,6 +1912,14 @@ var __extends = (this && this.__extends) || function (d, b) { function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; +}; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -1580,52 +1928,44 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, }; var $; (function ($) { - var $mol_scroller = (function (_super) { - __extends($mol_scroller, _super); - function $mol_scroller() { + var $mol_scroll = (function (_super) { + __extends($mol_scroll, _super); + function $mol_scroll() { return _super.apply(this, arguments) || this; } - $mol_scroller.prototype.heightMinimal = function () { + $mol_scroll.prototype.minimal_height = function () { return 0; }; - $mol_scroller.prototype.scrollTop = function (next) { - return (next !== void 0) ? next : 0; + $mol_scroll.prototype.scroll_top = function (val) { + return (val !== void 0) ? val : 0; }; - $mol_scroller.prototype.scrollLeft = function (next) { - return (next !== void 0) ? next : 0; + $mol_scroll.prototype.scroll_left = function (val) { + return (val !== void 0) ? val : 0; }; - $mol_scroller.prototype.field = function () { - var _this = this; - return $.$mol_merge_dict(_super.prototype.field.call(this), { - "scrollTop": function (next) { return _this.scrollTop(next); }, - "scrollLeft": function (next) { return _this.scrollLeft(next); }, - }); + $mol_scroll.prototype.field = function () { + return (__assign({}, _super.prototype.field.call(this), { "scrollTop": this.scroll_top(), "scrollLeft": this.scroll_left() })); }; - $mol_scroller.prototype.eventScroll = function (next) { - return (next !== void 0) ? next : null; + $mol_scroll.prototype.event_scroll = function (event) { + return (event !== void 0) ? event : null; }; - $mol_scroller.prototype.event = function () { + $mol_scroll.prototype.event = function () { var _this = this; - return $.$mol_merge_dict(_super.prototype.event.call(this), { - "scroll": function (next) { return _this.eventScroll(next); }, - "overflow": function (next) { return _this.eventScroll(next); }, - "underflow": function (next) { return _this.eventScroll(next); }, - }); + return (__assign({}, _super.prototype.event.call(this), { "scroll": function (event) { return _this.event_scroll(event); }, "overflow": function (event) { return _this.event_scroll(event); }, "underflow": function (event) { return _this.event_scroll(event); } })); }; - return $mol_scroller; - }($.$mol_viewer)); + return $mol_scroll; + }($.$mol_view)); __decorate([ $.$mol_mem() - ], $mol_scroller.prototype, "scrollTop", null); + ], $mol_scroll.prototype, "scroll_top", null); __decorate([ $.$mol_mem() - ], $mol_scroller.prototype, "scrollLeft", null); + ], $mol_scroll.prototype, "scroll_left", null); __decorate([ $.$mol_mem() - ], $mol_scroller.prototype, "eventScroll", null); - $.$mol_scroller = $mol_scroller; + ], $mol_scroll.prototype, "event_scroll", null); + $.$mol_scroll = $mol_scroll; })($ || ($ = {})); -//scroller.view.tree.js.map +//scroll.view.tree.js.map ; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; @@ -1640,41 +1980,42 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, }; var $; (function ($) { - $.$mol_viewer_context.$mol_scroller_scrollTop = function () { return 0; }; - $.$mol_viewer_context.$mol_scroller_moving = function () { return false; }; + $.$mol_view_context.$mol_scroll_scroll_top = function () { return 0; }; + $.$mol_view_context.$mol_scroll_scroll_left = function () { return 0; }; + $.$mol_view_context.$mol_scroll_moving = function () { return false; }; })($ || ($ = {})); (function ($) { var $mol; (function ($mol) { - var $mol_scroller = (function (_super) { - __extends($mol_scroller, _super); - function $mol_scroller() { + var $mol_scroll = (function (_super) { + __extends($mol_scroll, _super); + function $mol_scroll() { return _super.apply(this, arguments) || this; } - $mol_scroller.prototype.scrollTop = function (next) { - return $.$mol_state_session.value(this + ".scrollTop()", next) || 0; + $mol_scroll.prototype.scroll_top = function (next) { + return $.$mol_state_session.value(this + ".scroll_top()", next) || 0; }; - $mol_scroller.prototype.scrollLeft = function (next) { - return $.$mol_state_session.value(this + ".scrollLeft()", next) || 0; + $mol_scroll.prototype.scroll_left = function (next) { + return $.$mol_state_session.value(this + ".scroll_left()", next) || 0; }; - $mol_scroller.prototype.scrollBottom = function (next) { + $mol_scroll.prototype.scroll_bottom = function (next) { return next || 0; }; - $mol_scroller.prototype.scrollRight = function (next) { + $mol_scroll.prototype.scroll_right = function (next) { return next || 0; }; - $mol_scroller.prototype.eventScroll = function (next) { + $mol_scroll.prototype.event_scroll = function (next) { var _this = this; this.moving(true); new $.$mol_defer(function () { - var el = _this.DOMNode(); - _this.scrollTop(Math.max(0, el.scrollTop)); - _this.scrollLeft(Math.max(0, el.scrollLeft)); - _this.scrollBottom(Math.max(0, el.scrollHeight - el.scrollTop - el.offsetHeight)); - _this.scrollRight(Math.max(0, el.scrollWidth - el.scrollLeft - el.offsetWidth)); + var el = _this.dom_node(); + _this.scroll_top(Math.max(0, el.scrollTop)); + _this.scroll_left(Math.max(0, el.scrollLeft)); + _this.scroll_bottom(Math.max(0, el.scrollHeight - el.scrollTop - el.offsetHeight)); + _this.scroll_right(Math.max(0, el.scrollWidth - el.scrollLeft - el.offsetWidth)); }); }; - $mol_scroller.prototype.moving = function (next) { + $mol_scroll.prototype.moving = function (next) { var _this = this; if (next) { setTimeout(function () { @@ -1683,47 +2024,43 @@ var $; } return next || false; }; - $mol_scroller.prototype.contextSub = function () { + $mol_scroll.prototype.context_sub = function () { var _this = this; - var subContext = Object.create(this.context()); - subContext.$mol_viewer_heightLimit = function () { return _this.context().$mol_viewer_heightLimit() + _this.scrollTop(); }; - subContext.$mol_scroller_scrollTop = function () { return _this.scrollTop(); }; - subContext.$mol_scroller_moving = function () { return _this.moving(); }; + var context = this.context(); + var subContext = Object.create(context); + subContext.$mol_view_visible_height = function () { + var sizeWin = $.$mol_window.size(); + var limit = context.$mol_view_visible_height(); + return _this.scroll_top() + Math.min(sizeWin.height, limit); + }; + subContext.$mol_view_visible_width = function () { + var sizeWin = $.$mol_window.size(); + var limit = context.$mol_view_visible_width(); + return _this.scroll_left() + Math.min(sizeWin.width, limit); + }; + subContext.$mol_scroll_scroll_top = function () { return _this.scroll_top(); }; + subContext.$mol_scroll_scroll_left = function () { return _this.scroll_left(); }; + subContext.$mol_scroll_moving = function () { return _this.moving(); }; return subContext; }; - $mol_scroller.prototype.shadowStyle = function () { - var shadows = []; - if (this.scrollTop() > 0) - shadows.push('inset 0 6px 6px -6px rgba( 0 , 0 , 0 , .25 )'); - if (this.scrollLeft() > 0) - shadows.push('inset 6px 0 6px -6px rgba( 0 , 0 , 0 , .25 )'); - if (this.scrollBottom() > 0) - shadows.push('inset 0 -6px 6px -6px rgba( 0 , 0 , 0 , .25 )'); - if (this.scrollRight() > 0) - shadows.push('inset -6px 0 6px -6px rgba( 0 , 0 , 0 , .25 )'); - return shadows.join(' , '); - }; - return $mol_scroller; - }($.$mol_scroller)); + return $mol_scroll; + }($.$mol_scroll)); __decorate([ $.$mol_mem() - ], $mol_scroller.prototype, "scrollBottom", null); + ], $mol_scroll.prototype, "scroll_bottom", null); __decorate([ $.$mol_mem() - ], $mol_scroller.prototype, "scrollRight", null); + ], $mol_scroll.prototype, "scroll_right", null); __decorate([ $.$mol_mem() - ], $mol_scroller.prototype, "moving", null); + ], $mol_scroll.prototype, "moving", null); __decorate([ $.$mol_mem() - ], $mol_scroller.prototype, "contextSub", null); - __decorate([ - $.$mol_mem() - ], $mol_scroller.prototype, "shadowStyle", null); - $mol.$mol_scroller = $mol_scroller; + ], $mol_scroll.prototype, "context_sub", null); + $mol.$mol_scroll = $mol_scroll; })($mol = $.$mol || ($.$mol = {})); })($ || ($ = {})); -//scroller.view.js.map +//scroll.view.js.map ; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; @@ -1987,33 +2324,35 @@ var __extends = (this && this.__extends) || function (d, b) { function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; +}; var $; (function ($) { - var $mol_lister = (function (_super) { - __extends($mol_lister, _super); - function $mol_lister() { + var $mol_list = (function (_super) { + __extends($mol_list, _super); + function $mol_list() { return _super.apply(this, arguments) || this; } - $mol_lister.prototype.minHeightStyle = function () { - return ""; + $mol_list.prototype.style = function () { + return (__assign({}, _super.prototype.style.call(this), { "minHeight": this.minimal_height() })); }; - $mol_lister.prototype.field = function () { - var _this = this; - return $.$mol_merge_dict(_super.prototype.field.call(this), { - "style.minHeight": function () { return _this.minHeightStyle(); }, - }); - }; - $mol_lister.prototype.rows = function () { + $mol_list.prototype.rows = function () { return []; }; - $mol_lister.prototype.childs = function () { + $mol_list.prototype.sub = function () { return this.rows(); }; - return $mol_lister; - }($.$mol_viewer)); - $.$mol_lister = $mol_lister; + return $mol_list; + }($.$mol_view)); + $.$mol_list = $mol_list; })($ || ($ = {})); -//lister.view.tree.js.map +//list.view.tree.js.map ; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; @@ -2030,82 +2369,82 @@ var $; (function ($) { var $mol; (function ($mol) { - var $mol_lister = (function (_super) { - __extends($mol_lister, _super); - function $mol_lister() { + var $mol_list = (function (_super) { + __extends($mol_list, _super); + function $mol_list() { return _super.apply(this, arguments) || this; } - $mol_lister.prototype.rowOffsets = function () { - var childs = this.childs(); - if (!childs) + $mol_list.prototype.row_offsets = function () { + var sub = this.sub(); + if (!sub) return null; - var heightLimit = this.contextSub().$mol_viewer_heightLimit(); + var heightLimit = this.context().$mol_view_visible_height(); var offset = 0; var next = []; - for (var _i = 0, childs_1 = childs; _i < childs_1.length; _i++) { - var child = childs_1[_i]; + for (var _i = 0, sub_1 = sub; _i < sub_1.length; _i++) { + var child = sub_1[_i]; next.push(offset); - if (child instanceof $.$mol_viewer) { - offset += child.heightMinimal(); + if (child instanceof $.$mol_view) { + offset += child.minimal_height(); } if (offset > heightLimit) break; } return next; }; - $mol_lister.prototype.rowContext = function (index) { + $mol_list.prototype.row_context = function (index) { var _this = this; - var context = this.contextSub(); + var context = this.context(); var next = Object.create(context); - next.$mol_viewer_heightLimit = function () { return context.$mol_viewer_heightLimit() - _this.rowOffsets()[index]; }; + next.$mol_view_visible_height = function () { + var limit = context.$mol_view_visible_height(); + return limit - _this.row_offsets()[index]; + }; return next; }; - $mol_lister.prototype.childsVisible = function () { - var childs = this.childs(); - if (!childs) - return childs; - var limit = this.rowOffsets().length; + $mol_list.prototype.sub_visible = function () { + var sub = this.sub(); + if (!sub) + return sub; + var limit = this.row_offsets().length; var next = []; for (var i = 0; i < limit; ++i) { - var child = childs[i]; + var child = sub[i]; if (child == null) continue; - if (child instanceof $.$mol_viewer) { - child.context(this.rowContext(i)); + if (child instanceof $.$mol_view) { + child.context(this.row_context(i)); } next.push(child); } return next; }; - $mol_lister.prototype.heightMinimal = function () { + $mol_list.prototype.minimal_height = function () { var height = 0; - var childs = this.childs(); - if (childs) - childs.forEach(function (child) { - if (child instanceof $.$mol_viewer) { - height += child.heightMinimal(); + var sub = this.sub(); + if (sub) + sub.forEach(function (child) { + if (child instanceof $.$mol_view) { + height += child.minimal_height(); } }); return height; }; - $mol_lister.prototype.minHeightStyle = function () { - return this.heightMinimal() + 'px'; - }; - return $mol_lister; - }($.$mol_lister)); + return $mol_list; + }($.$mol_list)); __decorate([ $.$mol_mem() - ], $mol_lister.prototype, "rowOffsets", null); + ], $mol_list.prototype, "row_offsets", null); __decorate([ $.$mol_mem_key() - ], $mol_lister.prototype, "rowContext", null); + ], $mol_list.prototype, "row_context", null); __decorate([ $.$mol_mem() - ], $mol_lister.prototype, "childsVisible", null); - $mol.$mol_lister = $mol_lister; + ], $mol_list.prototype, "sub_visible", null); + $mol.$mol_list = $mol_list; })($mol = $.$mol || ($.$mol = {})); })($ || ($ = {})); -//lister.view.js.map +//list.view.js.map ; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; @@ -2114,22 +2453,30 @@ var __extends = (this && this.__extends) || function (d, b) { }; var $; (function ($) { - var $mol_barer = (function (_super) { - __extends($mol_barer, _super); - function $mol_barer() { + var $mol_bar = (function (_super) { + __extends($mol_bar, _super); + function $mol_bar() { return _super.apply(this, arguments) || this; } - return $mol_barer; - }($.$mol_viewer)); - $.$mol_barer = $mol_barer; + return $mol_bar; + }($.$mol_view)); + $.$mol_bar = $mol_bar; })($ || ($ = {})); -//barer.view.tree.js.map +//bar.view.tree.js.map ; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; +}; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -2144,346 +2491,344 @@ var $; return _super.apply(this, arguments) || this; } $mol_app_todomvc.prototype.title = function () { - return $.$mol_locale.text(this.localizationContexts(), "title"); + return $.$mol_locale.text(this.locale_contexts(), "title"); }; - $mol_app_todomvc.prototype.titler = function (next) { + $mol_app_todomvc.prototype.Title = function () { var _this = this; - return new $.$mol_viewer().setup(function (obj) { - obj.heightMinimal = function () { return 142; }; - obj.childs = function () { return [].concat(_this.title()); }; + return new $.$mol_view().setup(function (obj) { + obj.minimal_height = function () { return 142; }; + obj.sub = function () { return [].concat(_this.title()); }; }); }; - $mol_app_todomvc.prototype.allCompleterEnabled = function () { + $mol_app_todomvc.prototype.head_complete_enabled = function () { return false; }; - $mol_app_todomvc.prototype.allCompleted = function (next) { - return (next !== void 0) ? next : false; + $mol_app_todomvc.prototype.completed_all = function (val) { + return (val !== void 0) ? val : false; }; - $mol_app_todomvc.prototype.allCompleter = function (next) { + $mol_app_todomvc.prototype.Head_complete = function () { var _this = this; - return new $.$mol_checker().setup(function (obj) { - obj.enabled = function () { return _this.allCompleterEnabled(); }; - obj.checked = function (next) { return _this.allCompleted(next); }; - obj.childs = function () { return [].concat("❯"); }; + return new $.$mol_check().setup(function (obj) { + obj.enabled = function () { return _this.head_complete_enabled(); }; + obj.checked = function (val) { return _this.completed_all(val); }; + obj.sub = function () { return [].concat("❯"); }; }); }; - $mol_app_todomvc.prototype.taskNewTitle = function (next) { - return (next !== void 0) ? next : ""; + $mol_app_todomvc.prototype.task_title_new = function (val) { + return (val !== void 0) ? val : ""; }; - $mol_app_todomvc.prototype.eventAdd = function (next) { - return (next !== void 0) ? next : null; + $mol_app_todomvc.prototype.event_add = function (event) { + return (event !== void 0) ? event : null; }; - $mol_app_todomvc.prototype.adder = function (next) { + $mol_app_todomvc.prototype.Add = function () { var _this = this; - return new $.$mol_app_todomvc_adder().setup(function (obj) { - obj.value = function (next) { return _this.taskNewTitle(next); }; - obj.eventDone = function (next) { return _this.eventAdd(next); }; + return new $.$mol_app_todomvc_add().setup(function (obj) { + obj.value = function (val) { return _this.task_title_new(val); }; + obj.event_done = function (event) { return _this.event_add(event); }; }); }; - $mol_app_todomvc.prototype.headerContent = function () { - return [].concat(this.allCompleter(), this.adder()); + $mol_app_todomvc.prototype.Head_content = function () { + return [].concat(this.Head_complete(), this.Add()); }; - $mol_app_todomvc.prototype.header = function (next) { + $mol_app_todomvc.prototype.Head = function () { var _this = this; - return new $.$mol_viewer().setup(function (obj) { - obj.heightMinimal = function () { return 64; }; - obj.childs = function () { return _this.headerContent(); }; + return new $.$mol_view().setup(function (obj) { + obj.minimal_height = function () { return 64; }; + obj.sub = function () { return _this.Head_content(); }; }); }; - $mol_app_todomvc.prototype.taskers = function () { + $mol_app_todomvc.prototype.task_rows = function () { return []; }; - $mol_app_todomvc.prototype.lister = function (next) { + $mol_app_todomvc.prototype.List = function () { var _this = this; - return new $.$mol_lister().setup(function (obj) { - obj.rows = function () { return _this.taskers(); }; + return new $.$mol_list().setup(function (obj) { + obj.rows = function () { return _this.task_rows(); }; }); }; - $mol_app_todomvc.prototype.pendingMessage = function () { - return $.$mol_locale.text(this.localizationContexts(), "pendingMessage"); + $mol_app_todomvc.prototype.pending_message = function () { + return $.$mol_locale.text(this.locale_contexts(), "pending_message"); }; - $mol_app_todomvc.prototype.pendinger = function (next) { + $mol_app_todomvc.prototype.Pending = function () { var _this = this; - return new $.$mol_viewer().setup(function (obj) { - obj.childs = function () { return [].concat(_this.pendingMessage()); }; + return new $.$mol_view().setup(function (obj) { + obj.sub = function () { return [].concat(_this.pending_message()); }; }); }; - $mol_app_todomvc.prototype.filterAllLabel = function () { - return $.$mol_locale.text(this.localizationContexts(), "filterAllLabel"); + $mol_app_todomvc.prototype.filter_all_label = function () { + return $.$mol_locale.text(this.locale_contexts(), "filter_all_label"); }; - $mol_app_todomvc.prototype.filterAll = function (next) { + $mol_app_todomvc.prototype.Filter_all = function () { var _this = this; - return new $.$mol_linker().setup(function (obj) { - obj.childs = function () { return [].concat(_this.filterAllLabel()); }; + return new $.$mol_link().setup(function (obj) { + obj.sub = function () { return [].concat(_this.filter_all_label()); }; obj.arg = function () { return ({ - "completed": function () { return null; }, + "completed": null, }); }; }); }; - $mol_app_todomvc.prototype.filterActiveLabel = function () { - return $.$mol_locale.text(this.localizationContexts(), "filterActiveLabel"); + $mol_app_todomvc.prototype.filter_active_label = function () { + return $.$mol_locale.text(this.locale_contexts(), "filter_active_label"); }; - $mol_app_todomvc.prototype.filterActive = function (next) { + $mol_app_todomvc.prototype.Filter_active = function () { var _this = this; - return new $.$mol_linker().setup(function (obj) { - obj.childs = function () { return [].concat(_this.filterActiveLabel()); }; + return new $.$mol_link().setup(function (obj) { + obj.sub = function () { return [].concat(_this.filter_active_label()); }; obj.arg = function () { return ({ - "completed": function () { return false; }, + "completed": false, }); }; }); }; - $mol_app_todomvc.prototype.filterCompletedLabel = function () { - return $.$mol_locale.text(this.localizationContexts(), "filterCompletedLabel"); + $mol_app_todomvc.prototype.filter_completed_label = function () { + return $.$mol_locale.text(this.locale_contexts(), "filter_completed_label"); }; - $mol_app_todomvc.prototype.filterCompleted = function (next) { + $mol_app_todomvc.prototype.Filter_completed = function () { var _this = this; - return new $.$mol_linker().setup(function (obj) { - obj.childs = function () { return [].concat(_this.filterCompletedLabel()); }; + return new $.$mol_link().setup(function (obj) { + obj.sub = function () { return [].concat(_this.filter_completed_label()); }; obj.arg = function () { return ({ - "completed": function () { return true; }, + "completed": true, }); }; }); }; $mol_app_todomvc.prototype.filterOptions = function () { - return [].concat(this.filterAll(), this.filterActive(), this.filterCompleted()); + return [].concat(this.Filter_all(), this.Filter_active(), this.Filter_completed()); }; - $mol_app_todomvc.prototype.filter = function (next) { + $mol_app_todomvc.prototype.Filter = function () { var _this = this; - return new $.$mol_barer().setup(function (obj) { - obj.childs = function () { return _this.filterOptions(); }; + return new $.$mol_bar().setup(function (obj) { + obj.sub = function () { return _this.filterOptions(); }; }); }; - $mol_app_todomvc.prototype.sanitizerEnabled = function () { + $mol_app_todomvc.prototype.sanitize_enabled = function () { return true; }; - $mol_app_todomvc.prototype.eventSanitize = function () { - return null; + $mol_app_todomvc.prototype.event_sanitize = function (event) { + return (event !== void 0) ? event : null; }; - $mol_app_todomvc.prototype.sanitizerLabel = function () { - return $.$mol_locale.text(this.localizationContexts(), "sanitizerLabel"); + $mol_app_todomvc.prototype.sanitize_label = function () { + return $.$mol_locale.text(this.locale_contexts(), "sanitize_label"); }; - $mol_app_todomvc.prototype.sanitizer = function (next) { + $mol_app_todomvc.prototype.Sanitize = function () { var _this = this; - return new $.$mol_clicker_minor().setup(function (obj) { - obj.enabled = function () { return _this.sanitizerEnabled(); }; - obj.eventClick = function () { return _this.eventSanitize(); }; - obj.childs = function () { return [].concat(_this.sanitizerLabel()); }; + return new $.$mol_button_minor().setup(function (obj) { + obj.enabled = function () { return _this.sanitize_enabled(); }; + obj.event_click = function (event) { return _this.event_sanitize(event); }; + obj.sub = function () { return [].concat(_this.sanitize_label()); }; }); }; - $mol_app_todomvc.prototype.footerContent = function () { - return [].concat(this.pendinger(), this.filter(), this.sanitizer()); + $mol_app_todomvc.prototype.foot_content = function () { + return [].concat(this.Pending(), this.Filter(), this.Sanitize()); }; - $mol_app_todomvc.prototype.footer = function (next) { + $mol_app_todomvc.prototype.Foot = function () { var _this = this; - return new $.$mol_viewer().setup(function (obj) { - obj.childs = function () { return _this.footerContent(); }; + return new $.$mol_view().setup(function (obj) { + obj.sub = function () { return _this.foot_content(); }; }); }; $mol_app_todomvc.prototype.panels = function () { - return [].concat(this.header(), this.lister(), this.footer()); + return [].concat(this.Head(), this.List(), this.Foot()); }; - $mol_app_todomvc.prototype.paneler = function (next) { + $mol_app_todomvc.prototype.Panel = function () { var _this = this; - return new $.$mol_lister().setup(function (obj) { + return new $.$mol_list().setup(function (obj) { obj.rows = function () { return _this.panels(); }; }); }; - $mol_app_todomvc.prototype.pager = function (next) { + $mol_app_todomvc.prototype.Page = function () { var _this = this; - return new $.$mol_lister().setup(function (obj) { - obj.childs = function () { return [].concat(_this.titler(), _this.paneler()); }; + return new $.$mol_list().setup(function (obj) { + obj.sub = function () { return [].concat(_this.Title(), _this.Panel()); }; }); }; - $mol_app_todomvc.prototype.childs = function () { - return [].concat(this.pager()); + $mol_app_todomvc.prototype.sub = function () { + return [].concat(this.Page()); }; - $mol_app_todomvc.prototype.taskCompleted = function (key, next) { - return (next !== void 0) ? next : false; + $mol_app_todomvc.prototype.task_completed = function (id, val) { + return (val !== void 0) ? val : false; }; - $mol_app_todomvc.prototype.taskTitle = function (key, next) { - return (next !== void 0) ? next : ""; + $mol_app_todomvc.prototype.task_title = function (id, val) { + return (val !== void 0) ? val : ""; }; - $mol_app_todomvc.prototype.eventTaskDrop = function (key, next) { - return (next !== void 0) ? next : null; + $mol_app_todomvc.prototype.event_task_drop = function (id, event) { + return (event !== void 0) ? event : null; }; - $mol_app_todomvc.prototype.tasker = function (key, next) { + $mol_app_todomvc.prototype.Task_row = function (id) { var _this = this; - return new $.$mol_app_todomvc_tasker().setup(function (obj) { - obj.completed = function (next) { return _this.taskCompleted(key, next); }; - obj.title = function (next) { return _this.taskTitle(key, next); }; - obj.eventDrop = function (next) { return _this.eventTaskDrop(key, next); }; + return new $.$mol_app_todomvc_task_row().setup(function (obj) { + obj.completed = function (val) { return _this.task_completed(id, val); }; + obj.title = function (val) { return _this.task_title(id, val); }; + obj.event_drop = function (event) { return _this.event_task_drop(id, event); }; }); }; return $mol_app_todomvc; - }($.$mol_scroller)); + }($.$mol_scroll)); __decorate([ $.$mol_mem() - ], $mol_app_todomvc.prototype, "titler", null); + ], $mol_app_todomvc.prototype, "Title", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc.prototype, "allCompleted", null); + ], $mol_app_todomvc.prototype, "completed_all", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc.prototype, "allCompleter", null); + ], $mol_app_todomvc.prototype, "Head_complete", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc.prototype, "taskNewTitle", null); + ], $mol_app_todomvc.prototype, "task_title_new", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc.prototype, "eventAdd", null); + ], $mol_app_todomvc.prototype, "event_add", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc.prototype, "adder", null); + ], $mol_app_todomvc.prototype, "Add", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc.prototype, "header", null); + ], $mol_app_todomvc.prototype, "Head", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc.prototype, "lister", null); + ], $mol_app_todomvc.prototype, "List", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc.prototype, "pendinger", null); + ], $mol_app_todomvc.prototype, "Pending", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc.prototype, "filterAll", null); + ], $mol_app_todomvc.prototype, "Filter_all", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc.prototype, "filterActive", null); + ], $mol_app_todomvc.prototype, "Filter_active", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc.prototype, "filterCompleted", null); + ], $mol_app_todomvc.prototype, "Filter_completed", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc.prototype, "filter", null); + ], $mol_app_todomvc.prototype, "Filter", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc.prototype, "sanitizer", null); + ], $mol_app_todomvc.prototype, "event_sanitize", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc.prototype, "footer", null); + ], $mol_app_todomvc.prototype, "Sanitize", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc.prototype, "paneler", null); + ], $mol_app_todomvc.prototype, "Foot", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc.prototype, "pager", null); + ], $mol_app_todomvc.prototype, "Panel", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "Page", null); __decorate([ $.$mol_mem_key() - ], $mol_app_todomvc.prototype, "taskCompleted", null); + ], $mol_app_todomvc.prototype, "task_completed", null); __decorate([ $.$mol_mem_key() - ], $mol_app_todomvc.prototype, "taskTitle", null); + ], $mol_app_todomvc.prototype, "task_title", null); __decorate([ $.$mol_mem_key() - ], $mol_app_todomvc.prototype, "eventTaskDrop", null); + ], $mol_app_todomvc.prototype, "event_task_drop", null); __decorate([ $.$mol_mem_key() - ], $mol_app_todomvc.prototype, "tasker", null); + ], $mol_app_todomvc.prototype, "Task_row", null); $.$mol_app_todomvc = $mol_app_todomvc; })($ || ($ = {})); (function ($) { - var $mol_app_todomvc_adder = (function (_super) { - __extends($mol_app_todomvc_adder, _super); - function $mol_app_todomvc_adder() { + var $mol_app_todomvc_add = (function (_super) { + __extends($mol_app_todomvc_add, _super); + function $mol_app_todomvc_add() { return _super.apply(this, arguments) || this; } - $mol_app_todomvc_adder.prototype.hint = function () { - return $.$mol_locale.text(this.localizationContexts(), "hint"); + $mol_app_todomvc_add.prototype.hint = function () { + return $.$mol_locale.text(this.locale_contexts(), "hint"); }; - $mol_app_todomvc_adder.prototype.eventPress = function (next) { - return (next !== void 0) ? next : null; + $mol_app_todomvc_add.prototype.event_press = function (event) { + return (event !== void 0) ? event : null; }; - $mol_app_todomvc_adder.prototype.event = function () { + $mol_app_todomvc_add.prototype.event = function () { var _this = this; - return $.$mol_merge_dict(_super.prototype.event.call(this), { - "keyup": function (next) { return _this.eventPress(next); }, - }); + return (__assign({}, _super.prototype.event.call(this), { "keyup": function (event) { return _this.event_press(event); } })); }; - $mol_app_todomvc_adder.prototype.eventDone = function (next) { - return (next !== void 0) ? next : null; + $mol_app_todomvc_add.prototype.event_done = function (event) { + return (event !== void 0) ? event : null; }; - return $mol_app_todomvc_adder; - }($.$mol_stringer)); + return $mol_app_todomvc_add; + }($.$mol_string)); __decorate([ $.$mol_mem() - ], $mol_app_todomvc_adder.prototype, "eventPress", null); + ], $mol_app_todomvc_add.prototype, "event_press", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc_adder.prototype, "eventDone", null); - $.$mol_app_todomvc_adder = $mol_app_todomvc_adder; + ], $mol_app_todomvc_add.prototype, "event_done", null); + $.$mol_app_todomvc_add = $mol_app_todomvc_add; })($ || ($ = {})); (function ($) { - var $mol_app_todomvc_tasker = (function (_super) { - __extends($mol_app_todomvc_tasker, _super); - function $mol_app_todomvc_tasker() { + var $mol_app_todomvc_task_row = (function (_super) { + __extends($mol_app_todomvc_task_row, _super); + function $mol_app_todomvc_task_row() { return _super.apply(this, arguments) || this; } - $mol_app_todomvc_tasker.prototype.heightMinimal = function () { + $mol_app_todomvc_task_row.prototype.minimal_height = function () { return 64; }; - $mol_app_todomvc_tasker.prototype.completed = function (next) { - return (next !== void 0) ? next : false; + $mol_app_todomvc_task_row.prototype.completed = function (val) { + return (val !== void 0) ? val : false; }; - $mol_app_todomvc_tasker.prototype.completer = function (next) { + $mol_app_todomvc_task_row.prototype.Complete = function () { var _this = this; - return new $.$mol_checker().setup(function (obj) { - obj.checked = function (next) { return _this.completed(next); }; - obj.childs = function () { return []; }; + return new $.$mol_check().setup(function (obj) { + obj.checked = function (val) { return _this.completed(val); }; + obj.sub = function () { return []; }; }); }; - $mol_app_todomvc_tasker.prototype.titleHint = function () { - return $.$mol_locale.text(this.localizationContexts(), "titleHint"); + $mol_app_todomvc_task_row.prototype.title_hint = function () { + return $.$mol_locale.text(this.locale_contexts(), "title_hint"); }; - $mol_app_todomvc_tasker.prototype.title = function (next) { - return (next !== void 0) ? next : ""; + $mol_app_todomvc_task_row.prototype.title = function (val) { + return (val !== void 0) ? val : ""; }; - $mol_app_todomvc_tasker.prototype.titler = function (next) { + $mol_app_todomvc_task_row.prototype.Title = function () { var _this = this; - return new $.$mol_stringer().setup(function (obj) { - obj.hint = function () { return _this.titleHint(); }; - obj.value = function (next) { return _this.title(next); }; + return new $.$mol_string().setup(function (obj) { + obj.hint = function () { return _this.title_hint(); }; + obj.value = function (val) { return _this.title(val); }; }); }; - $mol_app_todomvc_tasker.prototype.eventDrop = function (next) { - return (next !== void 0) ? next : null; + $mol_app_todomvc_task_row.prototype.event_drop = function (event) { + return (event !== void 0) ? event : null; }; - $mol_app_todomvc_tasker.prototype.dropper = function (next) { + $mol_app_todomvc_task_row.prototype.Drop = function () { var _this = this; - return new $.$mol_clicker().setup(function (obj) { - obj.childs = function () { return [].concat("✖"); }; - obj.eventClick = function (next) { return _this.eventDrop(next); }; + return new $.$mol_button().setup(function (obj) { + obj.sub = function () { return [].concat("✖"); }; + obj.event_click = function (event) { return _this.event_drop(event); }; }); }; - $mol_app_todomvc_tasker.prototype.childs = function () { - return [].concat(this.completer(), this.titler(), this.dropper()); + $mol_app_todomvc_task_row.prototype.sub = function () { + return [].concat(this.Complete(), this.Title(), this.Drop()); }; - $mol_app_todomvc_tasker.prototype.attr = function () { - var _this = this; - return $.$mol_merge_dict(_super.prototype.attr.call(this), { - "mol_app_todomvc_tasker_completed": function () { return _this.completed(); }, - }); + $mol_app_todomvc_task_row.prototype.attr = function () { + return (__assign({}, _super.prototype.attr.call(this), { "mol_app_todomvc_task_row_completed": this.completed() })); }; - return $mol_app_todomvc_tasker; - }($.$mol_viewer)); + return $mol_app_todomvc_task_row; + }($.$mol_view)); __decorate([ $.$mol_mem() - ], $mol_app_todomvc_tasker.prototype, "completed", null); + ], $mol_app_todomvc_task_row.prototype, "completed", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc_tasker.prototype, "completer", null); + ], $mol_app_todomvc_task_row.prototype, "Complete", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc_tasker.prototype, "title", null); + ], $mol_app_todomvc_task_row.prototype, "title", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc_tasker.prototype, "titler", null); + ], $mol_app_todomvc_task_row.prototype, "Title", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc_tasker.prototype, "eventDrop", null); + ], $mol_app_todomvc_task_row.prototype, "event_drop", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc_tasker.prototype, "dropper", null); - $.$mol_app_todomvc_tasker = $mol_app_todomvc_tasker; + ], $mol_app_todomvc_task_row.prototype, "Drop", null); + $.$mol_app_todomvc_task_row = $mol_app_todomvc_task_row; })($ || ($ = {})); //todomvc.view.tree.js.map ; @@ -2502,112 +2847,112 @@ var $; (function ($) { var $mol; (function ($mol) { - var $mol_app_todomvc_adder = (function (_super) { - __extends($mol_app_todomvc_adder, _super); - function $mol_app_todomvc_adder() { + var $mol_app_todomvc_add = (function (_super) { + __extends($mol_app_todomvc_add, _super); + function $mol_app_todomvc_add() { return _super.apply(this, arguments) || this; } - $mol_app_todomvc_adder.prototype.eventPress = function (next) { - switch (next['code'] || next.key) { - case 'Enter': return this.eventDone(next); + $mol_app_todomvc_add.prototype.event_press = function (next) { + switch (next.keyCode) { + case $.$mol_keyboard_code.enter: return this.event_done(next); } }; - return $mol_app_todomvc_adder; - }($.$mol_app_todomvc_adder)); - $mol.$mol_app_todomvc_adder = $mol_app_todomvc_adder; + return $mol_app_todomvc_add; + }($.$mol_app_todomvc_add)); + $mol.$mol_app_todomvc_add = $mol_app_todomvc_add; var $mol_app_todomvc = (function (_super) { __extends($mol_app_todomvc, _super); function $mol_app_todomvc() { var _this = _super.apply(this, arguments) || this; - _this._idSeed = 0; + _this._id_seed = 0; return _this; } - $mol_app_todomvc.prototype.taskIds = function (next) { - return $.$mol_state_local.value(this.stateKey('taskIds'), next) || []; + $mol_app_todomvc.prototype.task_ids = function (next) { + return $.$mol_state_local.value(this.state_key('mol-todos'), next) || []; }; - $mol_app_todomvc.prototype.argCompleted = function () { - return $.$mol_state_arg.value(this.stateKey('completed')); + $mol_app_todomvc.prototype.arg_completed = function () { + return $.$mol_state_arg.value(this.state_key('completed')); }; - $mol_app_todomvc.prototype.groupsByCompleted = function () { + $mol_app_todomvc.prototype.groups_completed = function () { var groups = { 'true': [], 'false': [] }; - for (var _i = 0, _a = this.taskIds(); _i < _a.length; _i++) { + for (var _i = 0, _a = this.task_ids(); _i < _a.length; _i++) { var id = _a[_i]; var task = this.task(id); groups[String(task.completed)].push(id); } return groups; }; - $mol_app_todomvc.prototype.tasksFiltered = function () { - var completed = this.argCompleted(); + $mol_app_todomvc.prototype.tasks_filtered = function () { + var completed = this.arg_completed(); if (completed) { - return this.groupsByCompleted()[completed] || []; + return this.groups_completed()[completed] || []; } else { - return this.taskIds(); + return this.task_ids(); } }; - $mol_app_todomvc.prototype.allCompleted = function (next) { + $mol_app_todomvc.prototype.completed_all = function (next) { if (next === void 0) - return this.groupsByCompleted()['false'].length === 0; - for (var _i = 0, _a = this.groupsByCompleted()[String(!next)]; _i < _a.length; _i++) { + return this.groups_completed()['false'].length === 0; + for (var _i = 0, _a = this.groups_completed()[String(!next)]; _i < _a.length; _i++) { var id = _a[_i]; var task = this.task(id); this.task(id, { title: task.title, completed: next }); } return next; }; - $mol_app_todomvc.prototype.allCompleterEnabled = function () { - return this.taskIds().length > 0; + $mol_app_todomvc.prototype.head_complete_enabled = function () { + return this.task_ids().length > 0; }; - $mol_app_todomvc.prototype.pendingMessage = function () { - var count = this.groupsByCompleted()['false'].length; + $mol_app_todomvc.prototype.pending_message = function () { + var count = this.groups_completed()['false'].length; return (count === 1) ? '1 item left' : count + " items left"; }; - $mol_app_todomvc.prototype.eventAdd = function (next) { - var title = this.taskNewTitle(); + $mol_app_todomvc.prototype.event_add = function (next) { + var title = this.task_title_new(); if (!title) return; - var id = ++this._idSeed; + var id = ++this._id_seed; var task = { completed: false, title: title }; this.task(id, task); - this.taskIds(this.taskIds().concat(id)); - this.taskNewTitle(''); + this.task_ids(this.task_ids().concat(id)); + this.task_title_new(''); }; - $mol_app_todomvc.prototype.taskers = function () { + $mol_app_todomvc.prototype.task_rows = function () { var _this = this; - return this.tasksFiltered().map(function (id, index) { return _this.tasker(index); }); + return this.tasks_filtered().map(function (id, index) { return _this.Task_row(index); }); }; $mol_app_todomvc.prototype.task = function (id, next) { - var key = this.stateKey("task=" + id); + var key = this.state_key("mol-todos-" + id); if (next === void 0) return $.$mol_state_local.value(key) || { title: '', completed: false }; $.$mol_state_local.value(key, next); return next || void 0; }; - $mol_app_todomvc.prototype.taskCompleted = function (index, next) { - var id = this.tasksFiltered()[index]; + $mol_app_todomvc.prototype.task_completed = function (index, next) { + var id = this.tasks_filtered()[index]; if (next === void 0) return this.task(id).completed; this.task(id, $.$mol_merge_dict(this.task(id), { completed: next })); return next; }; - $mol_app_todomvc.prototype.taskTitle = function (index, next) { - var id = this.tasksFiltered()[index]; + $mol_app_todomvc.prototype.task_title = function (index, next) { + var id = this.tasks_filtered()[index]; if (next === void 0) return this.task(id).title; this.task(id, $.$mol_merge_dict(this.task(id), { title: next })); return next; }; - $mol_app_todomvc.prototype.eventTaskDrop = function (index, next) { - var tasks = this.tasksFiltered(); + $mol_app_todomvc.prototype.event_task_drop = function (index, next) { + var tasks = this.tasks_filtered(); var id = tasks[index]; tasks = tasks.slice(0, index).concat(tasks.slice(index + 1, tasks.length)); this.task(id, null); - this.taskIds(tasks); + this.task_ids(tasks); }; - $mol_app_todomvc.prototype.eventSanitize = function () { + $mol_app_todomvc.prototype.event_sanitize = function () { var _this = this; - this.taskIds(this.taskIds().filter(function (id) { + this.task_ids(this.task_ids().filter(function (id) { if (!_this.task(id).completed) return true; _this.task(id, null); @@ -2616,40 +2961,40 @@ var $; }; $mol_app_todomvc.prototype.panels = function () { return [ - this.header(), - this.lister(), - this.footerVisible() ? this.footer() : null, + this.Head(), + this.List(), + this.foot_visible() ? this.Foot() : null, ]; }; - $mol_app_todomvc.prototype.footerVisible = function () { - return this.taskIds().length > 0; + $mol_app_todomvc.prototype.foot_visible = function () { + return this.task_ids().length > 0; }; - $mol_app_todomvc.prototype.sanitizerEnabled = function () { - return this.groupsByCompleted()['true'].length > 0; + $mol_app_todomvc.prototype.sanitize_enabled = function () { + return this.groups_completed()['true'].length > 0; }; return $mol_app_todomvc; }($.$mol_app_todomvc)); __decorate([ $.$mol_mem() - ], $mol_app_todomvc.prototype, "groupsByCompleted", null); + ], $mol_app_todomvc.prototype, "groups_completed", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc.prototype, "tasksFiltered", null); + ], $mol_app_todomvc.prototype, "tasks_filtered", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc.prototype, "allCompleted", null); + ], $mol_app_todomvc.prototype, "completed_all", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc.prototype, "pendingMessage", null); + ], $mol_app_todomvc.prototype, "pending_message", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc.prototype, "taskers", null); + ], $mol_app_todomvc.prototype, "task_rows", null); __decorate([ $.$mol_mem_key() - ], $mol_app_todomvc.prototype, "taskCompleted", null); + ], $mol_app_todomvc.prototype, "task_completed", null); __decorate([ $.$mol_mem_key() - ], $mol_app_todomvc.prototype, "taskTitle", null); + ], $mol_app_todomvc.prototype, "task_title", null); $mol.$mol_app_todomvc = $mol_app_todomvc; })($mol = $.$mol || ($.$mol = {})); })($ || ($ = {})); diff --git a/examples/mol/-/web.js.map b/examples/mol/-/web.js.map index 406bc8046e..ea60d53de5 100644 --- a/examples/mol/-/web.js.map +++ b/examples/mol/-/web.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../mol.jam.js","../../../log/log.web.ts","../../../object/object.ts","../../../set/set.ts","../../../set/set_select.jam.js","../../../defer/defer.ts","../../../dict/dict.ts","../../../dict/dict_select.jam.js","../../../state/stack/stack.ts","../../../atom/atom.ts","../../../mem/mem.ts","../../../window/window.web.ts","../../../viewer/viewer.ts","../../../viewer/viewer.web.ts","../../../merge/dict/dict.ts","../../../stringer/-view.tree/stringer.view.tree.ts","../../../stringer/stringer.view.ts","../../../clicker/-view.tree/clicker.view.tree.ts","../../../clicker/clicker.view.ts","../../../clicker/-view.tree/clicker_types.view.tree.ts","../../../state/arg/arg.web.ts","../../../linker/-view.tree/linker.view.tree.ts","../../../linker/linker.view.ts","../../../checker/-view.tree/checker.view.tree.ts","../../../checker/checker.view.ts","../../../state/session/session.ts","../../../scroller/-view.tree/scroller.view.tree.ts","../../../scroller/scroller.view.ts","../../../state/local/local.ts","../../../state/local/local.web.ts","../../../http/request/request.ts","../../../http/request/request.web.ts","../../../http/resource/resource.ts","../../../locale/locale.ts","../../../lister/-view.tree/lister.view.tree.ts","../../../lister/lister.view.ts","../../../barer/-view.tree/barer.view.tree.ts","../-view.tree/todomvc.view.tree.ts","../todomvc.view.ts","../demo/-view.tree/demo.view.tree.ts"],"names":[],"mappings":"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","file":"web.js","sourcesContent":[null,"namespace $ {\n\t\n\texport function $mol_log( path : string , values : any[] ) {\n\t\t\n\t\tvar filter = $mol_log.filter()\n\t\tif( filter == null ) return\n\t\tif( path.indexOf( filter ) === -1 ) return\n\t\t\n\t\tvar time = new Date().toLocaleTimeString()\n\t\tconsole.log( time , path , values )\n\t}\n\t\n\texport namespace $mol_log {\n\t\t\n\t\tvar _filter : string\n\t\t\n\t\texport function filter( next? : string ) {\n\t\t\tif( next !== void 0 ) {\n\t\t\t\tif( next == null ) {\n\t\t\t\t\tsessionStorage.removeItem( '$mol_log.filter()' )\n\t\t\t\t} else {\n\t\t\t\t\tsessionStorage.setItem( '$mol_log.filter()' , next )\n\t\t\t\t}\n\t\t\t\t_filter = next\n\t\t\t}\n\t\t\t\n\t\t\tif( _filter !== void 0 ) return _filter\n\t\t\t\n\t\t\treturn _filter = sessionStorage.getItem( '$mol_log.filter()' )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\t/// Common superclass that provides base functionality.\n\texport class $mol_object {\n\t\t\n\t\tClass() {\n\t\t\treturn this.constructor as any\n\t\t}\n\t\t\n\t\tstatic toString() : string {\n\t\t\tlet self : any = this\n\t\t\treturn self[ 'name' ]\n\t\t\t\t|| self[ 'displayName' ]\n\t\t\t\t|| ( self[ 'displayName' ] = Function.prototype.toString.call( self )\n\t\t\t\t.match( /^function ([a-z0-9_$]*)/ )[ 1 ] )\n\t\t}\n\t\t\n\t\t'objectClassNames()' : string[]\n\t\t\n\t\tobjectClassNames() {\n\t\t\tif( this.hasOwnProperty( 'objectClassNames()' ) ) return this[ 'objectClassNames()' ]\n\t\t\t\n\t\t\tvar names : string[] = []\n\t\t\tvar current = this\n\t\t\t\n\t\t\twhile( current ) {\n\t\t\t\tvar name = current.constructor.toString()\n\t\t\t\tif( !name ) continue\n\t\t\t\t\n\t\t\t\tnames.push( name )\n\t\t\t\t\n\t\t\t\tcurrent = Object.getPrototypeOf( current )\n\t\t\t}\n\t\t\t\n\t\t\treturn this[ 'objectClassNames()' ] = names\n\t\t}\n\t\t\n\t\t/// Owner object.\n\t\tprivate 'objectOwner()' : Object\n\t\t\n\t\tobjectOwner( next? : Object ) {\n\t\t\tif( this[ 'objectOwner()' ] ) return this[ 'objectOwner()' ]\n\t\t\treturn this[ 'objectOwner()' ] = next\n\t\t}\n\t\t\n\t\t/// Field in owner where this object is stored.\n\t\tprivate 'objectField()' : string\n\t\t\n\t\tobjectField( next? : string ) {\n\t\t\tif( this[ 'objectField()' ] ) return this[ 'objectField()' ] || ''\n\t\t\treturn this[ 'objectField()' ] = next\n\t\t}\n\t\t\n\t\t/// JS-path to this object from global scope. Can not be redefined.\n\t\ttoString() {\n\t\t\tvar path = ''\n\t\t\t\n\t\t\tvar owner = this.objectOwner()\n\t\t\tif( owner ) path = owner.toString()\n\t\t\t\n\t\t\tvar field = this.objectField()\n\t\t\tif( field ) path += '.' + field\n\t\t\t\n\t\t\treturn path\n\t\t}\n\t\t\n\t\t/// Helper to override fields in fluent style.\n\t\tsetup( script : ( obj : this )=> void ) : this {\n\t\t\tscript( this )\n\t\t\treturn this\n\t\t}\n\t\t\n\t\t'destroyed()' = false\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next === void 0 ) return this[ 'destroyed()' ]\n\t\t\tthis[ 'destroyed()' ] = next\n\t\t\tthis.log( [ '.destroyed()' , next ] )\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tlog( values : any[] ) {\n\t\t\tif( $mol_log.filter() == null ) return\n\t\t\t$mol_log( this.toString() , values )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport declare class $mol_set< Value > {\n\t\tsize : number\n\t\t\n\t\tadd( key : Value ) : this\n\t\t\n\t\tdelete( key : Value ) : void\n\t\t\n\t\thas( key : Value ) : boolean\n\t\t\n\t\tclear() : void\n\t\t\n\t\tkeys() : Value[]\n\t\t\n\t\tvalues() : Value[]\n\t\t\n\t\tentries() : [ Value , Value ][]\n\t\t\n\t\tforEach( handler : ( key : Value , value : Value ) => void ) : void\n\t}\n\t\n\texport class $mol_set_shim< Value > implements $mol_set< Value > {\n\t\t\n\t\t_index : { [ index : string ] : Value[] } = {}\n\t\tsize = 0\n\t\t\n\t\tadd( value : Value ) {\n\t\t\tvar key = String( value )\n\t\t\t\n\t\t\tvar list = this._index[ key ]\n\t\t\tif( list ) {\n\t\t\t\tif( list.indexOf( value ) !== -1 ) return this\n\t\t\t\tlist.push( value )\n\t\t\t} else {\n\t\t\t\tlist = this._index[ key ] = [ value ]\n\t\t\t}\n\t\t\t\n\t\t\t++this.size\n\t\t\t\n\t\t\treturn this\n\t\t}\n\t\t\n\t\thas( value : Value ) {\n\t\t\tvar key = String( value )\n\t\t\t\n\t\t\tvar list = this._index[ key ]\n\t\t\tif( !list ) return false\n\t\t\t\n\t\t\treturn list.indexOf( value ) !== -1\n\t\t}\n\t\t\n\t\tdelete( value : Value ) {\n\t\t\tvar key = String( value )\n\t\t\t\n\t\t\tvar list = this._index[ key ]\n\t\t\tif( !list ) return\n\t\t\t\n\t\t\tvar index = list.indexOf( value )\n\t\t\tif( index === -1 ) return\n\t\t\t\n\t\t\tlist.splice( index , 1 )\n\t\t\t--this.size\n\t\t}\n\t\t\n\t\tforEach( handle : ( val : Value , key : Value )=> void ) {\n\t\t\tfor( var key in this._index ) {\n\t\t\t\tif( !this._index.hasOwnProperty( key ) ) continue\n\t\t\t\tthis._index[ key ].forEach( ( val , index ) => handle( val , val ) )\n\t\t\t}\n\t\t}\n\t\t\n\t\tkeys() {\n\t\t\tvar keys : Value[] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tkeys.push( key )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn keys\n\t\t}\n\t\t\n\t\tvalues() {\n\t\t\tvar values : Value[] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tvalues.push( val )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn values\n\t\t}\n\t\t\n\t\tentries() {\n\t\t\tvar entries : [ Value , Value ][] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tentries.push( [ val , key ] )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn entries\n\t\t}\n\t\t\n\t\tclear() {\n\t\t\tthis._index = {}\n\t\t\tthis.size = 0\n\t\t}\n\t\t\n\t}\n\t\n}\n",null,"namespace $ {\n\t\n\texport class $mol_defer extends $mol_object {\n\t\t\n\t\tconstructor( public run : ()=> void ) {\n\t\t\tsuper()\n\t\t\t$mol_defer.add( this )\n\t\t}\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next ) $mol_defer.drop( this )\n\t\t\treturn super.destroyed( next )\n\t\t}\n\t\t\n\t\tstatic all : $mol_defer[] = []\n\t\tstatic timer = 0\n\t\t\n\t\tstatic scheduleNative : ( handler : ()=> void ) => number = ( typeof requestAnimationFrame == 'function' )\n\t\t\t? handler => requestAnimationFrame( handler )\n\t\t\t: handler => setTimeout( handler , 16 )\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.timer ) return\n\t\t\t\n\t\t\tthis.timer = this.scheduleNative(\n\t\t\t\t()=> {\n\t\t\t\t\tthis.timer = 0\n\t\t\t\t\tthis.run()\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t\t\n\t\tstatic unschedule() {\n\t\t\tif( !this.timer ) return\n\t\t\t\n\t\t\tcancelAnimationFrame( this.timer )\n\t\t\tthis.timer = 0\n\t\t}\n\t\t\n\t\tstatic add( defer : $mol_defer ) {\n\t\t\tthis.all.push( defer )\n\t\t\tthis.schedule()\n\t\t}\n\t\t\n\t\tstatic drop( defer : $mol_defer ) {\n\t\t\tvar index = this.all.indexOf( defer )\n\t\t\tif( index >= 0 ) this.all.splice( index , 1 )\n\t\t}\n\t\t\n\t\tstatic run() {\n\t\t\tif( this.all.length === 0 ) return\n\t\t\tthis.schedule()\n\t\t\tfor( var defer : $mol_defer ; defer = this.all.pop() ; ) defer.run()\n\t\t\t//this.unschedule()\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\texport declare class $mol_dict< Key , Value > {\n\t\tsize : number\n\t\t\n\t\tget( key : Key ) : Value\n\t\t\n\t\tset( key : Key , value : Value ) : this\n\t\t\n\t\tdelete( key : Key ) : void\n\t\t\n\t\thas( key : Key ) : boolean\n\t\t\n\t\tclear() : void\n\t\t\n\t\tkeys() : Key[]\n\t\t\n\t\tvalues() : Value[]\n\t\t\n\t\tentries() : [ Key , Value ][]\n\t\t\n\t\tforEach( handler : ( value : Value , key : Key ) => void ) : void\n\t}\n\t\n\texport class $mol_dict_shim< Key , Value > implements $mol_dict< Key , Value > {\n\t\t\n\t\t_keys : { [ index : string ] : Key[] } = {}\n\t\t_values : { [ index : string ] : Value[] } = {}\n\t\tsize = 0\n\t\t\n\t\tset( key : Key , value : Value ) {\n\t\t\tvar keyStr = String( key )\n\t\t\t\n\t\t\tvar keys = this._keys[ keyStr ]\n\t\t\tif( keys ) {\n\t\t\t\tvar index = keys.indexOf( key )\n\t\t\t\tif( index === -1 ) {\n\t\t\t\t\tindex = keys.length\n\t\t\t\t\tkeys.push( key )\n\t\t\t\t\t++this.size\n\t\t\t\t}\n\t\t\t\tthis._values[ keyStr ][ index ] = value\n\t\t\t} else {\n\t\t\t\tthis._keys[ keyStr ] = [ key ]\n\t\t\t\tthis._values[ keyStr ] = [ value ]\n\t\t\t\t++this.size\n\t\t\t}\n\t\t\t\n\t\t\treturn this\n\t\t}\n\t\t\n\t\tget( key : Key ) {\n\t\t\tvar keyStr = String( key )\n\t\t\t\n\t\t\tvar list = this._keys[ keyStr ]\n\t\t\tif( !list ) return void 0\n\t\t\t\n\t\t\tvar index = list.indexOf( key )\n\t\t\tif( index === -1 ) return void 0\n\t\t\t\n\t\t\treturn this._values[ keyStr ][ index ]\n\t\t}\n\t\t\n\t\thas( key : Key ) {\n\t\t\tvar keyStr = String( key )\n\t\t\t\n\t\t\tvar list = this._keys[ keyStr ]\n\t\t\tif( !list ) return false\n\t\t\t\n\t\t\treturn list.indexOf( key ) !== -1\n\t\t}\n\t\t\n\t\tdelete( key : Key ) {\n\t\t\tvar keyStr = String( key )\n\t\t\t\n\t\t\tvar keys = this._keys[ keyStr ]\n\t\t\tif( !keys ) return\n\t\t\t\n\t\t\tvar index = keys.indexOf( key )\n\t\t\tif( index === -1 ) return\n\t\t\t\n\t\t\tkeys.splice( index , 1 )\n\t\t\tthis._values[ keyStr ].splice( index , 1 )\n\t\t\t\n\t\t\t--this.size\n\t\t}\n\t\t\n\t\tforEach( handle : ( val : Value , key : Key )=> void ) {\n\t\t\tfor( var keyStr in this._keys ) {\n\t\t\t\tif( !this._keys.hasOwnProperty( keyStr ) ) continue\n\t\t\t\tvar values = this._values[ keyStr ]\n\t\t\t\tthis._keys[ keyStr ].forEach(\n\t\t\t\t\t( key , index ) => {\n\t\t\t\t\t\thandle( values[ index ] , key )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\t\n\t\tkeys() {\n\t\t\tvar keys : Key[] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tkeys.push( key )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn keys\n\t\t}\n\t\t\n\t\tvalues() {\n\t\t\tvar values : Value[] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tvalues.push( val )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn values\n\t\t}\n\t\t\n\t\tentries() {\n\t\t\tvar entries : [ Key , Value ][] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tentries.push( [ key , val ] )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn entries\n\t\t}\n\t\t\n\t\tclear() {\n\t\t\tthis._keys = {}\n\t\t\tthis._values = {}\n\t\t\tthis.size = 0\n\t\t}\n\t\t\n\t}\n\t\n}\n",null,"namespace $ {\n\t\n\t/// Global storage of temporary state\n\texport var $mol_state_stack = new $mol_dict< string , any >()\n\t\n}\n","declare var Proxy : any\n\nnamespace $ {\n\t\n\texport enum $mol_atom_status {\n\t\tobsolete = 'obsolete' as any ,\n\t\tchecking = 'checking' as any ,\n\t\tpulling = 'pulling' as any ,\n\t\tactual = 'actual' as any ,\n\t}\n\t\n\texport class $mol_atom< Value > extends $mol_object {\n\t\t\n\t\tmasters : $mol_set< $mol_atom > = null\n\t\tslaves : $mol_set< $mol_atom > = null\n\t\t\n\t\tstatus = $mol_atom_status.obsolete\n\t\tautoFresh = true\n\t\t\n\t\thandler : ( next? : Value|Error , force? : $mol_atom_force )=> Value\n\t\thost : { [ key : string ] : any }\n\t\tfield : string\n\t\t\n\t\tconstructor(\n\t\t\thost : any ,\n\t\t\thandler : ( next? : Value|Error , force? : $mol_atom_force )=> Value ,\n\t\t\tfield = 'value()'\n\t\t) {\n\t\t\tsuper()\n\t\t\t\n\t\t\tthis.handler = handler\n\t\t\tthis.host = Object( host )\n\t\t\tthis.field = field || 'value()'\n\t\t}\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next ) {\n\t\t\t\tthis.unlink()\n\t\t\t\t\n\t\t\t\tconst host = this.host\n\t\t\t\tconst value = host[ this.field ]\n\t\t\t\tif( value instanceof $mol_object ) {\n\t\t\t\t\tif( ( value.objectOwner() === host ) && ( value.objectField() === this.field ) ) {\n\t\t\t\t\t\tvalue.destroyed( true );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\thost[ this.field ] = void null\n\t\t\t\thost[ this.field + '@' ] = void null\n\t\t\t\t\n\t\t\t\tthis[ 'destroyed()' ] = true\n\t\t\t\tthis.log( [ '.destroyed()' , true , 'atom' ] )\n\t\t\t\tthis.status = $mol_atom_status.obsolete\n\t\t\t\t\n\t\t\t\treturn true\n\t\t\t} else {\n\t\t\t\treturn this[ 'destroyed()' ]\n\t\t\t}\n\t\t}\n\t\t\n\t\tunlink() {\n\t\t\tthis.disobeyAll()\n\t\t\tthis.checkSlaves()\n\t\t}\n\t\t\n\t\ttoString() {\n\t\t\treturn `${ this.host }.${ this.field }`\n\t\t}\n\t\t\n\t\tget( force? : $mol_atom_force ) {\n\t\t\tif( this.status === $mol_atom_status.pulling ) {\n\t\t\t\tthrow new Error( `Cyclic atom dependency of ${ this }` )\n\t\t\t}\n\t\t\t\n\t\t\tthis.actualize( force )\n\t\t\t\n\t\t\tconst slave = $mol_atom.stack[0]\n\t\t\tif( slave ) this.lead( slave )\n\t\t\tif( slave ) slave.obey( this )\n\t\t\t\n\t\t\tconst value : Value = this.host[ this.field ]\n\t\t\t\n\t\t\tif( value instanceof Error ) {\n\t\t\t\tif( typeof Proxy !== 'function' ) throw value\n\t\t\t\t//if(!( value instanceof $mol_atom_wait )) throw value\n\t\t\t}\n\t\t\t\n\t\t\treturn value\n\t\t}\n\t\t\n\t\tactualize( force? : $mol_atom_force ) {\n\t\t\t\n\t\t\t//this.log([ 'actualize' ])\n\t\t\t\n\t\t\tif( !force && this.status === $mol_atom_status.actual ) return\n\t\t\t\n\t\t\tconst slave = $mol_atom.stack[0]\n\t\t\t$mol_atom.stack[0] = this\n\t\t\t\n\t\t\tif( !force && this.status === $mol_atom_status.checking ) {\n\t\t\t\t\n\t\t\t\tthis.masters.forEach(\n\t\t\t\t\tmaster => {\n\t\t\t\t\t\tif( this.status !== $mol_atom_status.checking ) return\n\t\t\t\t\t\tmaster.actualize()\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tif( this.status === $mol_atom_status.checking ) {\n\t\t\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif( force || this.status !== $mol_atom_status.actual ) {\n\t\t\t\t\n\t\t\t\tconst oldMasters = this.masters\n\t\t\t\tthis.masters = null\n\t\t\t\t\n\t\t\t\tif( oldMasters ) oldMasters.forEach(\n\t\t\t\t\tmaster => {\n\t\t\t\t\t\tmaster.dislead( this )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tthis.status = $mol_atom_status.pulling\n\t\t\t\tconst next = this.pull( force )\n\t\t\t\t\n\t\t\t\tthis.push( next )\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t$mol_atom.stack[0] = slave\n\t\t}\n\t\t\n\t\tpull( force? : $mol_atom_force ) {\n\t\t\ttry {\n\t\t\t\treturn this.handler( this._next , force )\n\t\t\t} catch( error ) {\n\t\t\t\tif( error[ '$mol_atom_catched' ] ) return error\n\t\t\t\tif( error instanceof $mol_atom_wait ) return error\n\t\t\t\t\n\t\t\t\tconsole.error( error.stack || error )\n\t\t\t\t\n\t\t\t\tif(!( error instanceof Error )) {\n\t\t\t\t\terror = new Error( error.stack || error )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\terror['$mol_atom_catched'] = true\n\t\t\t\treturn error\n\t\t\t}\n\t\t}\n\t\t\n\t\t_next : Value\n\t\t\n\t\tset( next : Value ) : Value {\n\t\t\tthis._next = next\n\t\t\tthis.obsolete()\n\t\t\treturn this.get()\n\t\t}\n\t\t\n\t\tpush( next : Value|Error ) {\n\t\t\tconst host = this.host\n\t\t\tconst prev = host[ this.field ]\n\t\t\tif( next === void null ) next = prev\n\t\t\tcomparing: if( ( next !== prev ) && ( next instanceof Array ) && ( prev instanceof Array ) && ( next.length === prev.length ) ) {\n\t\t\t\tfor( let i = 0 ; i < next[ 'length' ] ; ++i ) {\n\t\t\t\t\tif( next[ i ] !== prev[ i ] ) break comparing\n\t\t\t\t}\n\t\t\t\tnext = prev\n\t\t\t}\n\t\t\tif( prev !== next ) {\n\t\t\t\tif( next instanceof $mol_object ) {\n\t\t\t\t\tnext[ 'objectField' ]( this.field ) // FIXME: type checking\n\t\t\t\t\tnext[ 'objectOwner' ]( host ) // FIXME: type checking\n\t\t\t\t}\n\t\t\t\tif(( typeof Proxy === 'function' )&&( next instanceof Error )) {\n\t\t\t\t\tnext = new Proxy( next , {\n\t\t\t\t\t\tget( target : Error ) {\n\t\t\t\t\t\t\tthrow target.valueOf()\n\t\t\t\t\t\t} ,\n\t\t\t\t\t\townKeys( target : Error ) {\n\t\t\t\t\t\t\tthrow target.valueOf()\n\t\t\t\t\t\t} ,\n\t\t\t\t\t} )\n\t\t\t\t}\n\t\t\t\thost[ this.field ] = next\n\t\t\t\tthis.log( [ 'push' , next , prev ] )\n\t\t\t\t\n\t\t\t\tthis.obsoleteSlaves()\n\t\t\t}\n\t\t\tthis.status = $mol_atom_status.actual\n\t\t\tthis._next = void null\n\t\t\treturn next as Value\n\t\t}\n\t\t\n\t\tobsoleteSlaves() {\n\t\t\tif( !this.slaves ) return\n\t\t\t\n\t\t\tthis.slaves.forEach( slave => slave.obsolete() )\n\t\t}\n\t\t\n\t\tcheckSlaves() {\n\t\t\tif( this.slaves ) {\n\t\t\t\tthis.slaves.forEach( slave => slave.check() )\n\t\t\t} else {\n\t\t\t\tif( this.autoFresh ) $mol_atom.actualize( this )\n\t\t\t}\n\t\t}\n\t\t\n\t\tcheck() {\n\t\t\t//if( this.status === $mol_atom_status.pulling ) {\n\t\t\t//\tthrow new Error( `May be obsolated while pulling ${ this }` )\n\t\t\t//}\n\t\t\t\n\t\t\tif( this.status === $mol_atom_status.actual ) {\n\t\t\t\t//this.log([ 'checking' ])\n\t\t\t\tthis.status = $mol_atom_status.checking\n\t\t\t\t\n\t\t\t\tthis.checkSlaves()\n\t\t\t}\n\t\t}\n\t\t\n\t\tobsolete() : Value {\n\t\t\tif( this.status === $mol_atom_status.obsolete ) return\n\t\t\t\n\t\t\t//if( this.status === $mol_atom_status.pulling ) {\n\t\t\t//\tthrow new Error( `Obsolated while pulling ${ this }` )\n\t\t\t//} \n\t\t\t\n\t\t\tthis.log( [ 'obsolete' ] )\n\t\t\t\n\t\t\tthis.status = $mol_atom_status.obsolete\n\t\t\t\n\t\t\tthis.checkSlaves()\n\t\t\t\n\t\t\treturn void null\n\t\t}\n\t\t\n\t\tlead( slave : $mol_atom ) {\n\t\t\tif( !this.slaves ) {\n\t\t\t\tthis.slaves = new $mol_set<$mol_atom>()\n\t\t\t\t$mol_atom.unreap( this )\n\t\t\t}\n\t\t\tthis.slaves.add( slave )\n\t\t}\n\t\t\n\t\tdislead( slave : $mol_atom ) {\n\t\t\tif( !this.slaves ) return\n\t\t\t\n\t\t\tif( this.slaves.size === 1 ) {\n\t\t\t\tthis.slaves = null\n\t\t\t\t$mol_atom.reap( this )\n\t\t\t} else {\n\t\t\t\tthis.slaves.delete( slave )\n\t\t\t}\n\t\t}\n\t\t\n\t\tobey( master : $mol_atom ) {\n\t\t\tif( !this.masters ) this.masters = new $mol_set< $mol_atom >()\n\t\t\tthis.masters.add( master )\n\t\t}\n\t\t\n\t\tdisobey( master : $mol_atom ) {\n\t\t\tif( !this.masters ) return\n\t\t\tthis.masters.delete( master )\n\t\t}\n\t\t\n\t\tdisobeyAll() {\n\t\t\tif( !this.masters ) return\n\t\t\t\n\t\t\tthis.masters.forEach( master => master.dislead( this ) )\n\t\t\t\n\t\t\tthis.masters = null\n\t\t}\n\t\t\n\t\tvalue( next? : Value , force? : $mol_atom_force ) {\n\t\t\tif( next === void null ) {\n\t\t\t\treturn this.get( force )\n\t\t\t} else {\n\t\t\t\tif( force ) {\n\t\t\t\t\treturn this.push( next )\n\t\t\t\t} else {\n\t\t\t\t\treturn this.set( next )\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic stack = [ null ] as $mol_atom[]\n\t\tstatic updating : $mol_atom[] = []\n\t\tstatic reaping = new $mol_set< $mol_atom >()\n\t\tstatic scheduled = false\n\t\t\n\t\tstatic actualize( atom : $mol_atom ) {\n\t\t\t$mol_atom.updating.push( atom )\n\t\t\t$mol_atom.schedule()\n\t\t}\n\t\t\n\t\tstatic reap( atom : $mol_atom ) {\n\t\t\t$mol_atom.reaping.add( atom )\n\t\t\t$mol_atom.schedule()\n\t\t}\n\t\t\n\t\tstatic unreap( atom : $mol_atom ) {\n\t\t\t$mol_atom.reaping.delete( atom )\n\t\t}\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.scheduled ) return\n\t\t\t\n\t\t\tnew $mol_defer(\n\t\t\t\t() => {\n\t\t\t\t\tif( !this.scheduled ) return\n\t\t\t\t\tthis.scheduled = false\n\t\t\t\t\tthis.sync()\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\tthis.scheduled = true\n\t\t}\n\t\t\n\t\tstatic sync() {\n\t\t\t$mol_log( '$mol_atom.sync' , [] )\n\t\t\tthis.schedule()\n\t\t\t\n\t\t\twhile( this.updating.length ) {\n\t\t\t\tconst atom = this.updating.shift()\n\t\t\t\tif( this.reaping.has( atom ) ) continue\n\t\t\t\tif( !atom.destroyed() ) atom.get()\n\t\t\t}\n\t\t\t\n\t\t\twhile( this.reaping.size ) {\n\t\t\t\tthis.reaping.forEach(\n\t\t\t\t\tatom => {\n\t\t\t\t\t\tthis.reaping.delete( atom )\n\t\t\t\t\t\tif( !atom.slaves ) atom.destroyed( true )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\t\n\t\t\tthis.scheduled = false\n\t\t}\n\t\t\n\t}\n\t\n\t$mol_state_stack.set( '$mol_atom.stack' , $mol_atom.stack )\n\t\n\texport class $mol_atom_wait extends Error {\n\t\tname = '$mol_atom_wait'\n\t\t\n\t\tconstructor( public message = 'Wait...' ) {\n\t\t\tsuper( message )\n\t\t\tconst error : any = new Error( message )\n\t\t\terror.name = this.name\n\t\t\terror['__proto__'] = $mol_atom_wait.prototype\n\t\t\treturn error\n\t\t}\n\t}\n\t\n\texport class $mol_atom_force extends Object {\n\t\t$mol_atom_force : boolean\n\t\tstatic $mol_atom_force : boolean\n\t}\n\t\n\texport function $mol_atom_task< Value >(\n\t\thost : any ,\n\t\thandler : ()=> Value ,\n\t) {\n\t\tconst atom = new $mol_atom(\n\t\t\thost ,\n\t\t\t() => {\n\t\t\t\ttry {\n\t\t\t\t\thandler()\n\t\t\t\t} catch( error ) {\n\t\t\t\t\tif(!( error instanceof $mol_atom_wait )) atom.destroyed( true )\n\t\t\t\t\tthrow error\n\t\t\t\t}\n\t\t\t\tatom.destroyed( true )\n\t\t\t} ,\n\t\t)\n\t\t\n\t\t$mol_atom.actualize( atom )\n\t\t\n\t\treturn atom\n\t}\n\t\n}\n","namespace $ {\n\t\n\t/// Creates the decorator for caching result value by json-key passed as first argument.\n\t/// Method must be a polymorphic property (getter/setter/getter+setter).\n\texport function $mol_mem< Host , Value >(\n\t\tconfig? : {\n\t\t\tlazy? : boolean\n\t\t}\n\t) {\n\t\t\n\t\treturn function(\n\t\t\tobj : Host ,\n\t\t\tname : string ,\n\t\t\tdescr : TypedPropertyDescriptor< ( next? : Value , force? : $mol_atom_force )=> Value >\n\t\t) {\n\t\t\tconst value = descr.value\n\t\t\t\n\t\t\tdescr.value = function( next? : Value , force? : $mol_atom_force ) {\n\t\t\t\tconst host : any = this\n\t\t\t\tconst field = name + \"()\"\n\t\t\t\tconst fieldA = field + '@'\n\t\t\t\t\n\t\t\t\tlet atom : $mol_atom = host[ fieldA ]\n\t\t\t\tif( !atom ) {\n\t\t\t\t\thost[ fieldA ] = atom = new $mol_atom(\n\t\t\t\t\t\thost ,\n\t\t\t\t\t\tvalue.bind( host ) as any , // FIXME: type checking\n\t\t\t\t\t\tfield ,\n\t\t\t\t\t)\n\t\t\t\t\tif( config ) atom.autoFresh = !config.lazy\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn atom.value( next , force )\n\t\t\t}\n\t\t\t\n\t\t\tvoid( (descr.value)[ 'value' ] = value )\n\t\t}\n\t\t\n\t}\n\t\n\texport function $mol_mem_key< Host , Key , Value >(\n\t\tconfig? : {\n\t\t\tlazy? : boolean\n\t\t}\n\t) {\n\t\t\n\t\treturn function(\n\t\t\tobj : Host ,\n\t\t\tname : string ,\n\t\t\tdescr : TypedPropertyDescriptor< ( key : Key , next? : Value , force? : $mol_atom_force )=> Value >\n\t\t) {\n\t\t\tconst value = descr.value\n\n\t\t\tdescr.value = function( key : Key , next? : Value , force? : $mol_atom_force ) {\n\t\t\t\tconst host : any = this\n\t\t\t\tconst field = name + \"(\" + JSON.stringify( key ) + \")\"\n\t\t\t\tconst fieldA = field + '@'\n\t\t\t\t\n\t\t\t\tlet atom : $mol_atom = host[ fieldA ]\n\t\t\t\tif( !atom ) {\n\t\t\t\t\thost[ fieldA ] = atom = new $mol_atom(\n\t\t\t\t\t\thost ,\n\t\t\t\t\t\tvalue.bind( host , key ) as any , // FIXME: type checking\n\t\t\t\t\t\tfield ,\n\t\t\t\t\t)\n\t\t\t\t\tif( config ) atom.autoFresh = !config.lazy\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn atom.value( next , force )\n\t\t\t}\n\t\t\t\n\t\t\tvoid( (descr.value)[ 'value' ] = value )\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\texport class $mol_window extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic size( next? : {\n\t\t\twidth : number\n\t\t\theight : number\n\t\t} ) {\n\t\t\treturn next || {\n\t\t\t\twidth : window.innerWidth ,\n\t\t\t\theight : window.innerHeight ,\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\twindow.addEventListener( 'resize' , ()=> {\n\t\t$mol_window.size( null )\n\t} )\n\t\n}\n","namespace $ {\n\t\n\texport var $mol_viewer_context = <$mol_viewer_context> {}\n\t\n\texport interface $mol_viewer_context {\n\t\t$mol_viewer_heightLimit() : number\n\t}\n\t\n\t$mol_viewer_context.$mol_viewer_heightLimit = () => $mol_window.size().height\n\n\t/// Reactive statefull lazy ViewModel \n\texport class $mol_viewer extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic root( id : number ) {\n\t\t\treturn new this\n\t\t}\n\t\t\n\t\ttitle() : string {\n\t\t\treturn this.Class().toString()\n\t\t}\n\t\t\n\t\tstatic statePrefix() {\n\t\t\treturn ''\n\t\t}\n\t\t\n\t\tstatePrefix() {\n\t\t\tconst owner = this.objectOwner()\n\t\t\treturn owner ? (owner).statePrefix() : ''\n\t\t}\n\t\t\n\t\tstateKey( postfix : string ) {\n\t\t\treturn this.statePrefix() + postfix\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tcontext( next? : $mol_viewer_context ) {\n\t\t\treturn next || $mol_viewer_context\n\t\t}\n\t\t\n\t\tcontextSub() {\n\t\t\treturn this.context()\n\t\t}\n\t\t\n\t\t/// Name of element that created when element not found in DOM\n\t\ttagName() { return 'div' }\n\t\t\n\t\t/// NameSpace of element that created when element not found in DOM\n\t\tnameSpace() { return 'http://www.w3.org/1999/xhtml' }\n\t\t\n\t\t/// Raw child views\n\t\tchilds() {\n\t\t\treturn > null\n\t\t}\n\t\t\n\t\t/// Visible child views with defined heightAvailable()\n\t\t/// Render all by default\n\t\tchildsVisible() {\n\t\t\tconst childs = this.childs()\n\t\t\tif( !childs ) return childs\n\t\t\t\n\t\t\tconst context = this.contextSub()\n\t\t\tchilds.forEach( child => {\n\t\t\t\tif( child instanceof $mol_viewer ) {\n\t\t\t\t\tchild.context( context )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn childs\n\t\t}\n\t\t\n\t\t/// Minimal height that used for lazy rendering\n\t\theightMinimal() {\n\t\t\treturn 0\n\t\t}\n\t\t\n\t\tprivate 'DOMNode()' : Element\n\t\t\n\t\tDOMNode( next? : Element ) {\n\t\t\tconst path = this.toString()\n\t\t\t\n\t\t\tlet next2 = next\n\t\t\tif( !next2 ) {\n\t\t\t\tnext2 = this[ 'DOMNode()' ]\n\t\t\t\tif( next2 ) return next2\n\t\t\t\t\n\t\t\t\tnext2 = document.getElementById( path )\n\t\t\t\tif( next2 ) {\n\t\t\t\t\tif( (next2)[ '$mol_viewer' ] ) {\n\t\t\t\t\t\treturn this[ 'DOMNode()' ] = next2\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tnext2 = document.createElementNS( this.nameSpace() , this.tagName() )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tnext2.id = path\n\t\t\tvoid( (next2)[ '$mol_viewer' ] = this )\n\t\t\tthis[ 'DOMNode()' ] = next2\n\t\t\t\n\t\t\t/// Set BEM-like element-attributes with inheritance support\n\t\t\tconst ownerProto = this.objectOwner() && Object.getPrototypeOf( this.objectOwner() )\n\t\t\tif( ownerProto && ownerProto[ 'objectClassNames' ] ) {\n\t\t\t\tconst suffix = '_' + this.objectField().replace( /\\(.*/ , '' )\n\t\t\t\tfor( let className of ownerProto[ 'objectClassNames' ]() ) {\n\t\t\t\t\tconst attrName = className.replace( /\\$/g , '' ) + suffix\n\t\t\t\t\tnext2.setAttribute( attrName , '' )\n\t\t\t\t\tif( className === '$mol_viewer' ) break\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/// Set BEM-like block-attributes with inheritance support\n\t\t\tconst proto = Object.getPrototypeOf( this )\n\t\t\tfor( let className of proto[ 'objectClassNames' ]() ) {\n\t\t\t\tnext2.setAttribute( className.replace( /\\$/g , '' ) , '' )\n\t\t\t\tif( className === '$mol_viewer' ) break\n\t\t\t}\n\t\t\t\n\t\t\t/// Bind properties to events\n\t\t\tconst events = this.event()\n\t\t\tfor( let name in events ) {\n\t\t\t\tlet handle = events[ name ]\n\t\t\t\tnext2.addEventListener( name , event => {\n\t\t\t\t\t$mol_atom_task( `${ this }.event()['${ name }']` , ()=> {\n\t\t\t\t\t\thandle( event )\n\t\t\t\t\t} ).get()\n\t\t\t\t} )\n\t\t\t}\n\t\t\t\n\t\t\treturn next2\n\t\t}\n\t\t\n\t\tstatic renderChilds( node : Element , childs : ($mol_viewer|Node|string|number|boolean)[] ) {\n\t\t\tif( childs == null ) return\n\t\t\t\t\n\t\t\tlet nextNode = node.firstChild\n\t\t\tfor( let view of childs ) {\n\t\t\t\t\n\t\t\t\tif( view == null ) {\n\t\t\t\t} else if( typeof view === 'object' ) {\n\t\t\t\t\tconst existsNode = ( ( view instanceof $mol_viewer ) ? view.DOMNode() : view.valueOf() as Node )\n\t\t\t\t\twhile( true ) {\n\t\t\t\t\t\tif( !nextNode ) {\n\t\t\t\t\t\t\tnode.appendChild( existsNode )\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif( nextNode == existsNode ) {\n\t\t\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t//if( childViews.indexOf( nextNode ) === -1 ) {\n\t\t\t\t\t\t\t//\tvar nn = nextNode.nextSibling\n\t\t\t\t\t\t\t//\tprev.removeChild( nextNode )\n\t\t\t\t\t\t\t//\tnextNode = nn\n\t\t\t\t\t\t\t//} else {\n\t\t\t\t\t\t\tnode.insertBefore( existsNode , nextNode )\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t//}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif( nextNode && nextNode.nodeName === '#text' ) {\n\t\t\t\t\t\tnextNode.nodeValue = String( view )\n\t\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst textNode = document.createTextNode( String( view ) )\n\t\t\t\t\t\tnode.insertBefore( textNode , nextNode )\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\twhile( nextNode ) {\n\t\t\t\tconst currNode = nextNode\n\t\t\t\tnextNode = currNode.nextSibling\n\t\t\t\tnode.removeChild( currNode )\n\t\t\t}\n\t\t\t\n\t\t\tfor( let view of childs ) {\n\t\t\t\tif( view instanceof $mol_viewer ) view.DOMTree()\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic renderAttrs( node : Element , attrs : { [ key : string ] : ()=> string|number|boolean } ) {\n\t\t\tfor( let name in attrs ) {\n\t\t\t\tlet val = attrs[ name ]()\n\t\t\t\tif( ( val == null ) || ( val === false ) ) {\n\t\t\t\t\tnode.removeAttribute( name )\n\t\t\t\t} else if( val === true ) {\n\t\t\t\t\tnode.setAttribute( name , 'true' )\n\t\t\t\t} else {\n\t\t\t\t\tnode.setAttribute( name , String( val ) )\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic renderFields( node : Element , fields : { [ key : string ] : ( next? : any )=> any } ) {\n\t\t\tfor( let path in fields ) {\n\t\t\t\tconst names = path.split( '.' )\n\t\t\t\tlet obj : any = node\n\t\t\t\tfor( let i = 0 ; i < names.length - 1 ; ++i ) {\n\t\t\t\t\tif( names[ i ] ) obj = obj[ names[ i ] ]\n\t\t\t\t}\n\t\t\t\tconst field = names[ names.length - 1 ]\n\t\t\t\tconst val = fields[ path ]()\n\t\t\t\tif( obj[ field ] !== val ) {\n\t\t\t\t\tobj[ field ] = val\n\t\t\t\t\tif( obj[ field ] !== val ) {\n\t\t\t\t\t\tnew $mol_defer( ()=> fields[ path ]( obj[ field ] ) )\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tDOMTree() {\n\t\t\tlet node = this.DOMNode()\n\t\t\t\n\t\t\ttry {\n\t\t\t\t$mol_viewer.renderChilds( node , this.childsVisible() )\n\t\t\t\t$mol_viewer.renderAttrs( node , this.attr() )\n\t\t\t\t$mol_viewer.renderFields( node , this.field() )\n\t\t\t\t\n\t\t\t\treturn node\n\t\t\t} catch( error ) {\n\t\t\t\tif( !error['$mol_viewer_catched'] ) {\n\t\t\t\t\tnode.setAttribute( 'mol_viewer_error' , error.name )\n\t\t\t\t\terror['$mol_viewer_catched'] = true\n\t\t\t\t}\n\t\t\t\tthrow error\n\t\t\t}\n\t\t}\n\t\t\n\t\tattr() : { [ key : string ] : ()=> string|number|boolean } { return {\n\t\t\t'mol_viewer_error' : ()=> false\n\t\t} }\n\t\t\n\t\tfield() : { [ key : string ] : ( next? : any )=> any } { return {\n\t\t\t//'style.minHeight' : ()=> this.heightMinimal() + 'px'\n\t\t} }\n\t\t\n\t\tevent() : { [ key : string ] : ( event : Event )=> void } { return {} }\n\t\t\n\t\tlocalizationContexts() {\n\t\t\treturn Object.getPrototypeOf( this ).objectClassNames()\n\t\t}\n\t\t\n\t}\n\t\n}\n","interface Window {\n\tcordova : any\n}\n\nnamespace $ {\n\n\t/// Autoattach view roots to loaded DOM.\n\tdocument.addEventListener( window.cordova ? 'deviceready' : 'DOMContentLoaded' , event => {\n\t\t\t\n\t\tconst nodes = document.querySelectorAll( '[mol_viewer_root]' )\n\t\t\n\t\tfor( let i = nodes.length - 1 ; i >= 0 ; --i ) {\n\t\t\tlet view = ($)[ nodes.item( i ).getAttribute( 'mol_viewer_root' ) ].root( i )\n\t\t\tview.DOMNode( nodes.item( i ) )\n\t\t\tlet win = new $mol_atom( `$mol_viewer.root(${ i })` , ()=> {\n\t\t\t\tview.DOMTree()\n\t\t\t\tdocument.title = view.title()\n\t\t\t\treturn null\n\t\t\t} )\n\t\t\tnew $mol_defer( ()=> win.get() )\n\t\t}\n\t\t\n\t\t$mol_defer.run()\n\t} )\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_merge_dict< Target , Source >( target : Target , source : Source ) : Target & Source {\n\t\tlet result = {}\n\t\tfor( let key in target ) result[ key ] = ( target )[ key ]\n\t\tfor( let key in source ) result[ key ] = ( source )[ key ]\n\t\treturn result\n\t}\n\t\n}\n","namespace $ { export class $mol_stringer extends $mol_viewer {\n\n\t/// tagName \\input\n\ttagName() {\n\t\treturn \"input\"\n\t}\n\n\t/// enabled true\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// type \\text\n\ttype() {\n\t\treturn \"text\"\n\t}\n\n\t/// attr * \n\t/// \tplaceholder < hint \n\t/// \ttype < type\n\tattr() {\n\t\treturn $mol_merge_dict( super.attr() , {\n\t\t\t\"placeholder\" : ()=> this.hint() ,\n\t\t\t\"type\" : ()=> this.type() ,\n\t\t} )\n\t}\n\n\t/// disabled false\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/// value \\\n\t@ $mol_mem()\n\tvalue( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : \"\"\n\t}\n\n\t/// valueChanged > value\n\tvalueChanged( next? : any ) {\n\t\treturn this.value( next )\n\t}\n\n\t/// field * \n\t/// \tdisabled < disabled \n\t/// \tvalue < valueChanged\n\tfield() {\n\t\treturn $mol_merge_dict( super.field() , {\n\t\t\t\"disabled\" : ()=> this.disabled() ,\n\t\t\t\"value\" : ()=> this.valueChanged() ,\n\t\t} )\n\t}\n\n\t/// eventChange null\n\t@ $mol_mem()\n\teventChange( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : null\n\t}\n\n\t/// event * input > eventChange\n\tevent() {\n\t\treturn $mol_merge_dict( super.event() , {\n\t\t\t\"input\" : ( next? : any )=> this.eventChange( next ) ,\n\t\t} )\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_stringer extends $.$mol_stringer {\n\t\t\n\t\teventChange( next? : Event ) {\n\t\t\tthis.value( ( this.DOMNode() as HTMLInputElement ).value.trim() )\n\t\t}\n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t}\n}\n","namespace $ { export class $mol_clicker extends $mol_viewer {\n\n\t/// tagName \\button\n\ttagName() {\n\t\treturn \"button\"\n\t}\n\n\t/// enabled true\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/// eventClick null\n\t@ $mol_mem()\n\teventClick( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : null\n\t}\n\n\t/// eventActivate > eventClick\n\t@ $mol_mem()\n\teventActivate( next? : any ) {\n\t\treturn this.eventClick( next )\n\t}\n\n\t/// event * click > eventActivate\n\tevent() {\n\t\treturn $mol_merge_dict( super.event() , {\n\t\t\t\"click\" : ( next? : any )=> this.eventActivate( next ) ,\n\t\t} )\n\t}\n\n\t/// disabled false\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/// attr * \n\t/// \tdisabled < disabled \n\t/// \ttabindex \\0\n\tattr() {\n\t\treturn $mol_merge_dict( super.attr() , {\n\t\t\t\"disabled\" : ()=> this.disabled() ,\n\t\t\t\"tabindex\" : ()=> \"0\" ,\n\t\t} )\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_clicker extends $.$mol_clicker {\n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t\t\n\t\teventActivate( next : Event ) {\n\t\t\tif( !this.enabled() ) return\n\t\t\tthis.eventClick( next )\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { export class $mol_clicker_button extends $mol_clicker {\n\n} }\n\nnamespace $ { export class $mol_clicker_major extends $mol_clicker_button {\n\n} }\n\nnamespace $ { export class $mol_clicker_minor extends $mol_clicker_button {\n\n} }\n\nnamespace $ { export class $mol_clicker_danger extends $mol_clicker_button {\n\n} }\n\n","namespace $ {\n\t\n\texport class $mol_state_arg< Value > extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic href( next? : string ) {\n\t\t\tif( next ) history.replaceState( history.state , document.title , `${ next }` )\n\t\t\treturn window.location.search + window.location.hash\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic dict( next? : { [ key : string ] : string } ) {\n\t\t\tvar href = this.href( next && this.make( next ) )\n\t\t\tvar chunks = href.split( /[\\/\\?#!&;]/g )\n\t\t\t\n\t\t\tvar params : { [ key : string ] : string } = {}\n\t\t\tchunks.forEach(\n\t\t\t\tchunk => {\n\t\t\t\t\tif( !chunk ) return\n\t\t\t\t\tvar vals = chunk.split( '=' ).map( decodeURIComponent )\n\t\t\t\t\tparams[ vals.shift() ] = vals.join( '=' )\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\treturn params\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic value( key : string , next? : string ) {\n\t\t\tconst nextDict = ( next === void 0 ) ? void 0 : $mol_merge_dict( this.dict() , { [ key ] : next } ) \n\t\t\treturn this.dict( nextDict )[ key ] || null\n\t\t}\n\t\t\n\t\tstatic link( next : { [ key : string ] : string } ) {\n\t\t\treturn this.make( $mol_merge_dict( this.dict() , next ) )\n\t\t}\n\t\t\n\t\tstatic make( next : { [ key : string ] : string } ) {\n\t\t\tconst chunks : string[] = []\n\t\t\tfor( let key in next ) {\n\t\t\t\tif( null == next[ key ] ) continue\n\t\t\t\tchunks.push( [ key ].concat( next[ key ] ).map( encodeURIComponent ).join( '=' ) )\n\t\t\t}\n\t\t\t\n\t\t\tconst hash = chunks.join( '#' )\n\t\t\t\n\t\t\treturn hash ? '#' + hash + '#' : '#'\n\t\t}\n\t\t\n\t\tconstructor( public prefix = '' ) {\n\t\t\tsuper()\n\t\t}\n\t\t\n\t\tvalue( key : string , next? : string ) {\n\t\t\treturn $mol_state_arg.value( this.prefix + key , next )\n\t\t}\n\t\t\n\t\tsub( postfix : string ) {\n\t\t\treturn new $mol_state_arg( this.prefix + postfix + '.' )\n\t\t}\n\t\t\n\t\tlink( next : { [ key : string ] : string } ) {\n\t\t\tvar prefix = this.prefix\n\t\t\tvar dict : { [ key : string ] : string } = {}\n\t\t\tfor( var key in next ) {\n\t\t\t\tdict[ prefix + key ] = next[ key ]\n\t\t\t}\n\t\t\treturn $mol_state_arg.link( dict )\n\t\t}\n\t\t\n\t}\n\t\n\twindow.addEventListener( 'hashchange' , event => $mol_state_arg.href( null ) )\n\t\n}\n","namespace $ { export class $mol_linker extends $mol_viewer {\n\n\t/// heightMinimal 36\n\theightMinimal() {\n\t\treturn 36\n\t}\n\n\t/// tagName \\a\n\ttagName() {\n\t\treturn \"a\"\n\t}\n\n\t/// uri \\\n\turi() {\n\t\treturn \"\"\n\t}\n\n\t/// current false\n\tcurrent() {\n\t\treturn false\n\t}\n\n\t/// attr * \n\t/// \thref < uri \n\t/// \tmol_linker_current < current\n\tattr() {\n\t\treturn $mol_merge_dict( super.attr() , {\n\t\t\t\"href\" : ()=> this.uri() ,\n\t\t\t\"mol_linker_current\" : ()=> this.current() ,\n\t\t} )\n\t}\n\n\t/// arg *\n\targ() {\n\t\treturn ({\n\t\t})\n\t}\n\n} }\n\n","namespace $.$mol {\n\t\n\texport class $mol_linker extends $.$mol_linker {\n\t\t\n\t\t@ $mol_mem()\n\t\turi() {\n\t\t\tconst patch : { [ key : string ] : string } = {}\n\t\t\tconst arg : any = this.arg()\n\t\t\tfor( let key in arg ) patch[ key ] = arg[ key ]()\t\t\t\n\t\t\t\n\t\t\treturn new $mol_state_arg( this.statePrefix() ).link( patch )\n\t\t}\n\t\t\n\t\tcurrent() {\n\t\t\treturn this.uri() === $mol_state_arg.link( {} )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_checker extends $mol_clicker {\n\n\t/// checked false\n\t@ $mol_mem()\n\tchecked( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : false\n\t}\n\n\t/// attr * mol_checker_checked > checked\n\tattr() {\n\t\treturn $mol_merge_dict( super.attr() , {\n\t\t\t\"mol_checker_checked\" : ( next? : any )=> this.checked( next ) ,\n\t\t} )\n\t}\n\n\t/// icon null\n\ticon() {\n\t\treturn null\n\t}\n\n\t/// label /\n\tlabel() {\n\t\treturn [] as any[]\n\t}\n\n\t/// labeler $mol_viewer childs / < label\n\t@ $mol_mem()\n\tlabeler( next? : any ) {\n\t\treturn new $mol_viewer().setup( obj => { \n\t\t\tobj.childs = () => [].concat( this.label() )\n\t\t} )\n\t}\n\n\t/// childs / \n\t/// \t< icon \n\t/// \t< labeler\n\tchilds() {\n\t\treturn [].concat( this.icon() , this.labeler() )\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_checker extends $.$mol_checker {\n\n\t\teventClick( next? : Event ) {\n\t\t\tthis.checked( !this.checked() )\n\t\t\tnext.preventDefault()\n\t\t}\n\n\t}\n}\n\n","namespace $ {\n\t\n\texport class $mol_state_session< Value > extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic value< Value >( key : string , next? : Value ) : Value {\n\t\t\tif( next === void 0 ) return JSON.parse( sessionStorage.getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) sessionStorage.removeItem( key )\n\t\t\telse sessionStorage.setItem( key , JSON.stringify( next ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_session.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_scroller extends $mol_viewer {\n\n\t/// heightMinimal 0\n\theightMinimal() {\n\t\treturn 0\n\t}\n\n\t/// scrollTop 0\n\t@ $mol_mem()\n\tscrollTop( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : 0\n\t}\n\n\t/// scrollLeft 0\n\t@ $mol_mem()\n\tscrollLeft( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : 0\n\t}\n\n\t/// field * \n\t/// \tscrollTop > scrollTop \n\t/// \tscrollLeft > scrollLeft \n\t/// \t- style.boxShadow < shadowStyle\n\tfield() {\n\t\treturn $mol_merge_dict( super.field() , {\n\t\t\t\"scrollTop\" : ( next? : any )=> this.scrollTop( next ) ,\n\t\t\t\"scrollLeft\" : ( next? : any )=> this.scrollLeft( next ) ,\n\t\t} )\n\t}\n\n\t/// eventScroll null\n\t@ $mol_mem()\n\teventScroll( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : null\n\t}\n\n\t/// event * \n\t/// \tscroll > eventScroll \n\t/// \toverflow > eventScroll \n\t/// \tunderflow > eventScroll\n\tevent() {\n\t\treturn $mol_merge_dict( super.event() , {\n\t\t\t\"scroll\" : ( next? : any )=> this.eventScroll( next ) ,\n\t\t\t\"overflow\" : ( next? : any )=> this.eventScroll( next ) ,\n\t\t\t\"underflow\" : ( next? : any )=> this.eventScroll( next ) ,\n\t\t} )\n\t}\n\n} }\n\n","namespace $ {\n\t\n\texport interface $mol_viewer_context {\n\t\t$mol_scroller_scrollTop() : number\n\t\t$mol_scroller_moving() : boolean\n\t}\n\t\n\t$mol_viewer_context.$mol_scroller_scrollTop = () => 0\n\t$mol_viewer_context.$mol_scroller_moving = () => false\n\t\n}\n\nnamespace $.$mol {\n\t\n\texport class $mol_scroller extends $.$mol_scroller {\n\n\t\tscrollTop( next? : number ) {\n\t\t\treturn $mol_state_session.value( `${ this }.scrollTop()` , next ) || 0\n\t\t}\n\t\t\n\t\tscrollLeft( next? : number ) {\n\t\t\treturn $mol_state_session.value( `${ this }.scrollLeft()` , next ) || 0\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tscrollBottom( next? : number ) {\n\t\t\treturn next || 0\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tscrollRight( next? : number ) {\n\t\t\treturn next || 0\n\t\t}\n\t\t\n\t\teventScroll( next? : Event ) {\n\t\t\tthis.moving( true )\n\t\t\tnew $mol_defer( ()=> {\n\t\t\t\tconst el = this.DOMNode() as HTMLElement\n\t\t\t\tthis.scrollTop( Math.max( 0 , el.scrollTop ) )\n\t\t\t\tthis.scrollLeft( Math.max( 0 , el.scrollLeft ) )\n\t\t\t\tthis.scrollBottom( Math.max( 0 , el.scrollHeight - el.scrollTop - el.offsetHeight ) )\n\t\t\t\tthis.scrollRight( Math.max( 0 , el.scrollWidth - el.scrollLeft - el.offsetWidth ) )\n\t\t\t} )\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tmoving( next? : boolean ) {\n\t\t\tif( next ) {\n\t\t\t\tsetTimeout( ()=> {\n\t\t\t\t\tthis.moving( false )\n\t\t\t\t} )\n\t\t\t}\t\t\t\t\n\t\t\treturn next || false\n\t\t}\n\n\t\t@ $mol_mem()\n\t\tcontextSub( ) {\n\t\t\tconst subContext : $mol_viewer_context = Object.create( this.context() )\n\t\t\tsubContext.$mol_viewer_heightLimit = ()=> this.context().$mol_viewer_heightLimit() + this.scrollTop()\n\t\t\tsubContext.$mol_scroller_scrollTop = ()=> this.scrollTop()\n\t\t\tsubContext.$mol_scroller_moving = ()=> this.moving()\n\t\t\treturn subContext\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tshadowStyle() {\n\t\t\tlet shadows : string[] = []\n\t\t\tif( this.scrollTop() > 0 ) shadows.push( 'inset 0 6px 6px -6px rgba( 0 , 0 , 0 , .25 )' )\n\t\t\tif( this.scrollLeft() > 0 ) shadows.push( 'inset 6px 0 6px -6px rgba( 0 , 0 , 0 , .25 )' )\n\t\t\tif( this.scrollBottom() > 0 ) shadows.push( 'inset 0 -6px 6px -6px rgba( 0 , 0 , 0 , .25 )' )\n\t\t\tif( this.scrollRight() > 0 ) shadows.push( 'inset -6px 0 6px -6px rgba( 0 , 0 , 0 , .25 )' )\n\t\t\treturn shadows.join( ' , ' )\n\t\t}\n\t\t\n\t}\n\n}\n","var localStorage = localStorage || {\n\tgetItem( key : string ) {\n\t\treturn this[ ':' + key ]\n\t} ,\n\tsetItem( key : string , value : string ) {\n\t\tthis[ ':' + key ] = value\n\t} ,\n\tremoveItem( key : string ) {\n\t\tthis[ ':' + key ] = void 0\n\t}\n}\n\nnamespace $ {\n\t\n\texport class $mol_state_local< Value > extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic value< Value >( key : string , next? : Value , force? : $mol_atom_force ) {\n\t\t\tif( next === void 0 ) return JSON.parse( localStorage.getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) localStorage.removeItem( key )\n\t\t\telse localStorage.setItem( key , JSON.stringify( next ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_local.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\twindow.addEventListener( 'storage' , event => {\n\t\t$.$mol_state_local.value( event.key , void 0 , $mol_atom_force )\n\t} )\n}\n","namespace $ {\n\t\n\texport class $mol_http_request extends $mol_object {\n\t\t\n\t\turi() { return '' }\n\t\t\n\t\tmethod() { return 'Get' }\n\t\t\n\t\tcredentials() { return null as {\n\t\t\tlogin? : string\n\t\t\tpassword? : string\n\t\t} }\n\t\t\n\t\tbody() { return null }\n\t\t\n\t\t'native()' : XMLHttpRequest\n\t\tnative() {\n\t\t\tif( this[ 'native()' ] ) return this[ 'native()' ]\n\t\t\t\n\t\t\tvar next = this[ 'native()' ] = $mol_http_request_native()\n\t\t\t\n\t\t\tnext.withCredentials = Boolean( this.credentials() )\n\t\t\t\n\t\t\tnext.onload = ( event : Event )=> {\n\t\t\t\tif( Math.floor( next.status / 100 ) === 2 ) {\n\t\t\t\t\tthis.response( next.responseText , $mol_atom_force )\n\t\t\t\t} else {\n\t\t\t\t\tthis.response( new Error( next.responseText ) as any , $mol_atom_force )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tnext.onerror = ( event : ErrorEvent ) => {\n\t\t\t\tthis.response( event.error || new Error( 'Unknown HTTP error' ) , $mol_atom_force )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next ) {\n\t\t\t\tconst native = this[ 'native()' ]\n\t\t\t\tif( native ) native.abort()\n\t\t\t}\n\t\t\treturn super.destroyed( next )\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tresponse( next? : any , force? : $mol_atom_force ) : any {\n\t\t\tconst creds = this.credentials()\n\t\t\tconst native = this.native()\n\t\t\tconst method = ( next === void 0 ) ? 'Get' : this.method()\n\t\t\tconst uri = this.uri()\n\t\t\t\n\t\t\tnative.open( method , uri , true , creds && creds.login , creds && creds.password )\n\t\t\tnative.send( next )\n\t\t\t\n\t\t\tthrow new $mol_atom_wait( `${ method } ${ uri }` )\n\t\t}\n\t\t\n\t\ttext( next? : string , force? : $mol_atom_force ) : string {\n\t\t\treturn this.response( next , force )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\texport var $mol_http_request_native = ()=> new XMLHttpRequest;\n}\n","namespace $ {\n\t\n\texport class $mol_http_resource extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic item( uri : string ) {\n\t\t\treturn new $mol_http_resource().setup( obj => {\n\t\t\t\tobj.uri = ()=> uri\n\t\t\t} )\n\t\t}\n\t\t\n\t\turi() { return '' }\n\t\t\n\t\tcredentials() { return null as {\n\t\t\tlogin? : string\n\t\t\tpassword? : string\n\t\t} }\n\t\t\n\t\t@ $mol_mem()\n\t\trequest() {\n\t\t\tconst request = new $mol_http_request()\n\t\t\trequest.method = () => 'Put'\n\t\t\trequest.uri = () => this.uri()\n\t\t\trequest.credentials = () => this.credentials()\n\t\t\treturn request\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\ttext( next? : string , force? : $mol_atom_force ) {\n\t\t\treturn this.request().text( next , force )\n\t\t}\n\t\t\n\t}\n\t\n\texport class $mol_http_resource_json< Content > extends $mol_http_resource {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic item< Content >( uri : string ) {\n\t\t\treturn new $mol_http_resource_json< Content >().setup( obj => {\n\t\t\t\tobj.uri = ()=> uri\n\t\t\t} )\n\t\t}\n\t\t\n\t\tjson( next? : Content , force? : $mol_atom_force ) : Content {\n\t\t\treturn JSON.parse( this.text( next && JSON.stringify( next , null , '\\t' ) , force ) )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport interface $mol_locale_dict {\n\t\t[ key : string ] : string\n\t}\n\t\n\texport class $mol_locale extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic lang( next? : string ) {\n\t\t\treturn $mol_state_local.value( 'locale' , next ) || $mol_state_arg.value( 'locale' ) || 'en'\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic texts() {\n\t\t\tconst uri = `-/web.locale=${ this.lang() }.json`\n\t\t\tconst resource = $mol_http_resource_json.item< $mol_locale_dict >( uri ) \n\t\t\treturn resource.json()\n\t\t}\n\t\t\n\t\tstatic text( contexts : string[] , key : string ) {\n\t\t\tconst texts = this.texts()\n\t\t\t\n\t\t\tfor( let i = 0 ; i < contexts.length ; ++i ) {\n\t\t\t\tconst text = texts[ `${ contexts[i] }_${ key }` ]\n\t\t\t\tif( text ) return text\n\t\t\t}\n\t\t\t\n\t\t\tconsole.warn( 'Locale tet not found: ' , contexts , key )\n\t\t\t\n\t\t\treturn `<${ key }>`\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_lister extends $mol_viewer {\n\n\t/// minHeightStyle \\\n\tminHeightStyle() {\n\t\treturn \"\"\n\t}\n\n\t/// field * style.minHeight < minHeightStyle\n\tfield() {\n\t\treturn $mol_merge_dict( super.field() , {\n\t\t\t\"style.minHeight\" : ()=> this.minHeightStyle() ,\n\t\t} )\n\t}\n\n\t/// rows /\n\trows() {\n\t\treturn [] as any[]\n\t}\n\n\t/// childs < rows\n\tchilds() {\n\t\treturn this.rows()\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_lister extends $.$mol_lister {\n\t\t\n\t\t@ $mol_mem()\n\t\trowOffsets() : number[] {\n\t\t\tvar childs = this.childs()\n\t\t\tif( !childs ) return null\n\t\t\t\n\t\t\tlet heightLimit = this.contextSub().$mol_viewer_heightLimit()\n\t\t\tvar offset = 0\n\t\t\t\n\t\t\tvar next : number[] = []\n\t\t\tfor( let child of childs ) {\n\t\t\t\tnext.push( offset )\n\t\t\t\t\n\t\t\t\tif( child instanceof $mol_viewer ) {\n\t\t\t\t\toffset += child.heightMinimal()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( offset > heightLimit ) break\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\trowContext( index : number ) {\n\t\t\tlet context = this.contextSub()\n\t\t\tlet next = Object.create( context )\n\t\t\tnext.$mol_viewer_heightLimit = ()=> context.$mol_viewer_heightLimit() - this.rowOffsets()[ index ]\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tchildsVisible() {\n\t\t\tvar childs = this.childs()\n\t\t\tif( !childs ) return childs\n\t\t\t\n\t\t\tvar limit = this.rowOffsets().length\n\t\t\t\n\t\t\tvar next : $mol_viewer[] = []\n\t\t\tfor( let i = 0 ; i < limit ; ++ i ) {\n\t\t\t\tconst child = childs[ i ]\n\t\t\t\tif( child == null ) continue \n\t\t\t\tif( child instanceof $mol_viewer ) {\n\t\t\t\t\tchild.context( this.rowContext( i ) )\n\t\t\t\t}\n\t\t\t\tnext.push( child )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\theightMinimal() {\n\t\t\tvar height = 0\n\t\t\tvar childs = this.childs()\n\t\t\tif( childs ) childs.forEach( child => {\n\t\t\t\tif( child instanceof $mol_viewer ) {\n\t\t\t\t\theight += child.heightMinimal()\n\t\t\t\t}\n\t\t\t} )\n\t\t\treturn height\n\t\t}\n\t\t\n\t\tminHeightStyle() {\n\t\t\treturn this.heightMinimal() + 'px'\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { export class $mol_barer extends $mol_viewer {\n\n} }\n\n","namespace $ { export class $mol_app_todomvc extends $mol_scroller {\n\n\t/// title @ \\todos\n\ttitle() {\n\t\treturn $mol_locale.text( this.localizationContexts() , \"title\" )\n\t}\n\n\t/// titler $mol_viewer \n\t/// \theightMinimal 142 \n\t/// \tchilds / < title\n\t@ $mol_mem()\n\ttitler( next? : any ) {\n\t\treturn new $mol_viewer().setup( obj => { \n\t\t\tobj.heightMinimal = () => 142\n\t\t\tobj.childs = () => [].concat( this.title() )\n\t\t} )\n\t}\n\n\t/// allCompleterEnabled false\n\tallCompleterEnabled() {\n\t\treturn false\n\t}\n\n\t/// allCompleted false\n\t@ $mol_mem()\n\tallCompleted( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : false\n\t}\n\n\t/// allCompleter $mol_checker \n\t/// \tenabled < allCompleterEnabled \n\t/// \tchecked > allCompleted \n\t/// \tchilds / \\❯\n\t@ $mol_mem()\n\tallCompleter( next? : any ) {\n\t\treturn new $mol_checker().setup( obj => { \n\t\t\tobj.enabled = () => this.allCompleterEnabled()\n\t\t\tobj.checked = ( next? : any ) => this.allCompleted( next )\n\t\t\tobj.childs = () => [].concat( \"❯\" )\n\t\t} )\n\t}\n\n\t/// taskNewTitle \\\n\t@ $mol_mem()\n\ttaskNewTitle( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : \"\"\n\t}\n\n\t/// eventAdd null\n\t@ $mol_mem()\n\teventAdd( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : null\n\t}\n\n\t/// adder $mol_app_todomvc_adder \n\t/// \tvalue > taskNewTitle \n\t/// \teventDone > eventAdd\n\t@ $mol_mem()\n\tadder( next? : any ) {\n\t\treturn new $mol_app_todomvc_adder().setup( obj => { \n\t\t\tobj.value = ( next? : any ) => this.taskNewTitle( next )\n\t\t\tobj.eventDone = ( next? : any ) => this.eventAdd( next )\n\t\t} )\n\t}\n\n\t/// headerContent / \n\t/// \t< allCompleter \n\t/// \t< adder\n\theaderContent() {\n\t\treturn [].concat( this.allCompleter() , this.adder() )\n\t}\n\n\t/// header $mol_viewer \n\t/// \theightMinimal 64 \n\t/// \tchilds < headerContent\n\t@ $mol_mem()\n\theader( next? : any ) {\n\t\treturn new $mol_viewer().setup( obj => { \n\t\t\tobj.heightMinimal = () => 64\n\t\t\tobj.childs = () => this.headerContent()\n\t\t} )\n\t}\n\n\t/// taskers /\n\ttaskers() {\n\t\treturn [] as any[]\n\t}\n\n\t/// lister $mol_lister rows < taskers\n\t@ $mol_mem()\n\tlister( next? : any ) {\n\t\treturn new $mol_lister().setup( obj => { \n\t\t\tobj.rows = () => this.taskers()\n\t\t} )\n\t}\n\n\t/// pendingMessage @ \\0 items left\n\tpendingMessage() {\n\t\treturn $mol_locale.text( this.localizationContexts() , \"pendingMessage\" )\n\t}\n\n\t/// pendinger $mol_viewer childs / < pendingMessage\n\t@ $mol_mem()\n\tpendinger( next? : any ) {\n\t\treturn new $mol_viewer().setup( obj => { \n\t\t\tobj.childs = () => [].concat( this.pendingMessage() )\n\t\t} )\n\t}\n\n\t/// filterAllLabel @ \\All\n\tfilterAllLabel() {\n\t\treturn $mol_locale.text( this.localizationContexts() , \"filterAllLabel\" )\n\t}\n\n\t/// filterAll $mol_linker \n\t/// \tchilds / < filterAllLabel \n\t/// \targ * completed null\n\t@ $mol_mem()\n\tfilterAll( next? : any ) {\n\t\treturn new $mol_linker().setup( obj => { \n\t\t\tobj.childs = () => [].concat( this.filterAllLabel() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : ()=> null ,\n\t\t})\n\t\t} )\n\t}\n\n\t/// filterActiveLabel @ \\Active\n\tfilterActiveLabel() {\n\t\treturn $mol_locale.text( this.localizationContexts() , \"filterActiveLabel\" )\n\t}\n\n\t/// filterActive $mol_linker \n\t/// \tchilds / < filterActiveLabel \n\t/// \targ * completed false\n\t@ $mol_mem()\n\tfilterActive( next? : any ) {\n\t\treturn new $mol_linker().setup( obj => { \n\t\t\tobj.childs = () => [].concat( this.filterActiveLabel() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : ()=> false ,\n\t\t})\n\t\t} )\n\t}\n\n\t/// filterCompletedLabel @ \\Completed\n\tfilterCompletedLabel() {\n\t\treturn $mol_locale.text( this.localizationContexts() , \"filterCompletedLabel\" )\n\t}\n\n\t/// filterCompleted $mol_linker \n\t/// \tchilds / < filterCompletedLabel \n\t/// \targ * completed true\n\t@ $mol_mem()\n\tfilterCompleted( next? : any ) {\n\t\treturn new $mol_linker().setup( obj => { \n\t\t\tobj.childs = () => [].concat( this.filterCompletedLabel() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : ()=> true ,\n\t\t})\n\t\t} )\n\t}\n\n\t/// filterOptions / \n\t/// \t< filterAll \n\t/// \t< filterActive \n\t/// \t< filterCompleted\n\tfilterOptions() {\n\t\treturn [].concat( this.filterAll() , this.filterActive() , this.filterCompleted() )\n\t}\n\n\t/// filter $mol_barer childs < filterOptions\n\t@ $mol_mem()\n\tfilter( next? : any ) {\n\t\treturn new $mol_barer().setup( obj => { \n\t\t\tobj.childs = () => this.filterOptions()\n\t\t} )\n\t}\n\n\t/// sanitizerEnabled true\n\tsanitizerEnabled() {\n\t\treturn true\n\t}\n\n\t/// eventSanitize null\n\teventSanitize() {\n\t\treturn null\n\t}\n\n\t/// sanitizerLabel @ \\Clear completed\n\tsanitizerLabel() {\n\t\treturn $mol_locale.text( this.localizationContexts() , \"sanitizerLabel\" )\n\t}\n\n\t/// sanitizer $mol_clicker_minor \n\t/// \tenabled < sanitizerEnabled \n\t/// \teventClick < eventSanitize \n\t/// \tchilds / < sanitizerLabel\n\t@ $mol_mem()\n\tsanitizer( next? : any ) {\n\t\treturn new $mol_clicker_minor().setup( obj => { \n\t\t\tobj.enabled = () => this.sanitizerEnabled()\n\t\t\tobj.eventClick = () => this.eventSanitize()\n\t\t\tobj.childs = () => [].concat( this.sanitizerLabel() )\n\t\t} )\n\t}\n\n\t/// footerContent / \n\t/// \t< pendinger \n\t/// \t< filter \n\t/// \t< sanitizer\n\tfooterContent() {\n\t\treturn [].concat( this.pendinger() , this.filter() , this.sanitizer() )\n\t}\n\n\t/// footer $mol_viewer childs < footerContent\n\t@ $mol_mem()\n\tfooter( next? : any ) {\n\t\treturn new $mol_viewer().setup( obj => { \n\t\t\tobj.childs = () => this.footerContent()\n\t\t} )\n\t}\n\n\t/// panels / \n\t/// \t< header \n\t/// \t< lister \n\t/// \t< footer\n\tpanels() {\n\t\treturn [].concat( this.header() , this.lister() , this.footer() )\n\t}\n\n\t/// paneler $mol_lister rows < panels\n\t@ $mol_mem()\n\tpaneler( next? : any ) {\n\t\treturn new $mol_lister().setup( obj => { \n\t\t\tobj.rows = () => this.panels()\n\t\t} )\n\t}\n\n\t/// pager $mol_lister childs / \n\t/// \t< titler \n\t/// \t< paneler\n\t@ $mol_mem()\n\tpager( next? : any ) {\n\t\treturn new $mol_lister().setup( obj => { \n\t\t\tobj.childs = () => [].concat( this.titler() , this.paneler() )\n\t\t} )\n\t}\n\n\t/// childs / < pager\n\tchilds() {\n\t\treturn [].concat( this.pager() )\n\t}\n\n\t/// taskCompleted# false\n\t@ $mol_mem_key()\n\ttaskCompleted( key : any , next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : false\n\t}\n\n\t/// taskTitle# \\\n\t@ $mol_mem_key()\n\ttaskTitle( key : any , next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : \"\"\n\t}\n\n\t/// eventTaskDrop# null\n\t@ $mol_mem_key()\n\teventTaskDrop( key : any , next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : null\n\t}\n\n\t/// tasker# $mol_app_todomvc_tasker \n\t/// \tcompleted > taskCompleted# \n\t/// \ttitle > taskTitle# \n\t/// \teventDrop > eventTaskDrop#\n\t@ $mol_mem_key()\n\ttasker( key : any , next? : any ) {\n\t\treturn new $mol_app_todomvc_tasker().setup( obj => { \n\t\t\tobj.completed = ( next? : any ) => this.taskCompleted( key , next )\n\t\t\tobj.title = ( next? : any ) => this.taskTitle( key , next )\n\t\t\tobj.eventDrop = ( next? : any ) => this.eventTaskDrop( key , next )\n\t\t} )\n\t}\n\n} }\n\nnamespace $ { export class $mol_app_todomvc_adder extends $mol_stringer {\n\n\t/// hint @ \\What needs to be done?\n\thint() {\n\t\treturn $mol_locale.text( this.localizationContexts() , \"hint\" )\n\t}\n\n\t/// eventPress null\n\t@ $mol_mem()\n\teventPress( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : null\n\t}\n\n\t/// event * keyup > eventPress\n\tevent() {\n\t\treturn $mol_merge_dict( super.event() , {\n\t\t\t\"keyup\" : ( next? : any )=> this.eventPress( next ) ,\n\t\t} )\n\t}\n\n\t/// eventDone null\n\t@ $mol_mem()\n\teventDone( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : null\n\t}\n\n} }\n\nnamespace $ { export class $mol_app_todomvc_tasker extends $mol_viewer {\n\n\t/// heightMinimal 64\n\theightMinimal() {\n\t\treturn 64\n\t}\n\n\t/// completed false\n\t@ $mol_mem()\n\tcompleted( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : false\n\t}\n\n\t/// completer $mol_checker \n\t/// \tchecked > completed \n\t/// \tchilds /\n\t@ $mol_mem()\n\tcompleter( next? : any ) {\n\t\treturn new $mol_checker().setup( obj => { \n\t\t\tobj.checked = ( next? : any ) => this.completed( next )\n\t\t\tobj.childs = () => [] as any[]\n\t\t} )\n\t}\n\n\t/// titleHint @ \\Task title\n\ttitleHint() {\n\t\treturn $mol_locale.text( this.localizationContexts() , \"titleHint\" )\n\t}\n\n\t/// title \\\n\t@ $mol_mem()\n\ttitle( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : \"\"\n\t}\n\n\t/// titler $mol_stringer \n\t/// \thint < titleHint \n\t/// \tvalue > title\n\t@ $mol_mem()\n\ttitler( next? : any ) {\n\t\treturn new $mol_stringer().setup( obj => { \n\t\t\tobj.hint = () => this.titleHint()\n\t\t\tobj.value = ( next? : any ) => this.title( next )\n\t\t} )\n\t}\n\n\t/// eventDrop null\n\t@ $mol_mem()\n\teventDrop( next? : any ) {\n\t\treturn ( next !== void 0 ) ? next : null\n\t}\n\n\t/// dropper $mol_clicker \n\t/// \tchilds / \\✖\n\t/// \teventClick > eventDrop\n\t@ $mol_mem()\n\tdropper( next? : any ) {\n\t\treturn new $mol_clicker().setup( obj => { \n\t\t\tobj.childs = () => [].concat( \"✖\" )\n\t\t\tobj.eventClick = ( next? : any ) => this.eventDrop( next )\n\t\t} )\n\t}\n\n\t/// childs / \n\t/// \t< completer \n\t/// \t< titler \n\t/// \t< dropper\n\tchilds() {\n\t\treturn [].concat( this.completer() , this.titler() , this.dropper() )\n\t}\n\n\t/// attr * mol_app_todomvc_tasker_completed < completed\n\tattr() {\n\t\treturn $mol_merge_dict( super.attr() , {\n\t\t\t\"mol_app_todomvc_tasker_completed\" : ()=> this.completed() ,\n\t\t} )\n\t}\n\n} }\n\n","interface $mol_app_todomvc_task {\n\tcompleted? : boolean\n\ttitle? : string\n}\n\nnamespace $.$mol {\n\t\n\texport class $mol_app_todomvc_adder extends $.$mol_app_todomvc_adder {\n\t\t\n\t\teventPress( next? : KeyboardEvent ) {\n\t\t\tswitch( next['code'] || next.key ) {\n\t\t\t\tcase 'Enter' : return this.eventDone( next )\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\texport class $mol_app_todomvc extends $.$mol_app_todomvc {\n\t\t\n\t\ttaskIds( next? : number[] ) : number[] {\n\t\t\treturn $mol_state_local.value( this.stateKey( 'taskIds' ) , next ) || []\n\t\t}\n\t\t\n\t\targCompleted() {\n\t\t\treturn $mol_state_arg.value( this.stateKey( 'completed' ) )\n\t\t}\n\n\t\t@ $mol_mem()\n\t\tgroupsByCompleted() {\n\t\t\tvar groups : { [ index : string ] : number[] } = { 'true' : [] , 'false' : [] }\n\t\t\tfor( let id of this.taskIds() ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tgroups[ String( task.completed ) ].push( id )\n\t\t\t}\n\t\t\treturn groups\n\t\t}\n\n\t\t@ $mol_mem()\n\t\ttasksFiltered() {\n\t\t\tvar completed = this.argCompleted()\n\t\t\tif( completed ) {\n\t\t\t\treturn this.groupsByCompleted()[ completed ] || []\n\t\t\t} else {\n\t\t\t\treturn this.taskIds()\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_mem()\n\t\tallCompleted( next? : boolean ) {\n\t\t\tif( next === void 0 ) return this.groupsByCompleted()[ 'false' ].length === 0\n\t\t\t\n\t\t\tfor( let id of this.groupsByCompleted()[ String( !next ) ] ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tthis.task( id , { title : task.title , completed : next } )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tallCompleterEnabled() {\n\t\t\treturn this.taskIds().length > 0 \n\t\t}\n\n\t\t@ $mol_mem()\n\t\tpendingMessage() {\n\t\t\tlet count = this.groupsByCompleted()[ 'false' ].length\n\t\t\treturn ( count === 1 ) ? '1 item left' : `${count} items left`\n\t\t}\n\t\t\n\t\t_idSeed = 0\n\n\t\teventAdd( next : Event ) {\n\t\t\tvar title = this.taskNewTitle() \n\t\t\tif( !title ) return\n\t\t\t\n\t\t\tvar id = ++ this._idSeed\n\t\t\tvar task = { completed : false , title }\n\t\t\tthis.task( id , task )\n\t\t\t\n\t\t\tthis.taskIds( this.taskIds().concat( id ) )\n\t\t\tthis.taskNewTitle( '' )\n\t\t}\n\n\t\t@ $mol_mem()\n\t\ttaskers() {\n\t\t\treturn this.tasksFiltered().map( ( id , index )=> this.tasker( index ) )\n\t\t}\n\t\t\n\t\ttask( id : number , next? : $mol_app_todomvc_task ) {\n\t\t\tconst key = this.stateKey( `task=${id}` )\n\t\t\tif( next === void 0 ) return $mol_state_local.value( key ) || { title : '' , completed : false }\n\t\t\t\n\t\t\t$mol_state_local.value( key , next )\n\t\t\t\n\t\t\treturn next || void 0\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\ttaskCompleted( index : number , next? : boolean ) {\n\t\t\tvar id = this.tasksFiltered()[ index ]\n\t\t\tif( next === void 0 ) return this.task( id ).completed\n\t\t\t\n\t\t\tthis.task( id , $mol_merge_dict( this.task( id ) , { completed : next } ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\ttaskTitle( index : number , next? : string ) {\n\t\t\tvar id = this.tasksFiltered()[ index ]\n\t\t\tif( next === void 0 ) return this.task( id ).title\n\t\t\t\n\t\t\tthis.task( id , $mol_merge_dict( this.task( id ) , { title : next } ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\teventTaskDrop( index : number , next? : Event ) {\n\t\t\tvar tasks = this.tasksFiltered()\n\t\t\tvar id = tasks[index]\n\t\t\ttasks = tasks.slice( 0 , index ).concat( tasks.slice( index + 1 , tasks.length ) )\n\t\t\tthis.task( id , null )\n\t\t\tthis.taskIds( tasks )\n\t\t}\n\n\t\teventSanitize() {\n\t\t\tthis.taskIds( this.taskIds().filter( id => {\n\t\t\t\tif( !this.task( id ).completed ) return true\n\t\t\t\tthis.task( id , null )\n\t\t\t\treturn false\n\t\t\t} ) )\n\t\t}\n\t\t\n\t\tpanels() {\n\t\t\treturn [\n\t\t\t\tthis.header() , \n\t\t\t\tthis.lister() ,\n\t\t\t\tthis.footerVisible() ? this.footer() : null ,\n\t\t\t]\n\t\t}\n\t\t\n\t\tfooterVisible() {\n\t\t\treturn this.taskIds().length > 0\n\t\t}\n\n\t\tsanitizerEnabled() {\n\t\t\treturn this.groupsByCompleted()[ 'true' ].length > 0\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_app_todomvc_demo extends $mol_app_todomvc {\n\n} }\n\n"]} \ No newline at end of file +{"version":3,"sources":["../../../mol.jam.js","../../../log/log.web.ts","../../../object/object.ts","../../../set/set.ts","../../../set/set_select.jam.js","../../../defer/defer.ts","../../../dict/dict.ts","../../../dict/dict_select.jam.js","../../../state/stack/stack.ts","../../../atom/atom.ie.web.js","../../../atom/atom.ts","../../../mem/mem.ts","../../../window/window.web.ts","../../../view/view.ts","../../../view/view.web.ts","../../../view/selection/selection.ts","../../../view/selection/selection.web.ts","../../../string/-view.tree/string.view.tree.ts","../../../string/string.view.ts","../../../keyboard/code.ts","../../../button/-view.tree/button.view.tree.ts","../../../button/button.view.ts","../../../button/-view.tree/button_types.view.tree.ts","../../../merge/dict/dict.ts","../../../state/arg/arg.web.ts","../../../link/-view.tree/link.view.tree.ts","../../../link/linker.view.ts","../../../check/-view.tree/check.view.tree.ts","../../../check/check.view.ts","../../../state/session/session.ts","../../../scroll/-view.tree/scroll.view.tree.ts","../../../scroll/scroll.view.ts","../../../state/local/local.ts","../../../state/local/local.web.ts","../../../http/request/request.ts","../../../http/request/request.web.ts","../../../http/resource/resource.ts","../../../locale/locale.ts","../../../list/-view.tree/list.view.tree.ts","../../../list/list.view.ts","../../../bar/-view.tree/bar.view.tree.ts","../-view.tree/todomvc.view.tree.ts","../todomvc.view.ts","../demo/-view.tree/demo.view.tree.ts"],"names":[],"mappings":"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","file":"web.js","sourcesContent":[null,"namespace $ {\n\t\n\texport function $mol_log( path : string , values : any[] ) {\n\t\t\n\t\tvar filter = $mol_log.filter()\n\t\tif( filter == null ) return\n\t\tif( path.indexOf( filter ) === -1 ) return\n\t\t\n\t\tvar time = new Date().toLocaleTimeString()\n\t\tconsole.log( time , path , values )\n\t}\n\t\n\texport namespace $mol_log {\n\t\t\n\t\tvar _filter : string\n\t\t\n\t\texport function filter( next? : string ) {\n\t\t\tif( next !== void 0 ) {\n\t\t\t\tif( next == null ) {\n\t\t\t\t\tsessionStorage.removeItem( '$mol_log.filter()' )\n\t\t\t\t} else {\n\t\t\t\t\tsessionStorage.setItem( '$mol_log.filter()' , next )\n\t\t\t\t}\n\t\t\t\t_filter = next\n\t\t\t}\n\t\t\t\n\t\t\tif( _filter !== void 0 ) return _filter\n\t\t\t\n\t\t\treturn _filter = sessionStorage.getItem( '$mol_log.filter()' )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\t/// Common superclass that provides base functionality.\n\texport class $mol_object {\n\t\t\n\t\tClass() {\n\t\t\treturn this.constructor as any\n\t\t}\n\t\t\n\t\tstatic toString() : string {\n\t\t\tlet self : any = this\n\t\t\treturn self[ 'name' ]\n\t\t\t\t|| self[ 'displayName' ]\n\t\t\t\t|| ( self[ 'displayName' ] = Function.prototype.toString.call( self )\n\t\t\t\t.match( /^function ([a-z0-9_$]*)/ )[ 1 ] )\n\t\t}\n\t\t\n\t\t/// Owner object.\n\t\tprivate 'object_owner()' : Object\n\t\t\n\t\tobject_owner( next? : Object ) {\n\t\t\tif( this[ 'object_owner()' ] ) return this[ 'object_owner()' ]\n\t\t\treturn this[ 'object_owner()' ] = next\n\t\t}\n\t\t\n\t\t/// Field in owner where this object is stored.\n\t\tprivate 'object_field()' : string\n\t\t\n\t\tobject_field( next? : string ) {\n\t\t\tif( this[ 'object_field()' ] ) return this[ 'object_field()' ] || ''\n\t\t\treturn this[ 'object_field()' ] = next\n\t\t}\n\t\t\n\t\t/// JS-path to this object from global scope. Can not be redefined.\n\t\ttoString() {\n\t\t\tvar path = ''\n\t\t\t\n\t\t\tvar owner = this.object_owner()\n\t\t\tif( owner ) path = owner.toString()\n\t\t\t\n\t\t\tvar field = this.object_field()\n\t\t\tif( field ) path += '.' + field\n\t\t\t\n\t\t\treturn path\n\t\t}\n\t\t\n\t\t/// Helper to override fields in fluent style.\n\t\tsetup( script : ( obj : this )=> void ) : this {\n\t\t\tscript( this )\n\t\t\treturn this\n\t\t}\n\t\t\n\t\t'destroyed()' = false\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next === void 0 ) return this[ 'destroyed()' ]\n\t\t\tthis[ 'destroyed()' ] = next\n\t\t\tthis.log( [ '.destroyed()' , next ] )\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tlog( values : any[] ) {\n\t\t\tif( $mol_log.filter() == null ) return\n\t\t\t$mol_log( this.toString() , values )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport declare class $mol_set< Value > {\n\t\tsize : number\n\t\t\n\t\tadd( key : Value ) : this\n\t\t\n\t\tdelete( key : Value ) : void\n\t\t\n\t\thas( key : Value ) : boolean\n\t\t\n\t\tclear() : void\n\t\t\n\t\tkeys() : Value[]\n\t\t\n\t\tvalues() : Value[]\n\t\t\n\t\tentries() : [ Value , Value ][]\n\t\t\n\t\tforEach( handler : ( key : Value , value : Value ) => void ) : void\n\t}\n\t\n\texport class $mol_set_shim< Value > implements $mol_set< Value > {\n\t\t\n\t\t_index : { [ index : string ] : Value[] } = {}\n\t\tsize = 0\n\t\t\n\t\tadd( value : Value ) {\n\t\t\tvar key = String( value )\n\t\t\t\n\t\t\tvar list = this._index[ key ]\n\t\t\tif( list ) {\n\t\t\t\tif( list.indexOf( value ) !== -1 ) return this\n\t\t\t\tlist.push( value )\n\t\t\t} else {\n\t\t\t\tlist = this._index[ key ] = [ value ]\n\t\t\t}\n\t\t\t\n\t\t\t++this.size\n\t\t\t\n\t\t\treturn this\n\t\t}\n\t\t\n\t\thas( value : Value ) {\n\t\t\tvar key = String( value )\n\t\t\t\n\t\t\tvar list = this._index[ key ]\n\t\t\tif( !list ) return false\n\t\t\t\n\t\t\treturn list.indexOf( value ) !== -1\n\t\t}\n\t\t\n\t\tdelete( value : Value ) {\n\t\t\tvar key = String( value )\n\t\t\t\n\t\t\tvar list = this._index[ key ]\n\t\t\tif( !list ) return\n\t\t\t\n\t\t\tvar index = list.indexOf( value )\n\t\t\tif( index === -1 ) return\n\t\t\t\n\t\t\tlist.splice( index , 1 )\n\t\t\t--this.size\n\t\t}\n\t\t\n\t\tforEach( handle : ( val : Value , key : Value )=> void ) {\n\t\t\tfor( var key in this._index ) {\n\t\t\t\tif( !this._index.hasOwnProperty( key ) ) continue\n\t\t\t\tthis._index[ key ].forEach( ( val , index ) => handle( val , val ) )\n\t\t\t}\n\t\t}\n\t\t\n\t\tkeys() {\n\t\t\tvar keys : Value[] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tkeys.push( key )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn keys\n\t\t}\n\t\t\n\t\tvalues() {\n\t\t\tvar values : Value[] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tvalues.push( val )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn values\n\t\t}\n\t\t\n\t\tentries() {\n\t\t\tvar entries : [ Value , Value ][] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tentries.push( [ val , key ] )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn entries\n\t\t}\n\t\t\n\t\tclear() {\n\t\t\tthis._index = {}\n\t\t\tthis.size = 0\n\t\t}\n\t\t\n\t}\n\t\n}\n",null,"namespace $ {\n\t\n\texport class $mol_defer extends $mol_object {\n\t\t\n\t\tconstructor( public run : ()=> void ) {\n\t\t\tsuper()\n\t\t\t$mol_defer.add( this )\n\t\t}\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next ) $mol_defer.drop( this )\n\t\t\treturn super.destroyed( next )\n\t\t}\n\t\t\n\t\tstatic all : $mol_defer[] = []\n\t\tstatic timer = 0\n\t\t\n\t\tstatic scheduleNative : ( handler : ()=> void ) => number = ( typeof requestAnimationFrame == 'function' )\n\t\t\t? handler => requestAnimationFrame( handler )\n\t\t\t: handler => setTimeout( handler , 16 )\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.timer ) return\n\t\t\t\n\t\t\tthis.timer = this.scheduleNative(\n\t\t\t\t()=> {\n\t\t\t\t\tthis.timer = 0\n\t\t\t\t\tthis.run()\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t\t\n\t\tstatic unschedule() {\n\t\t\tif( !this.timer ) return\n\t\t\t\n\t\t\tcancelAnimationFrame( this.timer )\n\t\t\tthis.timer = 0\n\t\t}\n\t\t\n\t\tstatic add( defer : $mol_defer ) {\n\t\t\tthis.all.push( defer )\n\t\t\tthis.schedule()\n\t\t}\n\t\t\n\t\tstatic drop( defer : $mol_defer ) {\n\t\t\tvar index = this.all.indexOf( defer )\n\t\t\tif( index >= 0 ) this.all.splice( index , 1 )\n\t\t}\n\t\t\n\t\tstatic run() {\n\t\t\tif( this.all.length === 0 ) return\n\t\t\tthis.schedule()\n\t\t\tfor( var defer : $mol_defer ; defer = this.all.pop() ; ) defer.run()\n\t\t\t//this.unschedule()\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\texport declare class $mol_dict< Key , Value > {\n\t\tsize : number\n\t\t\n\t\tget( key : Key ) : Value\n\t\t\n\t\tset( key : Key , value : Value ) : this\n\t\t\n\t\tdelete( key : Key ) : void\n\t\t\n\t\thas( key : Key ) : boolean\n\t\t\n\t\tclear() : void\n\t\t\n\t\tkeys() : Key[]\n\t\t\n\t\tvalues() : Value[]\n\t\t\n\t\tentries() : [ Key , Value ][]\n\t\t\n\t\tforEach( handler : ( value : Value , key : Key ) => void ) : void\n\t}\n\t\n\texport class $mol_dict_shim< Key , Value > implements $mol_dict< Key , Value > {\n\t\t\n\t\t_keys : { [ index : string ] : Key[] } = {}\n\t\t_values : { [ index : string ] : Value[] } = {}\n\t\tsize = 0\n\t\t\n\t\tset( key : Key , value : Value ) {\n\t\t\tvar keyStr = String( key )\n\t\t\t\n\t\t\tvar keys = this._keys[ keyStr ]\n\t\t\tif( keys ) {\n\t\t\t\tvar index = keys.indexOf( key )\n\t\t\t\tif( index === -1 ) {\n\t\t\t\t\tindex = keys.length\n\t\t\t\t\tkeys.push( key )\n\t\t\t\t\t++this.size\n\t\t\t\t}\n\t\t\t\tthis._values[ keyStr ][ index ] = value\n\t\t\t} else {\n\t\t\t\tthis._keys[ keyStr ] = [ key ]\n\t\t\t\tthis._values[ keyStr ] = [ value ]\n\t\t\t\t++this.size\n\t\t\t}\n\t\t\t\n\t\t\treturn this\n\t\t}\n\t\t\n\t\tget( key : Key ) {\n\t\t\tvar keyStr = String( key )\n\t\t\t\n\t\t\tvar list = this._keys[ keyStr ]\n\t\t\tif( !list ) return void 0\n\t\t\t\n\t\t\tvar index = list.indexOf( key )\n\t\t\tif( index === -1 ) return void 0\n\t\t\t\n\t\t\treturn this._values[ keyStr ][ index ]\n\t\t}\n\t\t\n\t\thas( key : Key ) {\n\t\t\tvar keyStr = String( key )\n\t\t\t\n\t\t\tvar list = this._keys[ keyStr ]\n\t\t\tif( !list ) return false\n\t\t\t\n\t\t\treturn list.indexOf( key ) !== -1\n\t\t}\n\t\t\n\t\tdelete( key : Key ) {\n\t\t\tvar keyStr = String( key )\n\t\t\t\n\t\t\tvar keys = this._keys[ keyStr ]\n\t\t\tif( !keys ) return\n\t\t\t\n\t\t\tvar index = keys.indexOf( key )\n\t\t\tif( index === -1 ) return\n\t\t\t\n\t\t\tkeys.splice( index , 1 )\n\t\t\tthis._values[ keyStr ].splice( index , 1 )\n\t\t\t\n\t\t\t--this.size\n\t\t}\n\t\t\n\t\tforEach( handle : ( val : Value , key : Key )=> void ) {\n\t\t\tfor( var keyStr in this._keys ) {\n\t\t\t\tif( !this._keys.hasOwnProperty( keyStr ) ) continue\n\t\t\t\tvar values = this._values[ keyStr ]\n\t\t\t\tthis._keys[ keyStr ].forEach(\n\t\t\t\t\t( key , index ) => {\n\t\t\t\t\t\thandle( values[ index ] , key )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\t\n\t\tkeys() {\n\t\t\tvar keys : Key[] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tkeys.push( key )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn keys\n\t\t}\n\t\t\n\t\tvalues() {\n\t\t\tvar values : Value[] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tvalues.push( val )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn values\n\t\t}\n\t\t\n\t\tentries() {\n\t\t\tvar entries : [ Key , Value ][] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tentries.push( [ key , val ] )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn entries\n\t\t}\n\t\t\n\t\tclear() {\n\t\t\tthis._keys = {}\n\t\t\tthis._values = {}\n\t\t\tthis.size = 0\n\t\t}\n\t\t\n\t}\n\t\n}\n",null,"namespace $ {\n\t\n\t/// Global storage of temporary state\n\texport var $mol_state_stack = new $mol_dict< string , any >()\n\t\n}\n",null,"declare var Proxy : any\n\nnamespace $ {\n\t\n\texport enum $mol_atom_status {\n\t\tobsolete = 'obsolete' as any ,\n\t\tchecking = 'checking' as any ,\n\t\tpulling = 'pulling' as any ,\n\t\tactual = 'actual' as any ,\n\t}\n\t\n\texport class $mol_atom< Value > extends $mol_object {\n\t\t\n\t\tmasters : $mol_set< $mol_atom > = null\n\t\tslaves : $mol_set< $mol_atom > = null\n\t\t\n\t\tstatus = $mol_atom_status.obsolete\n\t\tautoFresh = true\n\t\t\n\t\thandler : ( next? : Value|Error , force? : $mol_atom_force )=> Value\n\t\thost : { [ key : string ] : any }\n\t\tfield : string\n\t\t\n\t\tconstructor(\n\t\t\thost : any ,\n\t\t\thandler : ( next? : Value|Error , force? : $mol_atom_force )=> Value ,\n\t\t\tfield = 'value()'\n\t\t) {\n\t\t\tsuper()\n\t\t\t\n\t\t\tthis.handler = handler\n\t\t\tthis.host = Object( host )\n\t\t\tthis.field = field || 'value()'\n\t\t}\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next ) {\n\t\t\t\tthis.unlink()\n\t\t\t\t\n\t\t\t\tconst host = this.host\n\t\t\t\tconst value = host[ this.field ]\n\t\t\t\tif( value instanceof $mol_object ) {\n\t\t\t\t\tif( ( value.object_owner() === host ) && ( value.object_field() === this.field ) ) {\n\t\t\t\t\t\tvalue.destroyed( true );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\thost[ this.field ] = void null\n\t\t\t\thost[ this.field + '@' ] = void null\n\t\t\t\t\n\t\t\t\tthis[ 'destroyed()' ] = true\n\t\t\t\tthis.log( [ '.destroyed()' , true , 'atom' ] )\n\t\t\t\tthis.status = $mol_atom_status.obsolete\n\t\t\t\t\n\t\t\t\treturn true\n\t\t\t} else {\n\t\t\t\treturn this[ 'destroyed()' ]\n\t\t\t}\n\t\t}\n\t\t\n\t\tunlink() {\n\t\t\tthis.disobey_all()\n\t\t\tthis.check_slaves()\n\t\t}\n\t\t\n\t\ttoString() {\n\t\t\treturn `${ this.host }.${ this.field }`\n\t\t}\n\t\t\n\t\tget( force? : $mol_atom_force ) {\n\t\t\tif( this.status === $mol_atom_status.pulling ) {\n\t\t\t\tthrow new Error( `Cyclic atom dependency of ${ this }` )\n\t\t\t}\n\t\t\t\n\t\t\tthis.actualize( force )\n\t\t\t\n\t\t\tconst slave = $mol_atom.stack[0]\n\t\t\tif( slave ) this.lead( slave )\n\t\t\tif( slave ) slave.obey( this )\n\t\t\t\n\t\t\tconst value : Value = this.host[ this.field ]\n\t\t\t\n\t\t\tif( value instanceof Error ) {\n\t\t\t\tif( typeof Proxy !== 'function' ) throw value\n\t\t\t\t//if(!( value instanceof $mol_atom_wait )) throw value\n\t\t\t}\n\t\t\t\n\t\t\treturn value\n\t\t}\n\t\t\n\t\tactualize( force? : $mol_atom_force ) {\n\t\t\t\n\t\t\t//this.log([ 'actualize' ])\n\t\t\t\n\t\t\tif( !force && this.status === $mol_atom_status.actual ) return\n\t\t\t\n\t\t\tconst slave = $mol_atom.stack[0]\n\t\t\t$mol_atom.stack[0] = this\n\t\t\t\n\t\t\tif( !force && this.status === $mol_atom_status.checking ) {\n\t\t\t\t\n\t\t\t\tthis.masters.forEach(\n\t\t\t\t\tmaster => {\n\t\t\t\t\t\tif( this.status !== $mol_atom_status.checking ) return\n\t\t\t\t\t\tmaster.actualize()\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tif( this.status === $mol_atom_status.checking ) {\n\t\t\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif( force || this.status !== $mol_atom_status.actual ) {\n\t\t\t\t\n\t\t\t\tconst oldMasters = this.masters\n\t\t\t\tthis.masters = null\n\t\t\t\t\n\t\t\t\tif( oldMasters ) oldMasters.forEach(\n\t\t\t\t\tmaster => {\n\t\t\t\t\t\tmaster.dislead( this )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tthis.status = $mol_atom_status.pulling\n\t\t\t\tconst next = this.pull( force )\n\t\t\t\t\n\t\t\t\tthis.push( next )\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t$mol_atom.stack[0] = slave\n\t\t}\n\t\t\n\t\tpull( force? : $mol_atom_force ) {\n\t\t\ttry {\n\t\t\t\treturn this.handler( this._next , force )\n\t\t\t} catch( error ) {\n\t\t\t\tif( error[ '$mol_atom_catched' ] ) return error\n\t\t\t\tif( error instanceof $mol_atom_wait ) return error\n\t\t\t\t\n\t\t\t\tconsole.error( error.stack || error )\n\t\t\t\t\n\t\t\t\tif(!( error instanceof Error )) {\n\t\t\t\t\terror = new Error( error.stack || error )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\terror['$mol_atom_catched'] = true\n\t\t\t\treturn error\n\t\t\t}\n\t\t}\n\t\t\n\t\t_next : Value|Error\n\t\t\n\t\tset( next : Value ) : Value {\n\t\t\tconst next_normal = this.normalize( next , this._next )\n\t\t\tif( next_normal === this._next ) return this._next\n\t\t\t\n\t\t\tthis._next = next_normal\n\t\t\tthis.obsolete()\n\t\t\treturn this.get()\n\t\t}\n\t\t\n\t\tnormalize( next : Value , prev : Value|Error ) : Value {\n\t\t\tif( next === prev ) return next\n\t\t\t\n\t\t\tif( ( next instanceof Array ) && ( prev instanceof Array ) && ( next.length === prev.length ) ) {\n\t\t\t\tfor( let i = 0 ; i < next.length ; ++i ) {\n\t\t\t\t\tif( next[ i ] !== prev[ i ] ) return next as any\n\t\t\t\t}\n\t\t\t\treturn prev as any\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tpush( next_raw : Value|Error ) {\n\t\t\tthis._next = void null\n\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\n\t\t\tconst host = this.host\n\t\t\tconst prev = host[ this.field ]\n\t\t\t\n\t\t\tif( next_raw === void null ) return prev\n\t\t\t\n\t\t\tlet next = ( next_raw instanceof Error ) ? next_raw : this.normalize( next_raw , prev )\n\t\t\t\n\t\t\tif( next === prev ) return prev\n\t\t\t\n\t\t\tif( next instanceof $mol_object ) {\n\t\t\t\tnext.object_field( this.field )\n\t\t\t\tnext.object_owner( host )\n\t\t\t}\n\t\t\t\n\t\t\tif(( typeof Proxy === 'function' )&&( next instanceof Error )) {\n\t\t\t\tnext = new Proxy( next , {\n\t\t\t\t\tget( target : Error ) {\n\t\t\t\t\t\tthrow target.valueOf()\n\t\t\t\t\t} ,\n\t\t\t\t\townKeys( target : Error ) {\n\t\t\t\t\t\tthrow target.valueOf()\n\t\t\t\t\t} ,\n\t\t\t\t} )\n\t\t\t}\n\t\t\t\n\t\t\thost[ this.field ] = next\n\t\t\tthis.log( [ 'push' , next , prev ] )\n\t\t\t\n\t\t\tthis.obsolete_slaves()\n\t\t\t\n\t\t\treturn next as Value\n\t\t}\n\t\t\n\t\tobsolete_slaves() {\n\t\t\tif( !this.slaves ) return\n\t\t\t\n\t\t\tthis.slaves.forEach( slave => slave.obsolete() )\n\t\t}\n\t\t\n\t\tcheck_slaves() {\n\t\t\tif( this.slaves ) {\n\t\t\t\tthis.slaves.forEach( slave => slave.check() )\n\t\t\t} else {\n\t\t\t\tif( this.autoFresh ) $mol_atom.actualize( this )\n\t\t\t}\n\t\t}\n\t\t\n\t\tcheck() {\n\t\t\t//if( this.status === $mol_atom_status.pulling ) {\n\t\t\t//\tthrow new Error( `May be obsolated while pulling ${ this }` )\n\t\t\t//}\n\t\t\t\n\t\t\tif( this.status === $mol_atom_status.actual ) {\n\t\t\t\t//this.log([ 'checking' ])\n\t\t\t\tthis.status = $mol_atom_status.checking\n\t\t\t\t\n\t\t\t\tthis.check_slaves()\n\t\t\t}\n\t\t}\n\t\t\n\t\tobsolete() : Value {\n\t\t\tif( this.status === $mol_atom_status.obsolete ) return\n\t\t\t\n\t\t\t//if( this.status === $mol_atom_status.pulling ) {\n\t\t\t//\tthrow new Error( `Obsolated while pulling ${ this }` )\n\t\t\t//} \n\t\t\t\n\t\t\tthis.log( [ 'obsolete' ] )\n\t\t\t\n\t\t\tthis.status = $mol_atom_status.obsolete\n\t\t\t\n\t\t\tthis.check_slaves()\n\t\t\t\n\t\t\treturn void null\n\t\t}\n\t\t\n\t\tlead( slave : $mol_atom ) {\n\t\t\tif( !this.slaves ) {\n\t\t\t\tthis.slaves = new $mol_set<$mol_atom>()\n\t\t\t\t$mol_atom.unreap( this )\n\t\t\t}\n\t\t\tthis.slaves.add( slave )\n\t\t}\n\t\t\n\t\tdislead( slave : $mol_atom ) {\n\t\t\tif( !this.slaves ) return\n\t\t\t\n\t\t\tif( this.slaves.size === 1 ) {\n\t\t\t\tthis.slaves = null\n\t\t\t\t$mol_atom.reap( this )\n\t\t\t} else {\n\t\t\t\tthis.slaves.delete( slave )\n\t\t\t}\n\t\t}\n\t\t\n\t\tobey( master : $mol_atom ) {\n\t\t\tif( !this.masters ) this.masters = new $mol_set< $mol_atom >()\n\t\t\tthis.masters.add( master )\n\t\t}\n\t\t\n\t\tdisobey( master : $mol_atom ) {\n\t\t\tif( !this.masters ) return\n\t\t\tthis.masters.delete( master )\n\t\t}\n\t\t\n\t\tdisobey_all() {\n\t\t\tif( !this.masters ) return\n\t\t\t\n\t\t\tthis.masters.forEach( master => master.dislead( this ) )\n\t\t\t\n\t\t\tthis.masters = null\n\t\t}\n\t\t\n\t\tvalue( next? : Value , force? : $mol_atom_force ) {\n\t\t\tif( next === void null ) {\n\t\t\t\treturn this.get( force )\n\t\t\t} else {\n\t\t\t\tif( force ) {\n\t\t\t\t\treturn this.push( next )\n\t\t\t\t} else {\n\t\t\t\t\treturn this.set( next )\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic stack = [ null ] as $mol_atom[]\n\t\tstatic updating : $mol_atom[] = []\n\t\tstatic reaping = new $mol_set< $mol_atom >()\n\t\tstatic scheduled = false\n\t\t\n\t\tstatic actualize( atom : $mol_atom ) {\n\t\t\t$mol_atom.updating.push( atom )\n\t\t\t$mol_atom.schedule()\n\t\t}\n\t\t\n\t\tstatic reap( atom : $mol_atom ) {\n\t\t\t$mol_atom.reaping.add( atom )\n\t\t\t$mol_atom.schedule()\n\t\t}\n\t\t\n\t\tstatic unreap( atom : $mol_atom ) {\n\t\t\t$mol_atom.reaping.delete( atom )\n\t\t}\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.scheduled ) return\n\t\t\t\n\t\t\tnew $mol_defer(\n\t\t\t\t() => {\n\t\t\t\t\tif( !this.scheduled ) return\n\t\t\t\t\tthis.scheduled = false\n\t\t\t\t\tthis.sync()\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\tthis.scheduled = true\n\t\t}\n\t\t\n\t\tstatic sync() {\n\t\t\t$mol_log( '$mol_atom.sync' , [] )\n\t\t\tthis.schedule()\n\t\t\t\n\t\t\twhile( this.updating.length ) {\n\t\t\t\tconst atom = this.updating.shift()\n\t\t\t\tif( this.reaping.has( atom ) ) continue\n\t\t\t\tif( !atom.destroyed() ) atom.get()\n\t\t\t}\n\t\t\t\n\t\t\twhile( this.reaping.size ) {\n\t\t\t\tthis.reaping.forEach(\n\t\t\t\t\tatom => {\n\t\t\t\t\t\tthis.reaping.delete( atom )\n\t\t\t\t\t\tif( !atom.slaves ) atom.destroyed( true )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\t\n\t\t\tthis.scheduled = false\n\t\t}\n\t\t\n\t}\n\t\n\t$mol_state_stack.set( '$mol_atom.stack' , $mol_atom.stack )\n\t\n\texport class $mol_atom_wait extends Error {\n\t\tname = '$mol_atom_wait'\n\t\t\n\t\tconstructor( public message = 'Wait...' ) {\n\t\t\tsuper( message )\n\t\t\tconst error : any = new Error( message )\n\t\t\terror.name = this.name\n\t\t\terror['__proto__'] = $mol_atom_wait.prototype\n\t\t\treturn error\n\t\t}\n\t}\n\t\n\texport class $mol_atom_force extends Object {\n\t\t$mol_atom_force : boolean\n\t\tstatic $mol_atom_force : boolean\n\t}\n\t\n\texport function $mol_atom_task< Value >(\n\t\thost : any ,\n\t\thandler : ()=> Value ,\n\t) {\n\t\tconst atom = new $mol_atom(\n\t\t\thost ,\n\t\t\t() => {\n\t\t\t\ttry {\n\t\t\t\t\thandler()\n\t\t\t\t} catch( error ) {\n\t\t\t\t\tif(!( error instanceof $mol_atom_wait )) atom.destroyed( true )\n\t\t\t\t\tthrow error\n\t\t\t\t}\n\t\t\t\tatom.destroyed( true )\n\t\t\t} ,\n\t\t)\n\t\t\n\t\t$mol_atom.actualize( atom )\n\t\t\n\t\treturn atom\n\t}\n\t\n}\n","namespace $ {\n\t\n\t/// Creates the decorator for caching result value by json-key passed as first argument.\n\t/// Method must be a polymorphic property (getter/setter/getter+setter).\n\texport function $mol_mem< Host , Value >(\n\t\tconfig? : {\n\t\t\tlazy? : boolean\n\t\t}\n\t) {\n\t\t\n\t\treturn function(\n\t\t\tobj : Host ,\n\t\t\tname : string ,\n\t\t\tdescr : TypedPropertyDescriptor< ( next? : Value , force? : $mol_atom_force )=> Value >\n\t\t) {\n\t\t\tconst value = descr.value\n\t\t\t\n\t\t\tdescr.value = function( next? : Value , force? : $mol_atom_force ) {\n\t\t\t\tconst host : any = this\n\t\t\t\tconst field = name + \"()\"\n\t\t\t\tconst fieldA = field + '@'\n\t\t\t\t\n\t\t\t\tlet atom : $mol_atom = host[ fieldA ]\n\t\t\t\tif( !atom ) {\n\t\t\t\t\tif( force && ( next === void null ) ) return next\n\t\t\t\t\t\n\t\t\t\t\thost[ fieldA ] = atom = new $mol_atom(\n\t\t\t\t\t\thost ,\n\t\t\t\t\t\tvalue.bind( host ) as any , // FIXME: type checking\n\t\t\t\t\t\tfield ,\n\t\t\t\t\t)\n\t\t\t\t\tif( config ) atom.autoFresh = !config.lazy\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn atom.value( next , force )\n\t\t\t}\n\t\t\t\n\t\t\tvoid( (descr.value)[ 'value' ] = value )\n\t\t}\n\t\t\n\t}\n\t\n\texport function $mol_mem_key< Host , Key , Value >(\n\t\tconfig? : {\n\t\t\tlazy? : boolean\n\t\t}\n\t) {\n\t\t\n\t\treturn function(\n\t\t\tobj : Host ,\n\t\t\tname : string ,\n\t\t\tdescr : TypedPropertyDescriptor< ( key : Key , next? : Value , force? : $mol_atom_force )=> Value >\n\t\t) {\n\t\t\tconst value = descr.value\n\n\t\t\tdescr.value = function( key : Key , next? : Value , force? : $mol_atom_force ) {\n\t\t\t\tconst host : any = this\n\t\t\t\tconst field = name + \"(\" + JSON.stringify( key ) + \")\"\n\t\t\t\tconst fieldA = field + '@'\n\t\t\t\t\n\t\t\t\tlet atom : $mol_atom = host[ fieldA ]\n\t\t\t\tif( !atom ) {\n\t\t\t\t\tif( force && ( next === void null ) ) return next\n\t\t\t\t\t\n\t\t\t\t\thost[ fieldA ] = atom = new $mol_atom(\n\t\t\t\t\t\thost ,\n\t\t\t\t\t\tvalue.bind( host , key ) as any , // FIXME: type checking\n\t\t\t\t\t\tfield ,\n\t\t\t\t\t)\n\t\t\t\t\tif( config ) atom.autoFresh = !config.lazy\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn atom.value( next , force )\n\t\t\t}\n\t\t\t\n\t\t\tvoid( (descr.value)[ 'value' ] = value )\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\texport class $mol_window extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic size( next? : {\n\t\t\twidth : number\n\t\t\theight : number\n\t\t} ) {\n\t\t\treturn next || {\n\t\t\t\twidth : window.innerWidth ,\n\t\t\t\theight : window.innerHeight ,\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\twindow.addEventListener( 'resize' , ()=> {\n\t\t$mol_window.size( null )\n\t} )\n\t\n}\n","namespace $ {\n\t\n\texport let $mol_view_context = <$mol_view_context> {}\n\t\n\texport interface $mol_view_context {\n\t\t$mol_view_visible_width() : number\n\t\t$mol_view_visible_height() : number\n\t}\n\t\n\t$mol_view_context.$mol_view_visible_width = () => $mol_window.size().width\n\t$mol_view_context.$mol_view_visible_height = () => $mol_window.size().height\n\n\t/// Reactive statefull lazy ViewModel \n\texport class $mol_view extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic Root( id : number ) {\n\t\t\treturn new this\n\t\t}\n\t\t\n\t\ttitle() : string {\n\t\t\treturn this.Class().toString()\n\t\t}\n\t\t\n\t\tstatic state_prefix() {\n\t\t\treturn ''\n\t\t}\n\t\t\n\t\t@$mol_mem()\n\t\tfocused ( next?: boolean ) {\n\t\t\tconst value = $mol_view_selection.focused( next === void 0 ? void 0 : [ this.dom_node() ] )\n\t\t\treturn value.indexOf( this.dom_node() ) !== -1\n\t\t} \n\t\t\n\t\tstate_prefix() {\n\t\t\tconst owner = this.object_owner()\n\t\t\treturn owner ? (owner).state_prefix() : ''\n\t\t}\n\t\t\n\t\tstate_key( postfix : string ) {\n\t\t\treturn this.state_prefix() + postfix\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tcontext( next? : $mol_view_context ) {\n\t\t\treturn next || $mol_view_context\n\t\t}\n\t\t\n\t\tcontext_sub() {\n\t\t\treturn this.context()\n\t\t}\n\t\t\n\t\t/// Name of element that created when element not found in DOM\n\t\tdom_name() {\n\t\t\treturn this.constructor.toString().replace( '$' , '' )\n\t\t}\n\t\t\n\t\t/// NameSpace of element that created when element not found in DOM\n\t\tdom_name_space() { return 'http://www.w3.org/1999/xhtml' }\n\t\t\n\t\t/// Raw child views\n\t\tsub() {\n\t\t\treturn > null\n\t\t}\n\t\t\n\t\t/// Visible sub views with defined context()\n\t\t/// Render all by default\n\t\tsub_visible() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return sub\n\t\t\t\n\t\t\tconst context = this.context_sub()\n\t\t\tsub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.context( context )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn sub\n\t\t}\n\t\t\n\t\t/// Minimal height that used for lazy rendering\n\t\t@ $mol_mem()\n\t\tminimal_width() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return 0\n\t\t\t\n\t\t\tlet min = 0\n\t\t\tsub.forEach( view => {\n\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\tmin = Math.max( min , view.minimal_width() )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn min\n\t\t}\n\t\t\n\t\t/// Minimal width that used for lazy rendering\n\t\t@ $mol_mem()\n\t\tminimal_height() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return 0\n\t\t\t\n\t\t\tlet min = 0\n\t\t\tsub.forEach( view => {\n\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\tmin = Math.max( min , view.minimal_height() )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn min\n\t\t}\n\t\t\n\t\tprivate 'dom_node()' : Element\n\t\t\n\t\tdom_node( next? : Element ) {\n\t\t\tconst path = this.toString()\n\t\t\t\n\t\t\tlet next2 = next\n\t\t\tif( !next2 ) {\n\t\t\t\tnext2 = this[ 'dom_node()' ]\n\t\t\t\tif( next2 ) return next2\n\t\t\t\t\n\t\t\t\tnext2 = document.getElementById( path )\n\t\t\t\tif( next2 ) {\n\t\t\t\t\tif( (next2)[ '$mol_view' ] ) {\n\t\t\t\t\t\treturn this[ 'dom_node()' ] = next2\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tnext2 = document.createElementNS( this.dom_name_space() , this.dom_name() )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tnext2.id = path\n\t\t\tvoid( (next2)[ '$mol_view' ] = this )\n\t\t\tthis[ 'dom_node()' ] = next2\n\t\t\t\n\t\t\t/// Set BEM-like element-attributes with inheritance support\n\t\t\tlet ownerProto = this.object_owner() && Object.getPrototypeOf( this.object_owner() ) as $mol_object\n\t\t\tif( ownerProto ) {\n\t\t\t\tconst suffix = this.object_field().replace( /\\(.*/ , '' )\n\t\t\t\tconst suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1)\n\t\t\t\t\n\t\t\t\twhile( ownerProto && ( ownerProto instanceof $mol_view ) && ( suffix in ownerProto ) ) {\n\t\t\t\t\tconst attrName = ownerProto.constructor.toString().replace( /\\$/g , '' ) + suffix2\n\t\t\t\t\tnext2.setAttribute( attrName , '' )\n\t\t\t\t\townerProto = Object.getPrototypeOf( ownerProto )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/// Set BEM-like block-attributes with inheritance support\n\t\t\tlet proto = Object.getPrototypeOf( this ) as $mol_view\n\t\t\twhile( proto ) {\n\t\t\t\tconst attrName = proto.constructor.toString().replace( /\\$/g , '' ).toLowerCase()\n\t\t\t\tnext2.setAttribute( attrName , '' )\n\t\t\t\tif(!( proto instanceof $mol_view )) break\n\t\t\t\tproto = Object.getPrototypeOf( proto )\n\t\t\t}\n\t\t\t\n\t\t\t/// Bind properties to events\n\t\t\t$mol_view.bind_event( next2 , this.event() )\n\t\t\t\n\t\t\treturn next2\n\t\t}\n\t\t\n\t\tstatic bind_event( node: Element , events: { [ key : string ] : ( event : Event )=> void } ) {\n\t\t\tfor( let name in events ) {\n\t\t\t\tlet handle = events[ name ]\n\t\t\t\tnode.addEventListener( name , event => {\n\t\t\t\t\t$mol_atom_task( `${ this }.event()['${ name }']` , ()=> {\n\t\t\t\t\t\thandle( event )\n\t\t\t\t\t} ).get()\n\t\t\t\t} )\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic render_sub( node : Element , sub : ($mol_view|Node|string|number|boolean)[] ) {\n\t\t\tif( sub == null ) return\n\t\t\t\t\n\t\t\tlet nextNode = node.firstChild\n\t\t\tfor( let view of sub ) {\n\t\t\t\t\n\t\t\t\tif( view == null ) {\n\t\t\t\t} else if( typeof view === 'object' ) {\n\t\t\t\t\tconst existsNode = ( ( view instanceof $mol_view ) ? view.dom_node() : view.valueOf() as Node )\n\t\t\t\t\twhile( true ) {\n\t\t\t\t\t\tif( !nextNode ) {\n\t\t\t\t\t\t\tnode.appendChild( existsNode )\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif( nextNode == existsNode ) {\n\t\t\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t//if( childViews.indexOf( nextNode ) === -1 ) {\n\t\t\t\t\t\t\t//\tvar nn = nextNode.nextSibling\n\t\t\t\t\t\t\t//\tprev.removeChild( nextNode )\n\t\t\t\t\t\t\t//\tnextNode = nn\n\t\t\t\t\t\t\t//} else {\n\t\t\t\t\t\t\tnode.insertBefore( existsNode , nextNode )\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t//}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif( nextNode && nextNode.nodeName === '#text' ) {\n\t\t\t\t\t\tnextNode.nodeValue = String( view )\n\t\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst textNode = document.createTextNode( String( view ) )\n\t\t\t\t\t\tnode.insertBefore( textNode , nextNode )\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\twhile( nextNode ) {\n\t\t\t\tconst currNode = nextNode\n\t\t\t\tnextNode = currNode.nextSibling\n\t\t\t\tnode.removeChild( currNode )\n\t\t\t}\n\t\t\t\n\t\t\tfor( let view of sub ) {\n\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tview.dom_tree()\n\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\tconsole.error(e)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic render_attr( node : Element , attrs : { [ key : string ] : string|number|boolean } ) {\n\t\t\tfor( let name in attrs ) {\n\t\t\t\tlet val = attrs[ name ]\n\t\t\t\tif( ( val == null ) || ( val === false ) ) {\n\t\t\t\t\tnode.removeAttribute( name )\n\t\t\t\t} else if( val === true ) {\n\t\t\t\t\tnode.setAttribute( name , 'true' )\n\t\t\t\t} else {\n\t\t\t\t\tnode.setAttribute( name , String( val ) )\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic render_style( node : HTMLElement , styles : { [ key : string ] : string|number } ) {\n\t\t\tfor( let name in styles ) {\n\t\t\t\tlet val = styles[ name ] as any\n\t\t\t\tif( typeof val === 'number' ) val = `${ val }px`\n\t\t\t\tconst style = node.style as any\n\t\t\t\tstyle[ name ] = val\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic render_field( node : any , field : { [ key : string ] : any } ) {\n\t\t\tfor( let key in field ) {\n\t\t\t\tconst val = field[ key ]\n\t\t\t\tif( node[ key ] !== val ) node[ key ] = val\n\t\t\t}\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tdom_tree() {\n\t\t\tlet node = this.dom_node() as HTMLElement\n\t\t\t\n\t\t\ttry {\n\t\t\t\t$mol_view.render_attr( node , this.attr() )\n\t\t\t\t$mol_view.render_style( node , this.style() )\n\t\t\t\t$mol_view.render_sub( node , this.sub_visible() )\n\t\t\t\t$mol_view.render_field( node , this.field() )\n\t\t\t\t\n\t\t\t\treturn node\n\t\t\t} catch( error ) {\n\t\t\t\tif( !error['$mol_view_catched'] ) {\n\t\t\t\t\tnode.setAttribute( 'mol_view_error' , error.name )\n\t\t\t\t\terror['$mol_view_catched'] = true\n\t\t\t\t}\n\t\t\t\tthrow error\n\t\t\t}\n\t\t}\n\t\t\n\t\tattr() : { [ key : string ] : string|number|boolean } { return {\n\t\t\t'mol_view_error' : false\n\t\t} }\n\t\t\n\t\tstyle() : { [ key : string ] : string|number } { return {\n\t\t} }\n\t\t\n\t\tfield() : { [ key : string ] : any } { return {\n\t\t} }\n\t\t\n\t\tevent() : { [ key : string ] : ( event : Event )=> void } { return {} }\n\t\t\n\t\tlocale_contexts() {\n\t\t\tconst contexts = [] as string[]\n\t\t\tlet proto = Object.getPrototypeOf( this ) as $mol_view\n\t\t\twhile( proto && ( proto instanceof $mol_view ) ) {\n\t\t\t\tcontexts.push( proto.constructor.toString() )\n\t\t\t\tproto = Object.getPrototypeOf( proto )\n\t\t\t}\n\t\t\treturn contexts\n\t\t}\n\t\t\n\t}\n\t\n}\n","interface Window {\n\tcordova : any\n}\n\nnamespace $ {\n\n\t/// Autoattach view roots to loaded DOM.\n\tdocument.addEventListener( window.cordova ? 'deviceready' : 'DOMContentLoaded' , event => {\n\t\t\t\n\t\tconst nodes = document.querySelectorAll( '[mol_view_root]' )\n\t\t\n\t\tfor( let i = nodes.length - 1 ; i >= 0 ; --i ) {\n\t\t\tlet view = ($)[ nodes.item( i ).getAttribute( 'mol_view_root' ) ].Root( i )\n\t\t\tview.dom_node( nodes.item( i ) )\n\t\t\tlet win = new $mol_atom( `$mol_view.Root(${ i })` , ()=> {\n\t\t\t\tview.dom_tree()\n\t\t\t\tdocument.title = view.title()\n\t\t\t\treturn null\n\t\t\t} )\n\t\t\tnew $mol_defer( ()=> win.get() )\n\t\t}\n\t\t\n\t\t$mol_defer.run()\n\t} )\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_view_selection extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic focused( next? : Element[] , force? : $mol_atom_force ) {\n\t\t\tif( next === void 0 ) return [] as Element[]\n\t\t\t\n\t\t\tif( next.length !== 1 ) throw new Error( 'Length must be equals 1' )\n\t\t\t\n\t\t\tconst node = next[ 0 ] as HTMLElement\n\t\t\t\n\t\t\tnode.focus();\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic position( ...diff : any[] ) {\n\t\t\tif( diff.length ) {\n\t\t\t\tif( !diff[ 0 ] ) return diff[ 0 ]\n\t\t\t\t\n\t\t\t\tvar start = diff[ 0 ].start\n\t\t\t\tvar end = diff[ 0 ].end\n\t\t\t\tif( !( start <= end ) ) throw new Error( `Wrong offsets (${start},${end})` )\n\t\t\t\t\n\t\t\t\tvar root = document.getElementById( diff[ 0 ].id )\n\t\t\t\troot.focus()\n\t\t\t\t\n\t\t\t\tvar range = new Range\n\t\t\t\t\n\t\t\t\tvar cur = root.firstChild\n\t\t\t\twhile( cur !== root ) {\n\t\t\t\t\twhile( cur.firstChild ) cur = cur.firstChild\n\t\t\t\t\tif( cur.nodeValue ) {\n\t\t\t\t\t\tvar length = cur.nodeValue.length\n\t\t\t\t\t\tif( length >= start ) break\n\t\t\t\t\t\tstart -= length\n\t\t\t\t\t}\n\t\t\t\t\twhile( !cur.nextSibling ) {\n\t\t\t\t\t\tcur = cur.parentNode\n\t\t\t\t\t\tif( cur === root ) {\n\t\t\t\t\t\t\tstart = root.childNodes.length\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trange.setStart( cur , start )\n\t\t\t\t\n\t\t\t\tvar cur = root.firstChild\n\t\t\t\twhile( cur !== root ) {\n\t\t\t\t\twhile( cur.firstChild ) cur = cur.firstChild\n\t\t\t\t\tif( cur.nodeValue ) {\n\t\t\t\t\t\tvar length = cur.nodeValue.length\n\t\t\t\t\t\tif( length >= end ) break\n\t\t\t\t\t\tend -= length\n\t\t\t\t\t}\n\t\t\t\t\twhile( !cur.nextSibling ) {\n\t\t\t\t\t\tcur = cur.parentNode\n\t\t\t\t\t\tif( cur === root ) {\n\t\t\t\t\t\t\tend = root.childNodes.length\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trange.setEnd( cur , end )\n\t\t\t\t\n\t\t\t\tvar sel = document.getSelection()\n\t\t\t\tsel.removeAllRanges()\n\t\t\t\tsel.addRange( range )\n\t\t\t\t\n\t\t\t\treturn diff[ 0 ]\n\t\t\t} else {\n\t\t\t\tvar sel = document.getSelection()\n\t\t\t\tif( sel.rangeCount === 0 ) return null\n\t\t\t\tvar range = sel.getRangeAt( 0 )\n\t\t\t\t\n\t\t\t\tvar el = range.commonAncestorContainer\n\t\t\t\twhile( el && !el.id ) el = el.parentElement\n\t\t\t\t\n\t\t\t\tif( !el ) return { id : null , start : 0 , end : 0 }\n\t\t\t\t\n\t\t\t\tvar meter = new Range\n\t\t\t\tmeter.selectNodeContents( el )\n\t\t\t\t\n\t\t\t\tmeter.setEnd( range.startContainer , range.startOffset )\n\t\t\t\tvar startOffset = meter.toString().length\n\t\t\t\t\n\t\t\t\tmeter.setEnd( range.endContainer , range.endOffset )\n\t\t\t\tvar endOffset = meter.toString().length\n\t\t\t\t\n\t\t\t\treturn { id : el.id , start : startOffset , end : endOffset }\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic onFocus( event : FocusEvent ) {\n\t\t\tconst parents : Element[] = []\n\t\t\tlet element = event.target as HTMLElement\n\t\t\t\n\t\t\twhile( element ) {\n\t\t\t\tparents.push( element )\n\t\t\t\telement = element.parentElement\n\t\t\t}\n\t\t\t\n\t\t\t$mol_view_selection.focused( parents , $mol_atom_force )\n\t\t}\n\t\t\n\t\tstatic onBlur( event : FocusEvent ) {\n\t\t\t$mol_view_selection.focused( [] , $mol_atom_force )\n\t\t}\n\t}\n\t\n}\n","namespace $ {\n\t\n\tdocument.addEventListener( 'selectionchange' , event => {\n\t\t$mol_view_selection.position( void 0 )\n\t} )\n\t\n\tdocument.addEventListener( 'focusin' , $mol_view_selection.onFocus )\n\tdocument.addEventListener( 'focus' , $mol_view_selection.onFocus , true ) // FF\n\t\n\tdocument.addEventListener( 'focusout' , $mol_view_selection.onBlur )\n\tdocument.addEventListener( 'blur' , $mol_view_selection.onBlur , true ) // FF\n\t\n}\n","namespace $ { export class $mol_string extends $mol_view {\n\n\t/// dom_name \\input\n\tdom_name() {\n\t\treturn \"input\"\n\t}\n\n\t/// enabled true\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/// disabled false\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/// value?val \\\n\t@ $mol_mem()\n\tvalue( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// value_changed?val <=> value?val\n\t@ $mol_mem()\n\tvalue_changed( val? : any ) {\n\t\treturn this.value( val )\n\t}\n\n\t/// autofocus?val false\n\t@ $mol_mem()\n\tautofocus( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// type?val \\text\n\t@ $mol_mem()\n\ttype( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : \"text\"\n\t}\n\n\t/// field * \n\t/// \tdisabled <= disabled \n\t/// \tvalue <= value_changed?val \n\t/// \tautofocus <= autofocus?val \n\t/// \tplaceholder <= hint \n\t/// \ttype <= type?val\n\tfield() {\n\t\treturn ( { ...super.field() , \n\t\t\t\"disabled\" : this.disabled() ,\n\t\t\t\"value\" : this.value_changed() ,\n\t\t\t\"autofocus\" : this.autofocus() ,\n\t\t\t\"placeholder\" : this.hint() ,\n\t\t\t\"type\" : this.type() ,\n\t\t} )\n\t}\n\n\t/// event_change?event null\n\t@ $mol_mem()\n\tevent_change( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event * input?event <=> event_change?event\n\tevent() {\n\t\treturn ( { ...super.event() , \n\t\t\t\"input\" : ( event? : any )=> this.event_change( event ) ,\n\t\t} )\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_string extends $.$mol_string {\n\t\t\n\t\tevent_change( next? : Event ) {\n\t\t\tthis.value( ( this.dom_node() as HTMLInputElement ).value.trim() )\n\t\t}\n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t}\n}\n","namespace $ {\n export enum $mol_keyboard_code {\n backspace = 8,\n tab = 9,\n enter = 13,\n shift= 16,\n ctrl = 17,\n alt = 18,\n pause = 19,\n capsLock = 20,\n escape = 27,\n space = 32,\n pageUp = 33,\n pageDown = 34,\n end = 35,\n home = 36,\n left = 37,\n up = 38,\n right = 39,\n down = 40,\n insert = 45,\n delete = 46,\n key0 = 48,\n key1 = 49,\n key2 = 50,\n key3 = 51,\n key4 = 52,\n key5 = 53,\n key6 = 54,\n key7 = 55,\n key8 = 56,\n key9 = 57,\n A = 65,\n B = 66,\n C = 67,\n D = 68,\n E = 69,\n F = 70,\n G = 71,\n H = 72,\n I = 73,\n J = 74,\n K = 75,\n L = 76,\n M = 77,\n N = 78,\n O = 79,\n P = 80,\n Q = 81,\n R = 82,\n S = 83,\n T = 84,\n U = 85,\n V = 86,\n W = 87,\n X = 88,\n Y = 89,\n Z = 90,\n metaLeft = 91,\n metaRight = 92,\n select = 93,\n numpad0 = 96,\n numpad1 = 97,\n numpad2 = 98,\n numpad3 = 99,\n numpad4 = 100,\n numpad5 = 101,\n numpad6 = 102,\n numpad7 = 103,\n numpad8 = 104,\n numpad9 = 105,\n multiply = 106,\n add = 107,\n subtract = 109,\n decimal = 110,\n divide = 111,\n F1 = 112,\n F2 = 113,\n F3 = 114,\n F4 = 115,\n F5 = 116,\n F6 = 117,\n F7 = 118,\n F8 = 119,\n F9 = 120,\n F10 = 121,\n F11 = 122,\n F12 = 123,\n numLock = 144,\n scrollLock = 145,\n semicolon = 186,\n equals = 187,\n comma = 188,\n dash = 189,\n period = 190,\n forwardSlash = 191,\n graveAccent = 192,\n bracketOpen = 219,\n slashBack = 220,\n bracketClose = 221,\n quoteSingle = 222\n }\n}\n","namespace $ { export class $mol_button extends $mol_view {\n\n\t/// enabled true\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/// event_click?event null\n\t@ $mol_mem()\n\tevent_click( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event_activate?event <=> event_click?event\n\t@ $mol_mem()\n\tevent_activate( event? : any ) {\n\t\treturn this.event_click( event )\n\t}\n\n\t/// evenet_key_press?event null\n\t@ $mol_mem()\n\tevenet_key_press( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event * \n\t/// \tclick?event <=> event_activate?event \n\t/// \tkeypress?event <=> evenet_key_press?event\n\tevent() {\n\t\treturn ( { ...super.event() , \n\t\t\t\"click\" : ( event? : any )=> this.event_activate( event ) ,\n\t\t\t\"keypress\" : ( event? : any )=> this.evenet_key_press( event ) ,\n\t\t} )\n\t}\n\n\t/// disabled false\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/// tab_index \\0\n\ttab_index() {\n\t\treturn \"0\"\n\t}\n\n\t/// attr * \n\t/// \tdisabled <= disabled \n\t/// \trole \\button\n\t/// \ttabindex <= tab_index\n\tattr() {\n\t\treturn ( { ...super.attr() , \n\t\t\t\"disabled\" : this.disabled() ,\n\t\t\t\"role\" : \"button\" ,\n\t\t\t\"tabindex\" : this.tab_index() ,\n\t\t} )\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_button extends $.$mol_button {\n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t\t\n\t\tevent_activate( next : Event ) {\n\t\t\tif( !this.enabled() ) return\n\t\t\tthis.event_click( next )\n\t\t}\n\t\t\n\t\tevenet_key_press ( event: KeyboardEvent ) { \n \t\tif( event.keyCode === $mol_keyboard_code.enter ) \n \t\treturn this.event_activate( event )\n \t} \n\t\t\n\t\ttab_index() {\n\t\t\treturn this.enabled() ? super.tab_index() : null\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { export class $mol_button_major extends $mol_button {\n\n} }\n\nnamespace $ { export class $mol_button_minor extends $mol_button {\n\n} }\n\nnamespace $ { export class $mol_button_danger extends $mol_button {\n\n} }\n\n","namespace $ {\n\t\n\texport function $mol_merge_dict< Target , Source >( target : Target , source : Source ) : Target & Source {\n\t\tlet result = {}\n\t\tfor( let key in target ) result[ key ] = ( target )[ key ]\n\t\tfor( let key in source ) result[ key ] = ( source )[ key ]\n\t\treturn result\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_state_arg< Value > extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic href( next? : string ) {\n\t\t\tif( next ) history.replaceState( history.state , document.title , `${ next }` )\n\t\t\treturn window.location.search + window.location.hash\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic dict( next? : { [ key : string ] : string } ) {\n\t\t\tvar href = this.href( next && this.make( next ) )\n\t\t\tvar chunks = href.split( /[\\/\\?#!&;]/g )\n\t\t\t\n\t\t\tvar params : { [ key : string ] : string } = {}\n\t\t\tchunks.forEach(\n\t\t\t\tchunk => {\n\t\t\t\t\tif( !chunk ) return\n\t\t\t\t\tvar vals = chunk.split( '=' ).map( decodeURIComponent )\n\t\t\t\t\tparams[ vals.shift() ] = vals.join( '=' )\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\treturn params\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic value( key : string , next? : string ) {\n\t\t\tconst nextDict = ( next === void 0 ) ? void 0 : $mol_merge_dict( this.dict() , { [ key ] : next } ) \n\t\t\treturn this.dict( nextDict )[ key ] || null\n\t\t}\n\t\t\n\t\tstatic link( next : { [ key : string ] : string } ) {\n\t\t\treturn this.make( $mol_merge_dict( this.dict() , next ) )\n\t\t}\n\t\t\n\t\tstatic make( next : { [ key : string ] : string } ) {\n\t\t\tconst chunks : string[] = []\n\t\t\tfor( let key in next ) {\n\t\t\t\tif( null == next[ key ] ) continue\n\t\t\t\tchunks.push( [ key ].concat( next[ key ] ).map( encodeURIComponent ).join( '=' ) )\n\t\t\t}\n\t\t\t\n\t\t\tconst hash = chunks.join( '#' )\n\t\t\t\n\t\t\treturn hash ? '#' + hash + '#' : '#'\n\t\t}\n\t\t\n\t\tconstructor( public prefix = '' ) {\n\t\t\tsuper()\n\t\t}\n\t\t\n\t\tvalue( key : string , next? : string ) {\n\t\t\treturn $mol_state_arg.value( this.prefix + key , next )\n\t\t}\n\t\t\n\t\tsub( postfix : string ) {\n\t\t\treturn new $mol_state_arg( this.prefix + postfix + '.' )\n\t\t}\n\t\t\n\t\tlink( next : { [ key : string ] : string } ) {\n\t\t\tvar prefix = this.prefix\n\t\t\tvar dict : { [ key : string ] : string } = {}\n\t\t\tfor( var key in next ) {\n\t\t\t\tdict[ prefix + key ] = next[ key ]\n\t\t\t}\n\t\t\treturn $mol_state_arg.link( dict )\n\t\t}\n\t\t\n\t}\n\t\n\twindow.addEventListener( 'hashchange' , event => $mol_state_arg.href( null ) )\n\t\n}\n","namespace $ { export class $mol_link extends $mol_view {\n\n\t/// minimal_height 36\n\tminimal_height() {\n\t\treturn 36\n\t}\n\n\t/// dom_name \\a\n\tdom_name() {\n\t\treturn \"a\"\n\t}\n\n\t/// uri \\\n\turi() {\n\t\treturn \"\"\n\t}\n\n\t/// current false\n\tcurrent() {\n\t\treturn false\n\t}\n\n\t/// attr * \n\t/// \thref <= uri \n\t/// \tmol_link_current <= current\n\tattr() {\n\t\treturn ( { ...super.attr() , \n\t\t\t\"href\" : this.uri() ,\n\t\t\t\"mol_link_current\" : this.current() ,\n\t\t} )\n\t}\n\n\t/// arg *\n\targ() {\n\t\treturn ({\n\t\t})\n\t}\n\n} }\n\n","namespace $.$mol {\n\t\n\texport class $mol_link extends $.$mol_link {\n\t\t\n\t\t@ $mol_mem()\n\t\turi() {\n\t\t\treturn new $mol_state_arg( this.state_prefix() ).link( this.arg() )\n\t\t}\n\t\t\n\t\tcurrent() {\n\t\t\treturn this.uri() === $mol_state_arg.link( {} )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_check extends $mol_button {\n\n\t/// checked?val false\n\t@ $mol_mem()\n\tchecked( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// attr * \n\t/// \tmol_check_checked <= checked?val \n\t/// \taria-checked <= checked?val \n\t/// \trole \\checkbox\n\tattr() {\n\t\treturn ( { ...super.attr() , \n\t\t\t\"mol_check_checked\" : this.checked() ,\n\t\t\t\"aria-checked\" : this.checked() ,\n\t\t\t\"role\" : \"checkbox\" ,\n\t\t} )\n\t}\n\n\t/// Icon null\n\tIcon() {\n\t\treturn null\n\t}\n\n\t/// label /\n\tlabel() {\n\t\treturn [] as any[]\n\t}\n\n\t/// Label $mol_view sub / <= label\n\t@ $mol_mem()\n\tLabel() {\n\t\treturn new $mol_view().setup( obj => { \n\t\t\tobj.sub = () => [].concat( this.label() )\n\t\t} )\n\t}\n\n\t/// sub / \n\t/// \t<= Icon \n\t/// \t<= Label\n\tsub() {\n\t\treturn [].concat( this.Icon() , this.Label() )\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_check extends $.$mol_check {\n\n\t\tevent_click( next? : Event ) {\n\t\t\tthis.checked( !this.checked() )\n\t\t\t//next.preventDefault()\n\t\t}\n\n\t}\n}\n\n","namespace $ {\n\t\n\texport class $mol_state_session< Value > extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic value< Value >( key : string , next? : Value ) : Value {\n\t\t\tif( next === void 0 ) return JSON.parse( sessionStorage.getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) sessionStorage.removeItem( key )\n\t\t\telse sessionStorage.setItem( key , JSON.stringify( next ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_session.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_scroll extends $mol_view {\n\n\t/// minimal_height 0\n\tminimal_height() {\n\t\treturn 0\n\t}\n\n\t/// scroll_top?val 0\n\t@ $mol_mem()\n\tscroll_top( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// scroll_left?val 0\n\t@ $mol_mem()\n\tscroll_left( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// field * \n\t/// \tscrollTop <= scroll_top?val \n\t/// \tscrollLeft <= scroll_left?val\n\tfield() {\n\t\treturn ( { ...super.field() , \n\t\t\t\"scrollTop\" : this.scroll_top() ,\n\t\t\t\"scrollLeft\" : this.scroll_left() ,\n\t\t} )\n\t}\n\n\t/// event_scroll?event null\n\t@ $mol_mem()\n\tevent_scroll( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event * \n\t/// \tscroll?event <=> event_scroll?event \n\t/// \toverflow?event <=> event_scroll?event \n\t/// \tunderflow?event <=> event_scroll?event\n\tevent() {\n\t\treturn ( { ...super.event() , \n\t\t\t\"scroll\" : ( event? : any )=> this.event_scroll( event ) ,\n\t\t\t\"overflow\" : ( event? : any )=> this.event_scroll( event ) ,\n\t\t\t\"underflow\" : ( event? : any )=> this.event_scroll( event ) ,\n\t\t} )\n\t}\n\n} }\n\n","namespace $ {\n\t\n\texport interface $mol_view_context {\n\t\t$mol_scroll_scroll_top() : number\n\t\t$mol_scroll_scroll_left() : number\n\t\t$mol_scroll_moving() : boolean\n\t}\n\n\t$mol_view_context.$mol_scroll_scroll_top = () => 0\n\t$mol_view_context.$mol_scroll_scroll_left = () => 0\n\t$mol_view_context.$mol_scroll_moving = () => false\n\t\n}\n\nnamespace $.$mol {\n\t\n\texport class $mol_scroll extends $.$mol_scroll {\n\n\t\tscroll_top( next? : number ) {\n\t\t\treturn $mol_state_session.value( `${ this }.scroll_top()` , next ) || 0\n\t\t}\n\t\t\n\t\tscroll_left( next? : number ) {\n\t\t\treturn $mol_state_session.value( `${ this }.scroll_left()` , next ) || 0\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tscroll_bottom( next? : number ) {\n\t\t\treturn next || 0\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tscroll_right( next? : number ) {\n\t\t\treturn next || 0\n\t\t}\n\t\t\n\t\tevent_scroll( next? : Event ) {\n\t\t\tthis.moving( true )\n\t\t\tnew $mol_defer( ()=> {\n\t\t\t\tconst el = this.dom_node() as HTMLElement\n\t\t\t\tthis.scroll_top( Math.max( 0 , el.scrollTop ) )\n\t\t\t\tthis.scroll_left( Math.max( 0 , el.scrollLeft ) )\n\t\t\t\tthis.scroll_bottom( Math.max( 0 , el.scrollHeight - el.scrollTop - el.offsetHeight ) )\n\t\t\t\tthis.scroll_right( Math.max( 0 , el.scrollWidth - el.scrollLeft - el.offsetWidth ) )\n\t\t\t} )\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tmoving( next? : boolean ) {\n\t\t\tif( next ) {\n\t\t\t\tsetTimeout( ()=> {\n\t\t\t\t\tthis.moving( false )\n\t\t\t\t} )\n\t\t\t}\t\t\t\t\n\t\t\treturn next || false\n\t\t}\n\n\t\t@ $mol_mem()\n\t\tcontext_sub( ) {\n\t\t\tconst context = this.context()\n\t\t\tconst subContext : $mol_view_context = Object.create( context )\n\t\t\tsubContext.$mol_view_visible_height = ()=> {\n\t\t\t\tconst sizeWin = $mol_window.size()\n\t\t\t\tconst limit = context.$mol_view_visible_height()\n\t\t\t\treturn this.scroll_top() + Math.min( sizeWin.height , limit )\n\t\t\t}\n\t\t\tsubContext.$mol_view_visible_width = ()=> {\n\t\t\t\tconst sizeWin = $mol_window.size()\n\t\t\t\tconst limit = context.$mol_view_visible_width()\n\t\t\t\treturn this.scroll_left() + Math.min( sizeWin.width , limit )\n\t\t\t}\n\t\t\tsubContext.$mol_scroll_scroll_top = ()=> this.scroll_top()\n\t\t\tsubContext.$mol_scroll_scroll_left = ()=> this.scroll_left()\n\t\t\tsubContext.$mol_scroll_moving = ()=> this.moving()\n\t\t\treturn subContext\n\t\t}\n\t\t\n\t}\n\n}\n","var localStorage = localStorage || {\n\tgetItem( key : string ) {\n\t\treturn this[ ':' + key ]\n\t} ,\n\tsetItem( key : string , value : string ) {\n\t\tthis[ ':' + key ] = value\n\t} ,\n\tremoveItem( key : string ) {\n\t\tthis[ ':' + key ] = void 0\n\t}\n}\n\nnamespace $ {\n\t\n\texport class $mol_state_local< Value > extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic value< Value >( key : string , next? : Value , force? : $mol_atom_force ) {\n\t\t\tif( next === void 0 ) return JSON.parse( localStorage.getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) localStorage.removeItem( key )\n\t\t\telse localStorage.setItem( key , JSON.stringify( next ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_local.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\twindow.addEventListener( 'storage' , event => {\n\t\t$.$mol_state_local.value( event.key , void 0 , $mol_atom_force )\n\t} )\n}\n","namespace $ {\n\t\n\texport class $mol_http_request extends $mol_object {\n\t\t\n\t\turi() { return '' }\n\t\t\n\t\tmethod() { return 'Get' }\n\t\t\n\t\tcredentials() { return null as {\n\t\t\tlogin? : string\n\t\t\tpassword? : string\n\t\t} }\n\t\t\n\t\tbody() { return null }\n\t\t\n\t\t'native()' : XMLHttpRequest\n\t\tnative() {\n\t\t\tif( this[ 'native()' ] ) return this[ 'native()' ]\n\t\t\t\n\t\t\tvar next = this[ 'native()' ] = $mol_http_request_native()\n\t\t\t\n\t\t\tnext.withCredentials = Boolean( this.credentials() )\n\t\t\t\n\t\t\tnext.onload = ( event : Event )=> {\n\t\t\t\tif( Math.floor( next.status / 100 ) === 2 ) {\n\t\t\t\t\tthis.response( next.responseText , $mol_atom_force )\n\t\t\t\t} else {\n\t\t\t\t\tthis.response( new Error( next.responseText ) as any , $mol_atom_force )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tnext.onerror = ( event : ErrorEvent ) => {\n\t\t\t\tthis.response( event.error || new Error( 'Unknown HTTP error' ) , $mol_atom_force )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next ) {\n\t\t\t\tconst native = this[ 'native()' ]\n\t\t\t\tif( native ) native.abort()\n\t\t\t}\n\t\t\treturn super.destroyed( next )\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tresponse( next? : any , force? : $mol_atom_force ) : any {\n\t\t\tconst creds = this.credentials()\n\t\t\tconst native = this.native()\n\t\t\tconst method = ( next === void 0 ) ? 'Get' : this.method()\n\t\t\tconst uri = this.uri()\n\t\t\t\n\t\t\tnative.open( method , uri , true , creds && creds.login , creds && creds.password )\n\t\t\tnative.send( next )\n\t\t\t\n\t\t\tthrow new $mol_atom_wait( `${ method } ${ uri }` )\n\t\t}\n\t\t\n\t\ttext( next? : string , force? : $mol_atom_force ) : string {\n\t\t\treturn this.response( next , force )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\texport var $mol_http_request_native = ()=> new XMLHttpRequest;\n}\n","namespace $ {\n\t\n\texport class $mol_http_resource extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic item( uri : string ) {\n\t\t\treturn new $mol_http_resource().setup( obj => {\n\t\t\t\tobj.uri = ()=> uri\n\t\t\t} )\n\t\t}\n\t\t\n\t\turi() { return '' }\n\t\t\n\t\tcredentials() { return null as {\n\t\t\tlogin? : string\n\t\t\tpassword? : string\n\t\t} }\n\t\t\n\t\t@ $mol_mem()\n\t\trequest() {\n\t\t\tconst request = new $mol_http_request()\n\t\t\trequest.method = () => 'Put'\n\t\t\trequest.uri = () => this.uri()\n\t\t\trequest.credentials = () => this.credentials()\n\t\t\treturn request\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\ttext( next? : string , force? : $mol_atom_force ) {\n\t\t\treturn this.request().text( next , force )\n\t\t}\n\t\t\n\t}\n\t\n\texport class $mol_http_resource_json< Content > extends $mol_http_resource {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic item< Content >( uri : string ) {\n\t\t\treturn new $mol_http_resource_json< Content >().setup( obj => {\n\t\t\t\tobj.uri = ()=> uri\n\t\t\t} )\n\t\t}\n\t\t\n\t\tjson( next? : Content , force? : $mol_atom_force ) : Content {\n\t\t\treturn JSON.parse( this.text( next && JSON.stringify( next , null , '\\t' ) , force ) )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport interface $mol_locale_dict {\n\t\t[ key : string ] : string\n\t}\n\t\n\texport class $mol_locale extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic lang( next? : string ) {\n\t\t\treturn $mol_state_local.value( 'locale' , next ) || $mol_state_arg.value( 'locale' ) || 'en'\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic texts() {\n\t\t\tconst uri = `-/web.locale=${ this.lang() }.json`\n\t\t\tconst resource = $mol_http_resource_json.item< $mol_locale_dict >( uri ) \n\t\t\treturn resource.json()\n\t\t}\n\t\t\n\t\tstatic text( contexts : string[] , key : string ) {\n\t\t\tconst texts = this.texts()\n\t\t\t\n\t\t\tfor( let i = 0 ; i < contexts.length ; ++i ) {\n\t\t\t\tconst text = texts[ `${ contexts[i] }_${ key }` ]\n\t\t\t\tif( text ) return text\n\t\t\t}\n\t\t\t\n\t\t\tconsole.warn( 'Locale tet not found: ' , contexts , key )\n\t\t\t\n\t\t\treturn `<${ key }>`\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_list extends $mol_view {\n\n\t/// style * minHeight <= minimal_height\n\tstyle() {\n\t\treturn ( { ...super.style() , \n\t\t\t\"minHeight\" : this.minimal_height() ,\n\t\t} )\n\t}\n\n\t/// rows /\n\trows() {\n\t\treturn [] as any[]\n\t}\n\n\t/// sub <= rows\n\tsub() {\n\t\treturn this.rows()\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_list extends $.$mol_list {\n\t\t\n\t\t@ $mol_mem()\n\t\trow_offsets() : number[] {\n\t\t\tvar sub = this.sub()\n\t\t\tif( !sub ) return null\n\t\t\t\n\t\t\tlet heightLimit = this.context().$mol_view_visible_height()\n\t\t\tvar offset = 0\n\t\t\t\n\t\t\tvar next : number[] = []\n\t\t\tfor( let child of sub ) {\n\t\t\t\tnext.push( offset )\n\t\t\t\t\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\toffset += child.minimal_height()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( offset > heightLimit ) break\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\trow_context( index : number ) {\n\t\t\tlet context = this.context()\n\t\t\tlet next = Object.create( context )\n\t\t\tnext.$mol_view_visible_height = ()=> {\n\t\t\t\tconst limit = context.$mol_view_visible_height()\n\t\t\t\treturn limit - this.row_offsets()[ index ]\n\t\t\t}\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tsub_visible() {\n\t\t\tvar sub = this.sub()\n\t\t\tif( !sub ) return sub\n\t\t\t\n\t\t\tvar limit = this.row_offsets().length\n\t\t\t\n\t\t\tvar next : $mol_view[] = []\n\t\t\tfor( let i = 0 ; i < limit ; ++ i ) {\n\t\t\t\tconst child = sub[ i ]\n\t\t\t\tif( child == null ) continue \n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.context( this.row_context( i ) )\n\t\t\t\t}\n\t\t\t\tnext.push( child )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tminimal_height() {\n\t\t\tvar height = 0\n\t\t\tvar sub = this.sub()\n\t\t\tif( sub ) sub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\theight += child.minimal_height()\n\t\t\t\t}\n\t\t\t} )\n\t\t\treturn height\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { export class $mol_bar extends $mol_view {\n\n} }\n\n","namespace $ { export class $mol_app_todomvc extends $mol_scroll {\n\n\t/// title @ \\todos\n\ttitle() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"title\" )\n\t}\n\n\t/// Title $mol_view \n\t/// \tminimal_height 142 \n\t/// \tsub / <= title\n\t@ $mol_mem()\n\tTitle() {\n\t\treturn new $mol_view().setup( obj => { \n\t\t\tobj.minimal_height = () => 142\n\t\t\tobj.sub = () => [].concat( this.title() )\n\t\t} )\n\t}\n\n\t/// head_complete_enabled false\n\thead_complete_enabled() {\n\t\treturn false\n\t}\n\n\t/// completed_all?val false\n\t@ $mol_mem()\n\tcompleted_all( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// Head_complete $mol_check \n\t/// \tenabled <= head_complete_enabled \n\t/// \tchecked?val <=> completed_all?val \n\t/// \tsub / \\❯\n\t@ $mol_mem()\n\tHead_complete() {\n\t\treturn new $mol_check().setup( obj => { \n\t\t\tobj.enabled = () => this.head_complete_enabled()\n\t\t\tobj.checked = ( val? : any ) => this.completed_all( val )\n\t\t\tobj.sub = () => [].concat( \"❯\" )\n\t\t} )\n\t}\n\n\t/// task_title_new?val \\\n\t@ $mol_mem()\n\ttask_title_new( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// event_add?event null\n\t@ $mol_mem()\n\tevent_add( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// Add $mol_app_todomvc_add \n\t/// \tvalue?val <=> task_title_new?val \n\t/// \tevent_done?event <=> event_add?event\n\t@ $mol_mem()\n\tAdd() {\n\t\treturn new $mol_app_todomvc_add().setup( obj => { \n\t\t\tobj.value = ( val? : any ) => this.task_title_new( val )\n\t\t\tobj.event_done = ( event? : any ) => this.event_add( event )\n\t\t} )\n\t}\n\n\t/// Head_content / \n\t/// \t<= Head_complete \n\t/// \t<= Add\n\tHead_content() {\n\t\treturn [].concat( this.Head_complete() , this.Add() )\n\t}\n\n\t/// Head $mol_view \n\t/// \tminimal_height 64 \n\t/// \tsub <= Head_content\n\t@ $mol_mem()\n\tHead() {\n\t\treturn new $mol_view().setup( obj => { \n\t\t\tobj.minimal_height = () => 64\n\t\t\tobj.sub = () => this.Head_content()\n\t\t} )\n\t}\n\n\t/// task_rows /\n\ttask_rows() {\n\t\treturn [] as any[]\n\t}\n\n\t/// List $mol_list rows <= task_rows\n\t@ $mol_mem()\n\tList() {\n\t\treturn new $mol_list().setup( obj => { \n\t\t\tobj.rows = () => this.task_rows()\n\t\t} )\n\t}\n\n\t/// pending_message @ \\0 items left\n\tpending_message() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"pending_message\" )\n\t}\n\n\t/// Pending $mol_view sub / <= pending_message\n\t@ $mol_mem()\n\tPending() {\n\t\treturn new $mol_view().setup( obj => { \n\t\t\tobj.sub = () => [].concat( this.pending_message() )\n\t\t} )\n\t}\n\n\t/// filter_all_label @ \\All\n\tfilter_all_label() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"filter_all_label\" )\n\t}\n\n\t/// Filter_all $mol_link \n\t/// \tsub / <= filter_all_label \n\t/// \targ * completed null\n\t@ $mol_mem()\n\tFilter_all() {\n\t\treturn new $mol_link().setup( obj => { \n\t\t\tobj.sub = () => [].concat( this.filter_all_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : null ,\n\t\t})\n\t\t} )\n\t}\n\n\t/// filter_active_label @ \\Active\n\tfilter_active_label() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"filter_active_label\" )\n\t}\n\n\t/// Filter_active $mol_link \n\t/// \tsub / <= filter_active_label \n\t/// \targ * completed false\n\t@ $mol_mem()\n\tFilter_active() {\n\t\treturn new $mol_link().setup( obj => { \n\t\t\tobj.sub = () => [].concat( this.filter_active_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : false ,\n\t\t})\n\t\t} )\n\t}\n\n\t/// filter_completed_label @ \\Completed\n\tfilter_completed_label() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"filter_completed_label\" )\n\t}\n\n\t/// Filter_completed $mol_link \n\t/// \tsub / <= filter_completed_label \n\t/// \targ * completed true\n\t@ $mol_mem()\n\tFilter_completed() {\n\t\treturn new $mol_link().setup( obj => { \n\t\t\tobj.sub = () => [].concat( this.filter_completed_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : true ,\n\t\t})\n\t\t} )\n\t}\n\n\t/// filterOptions / \n\t/// \t<= Filter_all \n\t/// \t<= Filter_active \n\t/// \t<= Filter_completed\n\tfilterOptions() {\n\t\treturn [].concat( this.Filter_all() , this.Filter_active() , this.Filter_completed() )\n\t}\n\n\t/// Filter $mol_bar sub <= filterOptions\n\t@ $mol_mem()\n\tFilter() {\n\t\treturn new $mol_bar().setup( obj => { \n\t\t\tobj.sub = () => this.filterOptions()\n\t\t} )\n\t}\n\n\t/// sanitize_enabled true\n\tsanitize_enabled() {\n\t\treturn true\n\t}\n\n\t/// event_sanitize?event null\n\t@ $mol_mem()\n\tevent_sanitize( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// sanitize_label @ \\Clear completed\n\tsanitize_label() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"sanitize_label\" )\n\t}\n\n\t/// Sanitize $mol_button_minor \n\t/// \tenabled <= sanitize_enabled \n\t/// \tevent_click?event <=> event_sanitize?event \n\t/// \tsub / <= sanitize_label\n\t@ $mol_mem()\n\tSanitize() {\n\t\treturn new $mol_button_minor().setup( obj => { \n\t\t\tobj.enabled = () => this.sanitize_enabled()\n\t\t\tobj.event_click = ( event? : any ) => this.event_sanitize( event )\n\t\t\tobj.sub = () => [].concat( this.sanitize_label() )\n\t\t} )\n\t}\n\n\t/// foot_content / \n\t/// \t<= Pending \n\t/// \t<= Filter \n\t/// \t<= Sanitize\n\tfoot_content() {\n\t\treturn [].concat( this.Pending() , this.Filter() , this.Sanitize() )\n\t}\n\n\t/// Foot $mol_view sub <= foot_content\n\t@ $mol_mem()\n\tFoot() {\n\t\treturn new $mol_view().setup( obj => { \n\t\t\tobj.sub = () => this.foot_content()\n\t\t} )\n\t}\n\n\t/// panels / \n\t/// \t<= Head \n\t/// \t<= List \n\t/// \t<= Foot\n\tpanels() {\n\t\treturn [].concat( this.Head() , this.List() , this.Foot() )\n\t}\n\n\t/// Panel $mol_list rows <= panels\n\t@ $mol_mem()\n\tPanel() {\n\t\treturn new $mol_list().setup( obj => { \n\t\t\tobj.rows = () => this.panels()\n\t\t} )\n\t}\n\n\t/// Page $mol_list sub / \n\t/// \t<= Title \n\t/// \t<= Panel\n\t@ $mol_mem()\n\tPage() {\n\t\treturn new $mol_list().setup( obj => { \n\t\t\tobj.sub = () => [].concat( this.Title() , this.Panel() )\n\t\t} )\n\t}\n\n\t/// sub / <= Page\n\tsub() {\n\t\treturn [].concat( this.Page() )\n\t}\n\n\t/// task_completed!id?val false\n\t@ $mol_mem_key()\n\ttask_completed( id : any , val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// task_title!id?val \\\n\t@ $mol_mem_key()\n\ttask_title( id : any , val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// event_task_drop!id?event null\n\t@ $mol_mem_key()\n\tevent_task_drop( id : any , event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// Task_row!id $mol_app_todomvc_task_row \n\t/// \tcompleted?val <=> task_completed!id?val \n\t/// \ttitle?val <=> task_title!id?val \n\t/// \tevent_drop?event <=> event_task_drop!id?event\n\t@ $mol_mem_key()\n\tTask_row( id : any ) {\n\t\treturn new $mol_app_todomvc_task_row().setup( obj => { \n\t\t\tobj.completed = ( val? : any ) => this.task_completed(id , val )\n\t\t\tobj.title = ( val? : any ) => this.task_title(id , val )\n\t\t\tobj.event_drop = ( event? : any ) => this.event_task_drop(id , event )\n\t\t} )\n\t}\n\n} }\n\nnamespace $ { export class $mol_app_todomvc_add extends $mol_string {\n\n\t/// hint @ \\What needs to be done?\n\thint() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"hint\" )\n\t}\n\n\t/// event_press?event null\n\t@ $mol_mem()\n\tevent_press( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event * keyup?event <=> event_press?event\n\tevent() {\n\t\treturn ( { ...super.event() , \n\t\t\t\"keyup\" : ( event? : any )=> this.event_press( event ) ,\n\t\t} )\n\t}\n\n\t/// event_done?event null\n\t@ $mol_mem()\n\tevent_done( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n} }\n\nnamespace $ { export class $mol_app_todomvc_task_row extends $mol_view {\n\n\t/// minimal_height 64\n\tminimal_height() {\n\t\treturn 64\n\t}\n\n\t/// completed?val false\n\t@ $mol_mem()\n\tcompleted( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// Complete $mol_check \n\t/// \tchecked?val <=> completed?val \n\t/// \tsub /\n\t@ $mol_mem()\n\tComplete() {\n\t\treturn new $mol_check().setup( obj => { \n\t\t\tobj.checked = ( val? : any ) => this.completed( val )\n\t\t\tobj.sub = () => [] as any[]\n\t\t} )\n\t}\n\n\t/// title_hint @ \\Task title\n\ttitle_hint() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"title_hint\" )\n\t}\n\n\t/// title?val \\\n\t@ $mol_mem()\n\ttitle( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// Title $mol_string \n\t/// \thint <= title_hint \n\t/// \tvalue?val <=> title?val\n\t@ $mol_mem()\n\tTitle() {\n\t\treturn new $mol_string().setup( obj => { \n\t\t\tobj.hint = () => this.title_hint()\n\t\t\tobj.value = ( val? : any ) => this.title( val )\n\t\t} )\n\t}\n\n\t/// event_drop?event null\n\t@ $mol_mem()\n\tevent_drop( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// Drop $mol_button \n\t/// \tsub / \\✖\n\t/// \tevent_click?event <=> event_drop?event\n\t@ $mol_mem()\n\tDrop() {\n\t\treturn new $mol_button().setup( obj => { \n\t\t\tobj.sub = () => [].concat( \"✖\" )\n\t\t\tobj.event_click = ( event? : any ) => this.event_drop( event )\n\t\t} )\n\t}\n\n\t/// sub / \n\t/// \t<= Complete \n\t/// \t<= Title \n\t/// \t<= Drop\n\tsub() {\n\t\treturn [].concat( this.Complete() , this.Title() , this.Drop() )\n\t}\n\n\t/// attr * mol_app_todomvc_task_row_completed <= completed?val\n\tattr() {\n\t\treturn ( { ...super.attr() , \n\t\t\t\"mol_app_todomvc_task_row_completed\" : this.completed() ,\n\t\t} )\n\t}\n\n} }\n\n","interface $mol_app_todomvc_task {\n\tcompleted? : boolean\n\ttitle? : string\n}\n\nnamespace $.$mol {\n\t\n\texport class $mol_app_todomvc_add extends $.$mol_app_todomvc_add {\n\t\t\n\t\tevent_press( next? : KeyboardEvent ) {\n\t\t\tswitch( next.keyCode ) {\n\t\t\t\tcase $mol_keyboard_code.enter : return this.event_done( next )\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\texport class $mol_app_todomvc extends $.$mol_app_todomvc {\n\t\t\n\t\ttask_ids( next? : number[] ) : number[] {\n\t\t\treturn $mol_state_local.value( this.state_key( 'mol-todos' ) , next ) || []\n\t\t}\n\t\t\n\t\targ_completed() {\n\t\t\treturn $mol_state_arg.value( this.state_key( 'completed' ) )\n\t\t}\n\n\t\t@ $mol_mem()\n\t\tgroups_completed() {\n\t\t\tvar groups : { [ index : string ] : number[] } = { 'true' : [] , 'false' : [] }\n\t\t\tfor( let id of this.task_ids() ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tgroups[ String( task.completed ) ].push( id )\n\t\t\t}\n\t\t\treturn groups\n\t\t}\n\n\t\t@ $mol_mem()\n\t\ttasks_filtered() {\n\t\t\tvar completed = this.arg_completed()\n\t\t\tif( completed ) {\n\t\t\t\treturn this.groups_completed()[ completed ] || []\n\t\t\t} else {\n\t\t\t\treturn this.task_ids()\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_mem()\n\t\tcompleted_all( next? : boolean ) {\n\t\t\tif( next === void 0 ) return this.groups_completed()[ 'false' ].length === 0\n\t\t\t\n\t\t\tfor( let id of this.groups_completed()[ String( !next ) ] ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tthis.task( id , { title : task.title , completed : next } )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\thead_complete_enabled() {\n\t\t\treturn this.task_ids().length > 0 \n\t\t}\n\n\t\t@ $mol_mem()\n\t\tpending_message() {\n\t\t\tlet count = this.groups_completed()[ 'false' ].length\n\t\t\treturn ( count === 1 ) ? '1 item left' : `${count} items left`\n\t\t}\n\t\t\n\t\t_id_seed = 0\n\n\t\tevent_add( next : Event ) {\n\t\t\tvar title = this.task_title_new() \n\t\t\tif( !title ) return\n\t\t\t\n\t\t\tvar id = ++ this._id_seed\n\t\t\tvar task = { completed : false , title }\n\t\t\tthis.task( id , task )\n\t\t\t\n\t\t\tthis.task_ids( this.task_ids().concat( id ) )\n\t\t\tthis.task_title_new( '' )\n\t\t}\n\n\t\t@ $mol_mem()\n\t\ttask_rows() {\n\t\t\treturn this.tasks_filtered().map( ( id , index )=> this.Task_row( index ) )\n\t\t}\n\t\t\n\t\ttask( id : number , next? : $mol_app_todomvc_task ) {\n\t\t\tconst key = this.state_key( `mol-todos-${id}` )\n\t\t\tif( next === void 0 ) return $mol_state_local.value( key ) || { title : '' , completed : false }\n\t\t\t\n\t\t\t$mol_state_local.value( key , next )\n\t\t\t\n\t\t\treturn next || void 0\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\ttask_completed( index : number , next? : boolean ) {\n\t\t\tvar id = this.tasks_filtered()[ index ]\n\t\t\tif( next === void 0 ) return this.task( id ).completed\n\t\t\t\n\t\t\tthis.task( id , $mol_merge_dict( this.task( id ) , { completed : next } ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\ttask_title( index : number , next? : string ) {\n\t\t\tvar id = this.tasks_filtered()[ index ]\n\t\t\tif( next === void 0 ) return this.task( id ).title\n\t\t\t\n\t\t\tthis.task( id , $mol_merge_dict( this.task( id ) , { title : next } ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tevent_task_drop( index : number , next? : Event ) {\n\t\t\tvar tasks = this.tasks_filtered()\n\t\t\tvar id = tasks[index]\n\t\t\ttasks = tasks.slice( 0 , index ).concat( tasks.slice( index + 1 , tasks.length ) )\n\t\t\tthis.task( id , null )\n\t\t\tthis.task_ids( tasks )\n\t\t}\n\n\t\tevent_sanitize() {\n\t\t\tthis.task_ids( this.task_ids().filter( id => {\n\t\t\t\tif( !this.task( id ).completed ) return true\n\t\t\t\tthis.task( id , null )\n\t\t\t\treturn false\n\t\t\t} ) )\n\t\t}\n\t\t\n\t\tpanels() {\n\t\t\treturn [\n\t\t\t\tthis.Head() , \n\t\t\t\tthis.List() ,\n\t\t\t\tthis.foot_visible() ? this.Foot() : null ,\n\t\t\t]\n\t\t}\n\t\t\n\t\tfoot_visible() {\n\t\t\treturn this.task_ids().length > 0\n\t\t}\n\n\t\tsanitize_enabled() {\n\t\t\treturn this.groups_completed()[ 'true' ].length > 0\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_app_todomvc_demo extends $mol_app_todomvc {\n\n} }\n\n"]} \ No newline at end of file diff --git a/examples/mol/-/web.locale=en.json b/examples/mol/-/web.locale=en.json index 5cbb6e1424..f116743501 100644 --- a/examples/mol/-/web.locale=en.json +++ b/examples/mol/-/web.locale=en.json @@ -1,10 +1,10 @@ { "$mol_app_todomvc_title": "todos", - "$mol_app_todomvc_pendingMessage": "0 items left ", - "$mol_app_todomvc_filterAllLabel": "All", - "$mol_app_todomvc_filterActiveLabel": "Active", - "$mol_app_todomvc_filterCompletedLabel": "Completed", - "$mol_app_todomvc_sanitizerLabel": "Clear completed", - "$mol_app_todomvc_adder_hint": "What needs to be done?", - "$mol_app_todomvc_tasker_titleHint": "Task title" + "$mol_app_todomvc_pending_message": "0 items left ", + "$mol_app_todomvc_filter_all_label": "All", + "$mol_app_todomvc_filter_active_label": "Active", + "$mol_app_todomvc_filter_completed_label": "Completed", + "$mol_app_todomvc_sanitize_label": "Clear completed", + "$mol_app_todomvc_add_hint": "What needs to be done?", + "$mol_app_todomvc_task_row_title_hint": "Task title" } \ No newline at end of file diff --git a/examples/mol/index.html b/examples/mol/index.html index ad8a1d353f..e0df2f02f4 100644 --- a/examples/mol/index.html +++ b/examples/mol/index.html @@ -17,7 +17,7 @@ } -
+
From 56231adc82a0863ba0de0c6a25ca14411c71b370 Mon Sep 17 00:00:00 2001 From: nin-jin Date: Thu, 30 Mar 2017 23:33:29 +0300 Subject: [PATCH 10/53] New $mol example. --- examples/mol/-/web.css | 229 ++----- examples/mol/-/web.css.map | 8 +- examples/mol/-/web.d.ts | 784 ++++++++++++++++++++++ examples/mol/-/web.deps.json | 1 + examples/mol/-/web.js | 1022 ++++++++++++++++++----------- examples/mol/-/web.js.map | 2 +- examples/mol/-/web.locale=en.json | 2 +- examples/mol/index.html | 278 +++++++- examples/mol/todomvc.css | 93 +-- examples/mol/todomvc.view.tree | 125 ++-- examples/mol/todomvc.view.ts | 96 +-- 11 files changed, 1936 insertions(+), 704 deletions(-) create mode 100644 examples/mol/-/web.d.ts create mode 100644 examples/mol/-/web.deps.json diff --git a/examples/mol/-/web.css b/examples/mol/-/web.css index b4e8b76286..bf001323f8 100644 --- a/examples/mol/-/web.css +++ b/examples/mol/-/web.css @@ -1,10 +1,6 @@ [mol_view] { - -webkit-transition-property: background-color, height, width, min-height, min-width, max-width, max-height, -webkit-transform; - transition-property: background-color, height, width, min-height, min-width, max-width, max-height, -webkit-transform; transition-property: background-color, height, width, min-height, min-width, max-width, max-height, transform; - transition-property: background-color, height, width, min-height, min-width, max-width, max-height, transform, -webkit-transform; - -webkit-transition-duration: .1s; - transition-duration: .1s; + transition-duration: .1s; -webkit-appearance: none } [mol_view_root] { @@ -15,13 +11,6 @@ font: 12pt/1.5 "-apple-system", BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif } [mol_view_error] { - background-image: -webkit-repeating-linear-gradient( - 315deg, - rgba(255, 220, 220, 1), - rgba(255, 220, 220, 1) 11px, - rgba(255, 255, 220, 1) 10px, - rgba(255, 255, 220, 1) 20px - ) !important; background-image: repeating-linear-gradient( 135deg, rgba(255, 220, 220, 1), @@ -34,24 +23,11 @@ [mol_view_error] * { background: none !important } -@-webkit-keyframes mol_view_wait_show { - from { - background: none - } -} @keyframes mol_view_wait_show { from { background: none } } -@-webkit-keyframes mol_view_wait_move { - from { - background-position: 0 0 - } - to { - background-position: 28px 0 - } -} @keyframes mol_view_wait_move { from { background-position: 0 0 @@ -62,13 +38,6 @@ } [mol_view_error="$mol_atom_wait"] , [mol_view_error="$mol_atom_wait"] * { - background-image: -webkit-repeating-linear-gradient( - 45deg, - rgba(91, 136, 200, 0.025), - rgba(91, 136, 200, 0.025) 9px, - rgba(255, 255, 255, .015) 10px, - rgba(255, 255, 255, .015) 20px - ) !important; background-image: repeating-linear-gradient( 45deg, rgba(91, 136, 200, 0.025), @@ -77,8 +46,7 @@ rgba(255, 255, 255, .015) 20px ) !important; background-size: 28px 28px !important; - -webkit-animation: mol_view_wait_show .5s ease-in , mol_view_wait_move .25s steps(6) infinite !important; - animation: mol_view_wait_show .5s ease-in , mol_view_wait_move .25s steps(6) infinite !important + animation: mol_view_wait_show .5s ease-in , mol_view_wait_move .25s steps(6) infinite !important } [mol_string] { box-sizing: border-box; @@ -88,18 +56,15 @@ border-radius: 2px; white-space: nowrap; overflow: hidden; - padding: 8px; padding: .5rem; text-align: left; position: relative; z-index: 0; font: inherit; - -webkit-box-flex: 0; - -ms-flex: 0 1 auto; - flex: 0 1 auto; + flex: 0 1 auto; width: 8em; background: #eee; - color: gray; + color: darkgray; margin: auto } [mol_string]:enabled { @@ -124,26 +89,16 @@ user-select: none; border: none; font: inherit; - background: none; + background-color: none; box-shadow: 0 0 0 1px rgba(230, 230, 230, 1); border-radius: 2px; - -webkit-box-flex: 0; - -ms-flex: 0 1 auto; - flex: 0 1 auto; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -ms-flex-line-pack: center; - align-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + flex: 0 1 auto; + justify-content: center; + align-content: center; + align-items: center; vertical-align: middle; text-align: center; - padding: 8px; padding: .5rem; - display: -webkit-inline-box; - display: -ms-inline-flexbox; display: inline-flex; text-decoration: inherit; color: inherit; @@ -153,28 +108,28 @@ margin: auto } [mol_button][disabled] { - color: gray + color: darkgray } [mol_button_minor]:not([disabled]) { - background: rgba(245, 245, 245, .9); + background-color: rgba(245, 245, 245, .9); color: rgba(0, 0, 0, .9) } [mol_button_major]:not([disabled]) { - background: rgb(211, 80, 91); + background-color: rgb(211, 80, 91); color: rgb(251, 254, 254); box-shadow: 0 0 0 1px rgba(230, 230, 230, 1) } [mol_button_danger]:not([disabled]) { - background: rgba(255, 50, 50, .75); + background-color: rgba(255, 50, 50, .75); color: white } [mol_button]:not([disabled]):hover { z-index: 1; cursor: pointer; - background: rgba(0, 0, 0, .05) + background-color: rgba(0, 0, 0, .05) } [mol_button_minor]:not([disabled]):hover { - background: rgb(240, 240, 240); + background-color: rgb(240, 240, 240); color: rgba(0, 0, 0, .9) } [mol_button]:focus { @@ -183,25 +138,20 @@ box-shadow: 0 0 0 1px rgba(0, 0, 0, .2) } [mol_button_major]:not([disabled]):hover { - background: rgb(206, 59, 71) + background-color: rgb(206, 59, 71) } [mol_button_danger]:not([disabled]):hover { - background: rgba(255, 26, 26, 0.75) + background-color: rgba(255, 26, 26, 0.75) } [mol_link] { text-decoration: none; color: hsl(215, 50%, 57%); cursor: pointer; border-radius: 2px; - display: -webkit-inline-box; - display: -ms-inline-flexbox; display: inline-flex; - padding: 8px; padding: .5rem; box-sizing: border-box; - -webkit-box-align: baseline; - -ms-flex-align: baseline; - align-items: baseline + align-items: baseline } [mol_link]:not([mol_link_current]):hover { background-color: rgba(0, 0, 0, .05) @@ -219,17 +169,10 @@ outline: none } [mol_check] { - -webkit-box-flex: 0; - -ms-flex: 0 1 auto; - flex: 0 1 auto; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -ms-flex-line-pack: center; - align-content: center; + flex: 0 1 auto; + justify-content: flex-start; + align-items: center; + align-content: center; border: none; font-weight: normal; box-shadow: none; @@ -240,33 +183,25 @@ color: inherit } [mol_check_icon] { - display: -webkit-inline-box; - display: -ms-inline-flexbox; display: inline-flex; /*vertical-align: -10%;*/ vertical-align: middle } [mol_check_label] { - display: -webkit-inline-box; - display: -ms-inline-flexbox; display: inline-flex } [mol_scroll] { overflow: auto; - overflow-y: scroll; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; + /*overflow-y: scroll;*/ + flex: 1 1 auto; box-sizing: border-box; will-change: scroll-position; - -webkit-transform: translateZ(0); - transform: translateZ(0); + transform: translateZ(0); box-shadow: 0 0 0 1px rgba(230, 230, 230, 1); max-height: 100%; max-width: 100%; -webkit-overflow-scrolling: touch; - -ms-flex-item-align: stretch; - -ms-grid-row-align: stretch; + -ms-grid-row-align: stretch; align-self: stretch } @media print { @@ -279,8 +214,6 @@ display: block } [mol_bar] { - display: -webkit-box; - display: -ms-flexbox; display: flex; box-shadow: 0 0 0 1px rgba(230, 230, 230, 1); border-radius: 2px; @@ -301,11 +234,10 @@ border-bottom-right-radius: 2px } [mol_app_todomvc] { - -ms-flex-item-align: stretch; - -ms-grid-row-align: stretch; + -ms-grid-row-align: stretch; align-self: stretch; width: 100%; - background: #f5f5f5; + background-color: #f5f5f5; margin: 0 } [mol_app_todomvc] [mol_string] , @@ -328,18 +260,11 @@ text-decoration: underline } [mol_app_todomvc_head_complete] { - -webkit-box-flex: 0; - -ms-flex: 0 0 64px; - flex: 0 0 64px; - -ms-flex: 0 0 4rem; - flex: 0 0 4rem; - -webkit-transform: rotate( 90deg ); - transform: rotate( 90deg ); + flex: 0 0 4rem; + transform: rotate( 90deg ); opacity: .5; padding: 0; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center + justify-content: center } [mol_app_todomvc_head_complete]:disabled { visibility: hidden @@ -349,46 +274,29 @@ } [mol_app_todomvc_add] { padding: 0; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto + flex: 1 1 auto } [mol_app_todomvc_list] { - font-size: 24px; font-size: 1.5rem } [mol_app_todomvc_panel] { box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .2), 0 25px 50px 0 rgba(0, 0, 0, .1); - max-width: 608px; max-width: 38rem; - background: white; - display: -webkit-box; - display: -ms-flexbox; + background-color: white; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - margin: 0 auto 32px; + flex-direction: column; margin: 0 auto 2rem; - -webkit-transition: none; transition: none } [mol_app_todomvc_head] { - font-size: 24px; font-size: 1.5rem; padding: 0; - display: -webkit-box; - display: -ms-flexbox; display: flex; - height: 64px; height: 4rem } [mol_app_todomvc_title] { display: block; - padding: 4px; padding: .25rem; - font-size: 112px; font-size: 7rem; font-weight: 100; text-align: center; @@ -396,102 +304,65 @@ text-rendering: optimizeLegibility } [mol_app_todomvc_task_row] { - display: -webkit-box; - display: -ms-flexbox; display: flex; - background: white; + background-color: white; box-shadow: 0 -1px 0 0 #ededed; - height: 64px; height: 4rem } [mol_app_todomvc_task_row_complete] { - -webkit-box-flex: 0; - -ms-flex: 0 0 64px; - flex: 0 0 64px; - -ms-flex: 0 0 4rem; - flex: 0 0 4rem; - padding: 16px; + flex: 0 0 4rem; padding: 1rem; - background: no-repeat center center url('data:image/svg+xml;utf8,') + background: no-repeat center center url('data:image/svg+xml;utf8,') } [mol_app_todomvc_task_row_complete][mol_check_checked] { - background: no-repeat center center url('data:image/svg+xml;utf8,') + background: no-repeat center center url('data:image/svg+xml;utf8,') } [mol_app_todomvc_task_row_title] { padding: 0; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto + flex: 1 1 auto } [mol_app_todomvc_task_row_completed] [mol_app_todomvc_task_row_title] { color: #d9d9d9; text-decoration: line-through } [mol_app_todomvc_task_row_drop] { - font-size: 20px; font-size: 1.25rem; - -webkit-box-flex: 0; - -ms-flex: 0 64px; - flex: 0 64px; - -ms-flex: 0 04rem; - flex: 0 04rem + flex: 0 04rem } [mol_app_todomvc_task_row]:not(:hover) [mol_app_todomvc_task_row_drop]:not(:focus) { opacity: 0; color: #cc9a9a } [mol_app_todomvc_foot] { - display: -webkit-box; - display: -ms-flexbox; display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-align: baseline; - -ms-flex-align: baseline; - align-items: baseline; - padding: 8px 16px; + flex-wrap: wrap; + align-items: baseline; padding: .5rem 1rem; color: #777; - font-size: 13.6px; font-size: .85rem; border-top: 1px solid #ededed; box-shadow: 0 1px 1px rgba(0, 0, 0, .2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, .2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, .2) } [mol_app_todomvc_pending] { - padding: 4px; padding: .25rem; - -webkit-box-flex: 0; - -ms-flex: 0 1 96px; - flex: 0 1 96px; - -ms-flex: 0 1 6rem; - flex: 0 1 6rem + flex: 0 1 6rem } [mol_app_todomvc_filter] { - -webkit-box-flex: 1; - -ms-flex: 1 100 auto; - flex: 1 100 auto; - display: -webkit-box; - display: -ms-flexbox; + flex: 1 100 auto; display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - margin: 4px; + justify-content: center; margin: .25rem; box-shadow: none } -[mol_app_todomvc_sanitize] { - -webkit-box-flex: 0; - -ms-flex: 0 1 auto; - flex: 0 1 auto; - padding: 4px; +[mol_app_todomvc_sweep] { + flex: 0 1 auto; padding: .25rem } -[mol_app_todomvc_sanitize][disabled] { +[mol_app_todomvc_sweep][disabled] { visibility: hidden } -[mol_app_todomvc_sanitize]:hover , -[mol_app_todomvc_sanitize]:focus { +[mol_app_todomvc_sweep]:hover , +[mol_app_todomvc_sweep]:focus { text-decoration: underline } diff --git a/examples/mol/-/web.css.map b/examples/mol/-/web.css.map index e57740c27a..599fd87208 100644 --- a/examples/mol/-/web.css.map +++ b/examples/mol/-/web.css.map @@ -12,17 +12,17 @@ "../todomvc.css" ], "names": [], - "mappings": "AAAA;IACC,8HAA8G;IAA9G,sHAA8G;IAA9G,8GAA8G;IAA9G,iIAA8G;IAC9G,iCAAyB;YAAzB,yBAAyB;IACzB,wBAAyB;CACzB;AAED;IACC,UAAU;IACV,WAAW;IACX,YAAY;IACZ,aAAa;IACb,oGAA2B;CAC3B;AAED;IACC;;;;;;cAMa;IANb;;;;;;cAMa;IACb,qCAAsC;CACtC;AACD;IACC,2BAA4B;CAC5B;AAED;IACC;QACC,gBAAiB;KACjB;CACD;AAJD;IACC;QACC,gBAAiB;KACjB;CACD;AAED;IACC;QACC,wBAAyB;KACzB;IACD;QACC,2BAA4B;KAC5B;CACD;AAPD;IACC;QACC,wBAAyB;KACzB;IACD;QACC,2BAA4B;KAC5B;CACD;AAED;;IAEC;;;;;;cAMa;IANb;;;;;;cAMa;IACb,sCAAsC;IACtC,yGAAiG;YAAjG,gGAAiG;CACjG;ACtDD;IACC,uBAAuB;IACvB,6CAAiD;IACjD,kBAAkB;IAClB,aAAa;IACb,mBAAqC;IACrC,oBAAoB;IACpB,iBAAiB;IACjB,aAAe;IAAf,eAAe;IACf,iBAAiB;IACjB,mBAAmB;IACnB,WAAW;IACX,cAAc;IACd,oBAAe;QAAf,mBAAe;YAAf,eAAe;IACf,WAAW;IACX,iBAAoC;IACpC,YAAoC;IACpC,YAAa;CACb;AAED;IACC,kBAAiC;IACjC,wBAAkC;CAClC;AAED;;IAEC,cAAc;IACd,UAAW;CACX;AAED;IACC,uCAAiD;CACjD;AAED;IACC,aAAc;CACd;ACrCD;IACC,0BAAkB;OAAlB,uBAAkB;QAAlB,sBAAkB;YAAlB,kBAAkB;IAClB,aAAa;IACb,cAAc;IACd,iBAAiB;IACjB,6CAAiD;IACjD,mBAAqC;IACrC,oBAAe;QAAf,mBAAe;YAAf,eAAe;IACf,yBAAwB;QAAxB,sBAAwB;YAAxB,wBAAwB;IACxB,2BAAsB;QAAtB,sBAAsB;IACtB,0BAAoB;QAApB,uBAAoB;YAApB,oBAAoB;IACpB,uBAAuB;IACvB,mBAAmB;IACnB,aAAe;IAAf,eAAe;IACf,4BAAqB;IAArB,4BAAqB;IAArB,qBAAqB;IACrB,yBAAyB;IACzB,eAAe;IACf,gBAAgB;IAChB,mBAAmB;IACnB,uBAAuB;IACvB,YAAa;CACb;AAED;IACC,WAAoC;CACpC;AAED;IACC,oCAAmC;IACnC,wBAAkC;CAClC;AAED;IACC,6BAAmC;IACnC,0BAAmC;IACnC,4CAAiD;CACjD;AAED;IACC,mCAAiC;IACjC,YAAiC;CACjC;AAED;IACC,WAAW;IACX,gBAAgB;IAChB,8BAAkC;CAClC;AAED;IACC,+BAAwC;IACxC,wBAAkC;CAClC;AAED;IACC,WAAW;IACX,cAAc;IACd,uCAAiD;CACjD;AAED;IACC,4BAAyC;CACzC;AAED;IACC,mCAAuC;CACvC;AClED;IACC,sBAAsB;IACtB,0BAA4B;IAC5B,gBAAgB;IAChB,mBAAqC;IACrC,4BAAqB;IAArB,4BAAqB;IAArB,qBAAqB;IACrB,aAAe;IAAf,eAAe;IACf,uBAAuB;IACvB,4BAAsB;QAAtB,yBAAsB;YAAtB,qBAAsB;CACtB;AAED;IACC,oCAAwC;CACxC;AAED;IACC,gDAAgD;IAChD,qCAAwC;IACxC,gDAAiD;CACjD;AAED;IACC,qCAAuC;IACvC,yBAAiC;CACjC;AAED;IACC,aAAc;CACd;AC5BD;IACC,oBAAe;QAAf,mBAAe;YAAf,eAAe;IACf,wBAA4B;QAA5B,qBAA4B;YAA5B,4BAA4B;IAC5B,0BAAoB;QAApB,uBAAoB;YAApB,oBAAoB;IACpB,2BAAsB;QAAtB,sBAAsB;IACtB,aAAa;IACb,oBAAoB;IACpB,iBAAiB;IACjB,gBAAiB;CACjB;AAED;IACC,4BAA4B;IAC5B,cAAe;CACf;AAED;IACC,4BAAqB;IAArB,4BAAqB;IAArB,qBAAqB;IACrB,yBAAyB;IACzB,sBAAuB;CACvB;AAED;IACC,4BAAqB;IAArB,4BAAqB;IAArB,oBAAqB;CACrB;ACxBD;IACC,eAAe;IACf,mBAAmB;IACnB,oBAAe;QAAf,mBAAe;YAAf,eAAe;IACf,uBAAuB;IACvB,6BAA6B;IAC7B,iCAAyB;YAAzB,yBAAyB;IACzB,6CAAiD;IACjD,iBAAiB;IACjB,gBAAgB;IAChB,kCAAkC;IAClC,6BAAoB;QAApB,4BAAoB;QAApB,mBAAoB;CACpB;AAED;IACC;QACC,iBAAkB;KAClB;CACD;AClBD;IACC,sBAAsB;IACtB,cAAe;CACf;ACHD;IACC,qBAAc;IAAd,qBAAc;IAAd,cAAc;IACd,6CAAiD;IACjD,mBAAqC;IACrC,YAAa;CACb;AAED;IACC,gBAAiB;CACjB;AAED;IACC,4BAA8C;IAC9C,8BAAiD;CACjD;AAED;IACC,gBAAiB;CACjB;AAED;IACC,6BAA+C;IAC/C,+BAAkD;CAClD;ACvBD;IACC,6BAAoB;QAApB,4BAAoB;QAApB,oBAAoB;IACpB,YAAY;IACZ,oBAAoB;IACpB,SAAU;CACV;AAED;;;;;;;;;IASC,iBAAiB;IACjB,6BAA8B;CAC9B;AAED;IACC,YAAa;CACb;AAED;;IAEC,0BAA2B;CAC3B;AAED;IACC,oBAAe;QAAf,mBAAe;YAAf,eAAe;IAAf,mBAAe;QAAf,eAAe;IACf,mCAA2B;YAA3B,2BAA2B;IAC3B,YAAY;IACZ,WAAW;IACX,yBAAwB;QAAxB,sBAAwB;YAAxB,uBAAwB;CACxB;AACD;IACC,kBAAmB;CACnB;AACD;IACC,UAAW;CACX;AAED;IACC,WAAW;IACX,oBAAe;QAAf,mBAAe;YAAf,cAAe;CACf;AAED;IACC,gBAAkB;IAAlB,iBAAkB;CAClB;AAED;IACC,2EAA6E;IAC7E,iBAAiB;IAAjB,iBAAiB;IACjB,kBAAkB;IAClB,qBAAc;IAAd,qBAAc;IAAd,cAAc;IACd,6BAAuB;IAAvB,8BAAuB;QAAvB,2BAAuB;YAAvB,uBAAuB;IACvB,oBAAoB;IAApB,oBAAoB;IACpB,yBAAiB;IAAjB,gBAAiB;CACjB;AAED;IACC,gBAAkB;IAAlB,kBAAkB;IAClB,WAAW;IACX,qBAAc;IAAd,qBAAc;IAAd,cAAc;IACd,aAAa;IAAb,YAAa;CACb;AAED;IACC,eAAe;IACf,aAAgB;IAAhB,gBAAgB;IAChB,iBAAgB;IAAhB,gBAAgB;IAChB,iBAAiB;IACjB,mBAAmB;IACnB,8BAA+B;IAC/B,kCAAmC;CACnC;AAED;IACC,qBAAc;IAAd,qBAAc;IAAd,cAAc;IACd,kBAAkB;IAClB,+BAA+B;IAC/B,aAAa;IAAb,YAAa;CACb;AAED;IACC,oBAAe;QAAf,mBAAe;YAAf,eAAe;IAAf,mBAAe;QAAf,eAAe;IACf,cAAc;IAAd,cAAc;IACd,8OAA+O;CAC/O;AACD;IACC,6SAA6S;CAC7S;AAED;IACC,WAAW;IACX,oBAAe;QAAf,mBAAe;YAAf,cAAe;CACf;AAED;IACC,eAAe;IACf,6BAA8B;CAC9B;AAED;IACC,gBAAmB;IAAnB,mBAAmB;IACnB,oBAAe;QAAf,iBAAe;YAAf,aAAe;IAAf,kBAAe;QAAf,aAAe;CACf;AACD;IACC,WAAW;IACX,cAAe;CACf;AAED;IACC,qBAAc;IAAd,qBAAc;IAAd,cAAc;IACd,oBAAgB;QAAhB,gBAAgB;IAChB,4BAAsB;QAAtB,yBAAsB;YAAtB,sBAAsB;IACtB,kBAAoB;IAApB,oBAAoB;IACpB,YAAY;IACZ,kBAAkB;IAAlB,kBAAkB;IAClB,8BAA8B;IAC9B,yJAA6J;CAC7J;AAED;IACC,aAAgB;IAAhB,gBAAgB;IAChB,oBAAe;QAAf,mBAAe;YAAf,eAAe;IAAf,mBAAe;QAAf,cAAe;CACf;AAED;IACC,oBAAiB;QAAjB,qBAAiB;YAAjB,iBAAiB;IACjB,qBAAc;IAAd,qBAAc;IAAd,cAAc;IACd,yBAAwB;QAAxB,sBAAwB;YAAxB,wBAAwB;IACxB,YAAe;IAAf,eAAe;IACf,gBAAiB;CACjB;AAED;IACC,oBAAe;QAAf,mBAAe;YAAf,eAAe;IACf,aAAgB;IAAhB,eAAgB;CAChB;AACD;IACC,kBAAmB;CACnB;AAED;;IAEC,0BAA2B;CAC3B", + "mappings": "AAAA;IACC,8GAA8G;IAC9G,yBAAyB;IACzB,wBAAyB;CACzB;AAED;IACC,UAAU;IACV,WAAW;IACX,YAAY;IACZ,aAAa;IACb,oGAA2B;CAC3B;AAED;IACC;;;;;;cAMa;IACb,qCAAsC;CACtC;AACD;IACC,2BAA4B;CAC5B;AAED;IACC;QACC,gBAAiB;KACjB;CACD;AAED;IACC;QACC,wBAAyB;KACzB;IACD;QACC,2BAA4B;KAC5B;CACD;AAED;;IAEC;;;;;;cAMa;IACb,sCAAsC;IACtC,gGAAiG;CACjG;ACtDD;IACC,uBAAuB;IACvB,6CAAiD;IACjD,kBAAkB;IAClB,aAAa;IACb,mBAAqC;IACrC,oBAAoB;IACpB,iBAAiB;IACjB,eAAe;IACf,iBAAiB;IACjB,mBAAmB;IACnB,WAAW;IACX,cAAc;IACd,eAAe;IACf,WAAW;IACX,iBAAoC;IACpC,gBAAoC;IACpC,YAAa;CACb;AAED;IACC,kBAAiC;IACjC,wBAAkC;CAClC;AAED;;IAEC,cAAc;IACd,UAAW;CACX;AAED;IACC,uCAAiD;CACjD;AAED;IACC,aAAc;CACd;ACrCD;IACC,0BAAkB;OAAlB,uBAAkB;QAAlB,sBAAkB;YAAlB,kBAAkB;IAClB,aAAa;IACb,cAAc;IACd,uBAAuB;IACvB,6CAAiD;IACjD,mBAAqC;IACrC,eAAe;IACf,wBAAwB;IACxB,sBAAsB;IACtB,oBAAoB;IACpB,uBAAuB;IACvB,mBAAmB;IACnB,eAAe;IACf,qBAAqB;IACrB,yBAAyB;IACzB,eAAe;IACf,gBAAgB;IAChB,mBAAmB;IACnB,uBAAuB;IACvB,YAAa;CACb;AAED;IACC,eAAoC;CACpC;AAED;IACC,0CAAyC;IACzC,wBAAkC;CAClC;AAED;IACC,mCAAyC;IACzC,0BAAmC;IACnC,4CAAiD;CACjD;AAED;IACC,yCAAuC;IACvC,YAAiC;CACjC;AAED;IACC,WAAW;IACX,gBAAgB;IAChB,oCAAwC;CACxC;AAED;IACC,qCAA8C;IAC9C,wBAAkC;CAClC;AAED;IACC,WAAW;IACX,cAAc;IACd,uCAAiD;CACjD;AAED;IACC,kCAA+C;CAC/C;AAED;IACC,yCAA6C;CAC7C;AClED;IACC,sBAAsB;IACtB,0BAA4B;IAC5B,gBAAgB;IAChB,mBAAqC;IACrC,qBAAqB;IACrB,eAAe;IACf,uBAAuB;IACvB,qBAAsB;CACtB;AAED;IACC,oCAAwC;CACxC;AAED;IACC,gDAAgD;IAChD,qCAAwC;IACxC,gDAAiD;CACjD;AAED;IACC,qCAAuC;IACvC,yBAAiC;CACjC;AAED;IACC,aAAc;CACd;AC5BD;IACC,eAAe;IACf,4BAA4B;IAC5B,oBAAoB;IACpB,sBAAsB;IACtB,aAAa;IACb,oBAAoB;IACpB,iBAAiB;IACjB,gBAAiB;CACjB;AAED;IACC,4BAA4B;IAC5B,cAAe;CACf;AAED;IACC,qBAAqB;IACrB,yBAAyB;IACzB,sBAAuB;CACvB;AAED;IACC,oBAAqB;CACrB;ACxBD;IACC,eAAe;IACf,uBAAuB;IACvB,eAAe;IACf,uBAAuB;IACvB,6BAA6B;IAC7B,yBAAyB;IACzB,6CAAiD;IACjD,iBAAiB;IACjB,gBAAgB;IAChB,kCAAkC;IAClC,4BAAoB;QAApB,mBAAoB;CACpB;AAED;IACC;QACC,iBAAkB;KAClB;CACD;AClBD;IACC,sBAAsB;IACtB,cAAe;CACf;ACHD;IACC,cAAc;IACd,6CAAiD;IACjD,mBAAqC;IACrC,YAAa;CACb;AAED;IACC,gBAAiB;CACjB;AAED;IACC,4BAA8C;IAC9C,8BAAiD;CACjD;AAED;IACC,gBAAiB;CACjB;AAED;IACC,6BAA+C;IAC/C,+BAAkD;CAClD;ACvBD;IACC,4BAAoB;QAApB,oBAAoB;IACpB,YAAY;IACZ,0BAA0B;IAC1B,SAAU;CACV;AAED;;;;;;;;;IASC,iBAAiB;IACjB,6BAA8B;CAC9B;AAED;IACC,YAAa;CACb;AAED;;IAEC,0BAA2B;CAC3B;AAED;IACC,eAAe;IACf,2BAA2B;IAC3B,YAAY;IACZ,WAAW;IACX,uBAAwB;CACxB;AACD;IACC,kBAAmB;CACnB;AACD;IACC,UAAW;CACX;AAED;IACC,WAAW;IACX,cAAe;CACf;AAED;IACC,iBAAkB;CAClB;AAED;IACC,2EAA6E;IAC7E,iBAAiB;IACjB,wBAAwB;IACxB,cAAc;IACd,uBAAuB;IACvB,oBAAoB;IACpB,gBAAiB;CACjB;AAED;IACC,kBAAkB;IAClB,WAAW;IACX,cAAc;IACd,YAAa;CACb;AAED;IACC,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;IACjB,mBAAmB;IACnB,8BAA+B;IAC/B,kCAAmC;CACnC;AAED;IACC,cAAc;IACd,wBAAwB;IACxB,+BAA+B;IAC/B,YAAa;CACb;AAED;IACC,eAAe;IACf,cAAc;IACd,gPAAiP;CACjP;AACD;IACC,iTAAiT;CACjT;AAED;IACC,WAAW;IACX,cAAe;CACf;AAED;IACC,eAAe;IACf,6BAA8B;CAC9B;AAED;IACC,mBAAmB;IACnB,aAAe;CACf;AACD;IACC,WAAW;IACX,cAAe;CACf;AAED;IACC,cAAc;IACd,gBAAgB;IAChB,sBAAsB;IACtB,oBAAoB;IACpB,YAAY;IACZ,kBAAkB;IAClB,8BAA8B;IAC9B,yJAA6J;CAC7J;AAED;IACC,gBAAgB;IAChB,cAAe;CACf;AAED;IACC,iBAAiB;IACjB,cAAc;IACd,wBAAwB;IACxB,eAAe;IACf,gBAAiB;CACjB;AAED;IACC,eAAe;IACf,eAAgB;CAChB;AACD;IACC,kBAAmB;CACnB;AAED;;IAEC,0BAA2B;CAC3B", "file": "web.css", "sourcesContent": [ "[mol_view] {\n\ttransition-property: background-color, height, width, min-height, min-width, max-width, max-height, transform;\n\ttransition-duration: .1s;\n\t-webkit-appearance: none;\n}\n\n[mol_view_root] {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\theight: 100%;\n\tfont: var(--mol_skin_font);\n}\n\n[mol_view_error] {\n\tbackground-image: repeating-linear-gradient(\n\t\t135deg,\n\t\trgba(255,220,220,1),\n\t\trgba(255,220,220,1) 11px,\n\t\trgba(255,255,220,1) 10px,\n\t\trgba(255,255,220,1) 20px\n\t) !important;\n\tbackground-size: 28px 28px !important;\n}\n[mol_view_error] * {\n\tbackground: none !important;\n}\n\n@keyframes mol_view_wait_show {\n\tfrom {\n\t\tbackground: none;\n\t}\n}\n\n@keyframes mol_view_wait_move {\n\tfrom {\n\t\tbackground-position: 0 0;\n\t}\n\tto {\n\t\tbackground-position: 28px 0;\n\t}\n}\n\n[mol_view_error=\"$mol_atom_wait\"] ,\n[mol_view_error=\"$mol_atom_wait\"] * {\n\tbackground-image: repeating-linear-gradient(\n\t\t45deg,\n\t\tcolor( var(--mol_skin_base) alpha(.025) ),\n\t\tcolor( var(--mol_skin_base) alpha(.025) ) 9px,\n\t\trgba(255,255,255,.015) 10px,\n\t\trgba(255,255,255,.015) 20px\n\t) !important;\n\tbackground-size: 28px 28px !important;\n\tanimation: mol_view_wait_show .5s ease-in , mol_view_wait_move .25s steps(6) infinite !important;\n}\n", "[mol_string] {\n\tbox-sizing: border-box;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n\toutline-offset: 0;\n\tborder: none;\n\tborder-radius: var(--mol_skin_round);\n\twhite-space: nowrap;\n\toverflow: hidden;\n\tpadding: .5rem;\n\ttext-align: left;\n\tposition: relative;\n\tz-index: 0;\n\tfont: inherit;\n\tflex: 0 1 auto;\n\twidth: 8em;\n\tbackground: var(--mol_skin_passive);\n\tcolor: var(--mol_skin_passive_text);\n\tmargin: auto;\n}\n\n[mol_string]:enabled {\n\tbackground: var(--mol_skin_card);\n\tcolor: var(--mol_skin_light_text);\n}\n\n[mol_string]:enabled:hover ,\n[mol_string]:focus {\n\toutline: none;\n\tz-index: 1;\n}\n\n[mol_string]:focus {\n\tbox-shadow: 0 0 0 1px var(--mol_skin_focus_line);\n}\n\n[mol_string]::-ms-clear {\n\tdisplay: none;\n}\n", - "[mol_button] {\n\tuser-select: none;\n\tborder: none;\n\tfont: inherit;\n\tbackground: none;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n\tborder-radius: var(--mol_skin_round);\n\tflex: 0 1 auto;\n\tjustify-content: center;\n\talign-content: center;\n\talign-items: center;\n\tvertical-align: middle;\n\ttext-align: center;\n\tpadding: .5rem;\n\tdisplay: inline-flex;\n\ttext-decoration: inherit;\n\tcolor: inherit;\n\tcursor: inherit;\n\tposition: relative;\n\tbox-sizing: border-box;\n\tmargin: auto;\n}\n\n[mol_button][disabled] {\n\tcolor: var(--mol_skin_passive_text);\n}\n\n[mol_button_minor]:not([disabled]) {\n\tbackground: var(--mol_skin_button);\n\tcolor: var(--mol_skin_light_text);\n}\n\n[mol_button_major]:not([disabled]) {\n\tbackground: var(--mol_skin_accent);\n\tcolor: var(--mol_skin_accent_text);\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n}\n\n[mol_button_danger]:not([disabled]) {\n\tbackground: var(--mol_skin_warn);\n\tcolor: var(--mol_skin_warn_text);\n}\n\n[mol_button]:not([disabled]):hover {\n\tz-index: 1;\n\tcursor: pointer;\n\tbackground: var(--mol_skin_hover);\n}\n\n[mol_button_minor]:not([disabled]):hover {\n\tbackground: var(--mol_skin_light_hover);\n\tcolor: var(--mol_skin_light_text);\n}\n\n[mol_button]:focus {\n\tz-index: 1;\n\toutline: none;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_focus_line);\n}\n\n[mol_button_major]:not([disabled]):hover {\n\tbackground: var(--mol_skin_accent_hover);\n}\n\n[mol_button_danger]:not([disabled]):hover {\n\tbackground: var(--mol_skin_warn_hover);\n}\n", + "[mol_button] {\n\tuser-select: none;\n\tborder: none;\n\tfont: inherit;\n\tbackground-color: none;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n\tborder-radius: var(--mol_skin_round);\n\tflex: 0 1 auto;\n\tjustify-content: center;\n\talign-content: center;\n\talign-items: center;\n\tvertical-align: middle;\n\ttext-align: center;\n\tpadding: .5rem;\n\tdisplay: inline-flex;\n\ttext-decoration: inherit;\n\tcolor: inherit;\n\tcursor: inherit;\n\tposition: relative;\n\tbox-sizing: border-box;\n\tmargin: auto;\n}\n\n[mol_button][disabled] {\n\tcolor: var(--mol_skin_passive_text);\n}\n\n[mol_button_minor]:not([disabled]) {\n\tbackground-color: var(--mol_skin_button);\n\tcolor: var(--mol_skin_light_text);\n}\n\n[mol_button_major]:not([disabled]) {\n\tbackground-color: var(--mol_skin_accent);\n\tcolor: var(--mol_skin_accent_text);\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n}\n\n[mol_button_danger]:not([disabled]) {\n\tbackground-color: var(--mol_skin_warn);\n\tcolor: var(--mol_skin_warn_text);\n}\n\n[mol_button]:not([disabled]):hover {\n\tz-index: 1;\n\tcursor: pointer;\n\tbackground-color: var(--mol_skin_hover);\n}\n\n[mol_button_minor]:not([disabled]):hover {\n\tbackground-color: var(--mol_skin_light_hover);\n\tcolor: var(--mol_skin_light_text);\n}\n\n[mol_button]:focus {\n\tz-index: 1;\n\toutline: none;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_focus_line);\n}\n\n[mol_button_major]:not([disabled]):hover {\n\tbackground-color: var(--mol_skin_accent_hover);\n}\n\n[mol_button_danger]:not([disabled]):hover {\n\tbackground-color: var(--mol_skin_warn_hover);\n}\n", "[mol_link] {\n\ttext-decoration: none;\n\tcolor: var(--mol_skin_base);\n\tcursor: pointer;\n\tborder-radius: var(--mol_skin_round);\n\tdisplay: inline-flex;\n\tpadding: .5rem;\n\tbox-sizing: border-box;\n\talign-items: baseline;\n}\n\n[mol_link]:not([mol_link_current]):hover {\n\tbackground-color: var(--mol_skin_hover);\n}\n\n[mol_link]:not([mol_link_current]):focus {\n\t/*box-shadow: 0 0 0 1px var(--mol_skin_focus);*/\n\tbackground-color: var(--mol_skin_hover);\n\tbox-shadow: 0 0 0 1px var(--mol_skin_hover_line);\n}\n\n[mol_link_current] {\n\tbackground-color: var(--mol_skin_base);\n\tcolor: var(--mol_skin_base_text);\n}\n\n[mol_link]:focus {\n\toutline: none;\n}\n", "[mol_check] {\n\tflex: 0 1 auto;\n\tjustify-content: flex-start;\n\talign-items: center;\n\talign-content: center;\n\tborder: none;\n\tfont-weight: normal;\n\tbox-shadow: none;\n\ttext-align: left;\n}\n\n[mol_check]:not([mol_check_checked]) {\n\t/*background: transparent;*/\n\tcolor: inherit;\n}\n\n[mol_check_icon] {\n\tdisplay: inline-flex;\n\t/*vertical-align: -10%;*/\n\tvertical-align: middle;\n}\n\n[mol_check_label] {\n\tdisplay: inline-flex;\n}\n", - "[mol_scroll] {\n\toverflow: auto;\n\toverflow-y: scroll;\n\tflex: 1 1 auto;\n\tbox-sizing: border-box;\n\twill-change: scroll-position;\n\ttransform: translateZ(0);\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n\tmax-height: 100%;\n\tmax-width: 100%;\n\t-webkit-overflow-scrolling: touch;\n\talign-self: stretch;\n}\n\n@media print {\n\t[mol_scroll] {\n\t\toverflow: visible;\n\t}\n}\n", + "[mol_scroll] {\n\toverflow: auto;\n\t/*overflow-y: scroll;*/\n\tflex: 1 1 auto;\n\tbox-sizing: border-box;\n\twill-change: scroll-position;\n\ttransform: translateZ(0);\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n\tmax-height: 100%;\n\tmax-width: 100%;\n\t-webkit-overflow-scrolling: touch;\n\talign-self: stretch;\n}\n\n@media print {\n\t[mol_scroll] {\n\t\toverflow: visible;\n\t}\n}\n", "[mol_list] {\n\twill-change: contents;\n\tdisplay: block;\n}\n", "[mol_bar] {\n\tdisplay: flex;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n\tborder-radius: var(--mol_skin_round);\n\tmargin: auto;\n}\n\n[mol_bar] > * {\n\tborder-radius: 0;\n}\n\n[mol_bar] > *:first-child {\n\tborder-top-left-radius: var(--mol_skin_round);\n\tborder-bottom-left-radius: var(--mol_skin_round);\n}\n\n[mol_bar] > *:not(:first-child) {\n\tmargin-left: 1px;\n}\n\n[mol_bar] > *:last-child {\n\tborder-top-right-radius: var(--mol_skin_round);\n\tborder-bottom-right-radius: var(--mol_skin_round);\n}\n", - "[mol_app_todomvc] {\n\talign-self: stretch;\n\twidth: 100%;\n\tbackground: #f5f5f5;\n\tmargin: 0;\n}\n\n[mol_app_todomvc] [mol_string] ,\n[mol_app_todomvc] [mol_string]:focus ,\n[mol_app_todomvc] [mol_string]:hover ,\n[mol_app_todomvc] [mol_button] ,\n[mol_app_todomvc] [mol_button]:focus ,\n[mol_app_todomvc] [mol_button]:hover ,\n[mol_app_todomvc] [mol_link] ,\n[mol_app_todomvc] [mol_link]:focus ,\n[mol_app_todomvc] [mol_link]:hover {\n\tbox-shadow: none;\n\tbackground-color: transparent;\n}\n\n[mol_app_todomvc] [mol_link_current] {\n\tcolor: black;\n}\n\n[mol_app_todomvc] [mol_link]:not([mol_link_current]):hover ,\n[mol_app_todomvc] [mol_link]:not([mol_link_current]):focus {\n\ttext-decoration: underline;\n}\n\n[mol_app_todomvc_head_complete] {\n\tflex: 0 0 4rem;\n\ttransform: rotate( 90deg );\n\topacity: .5;\n\tpadding: 0;\n\tjustify-content: center;\n}\n[mol_app_todomvc_head_complete]:disabled {\n\tvisibility: hidden;\n}\n[mol_app_todomvc_head_complete][mol_check_checked] {\n\topacity: 1;\n}\n\n[mol_app_todomvc_add] {\n\tpadding: 0;\n\tflex: 1 1 auto;\n}\n\n[mol_app_todomvc_list] {\n\tfont-size: 1.5rem;\n}\n\n[mol_app_todomvc_panel] {\n\tbox-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1);\n\tmax-width: 38rem;\n\tbackground: white;\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 0 auto 2rem;\n\ttransition: none;\n}\n\n[mol_app_todomvc_head] {\n\tfont-size: 1.5rem;\n\tpadding: 0;\n\tdisplay: flex;\n\theight: 4rem;\n}\n\n[mol_app_todomvc_title] {\n\tdisplay: block;\n\tpadding: .25rem;\n\tfont-size: 7rem;\n\tfont-weight: 100;\n\ttext-align: center;\n\tcolor: rgba(175, 47, 47, 0.15);\n\ttext-rendering: optimizeLegibility;\n}\n\n[mol_app_todomvc_task_row] {\n\tdisplay: flex;\n\tbackground: white;\n\tbox-shadow: 0 -1px 0 0 #ededed;\n\theight: 4rem;\n}\n\n[mol_app_todomvc_task_row_complete] {\n\tflex: 0 0 4rem;\n\tpadding: 1rem;\n\tbackground: no-repeat center center url('data:image/svg+xml;utf8,');\n}\n[mol_app_todomvc_task_row_complete][mol_check_checked] {\n\tbackground: no-repeat center center url('data:image/svg+xml;utf8,')\n}\n\n[mol_app_todomvc_task_row_title] {\n\tpadding: 0;\n\tflex: 1 1 auto;\n}\n\n[mol_app_todomvc_task_row_completed] [mol_app_todomvc_task_row_title] {\n\tcolor: #d9d9d9;\n\ttext-decoration: line-through;\n}\n\n[mol_app_todomvc_task_row_drop] {\n\tfont-size: 1.25rem;\n\tflex: 0 04rem;\n}\n[mol_app_todomvc_task_row]:not(:hover) [mol_app_todomvc_task_row_drop]:not(:focus) {\n\topacity: 0;\n\tcolor: #cc9a9a;\n}\n\n[mol_app_todomvc_foot] {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: baseline;\n\tpadding: .5rem 1rem;\n\tcolor: #777;\n\tfont-size: .85rem;\n\tborder-top: 1px solid #ededed;\n\tbox-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2);\n}\n\n[mol_app_todomvc_pending] {\n\tpadding: .25rem;\n\tflex: 0 1 6rem;\n}\n\n[mol_app_todomvc_filter] {\n\tflex: 1 100 auto;\n\tdisplay: flex;\n\tjustify-content: center;\n\tmargin: .25rem;\n\tbox-shadow: none;\n}\n\n[mol_app_todomvc_sanitize] {\n\tflex: 0 1 auto;\n\tpadding: .25rem;\n}\n[mol_app_todomvc_sanitize][disabled] {\n\tvisibility: hidden;\n}\n\n[mol_app_todomvc_sanitize]:hover ,\n[mol_app_todomvc_sanitize]:focus {\n\ttext-decoration: underline;\n}\n" + "[mol_app_todomvc] {\n\talign-self: stretch;\n\twidth: 100%;\n\tbackground-color: #f5f5f5;\n\tmargin: 0;\n}\n\n[mol_app_todomvc] [mol_string] ,\n[mol_app_todomvc] [mol_string]:focus ,\n[mol_app_todomvc] [mol_string]:hover ,\n[mol_app_todomvc] [mol_button] ,\n[mol_app_todomvc] [mol_button]:focus ,\n[mol_app_todomvc] [mol_button]:hover ,\n[mol_app_todomvc] [mol_link] ,\n[mol_app_todomvc] [mol_link]:focus ,\n[mol_app_todomvc] [mol_link]:hover {\n\tbox-shadow: none;\n\tbackground-color: transparent;\n}\n\n[mol_app_todomvc] [mol_link_current] {\n\tcolor: black;\n}\n\n[mol_app_todomvc] [mol_link]:not([mol_link_current]):hover ,\n[mol_app_todomvc] [mol_link]:not([mol_link_current]):focus {\n\ttext-decoration: underline;\n}\n\n[mol_app_todomvc_head_complete] {\n\tflex: 0 0 4rem;\n\ttransform: rotate( 90deg );\n\topacity: .5;\n\tpadding: 0;\n\tjustify-content: center;\n}\n[mol_app_todomvc_head_complete]:disabled {\n\tvisibility: hidden;\n}\n[mol_app_todomvc_head_complete][mol_check_checked] {\n\topacity: 1;\n}\n\n[mol_app_todomvc_add] {\n\tpadding: 0;\n\tflex: 1 1 auto;\n}\n\n[mol_app_todomvc_list] {\n\tfont-size: 1.5rem;\n}\n\n[mol_app_todomvc_panel] {\n\tbox-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1);\n\tmax-width: 38rem;\n\tbackground-color: white;\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 0 auto 2rem;\n\ttransition: none;\n}\n\n[mol_app_todomvc_head] {\n\tfont-size: 1.5rem;\n\tpadding: 0;\n\tdisplay: flex;\n\theight: 4rem;\n}\n\n[mol_app_todomvc_title] {\n\tdisplay: block;\n\tpadding: .25rem;\n\tfont-size: 7rem;\n\tfont-weight: 100;\n\ttext-align: center;\n\tcolor: rgba(175, 47, 47, 0.15);\n\ttext-rendering: optimizeLegibility;\n}\n\n[mol_app_todomvc_task_row] {\n\tdisplay: flex;\n\tbackground-color: white;\n\tbox-shadow: 0 -1px 0 0 #ededed;\n\theight: 4rem;\n}\n\n[mol_app_todomvc_task_row_complete] {\n\tflex: 0 0 4rem;\n\tpadding: 1rem;\n\tbackground: no-repeat center center url('data:image/svg+xml;utf8,');\n}\n[mol_app_todomvc_task_row_complete][mol_check_checked] {\n\tbackground: no-repeat center center url('data:image/svg+xml;utf8,')\n}\n\n[mol_app_todomvc_task_row_title] {\n\tpadding: 0;\n\tflex: 1 1 auto;\n}\n\n[mol_app_todomvc_task_row_completed] [mol_app_todomvc_task_row_title] {\n\tcolor: #d9d9d9;\n\ttext-decoration: line-through;\n}\n\n[mol_app_todomvc_task_row_drop] {\n\tfont-size: 1.25rem;\n\tflex: 0 04rem;\n}\n[mol_app_todomvc_task_row]:not(:hover) [mol_app_todomvc_task_row_drop]:not(:focus) {\n\topacity: 0;\n\tcolor: #cc9a9a;\n}\n\n[mol_app_todomvc_foot] {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: baseline;\n\tpadding: .5rem 1rem;\n\tcolor: #777;\n\tfont-size: .85rem;\n\tborder-top: 1px solid #ededed;\n\tbox-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2);\n}\n\n[mol_app_todomvc_pending] {\n\tpadding: .25rem;\n\tflex: 0 1 6rem;\n}\n\n[mol_app_todomvc_filter] {\n\tflex: 1 100 auto;\n\tdisplay: flex;\n\tjustify-content: center;\n\tmargin: .25rem;\n\tbox-shadow: none;\n}\n\n[mol_app_todomvc_sweep] {\n\tflex: 0 1 auto;\n\tpadding: .25rem;\n}\n[mol_app_todomvc_sweep][disabled] {\n\tvisibility: hidden;\n}\n\n[mol_app_todomvc_sweep]:hover ,\n[mol_app_todomvc_sweep]:focus {\n\ttext-decoration: underline;\n}\n" ] } \ No newline at end of file diff --git a/examples/mol/-/web.d.ts b/examples/mol/-/web.d.ts new file mode 100644 index 0000000000..b4a3b93cfa --- /dev/null +++ b/examples/mol/-/web.d.ts @@ -0,0 +1,784 @@ +declare namespace $ { + class $mol_dict { + size: number; + get(key: Key): Value; + set(key: Key, value: Value): this; + delete(key: Key): void; + has(key: Key): boolean; + clear(): void; + keys(): Key[]; + values(): Value[]; + entries(): [Key, Value][]; + forEach(handler: (value: Value, key: Key) => void): void; + } + class $mol_dict_shim implements $mol_dict { + _keys: { + [index: string]: Key[]; + }; + _values: { + [index: string]: Value[]; + }; + size: number; + set(key: Key, value: Value): this; + get(key: Key): Value; + has(key: Key): boolean; + delete(key: Key): void; + forEach(handle: (val: Value, key: Key) => void): void; + keys(): Key[]; + values(): Value[]; + entries(): [Key, Value][]; + clear(): void; + } +} +interface Function { + name: string; +} +declare namespace $ { + var $mol_func_name_dict: $mol_dict; + function $mol_func_name(func: Function): string; +} +declare namespace $ { + function $mol_log(path: string, values: any[]): void; + namespace $mol_log { + function filter(next?: string): string; + } +} +declare namespace $ { + class $mol_object { + Class(): any; + static toString(): string; + private 'object_owner()'; + object_owner(next?: Object): Object; + private 'object_field()'; + object_field(next?: string): string; + toString(): string; + toJSON(): string; + setup(script: (obj: this) => void): this; + 'destroyed()': boolean; + destroyed(next?: boolean): boolean; + log(values: any[]): void; + } +} +declare namespace $ { + class $mol_set { + size: number; + add(key: Value): this; + delete(key: Value): void; + has(key: Value): boolean; + clear(): void; + keys(): Value[]; + values(): Value[]; + entries(): [Value, Value][]; + forEach(handler: (key: Value, value: Value) => void): void; + } + class $mol_set_shim implements $mol_set { + _index: { + [index: string]: Value[]; + }; + size: number; + add(value: Value): this; + has(value: Value): boolean; + delete(value: Value): void; + forEach(handle: (val: Value, key: Value) => void): void; + keys(): Value[]; + values(): Value[]; + entries(): [Value, Value][]; + clear(): void; + } +} +declare namespace $ { + class $mol_defer extends $mol_object { + run: () => void; + constructor(run: () => void); + destroyed(next?: boolean): boolean; + static all: $mol_defer[]; + static timer: number; + static scheduleNative: (handler: () => void) => number; + static schedule(): void; + static unschedule(): void; + static add(defer: $mol_defer): void; + static drop(defer: $mol_defer): void; + static run(): void; + } +} +declare namespace $ { + var $mol_state_stack: $mol_dict; +} +declare var Proxy: any; +declare namespace $ { + enum $mol_atom_status { + obsolete, + checking, + pulling, + actual, + } + class $mol_atom extends $mol_object { + masters: $mol_set<$mol_atom>; + slaves: $mol_set<$mol_atom>; + status: $mol_atom_status; + autoFresh: boolean; + handler: (next?: Value | Error, force?: $mol_atom_force) => Value; + host: { + [key: string]: any; + }; + field: string; + constructor(host: any, handler: (next?: Value | Error, force?: $mol_atom_force) => Value, field?: string); + destroyed(next?: boolean): boolean; + unlink(): void; + toString(): string; + get(force?: $mol_atom_force): Value; + actualize(force?: $mol_atom_force): void; + pull(force?: $mol_atom_force): any; + _next: Value | Error; + set(next: Value): Value; + normalize(next: Value, prev: Value | Error): Value; + push(next_raw: Value | Error): any; + obsolete_slaves(): void; + check_slaves(): void; + check(): void; + obsolete(): Value; + lead(slave: $mol_atom): void; + dislead(slave: $mol_atom): void; + obey(master: $mol_atom): void; + disobey(master: $mol_atom): void; + disobey_all(): void; + value(next?: Value, force?: $mol_atom_force): any; + static stack: $mol_atom[]; + static updating: $mol_atom[]; + static reaping: $mol_set<$mol_atom>; + static scheduled: boolean; + static actualize(atom: $mol_atom): void; + static reap(atom: $mol_atom): void; + static unreap(atom: $mol_atom): void; + static schedule(): void; + static sync(): void; + } + class $mol_atom_wait extends Error { + message: string; + name: string; + constructor(message?: string); + } + class $mol_atom_force extends Object { + $mol_atom_force: boolean; + static $mol_atom_force: boolean; + } + function $mol_atom_task(host: any, handler: () => Value): $mol_atom; +} +declare namespace $ { + function $mol_mem(config?: { + lazy?: boolean; + }): (obj: Host, name: string, descr: TypedPropertyDescriptor<(next?: Value, force?: $mol_atom_force) => Value>) => void; + function $mol_mem_key(config?: { + lazy?: boolean; + }): (obj: Host, name: string, descr: TypedPropertyDescriptor<(key: Key, next?: Value, force?: $mol_atom_force) => Value>) => void; +} +declare namespace $ { + class $mol_window extends $mol_object { + static size(next?: { + width: number; + height: number; + }): { + width: number; + height: number; + }; + } +} +declare namespace $ { + var $mol_dom_context: Window & { + Node: typeof Node; + Element: typeof Element; + HTMLElement: typeof HTMLElement; + XMLHttpRequest: typeof XMLHttpRequest; + }; +} +declare namespace $ { +} +declare namespace $ { + interface $mol_dom_render_config { + childNodes?: NodeList | Array Node; + }>; + attributes?: { + [key: string]: string | number | boolean; + }; + style?: { + [key: string]: string | number; + }; + events?: { + [key: string]: (event: Event) => any; + }; + [key: string]: any; + } + function $mol_dom_render(el: Element, config: $mol_dom_make_config): Element; + function $mol_dom_render_childNodes(el: Element, childNodes?: NodeList | Array Node; + }>): void; + function $mol_dom_render_attributes(el: Element, attrs?: { + [key: string]: string | number | boolean; + }): void; + function $mol_dom_render_style(el: Element, styles?: { + [key: string]: string | number; + }): void; + function $mol_dom_render_event(el: Element, events?: { + [key: string]: (event: Event) => any; + }): void; +} +declare namespace $ { + interface $mol_dom_make_config extends $mol_dom_render_config { + id?: string; + localName?: string; + namespaceURI?: string; + } + function $mol_dom_make(config: $mol_dom_make_config): Element; +} +declare class WeakMap { + get(key: Key): Value; + set(key: Key, value: Value): this; +} +declare namespace $ { + class $mol_view_dom extends $mol_object { + static nodes: WeakMap<$mol_view, Element>; + static node(view: $mol_view): Element; + static mount(view: $mol_view, node: Element): Element; + } +} +declare namespace $ { + let $mol_view_context: $mol_view_context; + interface $mol_view_context { + $mol_view_visible_width(): number; + $mol_view_visible_height(): number; + $mol_view_state_key(suffix: string): string; + } + class $mol_view extends $mol_object { + static Root(id: number): $mol_view; + title(): string; + focused(next?: boolean): boolean; + context(next?: $mol_view_context): $mol_view_context; + context_sub(): $mol_view_context; + state_key(suffix?: string): string; + dom_name(): string; + dom_name_space(): string; + sub(): (string | number | boolean | Node | $mol_view)[]; + sub_visible(): (string | number | boolean | Node | $mol_view)[]; + minimal_width(): number; + minimal_height(): number; + 'view_classes()': Function[]; + view_classes(): Function[]; + dom_node(): Element; + dom_tree(): Element; + render(): Element; + attr_static(): { + [key: string]: string | number | boolean; + }; + attr(): { + [key: string]: string | number | boolean; + }; + style(): { + [key: string]: string | number; + }; + field(): { + [key: string]: any; + }; + event(): { + [key: string]: (event: Event) => void; + }; + 'event_wrapped()': { + [name: string]: (event?: Event) => any; + }; + event_wrapped(): { + [key: string]: (event: Event) => void; + }; + 'locale_contexts()': string[]; + locale_contexts(): string[]; + plugins(): $mol_view[]; + } +} +interface Window { + cordova: any; +} +declare namespace $ { +} +declare namespace $ { + class $mol_view_selection extends $mol_object { + static focused(next?: Element[], force?: $mol_atom_force): Element[]; + static position(...diff: any[]): any; + static onFocus(event: FocusEvent): void; + static onBlur(event: FocusEvent): void; + } +} +declare namespace $ { +} +declare namespace $ { + class $mol_string extends $mol_view { + dom_name(): string; + enabled(): boolean; + disabled(): boolean; + value(val?: any): any; + value_changed(val?: any): any; + hint(): string; + type(val?: any): any; + field(): { + "disabled": any; + "value": any; + "placeholder": any; + "type": any; + }; + event_change(event?: any): any; + event(): { + "input": (event?: any) => any; + }; + } +} +declare namespace $.$mol { + class $mol_string extends $.$mol_string { + event_change(next?: Event): void; + disabled(): boolean; + } +} +declare namespace $ { + enum $mol_keyboard_code { + backspace = 8, + tab = 9, + enter = 13, + shift = 16, + ctrl = 17, + alt = 18, + pause = 19, + capsLock = 20, + escape = 27, + space = 32, + pageUp = 33, + pageDown = 34, + end = 35, + home = 36, + left = 37, + up = 38, + right = 39, + down = 40, + insert = 45, + delete = 46, + key0 = 48, + key1 = 49, + key2 = 50, + key3 = 51, + key4 = 52, + key5 = 53, + key6 = 54, + key7 = 55, + key8 = 56, + key9 = 57, + A = 65, + B = 66, + C = 67, + D = 68, + E = 69, + F = 70, + G = 71, + H = 72, + I = 73, + J = 74, + K = 75, + L = 76, + M = 77, + N = 78, + O = 79, + P = 80, + Q = 81, + R = 82, + S = 83, + T = 84, + U = 85, + V = 86, + W = 87, + X = 88, + Y = 89, + Z = 90, + metaLeft = 91, + metaRight = 92, + select = 93, + numpad0 = 96, + numpad1 = 97, + numpad2 = 98, + numpad3 = 99, + numpad4 = 100, + numpad5 = 101, + numpad6 = 102, + numpad7 = 103, + numpad8 = 104, + numpad9 = 105, + multiply = 106, + add = 107, + subtract = 109, + decimal = 110, + divide = 111, + F1 = 112, + F2 = 113, + F3 = 114, + F4 = 115, + F5 = 116, + F6 = 117, + F7 = 118, + F8 = 119, + F9 = 120, + F10 = 121, + F11 = 122, + F12 = 123, + numLock = 144, + scrollLock = 145, + semicolon = 186, + equals = 187, + comma = 188, + dash = 189, + period = 190, + forwardSlash = 191, + graveAccent = 192, + bracketOpen = 219, + slashBack = 220, + bracketClose = 221, + quoteSingle = 222, + } +} +declare namespace $ { + class $mol_button extends $mol_view { + enabled(): boolean; + event_click(event?: any): any; + event_activate(event?: any): any; + evenet_key_press(event?: any): any; + event(): { + "click": (event?: any) => any; + "keypress": (event?: any) => any; + }; + disabled(): boolean; + tab_index(): string; + attr(): { + "disabled": any; + "role": any; + "tabindex": any; + }; + sub(): any[]; + } +} +declare namespace $.$mol { + class $mol_button extends $.$mol_button { + disabled(): boolean; + event_activate(next: Event): void; + evenet_key_press(event: KeyboardEvent): void; + tab_index(): string; + } +} +declare namespace $ { + class $mol_button_major extends $mol_button { + } +} +declare namespace $ { + class $mol_button_minor extends $mol_button { + } +} +declare namespace $ { + class $mol_button_danger extends $mol_button { + } +} +declare namespace $ { + function $mol_merge_dict(target: Target, source: Source): Target & Source; +} +declare namespace $ { + class $mol_state_arg extends $mol_object { + prefix: string; + static href(next?: string, force?: $mol_atom_force): string; + static dict(next?: { + [key: string]: string; + }): { + [key: string]: string; + }; + static value(key: string, next?: string): string; + static link(next: { + [key: string]: string; + }): string; + static make(next: { + [key: string]: string; + }): string; + constructor(prefix?: string); + value(key: string, next?: string): string; + sub(postfix: string): $mol_state_arg<{}>; + link(next: { + [key: string]: string; + }): string; + } +} +declare namespace $ { + class $mol_link extends $mol_view { + minimal_height(): number; + dom_name(): string; + uri(): string; + current(): boolean; + attr(): { + "href": any; + "mol_link_current": any; + }; + arg(): {}; + } +} +declare namespace $.$mol { + class $mol_link extends $.$mol_link { + uri(): string; + current(): boolean; + } +} +declare namespace $ { + class $mol_check extends $mol_button { + checked(val?: any): any; + attr(): { + "mol_check_checked": any; + "aria-checked": any; + "role": any; + "disabled": any; + "tabindex": any; + }; + Icon(): any; + label(): any[]; + Label(): $mol_view; + sub(): any[]; + } +} +declare namespace $.$mol { + class $mol_check extends $.$mol_check { + event_click(next?: Event): void; + } +} +declare namespace $ { + class $mol_state_session extends $mol_object { + static value(key: string, next?: Value): Value; + prefix(): string; + value(key: string, next?: Value): Value; + } +} +declare namespace $ { + class $mol_scroll extends $mol_view { + minimal_height(): number; + scroll_top(val?: any): any; + scroll_left(val?: any): any; + field(): { + "scrollTop": any; + "scrollLeft": any; + }; + event_scroll(event?: any): any; + event(): { + "scroll": (event?: any) => any; + }; + } +} +declare namespace $ { + interface $mol_view_context { + $mol_scroll_scroll_top(): number; + $mol_scroll_scroll_left(): number; + $mol_scroll_moving(): boolean; + } +} +declare namespace $.$mol { + class $mol_scroll extends $.$mol_scroll { + scroll_top(next?: number): number; + scroll_left(next?: number): number; + scroll_bottom(next?: number): number; + scroll_right(next?: number): number; + event_scroll(next?: Event): void; + _moving_task_frame: number; + moving_task_stop(): void; + moving(next?: boolean): boolean; + context_sub(): $mol_view_context; + } +} +declare var localStorage: Storage; +declare namespace $ { + class $mol_state_local extends $mol_object { + static value(key: string, next?: Value, force?: $mol_atom_force): Value; + prefix(): string; + value(key: string, next?: Value): Value; + } +} +declare namespace $ { +} +declare namespace $ { + class $mol_http_request extends $mol_object { + uri(): string; + method_get(): string; + method_put(): string; + credentials(): { + login?: string; + password?: string; + }; + headers(): {}; + body(): any; + 'native()': XMLHttpRequest; + native(): XMLHttpRequest; + destroyed(next?: boolean): boolean; + response(next?: any, force?: $mol_atom_force): XMLHttpRequest; + text(next?: string, force?: $mol_atom_force): string; + } +} +declare namespace $ { + class $mol_http_resource extends $mol_object { + static item(uri: string): $mol_http_resource; + uri(): string; + method_get(): string; + method_put(): string; + credentials(): { + login?: string; + password?: string; + }; + headers(): {}; + request(): $mol_http_request; + text(next?: string, force?: $mol_atom_force): string; + } +} +declare namespace $ { + class $mol_file extends $mol_object { + static absolute(path: string): $mol_file; + static relative(path: string): $mol_file; + static root(): $mol_file; + static base(): $mol_file; + path(): string; + parent(): $mol_file; + name(): string; + ext(): string; + content(next?: string, force?: $mol_atom_force): string; + resolve(path: string): $mol_file; + relate(base?: any): void; + } +} +declare namespace $ { + interface $mol_locale_dict { + [key: string]: string; + } + class $mol_locale extends $mol_object { + static lang_default(): string; + static lang(next?: string): string; + static source(lang: string): any; + static texts(next?: $mol_locale_dict): $mol_locale_dict; + static text(contexts: string[], key: string): string; + } +} +declare namespace $ { + class $mol_list extends $mol_view { + style(): { + "minHeight": any; + }; + rows(): any[]; + sub(): any[]; + Empty(): any; + } +} +declare namespace $.$mol { + class $mol_list extends $.$mol_list { + sub(): any[]; + row_offsets(): number[]; + row_context(index: number): $mol_view_context; + sub_visible(): any[]; + minimal_height(): number; + } +} +declare namespace $ { + class $mol_bar extends $mol_view { + } +} +declare namespace $ { + class $mol_app_todomvc extends $mol_scroll { + title(): string; + Title(): $mol_view; + head_complete_enabled(): boolean; + completed_all(val?: any): any; + Head_complete(): $mol_check; + task_title_new(val?: any): any; + event_add(event?: any): any; + Add(): $mol_app_todomvc_add; + Head_content(): any[]; + Head(): $mol_view; + task_rows(): any[]; + List(): $mol_list; + pending_message(): string; + Pending(): $mol_view; + filter_all_label(): string; + Filter_all(): $mol_link; + filter_active_label(): string; + Filter_active(): $mol_link; + filter_completed_label(): string; + Filter_completed(): $mol_link; + filterOptions(): any[]; + Filter(): $mol_bar; + sweep_enabled(): boolean; + event_sweep(event?: any): any; + sweep_label(): string; + Sweep(): $mol_button_minor; + foot_content(): any[]; + Foot(): $mol_view; + panels(): any[]; + Panel(): $mol_list; + Page(): $mol_list; + sub(): any[]; + task_completed(id: any, val?: any): any; + task_title(id: any, val?: any): any; + event_task_drop(id: any, event?: any): any; + Task_row(id: any): $mol_app_todomvc_task_row; + } +} +declare namespace $ { + class $mol_app_todomvc_add extends $mol_string { + hint(): string; + event_press(event?: any): any; + event(): { + "keyup": (event?: any) => any; + "input": (event?: any) => any; + }; + event_done(event?: any): any; + } +} +declare namespace $ { + class $mol_app_todomvc_task_row extends $mol_view { + minimal_height(): number; + completed(val?: any): any; + Complete(): $mol_check; + title_hint(): string; + title(val?: any): any; + Title(): $mol_string; + event_drop(event?: any): any; + Drop(): $mol_button; + sub(): any[]; + attr(): { + "mol_app_todomvc_task_row_completed": any; + }; + } +} +interface $mol_app_todomvc_task { + completed?: boolean; + title?: string; +} +declare namespace $.$mol { + class $mol_app_todomvc_add extends $.$mol_app_todomvc_add { + event_press(next?: KeyboardEvent): any; + } + class $mol_app_todomvc extends $.$mol_app_todomvc { + task_ids(next?: number[]): number[]; + arg_completed(): string; + groups_completed(): { + [index: string]: number[]; + }; + tasks_filtered(): number[]; + completed_all(next?: boolean): boolean; + head_complete_enabled(): boolean; + pending_message(): string; + _id_seed: number; + event_add(next: Event): void; + task_rows(): $mol_app_todomvc_task_row[]; + task(id: number, next?: $mol_app_todomvc_task): $mol_app_todomvc_task; + task_completed(index: number, next?: boolean): boolean; + task_title(index: number, next?: string): string; + event_task_drop(index: number, next?: Event): void; + event_sweep(): void; + panels(): ($mol_view | $.$mol_list)[]; + foot_visible(): boolean; + sweep_enabled(): boolean; + } +} +declare namespace $ { + class $mol_app_todomvc_demo extends $mol_app_todomvc { + } +} diff --git a/examples/mol/-/web.deps.json b/examples/mol/-/web.deps.json new file mode 100644 index 0000000000..425c6f7653 --- /dev/null +++ b/examples/mol/-/web.deps.json @@ -0,0 +1 @@ +{"files":["mol/index.html","mol/manifest.json","mol/mol.jam.js","mol/readme.md","mol/skin/skin.view.css","mol/dict/dict.ts","mol/dict/dict_select.jam.js","mol/func/func.ts","mol/log/log.web.ts","mol/object/object.ts","mol/object/readme.md","mol/set/set.ts","mol/set/set_select.jam.js","mol/defer/defer.ts","mol/defer/readme.md","mol/state/stack/stack.ts","mol/atom/atom.ie.web.js","mol/atom/atom.ts","mol/atom/readme.md","mol/mem/mem.ts","mol/mem/readme.md","mol/window/window.web.ts","mol/dom/context/context.ts","mol/dom/context/context.web.ts","mol/dom/render/render.ts","mol/dom/make/make.ts","mol/dom/make/readme.md","mol/view/dom/dom.ts","mol/view/readme.md","mol/view/view.css","mol/view/view.ts","mol/view/view.web.ts","mol/view/selection/selection.ts","mol/view/selection/selection.web.ts","mol/string/string.view.tree","mol/string/readme.md","mol/string/string.css","mol/string/-view.tree/string.view.tree.ts","mol/string/-view.tree/string.view.tree.locale.json","mol/string/string.view.ts","mol/button/button.view.tree","mol/keyboard/code.ts","mol/button/button.css","mol/button/-view.tree/button.view.tree.ts","mol/button/-view.tree/button.view.tree.locale.json","mol/button/button.view.ts","mol/button/-view.tree/button_types.view.tree.ts","mol/button/-view.tree/button_types.view.tree.locale.json","mol/button/readme.md","mol/link/link.view.tree","mol/merge/dict/dict.ts","mol/state/arg/arg.web.ts","mol/link/link.view.css","mol/link/-view.tree/link.view.tree.ts","mol/link/-view.tree/link.view.tree.locale.json","mol/link/link.view.ts","mol/link/readme.md","mol/check/check.view.tree","mol/check/check.css","mol/check/-view.tree/check.view.tree.ts","mol/check/-view.tree/check.view.tree.locale.json","mol/check/check.view.ts","mol/check/readme.md","mol/scroll/scroll.view.tree","mol/state/session/session.web.ts","mol/scroll/readme.md","mol/scroll/scroll.view.css","mol/scroll/-view.tree/scroll.view.tree.ts","mol/scroll/-view.tree/scroll.view.tree.locale.json","mol/scroll/scroll.view.ts","mol/state/local/local.ts","mol/state/local/local.web.ts","mol/http/request/readme.md","mol/http/request/request.ts","mol/http/resource/readme.md","mol/http/resource/resource.ts","mol/file/file.web.ts","mol/locale/locale.ts","mol/list/list.view.tree","mol/list/list.view.css","mol/list/-view.tree/list.view.tree.ts","mol/list/-view.tree/list.view.tree.locale.json","mol/list/list.view.ts","mol/list/readme.md","mol/bar/bar.view.css","mol/bar/-view.tree/bar.view.tree.ts","mol/bar/-view.tree/bar.view.tree.locale.json","mol/bar/readme.md","mol/app/todomvc/todomvc.view.tree","mol/app/todomvc/index.html","mol/app/todomvc/todomvc.css","mol/app/todomvc/-view.tree/todomvc.view.tree.ts","mol/app/todomvc/-view.tree/todomvc.view.tree.locale.json","mol/app/todomvc/todomvc.view.ts","mol/app/todomvc/demo/-view.tree/demo.view.tree.ts","mol/app/todomvc/demo/-view.tree/demo.view.tree.locale.json"],"edgesIn":{"mol/app":{"mol/app/todomvc":{"priority":0}},"mol":{"mol/app":{"priority":0},"mol/string":{"priority":0},"mol/skin":{"priority":0},"mol/view":{"priority":0},"mol/window":{"priority":0},"mol/object":{"priority":0},"mol/func":{"priority":0},"mol/dict":{"priority":0},"mol/log":{"priority":0},"mol/mem":{"priority":0},"mol/atom":{"priority":0},"mol/set":{"priority":0},"mol/defer":{"priority":0},"mol/state":{"priority":0},"mol/dom":{"priority":0},"mol/button":{"priority":0},"mol/keyboard":{"priority":0},"mol/link":{"priority":0},"mol/merge":{"priority":0},"mol/check":{"priority":0},"mol/scroll":{"priority":0},"mol/locale":{"priority":0},"mol/file":{"priority":0},"mol/http":{"priority":0},"mol/list":{"priority":0},"mol/bar":{"priority":0},"mol/app/todomvc":{"priority":0}},"mol/string":{"mol/app/todomvc":{"priority":0}},"mol/skin":{"mol/string":{"priority":-1},"mol/view":{"priority":-2},"mol/button":{"priority":-1},"mol/link":{"priority":-1},"mol/scroll":{"priority":-1},"mol/bar":{"priority":-1}},"mol/view":{"mol/string":{"priority":0},"mol/view/dom":{"priority":-2},"mol/view/selection":{"priority":0},"mol/button":{"priority":0},"mol/link":{"priority":0},"mol/check":{"priority":-2},"mol/scroll":{"priority":-3},"mol/app/todomvc":{"priority":0},"mol/list":{"priority":-3},"mol/bar":{"priority":0}},"mol/window":{"mol/view":{"priority":-1},"mol/scroll":{"priority":-4}},"mol/object":{"mol/window":{"priority":-1},"mol/atom":{"priority":-1},"mol/defer":{"priority":-1},"mol/view":{"priority":-1},"mol/view/dom":{"priority":-1},"mol/view/selection":{"priority":-1},"mol/state/arg":{"priority":-1},"mol/state/session":{"priority":-1},"mol/locale":{"priority":-1},"mol/state/local":{"priority":-1},"mol/file":{"priority":-1},"mol/http/resource":{"priority":-1},"mol/http/request":{"priority":-1}},"mol/func":{"mol/object":{"priority":-3}},"mol/dict":{"mol/func":{"priority":-1},"mol/state/stack":{"priority":-1},"mol/view/dom":{"priority":-2}},"mol/log":{"mol/object":{"priority":-3},"mol/atom":{"priority":-3}},"mol/mem":{"mol/window":{"priority":-2},"mol/view":{"priority":-2},"mol/view/selection":{"priority":-2},"mol/string":{"priority":-1},"mol/button":{"priority":-1},"mol/link":{"priority":-2},"mol/state/arg":{"priority":-2},"mol/check":{"priority":-1},"mol/scroll":{"priority":-1},"mol/state/session":{"priority":-2},"mol/locale":{"priority":-2},"mol/state/local":{"priority":-2},"mol/file":{"priority":-2},"mol/http/resource":{"priority":-2},"mol/http/request":{"priority":-2},"mol/app/todomvc":{"priority":-1},"mol/list":{"priority":-2}},"mol/atom":{"mol/mem":{"priority":-4},"mol/view/selection":{"priority":-2},"mol/view":{"priority":-3},"mol/state/arg":{"priority":-1},"mol/state/local":{"priority":-2},"mol/file":{"priority":-2},"mol/http/request":{"priority":-3},"mol/http/resource":{"priority":-2}},"mol/set":{"mol/atom":{"priority":-2}},"mol/defer":{"mol/atom":{"priority":-3},"mol/dom/render":{"priority":-8},"mol/view":{"priority":-2},"mol/scroll":{"priority":-3}},"mol/state/stack":{"mol/atom":{"priority":-1}},"mol/state":{"mol/state/stack":{"priority":0},"mol/state/arg":{"priority":0},"mol/state/session":{"priority":0},"mol/state/local":{"priority":0}},"mol/view/dom":{"mol/view":{"priority":-3}},"mol/dom/make":{"mol/view/dom":{"priority":-4},"mol/dom/render":{"priority":-1}},"mol/dom":{"mol/dom/make":{"priority":0},"mol/dom/render":{"priority":0},"mol/dom/context":{"priority":0}},"mol/dom/render":{"mol/dom/make":{"priority":-2},"mol/view/dom":{"priority":-3},"mol/view":{"priority":-4}},"mol/dom/context":{"mol/dom/render":{"priority":-5},"mol/dom/make":{"priority":-2},"mol/view/selection":{"priority":-1},"mol/view":{"priority":-4},"mol/state/arg":{"priority":-3},"mol/locale":{"priority":-3},"mol/file":{"priority":-3},"mol/http/request":{"priority":-3}},"mol/view/selection":{"mol/view":{"priority":-3}},"mol/string/string.view.tree":{"mol/string":{"priority":0}},"mol/button":{"mol/app/todomvc":{"priority":-2},"mol/check":{"priority":0}},"mol/button/button.view.tree":{"mol/button":{"priority":0}},"mol/keyboard":{"mol/button":{"priority":-3.5},"mol/app/todomvc":{"priority":-4}},"mol/link":{"mol/app/todomvc":{"priority":0}},"mol/link/link.view.tree":{"mol/link":{"priority":0}},"mol/state/arg":{"mol/link":{"priority":-3},"mol/app/todomvc":{"priority":-3}},"mol/merge/dict":{"mol/state/arg":{"priority":-3},"mol/app/todomvc":{"priority":-3}},"mol/merge":{"mol/merge/dict":{"priority":0}},"mol/check":{"mol/app/todomvc":{"priority":-2}},"mol/check/check.view.tree":{"mol/check":{"priority":0}},"mol/scroll":{"mol/app/todomvc":{"priority":0}},"mol/scroll/scroll.view.tree":{"mol/scroll":{"priority":0}},"mol/state/session":{"mol/scroll":{"priority":-3}},"mol/locale":{"mol/app/todomvc":{"priority":-2}},"mol/state/local":{"mol/locale":{"priority":-3},"mol/app/todomvc":{"priority":-3}},"mol/file":{"mol/locale":{"priority":-3}},"mol/http/resource":{"mol/file":{"priority":-3}},"mol/http":{"mol/http/resource":{"priority":0},"mol/http/request":{"priority":0}},"mol/http/request":{"mol/http/resource":{"priority":-3}},"mol/list":{"mol/app/todomvc":{"priority":-2}},"mol/list/list.view.tree":{"mol/list":{"priority":0}},"mol/bar":{"mol/app/todomvc":{"priority":-2}},"mol/app/todomvc/todomvc.view.tree":{"mol/app/todomvc":{"priority":0}},"mol/app/todomvc":{"mol/app/todomvc/demo":{"priority":0}}},"edgesOut":{"mol/app/todomvc":{"mol/app":{"priority":0},"mol/string":{"priority":0},"mol/button":{"priority":-2},"mol/link":{"priority":0},"mol/check":{"priority":-2},"mol/scroll":{"priority":0},"mol/locale":{"priority":-2},"mol/mem":{"priority":-1},"mol/view":{"priority":0},"mol/list":{"priority":-2},"mol/bar":{"priority":-2},"mol/app/todomvc/todomvc.view.tree":{"priority":0},"mol":{"priority":0},"mol/keyboard":{"priority":-4},"mol/state/local":{"priority":-3},"mol/state/arg":{"priority":-3},"mol/merge/dict":{"priority":-3}},"mol/app":{"mol":{"priority":0}},"mol/string":{"mol":{"priority":0},"mol/skin":{"priority":-1},"mol/view":{"priority":0},"mol/mem":{"priority":-1},"mol/string/string.view.tree":{"priority":0}},"mol/skin":{"mol":{"priority":0}},"mol/view":{"mol":{"priority":0},"mol/skin":{"priority":-2},"mol/window":{"priority":-1},"mol/object":{"priority":-1},"mol/mem":{"priority":-2},"mol/view/dom":{"priority":-3},"mol/view/selection":{"priority":-3},"mol/dom/render":{"priority":-4},"mol/atom":{"priority":-3},"mol/dom/context":{"priority":-4},"mol/defer":{"priority":-2}},"mol/window":{"mol":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2}},"mol/object":{"mol":{"priority":0},"mol/func":{"priority":-3},"mol/log":{"priority":-3}},"mol/func":{"mol":{"priority":0},"mol/dict":{"priority":-1}},"mol/dict":{"mol":{"priority":0}},"mol/log":{"mol":{"priority":0}},"mol/mem":{"mol":{"priority":0},"mol/atom":{"priority":-4}},"mol/atom":{"mol":{"priority":0},"mol/object":{"priority":-1},"mol/set":{"priority":-2},"mol/defer":{"priority":-3},"mol/log":{"priority":-3},"mol/state/stack":{"priority":-1}},"mol/set":{"mol":{"priority":0}},"mol/defer":{"mol":{"priority":0},"mol/object":{"priority":-1}},"mol/state/stack":{"mol/state":{"priority":0},"mol/dict":{"priority":-1}},"mol/state":{"mol":{"priority":0}},"mol/view/dom":{"mol/view":{"priority":-2},"mol/object":{"priority":-1},"mol/dict":{"priority":-2},"mol/dom/make":{"priority":-4},"mol/dom/render":{"priority":-3}},"mol/dom/make":{"mol/dom":{"priority":0},"mol/dom/render":{"priority":-2},"mol/dom/context":{"priority":-2}},"mol/dom":{"mol":{"priority":0}},"mol/dom/render":{"mol/dom":{"priority":0},"mol/dom/make":{"priority":-1},"mol/defer":{"priority":-8},"mol/dom/context":{"priority":-5}},"mol/dom/context":{"mol/dom":{"priority":0}},"mol/view/selection":{"mol/view":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2},"mol/atom":{"priority":-2},"mol/dom/context":{"priority":-1}},"mol/button":{"mol":{"priority":0},"mol/skin":{"priority":-1},"mol/view":{"priority":0},"mol/mem":{"priority":-1},"mol/button/button.view.tree":{"priority":0},"mol/keyboard":{"priority":-3.5}},"mol/keyboard":{"mol":{"priority":0}},"mol/link":{"mol":{"priority":0},"mol/skin":{"priority":-1},"mol/view":{"priority":0},"mol/link/link.view.tree":{"priority":0},"mol/mem":{"priority":-2},"mol/state/arg":{"priority":-3}},"mol/state/arg":{"mol/state":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2},"mol/atom":{"priority":-1},"mol/dom/context":{"priority":-3},"mol/merge/dict":{"priority":-3}},"mol/merge/dict":{"mol/merge":{"priority":0}},"mol/merge":{"mol":{"priority":0}},"mol/check":{"mol":{"priority":0},"mol/button":{"priority":0},"mol/mem":{"priority":-1},"mol/view":{"priority":-2},"mol/check/check.view.tree":{"priority":0}},"mol/scroll":{"mol":{"priority":0},"mol/skin":{"priority":-1},"mol/view":{"priority":-3},"mol/mem":{"priority":-1},"mol/scroll/scroll.view.tree":{"priority":0},"mol/state/session":{"priority":-3},"mol/defer":{"priority":-3},"mol/window":{"priority":-4}},"mol/state/session":{"mol/state":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2}},"mol/locale":{"mol":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2},"mol/state/local":{"priority":-3},"mol/dom/context":{"priority":-3},"mol/file":{"priority":-3}},"mol/state/local":{"mol/state":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2},"mol/atom":{"priority":-2}},"mol/file":{"mol":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2},"mol/dom/context":{"priority":-3},"mol/atom":{"priority":-2},"mol/http/resource":{"priority":-3}},"mol/http/resource":{"mol/http":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2},"mol/http/request":{"priority":-3},"mol/atom":{"priority":-2}},"mol/http":{"mol":{"priority":0}},"mol/http/request":{"mol/http":{"priority":0},"mol/object":{"priority":-1},"mol/dom/context":{"priority":-3},"mol/atom":{"priority":-3},"mol/mem":{"priority":-2}},"mol/list":{"mol":{"priority":0},"mol/view":{"priority":-3},"mol/list/list.view.tree":{"priority":0},"mol/mem":{"priority":-2}},"mol/bar":{"mol":{"priority":0},"mol/skin":{"priority":-1},"mol/view":{"priority":0}},"mol/app/todomvc/demo":{"mol/app/todomvc":{"priority":0}}},"deps":{"mol/app/todomvc":{"..":0,"/mol/app/todomvc":0,"/mol/string":0,"/mol/button":0,"/mol/link":0,"/mol/link/current":0,"/mol/app/todomvc/head/complete":0,"/mol/check/checked":0,"/mol/app/todomvc/add":0,"/mol/app/todomvc/list":0,"/mol/app/todomvc/panel":0,"/mol/app/todomvc/head":0,"/mol/app/todomvc/title":0,"/mol/app/todomvc/task/row":0,"/mol/app/todomvc/task/row/complete":0,"/mol/app/todomvc/task/row/title":0,"/mol/app/todomvc/task/row/completed":0,"/mol/app/todomvc/task/row/drop":0,"/mol/app/todomvc/foot":0,"/mol/app/todomvc/pending":0,"/mol/app/todomvc/filter":0,"/mol/app/todomvc/sweep":0,"/mol/scroll":0,"/mol/locale/text":-2,"/mol/mem":-1,"/mol/view":0,"/mol/check":-2,"/mol/list":-2,"/mol/bar":-2,"/mol/button/minor":-2,"/mol/mem/key":-1,"todomvc.view.tree":0,"/mol/app/todomvc/task":0,"/mol":0,"/mol/keyboard/code/enter":-4,"/mol/state/local/value":-3,"/mol/state/arg/value":-3,"/mol/merge/dict":-3},"mol/app":{"..":0},"mol":{"..":0,"/mol":0},"mol/string":{"..":0,"/mol/string":0,"/mol/skin/light/line":-1,"/mol/skin/round":-1,"/mol/skin/passive":-1,"/mol/skin/passive/text":-1,"/mol/skin/card":-1,"/mol/skin/light/text":-1,"/mol/skin/focus/line":-1,"/mol/view":0,"/mol/mem":-1,"string.view.tree":0,"/mol":0},"mol/skin":{"..":0,"/mol/skin/font":-1,"/mol/skin/base":-1,"/mol/skin/base/text":-1,"/mol/skin/button":-1,"/mol/skin/hover":-1,"/mol/skin/focus/line":-1,"/mol/skin/passive":-1,"/mol/skin/passive/text":-1,"/mol/skin/light":-1,"/mol/skin/light/line":-1,"/mol/skin/light/text":-1,"/mol/skin/light/hover":-1,"/mol/skin/card":-1,"/mol/skin/card/line":-1,"/mol/skin/accent":-1,"/mol/skin/accent/text":-1,"/mol/skin/accent/hover":-1,"/mol/skin/warn":-1,"/mol/skin/warn/text":-1,"/mol/skin/warn/hover":-1,"/mol/skin/good":-1,"/mol/skin/good/text":-1,"/mol/skin/bad":-1,"/mol/skin/bad/text":-1,"/mol/skin/round":-1},"mol/view":{"..":0,"/mol/view":0,"/mol/view/root":0,"/mol/skin/font":-1,"/mol/view/error":0,"/mol/skin/base":-2,"/mol/view/context":-1,"/mol/view/visible/width":-1,"/mol/view/visible/height":-1,"/mol/view/state/key":-1,"/mol/window/size":-1,"/mol/object":-1,"/mol/mem/key":-2,"/mol/mem":-2,"/mol/view/dom/node":-3,"/mol/view/selection/focused":-3,"/mol/view/dom/tree":-3,"/mol/view/render":-3,"/mol/dom/render":-4,"/mol/atom/wait":-4,"/mol/atom/catched":-4,"/mol/atom/task":-5,"/mol/dom/context/document/addEventListener":-1,"/mol/dom/context/document/querySelectorAll":-2,"/mol/view/dom/mount":-3,"/mol/atom":-3,"/mol/view/Root":-3,"/mol/dom/context/document/title":-4,"/mol/defer":-3,"/mol/defer/run":-2},"mol/window":{"..":0,"/mol/window":-1,"/mol/object":-1,"/mol/mem":-2,"/mol/window/size":-2},"mol/object":{"..":0,"/mol/object":-1,"/mol/func/name":-3,"/mol/log/filter":-3,"/mol/log":-3},"mol/func":{"..":0,"/mol/func/name/dict":-1,"/mol/dict":-1,"/mol/func/name":-1,"/mol/func/name/dict/has":-2,"/mol/func/name/dict/get":-2,"/mol/func/name/dict/set":-2},"mol/dict":{"..":0,"/mol/dict":0,"/mol/dict/shim":0},"mol/log":{"..":0,"/mol/log":-1,"/mol/log/filter":-2},"mol/mem":{"..":0,"/mol/mem":-1,"/mol/atom/force":-3,"/mol/atom":-4,"/mol/mem/key":-1},"mol/atom":{"..":0,"/mol/atom/status":-1,"/mol/atom":-1,"/mol/object":-1,"/mol/set":-2,"/mol/atom/status/obsolete":-2,"/mol/atom/force":-1,"/mol/atom/status/pulling":-3,"/mol/atom/stack":-1,"/mol/atom/status/actual":-3,"/mol/atom/status/checking":-3,"/mol/atom/catched":-4,"/mol/atom/wait":-1,"/mol/atom/actualize":-2,"/mol/atom/unreap":-4,"/mol/atom/reap":-4,"/mol/atom/updating/push":-3,"/mol/atom/schedule":-3,"/mol/atom/reaping/add":-3,"/mol/atom/reaping/delete":-3,"/mol/defer":-3,"/mol/log":-3,"/mol/atom/sync":-3,"/mol/state/stack/set":-1,"/mol/atom/wait/prototype":-3,"/mol/atom/task":-1},"mol/set":{"..":0,"/mol/set":0,"/mol/set/shim":0},"mol/defer":{"..":0,"/mol/defer":-1,"/mol/object":-1,"/mol/defer/add":-3,"/mol/defer/drop":-3},"mol/state/stack":{"..":0,"/mol/state/stack":-1,"/mol/dict":-1},"mol/state":{"..":0},"mol/view/dom":{"..":0,"/mol/view/dom":-1,"/mol/object":-1,"/mol/dict":-2,"/mol/view":-2,"/mol/view/dom/nodes/get":-3,"/mol/dom/make":-4,"/mol/view/dom/mount":-4,"/mol/view/dom/nodes/set":-3,"/mol/dom/render":-3},"mol/dom/make":{"..":0,"/mol/dom/make/config":-1,"/mol/dom/render/config":-1,"/mol/dom/make":-1,"/mol/dom/context/document":-2,"/mol/dom/render":-2},"mol/dom":{"..":0},"mol/dom/render":{"..":0,"/mol/dom/render/config":-1,"/mol/dom/render":-1,"/mol/dom/make/config":-1,"/mol/dom/render/childNodes":-1,"/mol/dom/render/attributes":-1,"/mol/dom/render/style":-1,"/mol/dom/render/event":-1,"/mol/defer":-8,"/mol/dom/context/Node":-3,"/mol/dom/context/document/createTextNode":-5},"mol/dom/context":{"..":0,"/mol/dom/context":-1},"mol/view/selection":{"..":0,"/mol/view/selection":-1,"/mol/object":-1,"/mol/mem":-2,"/mol/atom/force":-2,"/mol/dom/context/document/getElementById":-4,"/mol/dom/context/document/getSelection":-4,"/mol/view/selection/focused":-3,"/mol/dom/context/document/addEventListener":-1,"/mol/view/selection/position":-2,"/mol/view/selection/onFocus":-1,"/mol/view/selection/onBlur":-1},"mol/string/string.view.tree":{},"mol/button":{"..":0,"/mol/button":0,"/mol/skin/light/line":-1,"/mol/skin/round":-1,"/mol/skin/passive/text":-1,"/mol/button/minor":0,"/mol/skin/button":-1,"/mol/skin/light/text":-1,"/mol/button/major":0,"/mol/skin/accent":-1,"/mol/skin/accent/text":-1,"/mol/button/danger":0,"/mol/skin/warn":-1,"/mol/skin/warn/text":-1,"/mol/skin/hover":-1,"/mol/skin/light/hover":-1,"/mol/skin/focus/line":-1,"/mol/skin/accent/hover":-1,"/mol/skin/warn/hover":-1,"/mol/view":0,"/mol/mem":-1,"button.view.tree":0,"/mol":0,"/mol/keyboard/code/enter":-3.5},"mol/button/button.view.tree":{},"mol/keyboard":{"..":0,"/mol/keyboard/code":-0.5},"mol/link":{"..":0,"/mol/link":0,"/mol/skin/base":-1,"/mol/skin/round":-1,"/mol/link/current":0,"/mol/skin/hover":-1,"/mol/skin/hover/line":-1,"/mol/skin/base/text":-1,"/mol/view":0,"link.view.tree":0,"/mol":0,"/mol/mem":-2,"/mol/state/arg":-3,"/mol/state/arg/link":-3},"mol/link/link.view.tree":{},"mol/state/arg":{"..":0,"/mol/state/arg":-1,"/mol/object":-1,"/mol/mem":-2,"/mol/atom/force":-1,"/mol/dom/context/document/title":-3,"/mol/mem/key":-2,"/mol/merge/dict":-3,"/mol/state/arg/value":-3,"/mol/state/arg/link":-3,"/mol/state/arg/href":-1},"mol/merge/dict":{"..":0,"/mol/merge/dict":-1},"mol/merge":{"..":0},"mol/check":{"..":0,"/mol/check":0,"/mol/check/checked":0,"/mol/check/icon":0,"/mol/check/label":0,"/mol/button":0,"/mol/mem":-1,"/mol/view":-2,"check.view.tree":0,"/mol":0},"mol/check/check.view.tree":{},"mol/scroll":{"..":0,"/mol/scroll":0,"/mol/skin/light/line":-1,"/mol/view":0,"/mol/mem":-1,"scroll.view.tree":0,"/mol/view/context":-1,"/mol/scroll/scroll/top":-1,"/mol/scroll/scroll/left":-1,"/mol/scroll/moving":-1,"/mol":0,"/mol/state/session/value":-3,"/mol/defer":-3,"/mol/view/visible/height":-3,"/mol/window/size":-4,"/mol/view/visible/width":-3},"mol/scroll/scroll.view.tree":{},"mol/state/session":{"..":0,"/mol/state/session":-1,"/mol/object":-1,"/mol/mem/key":-2,"/mol/state/session/value":-3},"mol/locale":{"..":0,"/mol/locale/dict":-1,"/mol/locale":-1,"/mol/object":-1,"/mol/mem":-2,"/mol/state/local/value":-3,"/mol/dom/context/navigator/language/replace":-3,"/mol/mem/key":-2,"/mol/file/relative":-3},"mol/state/local":{"..":0,"/mol/state/local":-1,"/mol/object":-1,"/mol/mem/key":-2,"/mol/atom/force":-2,"/mol/state/local/value":-2},"mol/file":{"..":0,"/mol/file":-1,"/mol/object":-1,"/mol/mem/key":-2,"/mol/file/root":-4,"/mol/file/base":-3,"/mol/file/absolute":-3,"/mol/dom/context/document/location/pathname/replace":-3,"/mol/mem":-2,"/mol/atom/force":-2,"/mol/http/resource/item":-3},"mol/http/resource":{"..":0,"/mol/http/resource":-1,"/mol/object":-1,"/mol/mem/key":-2,"/mol/mem":-2,"/mol/http/request":-3,"/mol/atom/force":-2},"mol/http":{"..":0},"mol/http/request":{"..":0,"/mol/http/request":-1,"/mol/object":-1,"/mol/dom/context/XMLHttpRequest":-3,"/mol/atom/force":-2,"/mol/mem":-2,"/mol/atom/wait":-3},"mol/list":{"..":0,"/mol/list":0,"/mol/view":0,"list.view.tree":0,"/mol":0,"/mol/mem":-2,"/mol/view/visible/height":-3,"/mol/mem/key":-2},"mol/list/list.view.tree":{},"mol/bar":{"..":0,"/mol/bar":0,"/mol/skin/light/line":-1,"/mol/skin/round":-1,"/mol/view":0},"mol/app/todomvc/todomvc.view.tree":{},"mol/app/todomvc/demo":{"..":0,"/mol/app/todomvc/demo":0,"/mol/app/todomvc":0}}} \ No newline at end of file diff --git a/examples/mol/-/web.js b/examples/mol/-/web.js index 41fc921d06..c8dd017d5c 100644 --- a/examples/mol/-/web.js +++ b/examples/mol/-/web.js @@ -8,6 +8,123 @@ this.$ = this.$ || this var $ = this.$ $.$mol = $ +; +var $; +(function ($) { + var $mol_dict_shim = (function () { + function $mol_dict_shim() { + this._keys = {}; + this._values = {}; + this.size = 0; + } + $mol_dict_shim.prototype.set = function (key, value) { + var keyStr = String(key); + var keys = this._keys[keyStr]; + if (keys) { + var index = keys.indexOf(key); + if (index === -1) { + index = keys.length; + keys.push(key); + ++this.size; + } + this._values[keyStr][index] = value; + } + else { + this._keys[keyStr] = [key]; + this._values[keyStr] = [value]; + ++this.size; + } + return this; + }; + $mol_dict_shim.prototype.get = function (key) { + var keyStr = String(key); + var list = this._keys[keyStr]; + if (!list) + return void 0; + var index = list.indexOf(key); + if (index === -1) + return void 0; + return this._values[keyStr][index]; + }; + $mol_dict_shim.prototype.has = function (key) { + var keyStr = String(key); + var list = this._keys[keyStr]; + if (!list) + return false; + return list.indexOf(key) !== -1; + }; + $mol_dict_shim.prototype.delete = function (key) { + var keyStr = String(key); + var keys = this._keys[keyStr]; + if (!keys) + return; + var index = keys.indexOf(key); + if (index === -1) + return; + keys.splice(index, 1); + this._values[keyStr].splice(index, 1); + --this.size; + }; + $mol_dict_shim.prototype.forEach = function (handle) { + for (var keyStr in this._keys) { + if (!this._keys.hasOwnProperty(keyStr)) + continue; + var values = this._values[keyStr]; + this._keys[keyStr].forEach(function (key, index) { + handle(values[index], key); + }); + } + }; + $mol_dict_shim.prototype.keys = function () { + var keys = []; + this.forEach(function (val, key) { + keys.push(key); + }); + return keys; + }; + $mol_dict_shim.prototype.values = function () { + var values = []; + this.forEach(function (val, key) { + values.push(val); + }); + return values; + }; + $mol_dict_shim.prototype.entries = function () { + var entries = []; + this.forEach(function (val, key) { + entries.push([key, val]); + }); + return entries; + }; + $mol_dict_shim.prototype.clear = function () { + this._keys = {}; + this._values = {}; + this.size = 0; + }; + return $mol_dict_shim; + }()); + $.$mol_dict_shim = $mol_dict_shim; +})($ || ($ = {})); +//dict.js.map +; +$.$mol_dict = ( typeof Map === 'function' ) ? Map : $.$mol_dict_shim + +; +var $; +(function ($) { + $.$mol_func_name_dict = new $.$mol_dict(); + function $mol_func_name(func) { + if (func.name) + return func.name; + if ($.$mol_func_name_dict.has(func)) + return $.$mol_func_name_dict.get(func); + var name = Function.prototype.toString.call(func).match(/^function ([a-z0-9_$]*)/)[1]; + $.$mol_func_name_dict.set(func, name); + return name; + } + $.$mol_func_name = $mol_func_name; +})($ || ($ = {})); +//func.js.map ; var $; (function ($) { @@ -52,11 +169,7 @@ var $; return this.constructor; }; $mol_object.toString = function () { - var self = this; - return self['name'] - || self['displayName'] - || (self['displayName'] = Function.prototype.toString.call(self) - .match(/^function ([a-z0-9_$]*)/)[1]); + return $.$mol_func_name(this); }; $mol_object.prototype.object_owner = function (next) { if (this['object_owner()']) @@ -78,6 +191,9 @@ var $; path += '.' + field; return path; }; + $mol_object.prototype.toJSON = function () { + return this.toString(); + }; $mol_object.prototype.setup = function (script) { script(this); return this; @@ -241,107 +357,6 @@ var $; $.$mol_defer = $mol_defer; })($ || ($ = {})); //defer.js.map -; -var $; -(function ($) { - var $mol_dict_shim = (function () { - function $mol_dict_shim() { - this._keys = {}; - this._values = {}; - this.size = 0; - } - $mol_dict_shim.prototype.set = function (key, value) { - var keyStr = String(key); - var keys = this._keys[keyStr]; - if (keys) { - var index = keys.indexOf(key); - if (index === -1) { - index = keys.length; - keys.push(key); - ++this.size; - } - this._values[keyStr][index] = value; - } - else { - this._keys[keyStr] = [key]; - this._values[keyStr] = [value]; - ++this.size; - } - return this; - }; - $mol_dict_shim.prototype.get = function (key) { - var keyStr = String(key); - var list = this._keys[keyStr]; - if (!list) - return void 0; - var index = list.indexOf(key); - if (index === -1) - return void 0; - return this._values[keyStr][index]; - }; - $mol_dict_shim.prototype.has = function (key) { - var keyStr = String(key); - var list = this._keys[keyStr]; - if (!list) - return false; - return list.indexOf(key) !== -1; - }; - $mol_dict_shim.prototype.delete = function (key) { - var keyStr = String(key); - var keys = this._keys[keyStr]; - if (!keys) - return; - var index = keys.indexOf(key); - if (index === -1) - return; - keys.splice(index, 1); - this._values[keyStr].splice(index, 1); - --this.size; - }; - $mol_dict_shim.prototype.forEach = function (handle) { - for (var keyStr in this._keys) { - if (!this._keys.hasOwnProperty(keyStr)) - continue; - var values = this._values[keyStr]; - this._keys[keyStr].forEach(function (key, index) { - handle(values[index], key); - }); - } - }; - $mol_dict_shim.prototype.keys = function () { - var keys = []; - this.forEach(function (val, key) { - keys.push(key); - }); - return keys; - }; - $mol_dict_shim.prototype.values = function () { - var values = []; - this.forEach(function (val, key) { - values.push(val); - }); - return values; - }; - $mol_dict_shim.prototype.entries = function () { - var entries = []; - this.forEach(function (val, key) { - entries.push([key, val]); - }); - return entries; - }; - $mol_dict_shim.prototype.clear = function () { - this._keys = {}; - this._values = {}; - this.size = 0; - }; - return $mol_dict_shim; - }()); - $.$mol_dict_shim = $mol_dict_shim; -})($ || ($ = {})); -//dict.js.map -; -$.$mol_dict = ( typeof Map === 'function' ) ? Map : $.$mol_dict_shim - ; var $; (function ($) { @@ -418,21 +433,16 @@ var $; } host[this.field] = void null; host[this.field + '@'] = void null; - this['destroyed()'] = true; - this.log(['.destroyed()', true, 'atom']); this.status = $mol_atom_status.obsolete; - return true; - } - else { - return this['destroyed()']; } + return _super.prototype.destroyed.call(this, next); }; $mol_atom.prototype.unlink = function () { this.disobey_all(); this.check_slaves(); }; $mol_atom.prototype.toString = function () { - return this.host + "." + this.field; + return this.host + "." + this.field + "@"; }; $mol_atom.prototype.get = function (force) { if (this.status === $mol_atom_status.pulling) { @@ -500,7 +510,9 @@ var $; $mol_atom.prototype.set = function (next) { var next_normal = this.normalize(next, this._next); if (next_normal === this._next) - return this._next; + return this.get(); + if (next_normal === this.host[this.field]) + return this.get(); this._next = next_normal; this.obsolete(); return this.get(); @@ -798,11 +810,249 @@ var $; })($ || ($ = {})); //window.web.js.map ; +var $; +(function ($) { +})($ || ($ = {})); +//context.js.map +; +var $; +(function ($) { + $.$mol_dom_context = window; +})($ || ($ = {})); +//context.web.js.map +; +var $; +(function ($) { + function $mol_dom_render(el, config) { + var document = el.ownerDocument; + var _loop_1 = function (key) { + switch (key) { + case 'localName': break; + case 'namespaceURI': break; + case 'childNodes': { + if (!config.childNodes) + break; + $mol_dom_render_childNodes(el, config.childNodes); + break; + } + case 'attributes': { + if (!config.attributes) + break; + $mol_dom_render_attributes(el, config.attributes); + break; + } + case 'style': { + if (!config.style) + break; + $mol_dom_render_style(el, config.style); + break; + } + case 'events': { + $mol_dom_render_event(el, config.events); + break; + } + case 'events_async': { + $mol_dom_render_event_async(el, config.events_async); + break; + } + default: { + if (el[key] !== config[key]) { + el[key] = config[key]; + if (el[key] !== config[key]) { + var setter_1 = function () { + el.removeEventListener('DOMNodeInsertedIntoDocument', setter_1, { passive: true }); + new $.$mol_defer(function () { + el[key] = config[key]; + }); + }; + el.addEventListener('DOMNodeInsertedIntoDocument', setter_1, { passive: true }); + } + } + } + } + }; + for (var key in config) { + _loop_1(key); + } + return el; + } + $.$mol_dom_render = $mol_dom_render; + function $mol_dom_render_childNodes(el, childNodes) { + var nodes = []; + for (var i = 0; i < childNodes.length; ++i) { + var node = childNodes[i]; + if (node == null) + continue; + if (Object(node) === node) { + if (node['render']) + node = node['render'](); + nodes.push(node); + } + else { + nodes.push(String(node)); + } + } + var nextNode = el.firstChild; + for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) { + var view_ = nodes_1[_i]; + var view = view_.valueOf(); + if (view instanceof $.$mol_dom_context.Node) { + while (true) { + if (!nextNode) { + el.appendChild(view); + break; + } + if (nextNode == view) { + nextNode = nextNode.nextSibling; + break; + } + else { + if (nodes.indexOf(nextNode) === -1) { + var nn = nextNode.nextSibling; + el.removeChild(nextNode); + nextNode = nn; + } + else { + el.insertBefore(view, nextNode); + break; + } + } + } + } + else { + if (nextNode && nextNode.nodeName === '#text') { + nextNode.nodeValue = String(view); + nextNode = nextNode.nextSibling; + } + else { + var textNode = $.$mol_dom_context.document.createTextNode(String(view)); + el.insertBefore(textNode, nextNode); + } + } + } + while (nextNode) { + var currNode = nextNode; + nextNode = currNode.nextSibling; + el.removeChild(currNode); + } + } + $.$mol_dom_render_childNodes = $mol_dom_render_childNodes; + function $mol_dom_render_attributes(el, attrs) { + for (var name_1 in attrs) { + var val = attrs[name_1]; + if (el.getAttribute(name_1) === val) + continue; + if (val === null || val === false) + el.removeAttribute(name_1); + else + el.setAttribute(name_1, String(val)); + } + } + $.$mol_dom_render_attributes = $mol_dom_render_attributes; + function $mol_dom_render_style(el, styles) { + for (var name_2 in styles) { + var val = styles[name_2]; + if (typeof val === 'number') + val = val + "px"; + var style = el.style; + if (val !== style[name_2]) + style[name_2] = val; + } + } + $.$mol_dom_render_style = $mol_dom_render_style; + function $mol_dom_render_event(el, events) { + for (var name_3 in events) { + el.addEventListener(name_3, events[name_3]); + } + } + $.$mol_dom_render_event = $mol_dom_render_event; + function $mol_dom_render_event_async(el, events) { + for (var name_4 in events) { + el.addEventListener(name_4, events[name_4], { passive: true }); + } + } + $.$mol_dom_render_event_async = $mol_dom_render_event_async; +})($ || ($ = {})); +//render.js.map +; +var $; +(function ($) { + function $mol_dom_make(config) { + var document = $.$mol_dom_context.document; + var el = config.id && document.getElementById(config.id); + if (!el) { + var name_1 = config.localName || 'span'; + var space = config.namespaceURI || 'http://www.w3.org/1999/xhtml'; + el = document.createElementNS(space, name_1); + } + return $.$mol_dom_render(el, config); + } + $.$mol_dom_make = $mol_dom_make; +})($ || ($ = {})); +//make.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var $; +(function ($) { + var $mol_view_dom = (function (_super) { + __extends($mol_view_dom, _super); + function $mol_view_dom() { + return _super.apply(this, arguments) || this; + } + $mol_view_dom.node = function (view) { + var node = $mol_view_dom.nodes.get(view); + if (!node) { + node = $.$mol_dom_make({ + localName: view.dom_name(), + namespaceURI: view.dom_name_space(), + }); + $mol_view_dom.mount(view, node); + } + return node; + }; + $mol_view_dom.mount = function (view, node) { + $mol_view_dom.nodes.set(view, node); + $.$mol_dom_render(node, { + id: view.toString(), + attributes: view.attr_static(), + events: view.event(), + events_async: view.event_async(), + }); + for (var _i = 0, _a = view.plugins(); _i < _a.length; _i++) { + var plugin = _a[_i]; + $mol_view_dom.nodes.set(plugin, node); + $.$mol_dom_render(node, { + attributes: plugin.attr_static(), + events: plugin.event(), + events_async: plugin.event_async(), + }); + } + return node; + }; + return $mol_view_dom; + }($.$mol_object)); + $mol_view_dom.nodes = new (WeakMap || $.$mol_dict)(); + $.$mol_view_dom = $mol_view_dom; +})($ || ($ = {})); +//dom.js.map +; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; +}; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -814,10 +1064,13 @@ var $; $.$mol_view_context = {}; $.$mol_view_context.$mol_view_visible_width = function () { return $.$mol_window.size().width; }; $.$mol_view_context.$mol_view_visible_height = function () { return $.$mol_window.size().height; }; + $.$mol_view_context.$mol_view_state_key = function (suffix) { return suffix; }; var $mol_view = (function (_super) { __extends($mol_view, _super); function $mol_view() { - return _super.apply(this, arguments) || this; + var _this = _super.apply(this, arguments) || this; + _this['event_wrapped()'] = null; + return _this; } $mol_view.Root = function (id) { return new this; @@ -825,19 +1078,10 @@ var $; $mol_view.prototype.title = function () { return this.Class().toString(); }; - $mol_view.state_prefix = function () { - return ''; - }; $mol_view.prototype.focused = function (next) { - var value = $.$mol_view_selection.focused(next === void 0 ? void 0 : [this.dom_node()]); - return value.indexOf(this.dom_node()) !== -1; - }; - $mol_view.prototype.state_prefix = function () { - var owner = this.object_owner(); - return owner ? owner.state_prefix() : ''; - }; - $mol_view.prototype.state_key = function (postfix) { - return this.state_prefix() + postfix; + var node = $.$mol_view_dom.node(this); + var value = $.$mol_view_selection.focused(next === void 0 ? void 0 : [node]); + return value.indexOf(node) !== -1; }; $mol_view.prototype.context = function (next) { return next || $.$mol_view_context; @@ -845,6 +1089,10 @@ var $; $mol_view.prototype.context_sub = function () { return this.context(); }; + $mol_view.prototype.state_key = function (suffix) { + if (suffix === void 0) { suffix = ''; } + return this.context().$mol_view_state_key(suffix); + }; $mol_view.prototype.dom_name = function () { return this.constructor.toString().replace('$', ''); }; @@ -888,164 +1136,70 @@ var $; }); return min; }; - $mol_view.prototype.dom_node = function (next) { - var path = this.toString(); - var next2 = next; - if (!next2) { - next2 = this['dom_node()']; - if (next2) - return next2; - next2 = document.getElementById(path); - if (next2) { - if (next2['$mol_view']) { - return this['dom_node()'] = next2; - } - } - else { - next2 = document.createElementNS(this.dom_name_space(), this.dom_name()); - } - } - next2.id = path; - void (next2['$mol_view'] = this); - this['dom_node()'] = next2; - var ownerProto = this.object_owner() && Object.getPrototypeOf(this.object_owner()); - if (ownerProto) { - var suffix = this.object_field().replace(/\(.*/, ''); - var suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1); - while (ownerProto && (ownerProto instanceof $mol_view) && (suffix in ownerProto)) { - var attrName = ownerProto.constructor.toString().replace(/\$/g, '') + suffix2; - next2.setAttribute(attrName, ''); - ownerProto = Object.getPrototypeOf(ownerProto); - } - } + $mol_view.prototype.view_classes = function () { var proto = Object.getPrototypeOf(this); - while (proto) { - var attrName = proto.constructor.toString().replace(/\$/g, '').toLowerCase(); - next2.setAttribute(attrName, ''); - if (!(proto instanceof $mol_view)) + if (this['view_classes()']) + return this['view_classes()']; + var current = proto; + var classes = []; + while (current) { + classes.push(current.constructor); + if (!(current instanceof $mol_view)) break; - proto = Object.getPrototypeOf(proto); + current = Object.getPrototypeOf(current); } - $mol_view.bind_event(next2, this.event()); - return next2; + return this['view_classes()'] = classes; }; - $mol_view.bind_event = function (node, events) { - var _this = this; - var _loop_1 = function (name_1) { - var handle = events[name_1]; - node.addEventListener(name_1, function (event) { - $.$mol_atom_task(_this + ".event()['" + name_1 + "']", function () { - handle(event); - }).get(); - }); - }; - for (var name_1 in events) { - _loop_1(name_1); - } - }; - $mol_view.render_sub = function (node, sub) { - if (sub == null) - return; - var nextNode = node.firstChild; - for (var _i = 0, sub_1 = sub; _i < sub_1.length; _i++) { - var view = sub_1[_i]; - if (view == null) { - } - else if (typeof view === 'object') { - var existsNode = ((view instanceof $mol_view) ? view.dom_node() : view.valueOf()); - while (true) { - if (!nextNode) { - node.appendChild(existsNode); - break; - } - if (nextNode == existsNode) { - nextNode = nextNode.nextSibling; - break; - } - else { - node.insertBefore(existsNode, nextNode); - break; - } - } - } - else { - if (nextNode && nextNode.nodeName === '#text') { - nextNode.nodeValue = String(view); - nextNode = nextNode.nextSibling; - } - else { - var textNode = document.createTextNode(String(view)); - node.insertBefore(textNode, nextNode); - } - } - } - while (nextNode) { - var currNode = nextNode; - nextNode = currNode.nextSibling; - node.removeChild(currNode); - } - for (var _a = 0, sub_2 = sub; _a < sub_2.length; _a++) { - var view = sub_2[_a]; - if (view instanceof $mol_view) { - try { - view.dom_tree(); - } - catch (e) { - console.error(e); - } - } - } - }; - $mol_view.render_attr = function (node, attrs) { - for (var name_2 in attrs) { - var val = attrs[name_2]; - if ((val == null) || (val === false)) { - node.removeAttribute(name_2); - } - else if (val === true) { - node.setAttribute(name_2, 'true'); - } - else { - node.setAttribute(name_2, String(val)); - } - } - }; - $mol_view.render_style = function (node, styles) { - for (var name_3 in styles) { - var val = styles[name_3]; - if (typeof val === 'number') - val = val + "px"; - var style = node.style; - style[name_3] = val; - } - }; - $mol_view.render_field = function (node, field) { - for (var key in field) { - var val = field[key]; - if (node[key] !== val) - node[key] = val; - } + $mol_view.prototype.dom_node = function () { + return $.$mol_view_dom.node(this); }; $mol_view.prototype.dom_tree = function () { + console.warn('$mol_view.dom_tree is deprecated by $mol_view.render'); + return this.render(); + }; + $mol_view.prototype.render = function () { var node = this.dom_node(); try { - $mol_view.render_attr(node, this.attr()); - $mol_view.render_style(node, this.style()); - $mol_view.render_sub(node, this.sub_visible()); - $mol_view.render_field(node, this.field()); - return node; + for (var _i = 0, _a = this.plugins(); _i < _a.length; _i++) { + var plugin = _a[_i]; + plugin.render(); + } + $.$mol_dom_render(node, __assign({ attributes: this.attr(), childNodes: this.sub_visible(), style: this.style() }, (this.field() || {}))); } catch (error) { - if (!error['$mol_view_catched']) { - node.setAttribute('mol_view_error', error.name); - error['$mol_view_catched'] = true; - } - throw error; + $.$mol_dom_render(node, { + attributes: { mol_view_error: error.name }, + }); + if (error instanceof $.$mol_atom_wait) + return node; + if (error['$mol_atom_catched']) + return node; + console.error(error); + error['$mol_atom_catched'] = true; } + return node; + }; + $mol_view.prototype.attr_static = function () { + var attrs = { 'mol_view_error': false }; + var owner = this.object_owner(); + if (owner instanceof $mol_view) { + var suffix_1 = this.object_field().replace(/\(.*/, ''); + var suffix2_1 = '_' + suffix_1[0].toLowerCase() + suffix_1.substring(1); + owner.view_classes().forEach(function (Class) { + if (suffix_1 in Class.prototype) { + var attrName = Class.toString().replace(/\$/g, '') + suffix2_1; + attrs[attrName] = ''; + } + }); + } + this.view_classes().forEach(function (Class) { + attrs[Class.toString().replace(/\$/g, '').toLowerCase()] = ''; + }); + return attrs; }; $mol_view.prototype.attr = function () { return { - 'mol_view_error': false + 'mol_view_error': false, }; }; $mol_view.prototype.style = function () { @@ -1054,15 +1208,34 @@ var $; $mol_view.prototype.field = function () { return {}; }; - $mol_view.prototype.event = function () { return {}; }; - $mol_view.prototype.locale_contexts = function () { - var contexts = []; - var proto = Object.getPrototypeOf(this); - while (proto && (proto instanceof $mol_view)) { - contexts.push(proto.constructor.toString()); - proto = Object.getPrototypeOf(proto); + $mol_view.prototype.event = function () { + return {}; + }; + $mol_view.prototype.event_async = function () { + return {}; + }; + $mol_view.prototype.event_wrapped = function () { + var _this = this; + if (this['event_wrapped()']) + return this['event_wrapped()']; + var event = this.event(); + var wrapped = {}; + var _loop_1 = function (name_1) { + var handle = event[name_1]; + wrapped[name_1] = function (event) { + $.$mol_atom_task(_this + ".event()['" + name_1 + "']", function () { return handle(event); }).get(); + }; + }; + for (var name_1 in event) { + _loop_1(name_1); } - return contexts; + return this['event_wrapped()'] = wrapped; + }; + $mol_view.prototype.locale_contexts = function () { + return this['locale_contexts()'] || (this['locale_contexts()'] = this.view_classes().map(String)); + }; + $mol_view.prototype.plugins = function () { + return []; }; return $mol_view; }($.$mol_object)); @@ -1080,7 +1253,7 @@ var $; ], $mol_view.prototype, "minimal_height", null); __decorate([ $.$mol_mem() - ], $mol_view.prototype, "dom_tree", null); + ], $mol_view.prototype, "render", null); __decorate([ $.$mol_mem_key() ], $mol_view, "Root", null); @@ -1090,14 +1263,20 @@ var $; ; var $; (function ($) { - document.addEventListener(window.cordova ? 'deviceready' : 'DOMContentLoaded', function (event) { - var nodes = document.querySelectorAll('[mol_view_root]'); + $.$mol_dom_context.document.addEventListener(window.cordova ? 'deviceready' : 'DOMContentLoaded', function (event) { + var nodes = $.$mol_dom_context.document.querySelectorAll('[mol_view_root]'); var _loop_1 = function (i) { - var view = $[nodes.item(i).getAttribute('mol_view_root')].Root(i); - view.dom_node(nodes.item(i)); + var name_1 = nodes.item(i).getAttribute('mol_view_root'); + var View = $[name_1]; + if (!View) { + console.error("Can not attach view. Class not found: " + name_1); + return "continue"; + } + var view = View.Root(i); + $.$mol_view_dom.mount(view, nodes.item(i)); var win = new $.$mol_atom("$mol_view.Root(" + i + ")", function () { - view.dom_tree(); - document.title = view.title(); + view.render(); + $.$mol_dom_context.document.title = view.title(); return null; }); new $.$mol_defer(function () { return win.get(); }); @@ -1148,7 +1327,7 @@ var $; var end = diff[0].end; if (!(start <= end)) throw new Error("Wrong offsets (" + start + "," + end + ")"); - var root = document.getElementById(diff[0].id); + var root = $.$mol_dom_context.document.getElementById(diff[0].id); root.focus(); var range = new Range; var cur = root.firstChild; @@ -1189,13 +1368,13 @@ var $; } } range.setEnd(cur, end); - var sel = document.getSelection(); + var sel = $.$mol_dom_context.document.getSelection(); sel.removeAllRanges(); sel.addRange(range); return diff[0]; } else { - var sel = document.getSelection(); + var sel = $.$mol_dom_context.document.getSelection(); if (sel.rangeCount === 0) return null; var range = sel.getRangeAt(0); @@ -1239,13 +1418,11 @@ var $; ; var $; (function ($) { - document.addEventListener('selectionchange', function (event) { - $.$mol_view_selection.position(void 0); + $.$mol_dom_context.document.addEventListener('selectionchange', function (event) { + $.$mol_view_selection.position(void null, $.$mol_atom_force); }); - document.addEventListener('focusin', $.$mol_view_selection.onFocus); - document.addEventListener('focus', $.$mol_view_selection.onFocus, true); - document.addEventListener('focusout', $.$mol_view_selection.onBlur); - document.addEventListener('blur', $.$mol_view_selection.onBlur, true); + $.$mol_dom_context.document.addEventListener('focus', function (event) { return setTimeout(function () { return $.$mol_view_selection.onFocus(event); }); }, true); + $.$mol_dom_context.document.addEventListener('blur', function (event) { return setTimeout(function () { return $.$mol_view_selection.onBlur(event); }); }, true); })($ || ($ = {})); //selection.web.js.map ; @@ -1290,9 +1467,6 @@ var $; $mol_string.prototype.value_changed = function (val) { return this.value(val); }; - $mol_string.prototype.autofocus = function (val) { - return (val !== void 0) ? val : false; - }; $mol_string.prototype.hint = function () { return ""; }; @@ -1300,7 +1474,7 @@ var $; return (val !== void 0) ? val : "text"; }; $mol_string.prototype.field = function () { - return (__assign({}, _super.prototype.field.call(this), { "disabled": this.disabled(), "value": this.value_changed(), "autofocus": this.autofocus(), "placeholder": this.hint(), "type": this.type() })); + return (__assign({}, _super.prototype.field.call(this), { "disabled": this.disabled(), "value": this.value_changed(), "placeholder": this.hint(), "type": this.type() })); }; $mol_string.prototype.event_change = function (event) { return (event !== void 0) ? event : null; @@ -1317,9 +1491,6 @@ var $; __decorate([ $.$mol_mem() ], $mol_string.prototype, "value_changed", null); - __decorate([ - $.$mol_mem() - ], $mol_string.prototype, "autofocus", null); __decorate([ $.$mol_mem() ], $mol_string.prototype, "type", null); @@ -1345,7 +1516,7 @@ var $; return _super.apply(this, arguments) || this; } $mol_string.prototype.event_change = function (next) { - this.value(this.dom_node().value.trim()); + this.value(next.target.value.trim()); }; $mol_string.prototype.disabled = function () { return !this.enabled(); @@ -1515,6 +1686,9 @@ var $; $mol_button.prototype.attr = function () { return (__assign({}, _super.prototype.attr.call(this), { "disabled": this.disabled(), "role": "button", "tabindex": this.tab_index() })); }; + $mol_button.prototype.sub = function () { + return [].concat(this.title()); + }; return $mol_button; }($.$mol_view)); __decorate([ @@ -1639,9 +1813,9 @@ var $; _this.prefix = prefix; return _this; } - $mol_state_arg.href = function (next) { + $mol_state_arg.href = function (next, force) { if (next) - history.replaceState(history.state, document.title, "" + next); + history.replaceState(history.state, $.$mol_dom_context.document.title, "" + next); return window.location.search + window.location.hash; }; $mol_state_arg.dict = function (next) { @@ -1671,8 +1845,7 @@ var $; continue; chunks.push([key].concat(next[key]).map(encodeURIComponent).join('=')); } - var hash = chunks.join('#'); - return hash ? '#' + hash + '#' : '#'; + return '#' + chunks.join('/'); }; $mol_state_arg.prototype.value = function (key, next) { return $mol_state_arg.value(this.prefix + key, next); @@ -1700,7 +1873,7 @@ var $; $.$mol_mem_key() ], $mol_state_arg, "value", null); $.$mol_state_arg = $mol_state_arg; - window.addEventListener('hashchange', function (event) { return $mol_state_arg.href(null); }); + window.addEventListener('hashchange', function (event) { return $mol_state_arg.href(void null, $.$mol_atom_force); }); })($ || ($ = {})); //arg.web.js.map ; @@ -1733,11 +1906,17 @@ var $; $mol_link.prototype.uri = function () { return ""; }; + $mol_link.prototype.hint = function () { + return ""; + }; $mol_link.prototype.current = function () { return false; }; $mol_link.prototype.attr = function () { - return (__assign({}, _super.prototype.attr.call(this), { "href": this.uri(), "mol_link_current": this.current() })); + return (__assign({}, _super.prototype.attr.call(this), { "href": this.uri(), "title": this.hint(), "mol_link_current": this.current() })); + }; + $mol_link.prototype.sub = function () { + return [].concat(this.title()); }; $mol_link.prototype.arg = function () { return ({}); @@ -1769,7 +1948,7 @@ var $; return _super.apply(this, arguments) || this; } $mol_link.prototype.uri = function () { - return new $.$mol_state_arg(this.state_prefix()).link(this.arg()); + return new $.$mol_state_arg(this.state_key()).link(this.arg()); }; $mol_link.prototype.current = function () { return this.uri() === $.$mol_state_arg.link({}); @@ -1782,7 +1961,7 @@ var $; $mol.$mol_link = $mol_link; })($mol = $.$mol || ($.$mol = {})); })($ || ($ = {})); -//linker.view.js.map +//link.view.js.map ; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; @@ -1859,6 +2038,7 @@ var $; } $mol_check.prototype.event_click = function (next) { this.checked(!this.checked()); + next.preventDefault(); }; return $mol_check; }($.$mol_check)); @@ -1905,7 +2085,7 @@ var $; ], $mol_state_session, "value", null); $.$mol_state_session = $mol_state_session; })($ || ($ = {})); -//session.js.map +//session.web.js.map ; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; @@ -1948,9 +2128,9 @@ var $; $mol_scroll.prototype.event_scroll = function (event) { return (event !== void 0) ? event : null; }; - $mol_scroll.prototype.event = function () { + $mol_scroll.prototype.event_async = function () { var _this = this; - return (__assign({}, _super.prototype.event.call(this), { "scroll": function (event) { return _this.event_scroll(event); }, "overflow": function (event) { return _this.event_scroll(event); }, "underflow": function (event) { return _this.event_scroll(event); } })); + return (__assign({}, _super.prototype.event_async.call(this), { "scroll": function (event) { return _this.event_scroll(event); } })); }; return $mol_scroll; }($.$mol_view)); @@ -1990,7 +2170,9 @@ var $; var $mol_scroll = (function (_super) { __extends($mol_scroll, _super); function $mol_scroll() { - return _super.apply(this, arguments) || this; + var _this = _super.apply(this, arguments) || this; + _this._moving_task_frame = 0; + return _this; } $mol_scroll.prototype.scroll_top = function (next) { return $.$mol_state_session.value(this + ".scroll_top()", next) || 0; @@ -2007,21 +2189,23 @@ var $; $mol_scroll.prototype.event_scroll = function (next) { var _this = this; this.moving(true); + this.moving_task_stop(); new $.$mol_defer(function () { - var el = _this.dom_node(); + var el = next.target; _this.scroll_top(Math.max(0, el.scrollTop)); _this.scroll_left(Math.max(0, el.scrollLeft)); _this.scroll_bottom(Math.max(0, el.scrollHeight - el.scrollTop - el.offsetHeight)); _this.scroll_right(Math.max(0, el.scrollWidth - el.scrollLeft - el.offsetWidth)); }); }; - $mol_scroll.prototype.moving = function (next) { + $mol_scroll.prototype.moving_task_stop = function () { var _this = this; - if (next) { - setTimeout(function () { - _this.moving(false); - }); - } + cancelAnimationFrame(this._moving_task_frame); + this._moving_task_frame = requestAnimationFrame(function () { + _this.moving(false); + }); + }; + $mol_scroll.prototype.moving = function (next) { return next || false; }; $mol_scroll.prototype.context_sub = function () { @@ -2140,20 +2324,24 @@ var $; return _super.apply(this, arguments) || this; } $mol_http_request.prototype.uri = function () { return ''; }; - $mol_http_request.prototype.method = function () { return 'Get'; }; + $mol_http_request.prototype.method_get = function () { return 'Get'; }; + $mol_http_request.prototype.method_put = function () { return 'Put'; }; $mol_http_request.prototype.credentials = function () { return null; }; + $mol_http_request.prototype.headers = function () { + return {}; + }; $mol_http_request.prototype.body = function () { return null; }; $mol_http_request.prototype.native = function () { var _this = this; if (this['native()']) return this['native()']; - var next = this['native()'] = $.$mol_http_request_native(); + var next = this['native()'] = new $.$mol_dom_context.XMLHttpRequest; next.withCredentials = Boolean(this.credentials()); next.onload = function (event) { - if (Math.floor(next.status / 100) === 2) { - _this.response(next.responseText, $.$mol_atom_force); + if ((next.status === 0) || (Math.floor(next.status / 100) === 2)) { + _this.response(next, $.$mol_atom_force); } else { _this.response(new Error(next.responseText), $.$mol_atom_force); @@ -2175,14 +2363,17 @@ var $; $mol_http_request.prototype.response = function (next, force) { var creds = this.credentials(); var native = this.native(); - var method = (next === void 0) ? 'Get' : this.method(); + var method = (next === void 0) ? this.method_get() : this.method_put(); var uri = this.uri(); native.open(method, uri, true, creds && creds.login, creds && creds.password); + var headers = this.headers(); + for (var name_1 in headers) + native.setRequestHeader(name_1, headers[name_1]); native.send(next); throw new $.$mol_atom_wait(method + " " + uri); }; $mol_http_request.prototype.text = function (next, force) { - return this.response(next, force); + return this.response(next, force).responseText; }; return $mol_http_request; }($.$mol_object)); @@ -2193,12 +2384,6 @@ var $; })($ || ($ = {})); //request.js.map ; -var $; -(function ($) { - $.$mol_http_request_native = function () { return new XMLHttpRequest; }; -})($ || ($ = {})); -//request.web.js.map -; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; function __() { this.constructor = d; } @@ -2223,15 +2408,22 @@ var $; }); }; $mol_http_resource.prototype.uri = function () { return ''; }; + $mol_http_resource.prototype.method_get = function () { return 'Get'; }; + $mol_http_resource.prototype.method_put = function () { return 'Put'; }; $mol_http_resource.prototype.credentials = function () { return null; }; + $mol_http_resource.prototype.headers = function () { + return {}; + }; $mol_http_resource.prototype.request = function () { var _this = this; var request = new $.$mol_http_request(); - request.method = function () { return 'Put'; }; request.uri = function () { return _this.uri(); }; + request.method_get = function () { return _this.method_get(); }; + request.method_put = function () { return _this.method_put(); }; request.credentials = function () { return _this.credentials(); }; + request.headers = function () { return _this.headers(); }; return request; }; $mol_http_resource.prototype.text = function (next, force) { @@ -2249,27 +2441,92 @@ var $; $.$mol_mem_key() ], $mol_http_resource, "item", null); $.$mol_http_resource = $mol_http_resource; - var $mol_http_resource_json = (function (_super) { - __extends($mol_http_resource_json, _super); - function $mol_http_resource_json() { +})($ || ($ = {})); +//resource.js.map +; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var $; +(function ($) { + var $mol_file = (function (_super) { + __extends($mol_file, _super); + function $mol_file() { return _super.apply(this, arguments) || this; } - $mol_http_resource_json.item = function (uri) { - return new $mol_http_resource_json().setup(function (obj) { - obj.uri = function () { return uri; }; + $mol_file.absolute = function (path) { + return new $mol_file().setup(function (obj) { + obj.path = function () { return path; }; }); }; - $mol_http_resource_json.prototype.json = function (next, force) { - return JSON.parse(this.text(next && JSON.stringify(next, null, '\t'), force)); + $mol_file.relative = function (path) { + if (/^\//.test(path)) { + return $mol_file.root().resolve(path.substring(1)); + } + return $mol_file.base().resolve(path); + }; + $mol_file.root = function () { + return $mol_file.absolute(''); + }; + $mol_file.base = function () { + var path = $.$mol_dom_context.document.location.pathname.replace(/\/[^\/]*$/, ''); + return $mol_file.absolute(path); + }; + $mol_file.prototype.path = function () { + return '.'; + }; + $mol_file.prototype.parent = function () { + return this.resolve('..'); + }; + $mol_file.prototype.name = function () { + return this.path().replace(/^.*\//, ''); }; - return $mol_http_resource_json; - }($mol_http_resource)); + $mol_file.prototype.ext = function () { + var match = /((?:\.\w+)+)$/.exec(this.path()); + return match && match[1].substring(1); + }; + $mol_file.prototype.content = function (next, force) { + return $.$mol_http_resource.item(this.path()).text(next); + }; + $mol_file.prototype.resolve = function (path) { + var res = this.path() + '/' + path; + while (true) { + var prev = res; + res = res.replace(/\/[^\/]+\/\.\.\//, '/'); + if (prev === res) + break; + } + while (true) { + var prev = res; + res = res.replace(/\/\.\.\/[^\/]+\//, '/'); + if (prev === res) + break; + } + return this.Class().absolute(res); + }; + $mol_file.prototype.relate = function (base) { + if (base === void 0) { base = this.Class().relative('.'); } + throw new Error('Not implemented yet'); + }; + return $mol_file; + }($.$mol_object)); + __decorate([ + $.$mol_mem() + ], $mol_file.prototype, "content", null); __decorate([ $.$mol_mem_key() - ], $mol_http_resource_json, "item", null); - $.$mol_http_resource_json = $mol_http_resource_json; + ], $mol_file, "absolute", null); + $.$mol_file = $mol_file; })($ || ($ = {})); -//resource.js.map +//file.web.js.map ; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; @@ -2289,13 +2546,28 @@ var $; function $mol_locale() { return _super.apply(this, arguments) || this; } + $mol_locale.lang_default = function () { + return 'en'; + }; $mol_locale.lang = function (next) { - return $.$mol_state_local.value('locale', next) || $.$mol_state_arg.value('locale') || 'en'; + return $.$mol_state_local.value('locale', next) || $.$mol_dom_context.navigator.language.replace(/-.*/, '') || this.lang_default(); }; - $mol_locale.texts = function () { - var uri = "-/web.locale=" + this.lang() + ".json"; - var resource = $.$mol_http_resource_json.item(uri); - return resource.json(); + $mol_locale.source = function (lang) { + return JSON.parse($.$mol_file.relative("-/web.locale=" + lang + ".json").content()); + }; + $mol_locale.texts = function (next) { + if (next) + return next; + var lang = this.lang(); + try { + return this.source(lang).valueOf(); + } + catch (error) { + var def = this.lang_default(); + if (lang === def) + throw error; + return this.source(def); + } }; $mol_locale.text = function (contexts, key) { var texts = this.texts(); @@ -2309,9 +2581,15 @@ var $; }; return $mol_locale; }($.$mol_object)); + __decorate([ + $.$mol_mem() + ], $mol_locale, "lang_default", null); __decorate([ $.$mol_mem() ], $mol_locale, "lang", null); + __decorate([ + $.$mol_mem_key() + ], $mol_locale, "source", null); __decorate([ $.$mol_mem() ], $mol_locale, "texts", null); @@ -2348,6 +2626,9 @@ var $; $mol_list.prototype.sub = function () { return this.rows(); }; + $mol_list.prototype.Empty = function () { + return null; + }; return $mol_list; }($.$mol_view)); $.$mol_list = $mol_list; @@ -2374,6 +2655,10 @@ var $; function $mol_list() { return _super.apply(this, arguments) || this; } + $mol_list.prototype.sub = function () { + var rows = this.rows(); + return (rows.length === 0) ? [this.Empty()] : rows; + }; $mol_list.prototype.row_offsets = function () { var sub = this.sub(); if (!sub) @@ -2600,25 +2885,25 @@ var $; obj.sub = function () { return _this.filterOptions(); }; }); }; - $mol_app_todomvc.prototype.sanitize_enabled = function () { + $mol_app_todomvc.prototype.sweep_enabled = function () { return true; }; - $mol_app_todomvc.prototype.event_sanitize = function (event) { + $mol_app_todomvc.prototype.event_sweep = function (event) { return (event !== void 0) ? event : null; }; - $mol_app_todomvc.prototype.sanitize_label = function () { - return $.$mol_locale.text(this.locale_contexts(), "sanitize_label"); + $mol_app_todomvc.prototype.sweep_label = function () { + return $.$mol_locale.text(this.locale_contexts(), "sweep_label"); }; - $mol_app_todomvc.prototype.Sanitize = function () { + $mol_app_todomvc.prototype.Sweep = function () { var _this = this; return new $.$mol_button_minor().setup(function (obj) { - obj.enabled = function () { return _this.sanitize_enabled(); }; - obj.event_click = function (event) { return _this.event_sanitize(event); }; - obj.sub = function () { return [].concat(_this.sanitize_label()); }; + obj.enabled = function () { return _this.sweep_enabled(); }; + obj.event_click = function (event) { return _this.event_sweep(event); }; + obj.sub = function () { return [].concat(_this.sweep_label()); }; }); }; $mol_app_todomvc.prototype.foot_content = function () { - return [].concat(this.Pending(), this.Filter(), this.Sanitize()); + return [].concat(this.Pending(), this.Filter(), this.Sweep()); }; $mol_app_todomvc.prototype.Foot = function () { var _this = this; @@ -2638,7 +2923,7 @@ var $; $mol_app_todomvc.prototype.Page = function () { var _this = this; return new $.$mol_list().setup(function (obj) { - obj.sub = function () { return [].concat(_this.Title(), _this.Panel()); }; + obj.rows = function () { return [].concat(_this.Title(), _this.Panel()); }; }); }; $mol_app_todomvc.prototype.sub = function () { @@ -2704,10 +2989,10 @@ var $; ], $mol_app_todomvc.prototype, "Filter", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc.prototype, "event_sanitize", null); + ], $mol_app_todomvc.prototype, "event_sweep", null); __decorate([ $.$mol_mem() - ], $mol_app_todomvc.prototype, "Sanitize", null); + ], $mol_app_todomvc.prototype, "Sweep", null); __decorate([ $.$mol_mem() ], $mol_app_todomvc.prototype, "Foot", null); @@ -2924,8 +3209,9 @@ var $; }; $mol_app_todomvc.prototype.task = function (id, next) { var key = this.state_key("mol-todos-" + id); - if (next === void 0) + if (next === void 0) { return $.$mol_state_local.value(key) || { title: '', completed: false }; + } $.$mol_state_local.value(key, next); return next || void 0; }; @@ -2950,7 +3236,7 @@ var $; this.task(id, null); this.task_ids(tasks); }; - $mol_app_todomvc.prototype.event_sanitize = function () { + $mol_app_todomvc.prototype.event_sweep = function () { var _this = this; this.task_ids(this.task_ids().filter(function (id) { if (!_this.task(id).completed) @@ -2969,7 +3255,7 @@ var $; $mol_app_todomvc.prototype.foot_visible = function () { return this.task_ids().length > 0; }; - $mol_app_todomvc.prototype.sanitize_enabled = function () { + $mol_app_todomvc.prototype.sweep_enabled = function () { return this.groups_completed()['true'].length > 0; }; return $mol_app_todomvc; diff --git a/examples/mol/-/web.js.map b/examples/mol/-/web.js.map index ea60d53de5..3dce0a8673 100644 --- a/examples/mol/-/web.js.map +++ b/examples/mol/-/web.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../mol.jam.js","../../../log/log.web.ts","../../../object/object.ts","../../../set/set.ts","../../../set/set_select.jam.js","../../../defer/defer.ts","../../../dict/dict.ts","../../../dict/dict_select.jam.js","../../../state/stack/stack.ts","../../../atom/atom.ie.web.js","../../../atom/atom.ts","../../../mem/mem.ts","../../../window/window.web.ts","../../../view/view.ts","../../../view/view.web.ts","../../../view/selection/selection.ts","../../../view/selection/selection.web.ts","../../../string/-view.tree/string.view.tree.ts","../../../string/string.view.ts","../../../keyboard/code.ts","../../../button/-view.tree/button.view.tree.ts","../../../button/button.view.ts","../../../button/-view.tree/button_types.view.tree.ts","../../../merge/dict/dict.ts","../../../state/arg/arg.web.ts","../../../link/-view.tree/link.view.tree.ts","../../../link/linker.view.ts","../../../check/-view.tree/check.view.tree.ts","../../../check/check.view.ts","../../../state/session/session.ts","../../../scroll/-view.tree/scroll.view.tree.ts","../../../scroll/scroll.view.ts","../../../state/local/local.ts","../../../state/local/local.web.ts","../../../http/request/request.ts","../../../http/request/request.web.ts","../../../http/resource/resource.ts","../../../locale/locale.ts","../../../list/-view.tree/list.view.tree.ts","../../../list/list.view.ts","../../../bar/-view.tree/bar.view.tree.ts","../-view.tree/todomvc.view.tree.ts","../todomvc.view.ts","../demo/-view.tree/demo.view.tree.ts"],"names":[],"mappings":"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","file":"web.js","sourcesContent":[null,"namespace $ {\n\t\n\texport function $mol_log( path : string , values : any[] ) {\n\t\t\n\t\tvar filter = $mol_log.filter()\n\t\tif( filter == null ) return\n\t\tif( path.indexOf( filter ) === -1 ) return\n\t\t\n\t\tvar time = new Date().toLocaleTimeString()\n\t\tconsole.log( time , path , values )\n\t}\n\t\n\texport namespace $mol_log {\n\t\t\n\t\tvar _filter : string\n\t\t\n\t\texport function filter( next? : string ) {\n\t\t\tif( next !== void 0 ) {\n\t\t\t\tif( next == null ) {\n\t\t\t\t\tsessionStorage.removeItem( '$mol_log.filter()' )\n\t\t\t\t} else {\n\t\t\t\t\tsessionStorage.setItem( '$mol_log.filter()' , next )\n\t\t\t\t}\n\t\t\t\t_filter = next\n\t\t\t}\n\t\t\t\n\t\t\tif( _filter !== void 0 ) return _filter\n\t\t\t\n\t\t\treturn _filter = sessionStorage.getItem( '$mol_log.filter()' )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\t/// Common superclass that provides base functionality.\n\texport class $mol_object {\n\t\t\n\t\tClass() {\n\t\t\treturn this.constructor as any\n\t\t}\n\t\t\n\t\tstatic toString() : string {\n\t\t\tlet self : any = this\n\t\t\treturn self[ 'name' ]\n\t\t\t\t|| self[ 'displayName' ]\n\t\t\t\t|| ( self[ 'displayName' ] = Function.prototype.toString.call( self )\n\t\t\t\t.match( /^function ([a-z0-9_$]*)/ )[ 1 ] )\n\t\t}\n\t\t\n\t\t/// Owner object.\n\t\tprivate 'object_owner()' : Object\n\t\t\n\t\tobject_owner( next? : Object ) {\n\t\t\tif( this[ 'object_owner()' ] ) return this[ 'object_owner()' ]\n\t\t\treturn this[ 'object_owner()' ] = next\n\t\t}\n\t\t\n\t\t/// Field in owner where this object is stored.\n\t\tprivate 'object_field()' : string\n\t\t\n\t\tobject_field( next? : string ) {\n\t\t\tif( this[ 'object_field()' ] ) return this[ 'object_field()' ] || ''\n\t\t\treturn this[ 'object_field()' ] = next\n\t\t}\n\t\t\n\t\t/// JS-path to this object from global scope. Can not be redefined.\n\t\ttoString() {\n\t\t\tvar path = ''\n\t\t\t\n\t\t\tvar owner = this.object_owner()\n\t\t\tif( owner ) path = owner.toString()\n\t\t\t\n\t\t\tvar field = this.object_field()\n\t\t\tif( field ) path += '.' + field\n\t\t\t\n\t\t\treturn path\n\t\t}\n\t\t\n\t\t/// Helper to override fields in fluent style.\n\t\tsetup( script : ( obj : this )=> void ) : this {\n\t\t\tscript( this )\n\t\t\treturn this\n\t\t}\n\t\t\n\t\t'destroyed()' = false\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next === void 0 ) return this[ 'destroyed()' ]\n\t\t\tthis[ 'destroyed()' ] = next\n\t\t\tthis.log( [ '.destroyed()' , next ] )\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tlog( values : any[] ) {\n\t\t\tif( $mol_log.filter() == null ) return\n\t\t\t$mol_log( this.toString() , values )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport declare class $mol_set< Value > {\n\t\tsize : number\n\t\t\n\t\tadd( key : Value ) : this\n\t\t\n\t\tdelete( key : Value ) : void\n\t\t\n\t\thas( key : Value ) : boolean\n\t\t\n\t\tclear() : void\n\t\t\n\t\tkeys() : Value[]\n\t\t\n\t\tvalues() : Value[]\n\t\t\n\t\tentries() : [ Value , Value ][]\n\t\t\n\t\tforEach( handler : ( key : Value , value : Value ) => void ) : void\n\t}\n\t\n\texport class $mol_set_shim< Value > implements $mol_set< Value > {\n\t\t\n\t\t_index : { [ index : string ] : Value[] } = {}\n\t\tsize = 0\n\t\t\n\t\tadd( value : Value ) {\n\t\t\tvar key = String( value )\n\t\t\t\n\t\t\tvar list = this._index[ key ]\n\t\t\tif( list ) {\n\t\t\t\tif( list.indexOf( value ) !== -1 ) return this\n\t\t\t\tlist.push( value )\n\t\t\t} else {\n\t\t\t\tlist = this._index[ key ] = [ value ]\n\t\t\t}\n\t\t\t\n\t\t\t++this.size\n\t\t\t\n\t\t\treturn this\n\t\t}\n\t\t\n\t\thas( value : Value ) {\n\t\t\tvar key = String( value )\n\t\t\t\n\t\t\tvar list = this._index[ key ]\n\t\t\tif( !list ) return false\n\t\t\t\n\t\t\treturn list.indexOf( value ) !== -1\n\t\t}\n\t\t\n\t\tdelete( value : Value ) {\n\t\t\tvar key = String( value )\n\t\t\t\n\t\t\tvar list = this._index[ key ]\n\t\t\tif( !list ) return\n\t\t\t\n\t\t\tvar index = list.indexOf( value )\n\t\t\tif( index === -1 ) return\n\t\t\t\n\t\t\tlist.splice( index , 1 )\n\t\t\t--this.size\n\t\t}\n\t\t\n\t\tforEach( handle : ( val : Value , key : Value )=> void ) {\n\t\t\tfor( var key in this._index ) {\n\t\t\t\tif( !this._index.hasOwnProperty( key ) ) continue\n\t\t\t\tthis._index[ key ].forEach( ( val , index ) => handle( val , val ) )\n\t\t\t}\n\t\t}\n\t\t\n\t\tkeys() {\n\t\t\tvar keys : Value[] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tkeys.push( key )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn keys\n\t\t}\n\t\t\n\t\tvalues() {\n\t\t\tvar values : Value[] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tvalues.push( val )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn values\n\t\t}\n\t\t\n\t\tentries() {\n\t\t\tvar entries : [ Value , Value ][] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tentries.push( [ val , key ] )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn entries\n\t\t}\n\t\t\n\t\tclear() {\n\t\t\tthis._index = {}\n\t\t\tthis.size = 0\n\t\t}\n\t\t\n\t}\n\t\n}\n",null,"namespace $ {\n\t\n\texport class $mol_defer extends $mol_object {\n\t\t\n\t\tconstructor( public run : ()=> void ) {\n\t\t\tsuper()\n\t\t\t$mol_defer.add( this )\n\t\t}\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next ) $mol_defer.drop( this )\n\t\t\treturn super.destroyed( next )\n\t\t}\n\t\t\n\t\tstatic all : $mol_defer[] = []\n\t\tstatic timer = 0\n\t\t\n\t\tstatic scheduleNative : ( handler : ()=> void ) => number = ( typeof requestAnimationFrame == 'function' )\n\t\t\t? handler => requestAnimationFrame( handler )\n\t\t\t: handler => setTimeout( handler , 16 )\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.timer ) return\n\t\t\t\n\t\t\tthis.timer = this.scheduleNative(\n\t\t\t\t()=> {\n\t\t\t\t\tthis.timer = 0\n\t\t\t\t\tthis.run()\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t\t\n\t\tstatic unschedule() {\n\t\t\tif( !this.timer ) return\n\t\t\t\n\t\t\tcancelAnimationFrame( this.timer )\n\t\t\tthis.timer = 0\n\t\t}\n\t\t\n\t\tstatic add( defer : $mol_defer ) {\n\t\t\tthis.all.push( defer )\n\t\t\tthis.schedule()\n\t\t}\n\t\t\n\t\tstatic drop( defer : $mol_defer ) {\n\t\t\tvar index = this.all.indexOf( defer )\n\t\t\tif( index >= 0 ) this.all.splice( index , 1 )\n\t\t}\n\t\t\n\t\tstatic run() {\n\t\t\tif( this.all.length === 0 ) return\n\t\t\tthis.schedule()\n\t\t\tfor( var defer : $mol_defer ; defer = this.all.pop() ; ) defer.run()\n\t\t\t//this.unschedule()\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\texport declare class $mol_dict< Key , Value > {\n\t\tsize : number\n\t\t\n\t\tget( key : Key ) : Value\n\t\t\n\t\tset( key : Key , value : Value ) : this\n\t\t\n\t\tdelete( key : Key ) : void\n\t\t\n\t\thas( key : Key ) : boolean\n\t\t\n\t\tclear() : void\n\t\t\n\t\tkeys() : Key[]\n\t\t\n\t\tvalues() : Value[]\n\t\t\n\t\tentries() : [ Key , Value ][]\n\t\t\n\t\tforEach( handler : ( value : Value , key : Key ) => void ) : void\n\t}\n\t\n\texport class $mol_dict_shim< Key , Value > implements $mol_dict< Key , Value > {\n\t\t\n\t\t_keys : { [ index : string ] : Key[] } = {}\n\t\t_values : { [ index : string ] : Value[] } = {}\n\t\tsize = 0\n\t\t\n\t\tset( key : Key , value : Value ) {\n\t\t\tvar keyStr = String( key )\n\t\t\t\n\t\t\tvar keys = this._keys[ keyStr ]\n\t\t\tif( keys ) {\n\t\t\t\tvar index = keys.indexOf( key )\n\t\t\t\tif( index === -1 ) {\n\t\t\t\t\tindex = keys.length\n\t\t\t\t\tkeys.push( key )\n\t\t\t\t\t++this.size\n\t\t\t\t}\n\t\t\t\tthis._values[ keyStr ][ index ] = value\n\t\t\t} else {\n\t\t\t\tthis._keys[ keyStr ] = [ key ]\n\t\t\t\tthis._values[ keyStr ] = [ value ]\n\t\t\t\t++this.size\n\t\t\t}\n\t\t\t\n\t\t\treturn this\n\t\t}\n\t\t\n\t\tget( key : Key ) {\n\t\t\tvar keyStr = String( key )\n\t\t\t\n\t\t\tvar list = this._keys[ keyStr ]\n\t\t\tif( !list ) return void 0\n\t\t\t\n\t\t\tvar index = list.indexOf( key )\n\t\t\tif( index === -1 ) return void 0\n\t\t\t\n\t\t\treturn this._values[ keyStr ][ index ]\n\t\t}\n\t\t\n\t\thas( key : Key ) {\n\t\t\tvar keyStr = String( key )\n\t\t\t\n\t\t\tvar list = this._keys[ keyStr ]\n\t\t\tif( !list ) return false\n\t\t\t\n\t\t\treturn list.indexOf( key ) !== -1\n\t\t}\n\t\t\n\t\tdelete( key : Key ) {\n\t\t\tvar keyStr = String( key )\n\t\t\t\n\t\t\tvar keys = this._keys[ keyStr ]\n\t\t\tif( !keys ) return\n\t\t\t\n\t\t\tvar index = keys.indexOf( key )\n\t\t\tif( index === -1 ) return\n\t\t\t\n\t\t\tkeys.splice( index , 1 )\n\t\t\tthis._values[ keyStr ].splice( index , 1 )\n\t\t\t\n\t\t\t--this.size\n\t\t}\n\t\t\n\t\tforEach( handle : ( val : Value , key : Key )=> void ) {\n\t\t\tfor( var keyStr in this._keys ) {\n\t\t\t\tif( !this._keys.hasOwnProperty( keyStr ) ) continue\n\t\t\t\tvar values = this._values[ keyStr ]\n\t\t\t\tthis._keys[ keyStr ].forEach(\n\t\t\t\t\t( key , index ) => {\n\t\t\t\t\t\thandle( values[ index ] , key )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\t\n\t\tkeys() {\n\t\t\tvar keys : Key[] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tkeys.push( key )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn keys\n\t\t}\n\t\t\n\t\tvalues() {\n\t\t\tvar values : Value[] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tvalues.push( val )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn values\n\t\t}\n\t\t\n\t\tentries() {\n\t\t\tvar entries : [ Key , Value ][] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tentries.push( [ key , val ] )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn entries\n\t\t}\n\t\t\n\t\tclear() {\n\t\t\tthis._keys = {}\n\t\t\tthis._values = {}\n\t\t\tthis.size = 0\n\t\t}\n\t\t\n\t}\n\t\n}\n",null,"namespace $ {\n\t\n\t/// Global storage of temporary state\n\texport var $mol_state_stack = new $mol_dict< string , any >()\n\t\n}\n",null,"declare var Proxy : any\n\nnamespace $ {\n\t\n\texport enum $mol_atom_status {\n\t\tobsolete = 'obsolete' as any ,\n\t\tchecking = 'checking' as any ,\n\t\tpulling = 'pulling' as any ,\n\t\tactual = 'actual' as any ,\n\t}\n\t\n\texport class $mol_atom< Value > extends $mol_object {\n\t\t\n\t\tmasters : $mol_set< $mol_atom > = null\n\t\tslaves : $mol_set< $mol_atom > = null\n\t\t\n\t\tstatus = $mol_atom_status.obsolete\n\t\tautoFresh = true\n\t\t\n\t\thandler : ( next? : Value|Error , force? : $mol_atom_force )=> Value\n\t\thost : { [ key : string ] : any }\n\t\tfield : string\n\t\t\n\t\tconstructor(\n\t\t\thost : any ,\n\t\t\thandler : ( next? : Value|Error , force? : $mol_atom_force )=> Value ,\n\t\t\tfield = 'value()'\n\t\t) {\n\t\t\tsuper()\n\t\t\t\n\t\t\tthis.handler = handler\n\t\t\tthis.host = Object( host )\n\t\t\tthis.field = field || 'value()'\n\t\t}\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next ) {\n\t\t\t\tthis.unlink()\n\t\t\t\t\n\t\t\t\tconst host = this.host\n\t\t\t\tconst value = host[ this.field ]\n\t\t\t\tif( value instanceof $mol_object ) {\n\t\t\t\t\tif( ( value.object_owner() === host ) && ( value.object_field() === this.field ) ) {\n\t\t\t\t\t\tvalue.destroyed( true );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\thost[ this.field ] = void null\n\t\t\t\thost[ this.field + '@' ] = void null\n\t\t\t\t\n\t\t\t\tthis[ 'destroyed()' ] = true\n\t\t\t\tthis.log( [ '.destroyed()' , true , 'atom' ] )\n\t\t\t\tthis.status = $mol_atom_status.obsolete\n\t\t\t\t\n\t\t\t\treturn true\n\t\t\t} else {\n\t\t\t\treturn this[ 'destroyed()' ]\n\t\t\t}\n\t\t}\n\t\t\n\t\tunlink() {\n\t\t\tthis.disobey_all()\n\t\t\tthis.check_slaves()\n\t\t}\n\t\t\n\t\ttoString() {\n\t\t\treturn `${ this.host }.${ this.field }`\n\t\t}\n\t\t\n\t\tget( force? : $mol_atom_force ) {\n\t\t\tif( this.status === $mol_atom_status.pulling ) {\n\t\t\t\tthrow new Error( `Cyclic atom dependency of ${ this }` )\n\t\t\t}\n\t\t\t\n\t\t\tthis.actualize( force )\n\t\t\t\n\t\t\tconst slave = $mol_atom.stack[0]\n\t\t\tif( slave ) this.lead( slave )\n\t\t\tif( slave ) slave.obey( this )\n\t\t\t\n\t\t\tconst value : Value = this.host[ this.field ]\n\t\t\t\n\t\t\tif( value instanceof Error ) {\n\t\t\t\tif( typeof Proxy !== 'function' ) throw value\n\t\t\t\t//if(!( value instanceof $mol_atom_wait )) throw value\n\t\t\t}\n\t\t\t\n\t\t\treturn value\n\t\t}\n\t\t\n\t\tactualize( force? : $mol_atom_force ) {\n\t\t\t\n\t\t\t//this.log([ 'actualize' ])\n\t\t\t\n\t\t\tif( !force && this.status === $mol_atom_status.actual ) return\n\t\t\t\n\t\t\tconst slave = $mol_atom.stack[0]\n\t\t\t$mol_atom.stack[0] = this\n\t\t\t\n\t\t\tif( !force && this.status === $mol_atom_status.checking ) {\n\t\t\t\t\n\t\t\t\tthis.masters.forEach(\n\t\t\t\t\tmaster => {\n\t\t\t\t\t\tif( this.status !== $mol_atom_status.checking ) return\n\t\t\t\t\t\tmaster.actualize()\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tif( this.status === $mol_atom_status.checking ) {\n\t\t\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif( force || this.status !== $mol_atom_status.actual ) {\n\t\t\t\t\n\t\t\t\tconst oldMasters = this.masters\n\t\t\t\tthis.masters = null\n\t\t\t\t\n\t\t\t\tif( oldMasters ) oldMasters.forEach(\n\t\t\t\t\tmaster => {\n\t\t\t\t\t\tmaster.dislead( this )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tthis.status = $mol_atom_status.pulling\n\t\t\t\tconst next = this.pull( force )\n\t\t\t\t\n\t\t\t\tthis.push( next )\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t$mol_atom.stack[0] = slave\n\t\t}\n\t\t\n\t\tpull( force? : $mol_atom_force ) {\n\t\t\ttry {\n\t\t\t\treturn this.handler( this._next , force )\n\t\t\t} catch( error ) {\n\t\t\t\tif( error[ '$mol_atom_catched' ] ) return error\n\t\t\t\tif( error instanceof $mol_atom_wait ) return error\n\t\t\t\t\n\t\t\t\tconsole.error( error.stack || error )\n\t\t\t\t\n\t\t\t\tif(!( error instanceof Error )) {\n\t\t\t\t\terror = new Error( error.stack || error )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\terror['$mol_atom_catched'] = true\n\t\t\t\treturn error\n\t\t\t}\n\t\t}\n\t\t\n\t\t_next : Value|Error\n\t\t\n\t\tset( next : Value ) : Value {\n\t\t\tconst next_normal = this.normalize( next , this._next )\n\t\t\tif( next_normal === this._next ) return this._next\n\t\t\t\n\t\t\tthis._next = next_normal\n\t\t\tthis.obsolete()\n\t\t\treturn this.get()\n\t\t}\n\t\t\n\t\tnormalize( next : Value , prev : Value|Error ) : Value {\n\t\t\tif( next === prev ) return next\n\t\t\t\n\t\t\tif( ( next instanceof Array ) && ( prev instanceof Array ) && ( next.length === prev.length ) ) {\n\t\t\t\tfor( let i = 0 ; i < next.length ; ++i ) {\n\t\t\t\t\tif( next[ i ] !== prev[ i ] ) return next as any\n\t\t\t\t}\n\t\t\t\treturn prev as any\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tpush( next_raw : Value|Error ) {\n\t\t\tthis._next = void null\n\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\n\t\t\tconst host = this.host\n\t\t\tconst prev = host[ this.field ]\n\t\t\t\n\t\t\tif( next_raw === void null ) return prev\n\t\t\t\n\t\t\tlet next = ( next_raw instanceof Error ) ? next_raw : this.normalize( next_raw , prev )\n\t\t\t\n\t\t\tif( next === prev ) return prev\n\t\t\t\n\t\t\tif( next instanceof $mol_object ) {\n\t\t\t\tnext.object_field( this.field )\n\t\t\t\tnext.object_owner( host )\n\t\t\t}\n\t\t\t\n\t\t\tif(( typeof Proxy === 'function' )&&( next instanceof Error )) {\n\t\t\t\tnext = new Proxy( next , {\n\t\t\t\t\tget( target : Error ) {\n\t\t\t\t\t\tthrow target.valueOf()\n\t\t\t\t\t} ,\n\t\t\t\t\townKeys( target : Error ) {\n\t\t\t\t\t\tthrow target.valueOf()\n\t\t\t\t\t} ,\n\t\t\t\t} )\n\t\t\t}\n\t\t\t\n\t\t\thost[ this.field ] = next\n\t\t\tthis.log( [ 'push' , next , prev ] )\n\t\t\t\n\t\t\tthis.obsolete_slaves()\n\t\t\t\n\t\t\treturn next as Value\n\t\t}\n\t\t\n\t\tobsolete_slaves() {\n\t\t\tif( !this.slaves ) return\n\t\t\t\n\t\t\tthis.slaves.forEach( slave => slave.obsolete() )\n\t\t}\n\t\t\n\t\tcheck_slaves() {\n\t\t\tif( this.slaves ) {\n\t\t\t\tthis.slaves.forEach( slave => slave.check() )\n\t\t\t} else {\n\t\t\t\tif( this.autoFresh ) $mol_atom.actualize( this )\n\t\t\t}\n\t\t}\n\t\t\n\t\tcheck() {\n\t\t\t//if( this.status === $mol_atom_status.pulling ) {\n\t\t\t//\tthrow new Error( `May be obsolated while pulling ${ this }` )\n\t\t\t//}\n\t\t\t\n\t\t\tif( this.status === $mol_atom_status.actual ) {\n\t\t\t\t//this.log([ 'checking' ])\n\t\t\t\tthis.status = $mol_atom_status.checking\n\t\t\t\t\n\t\t\t\tthis.check_slaves()\n\t\t\t}\n\t\t}\n\t\t\n\t\tobsolete() : Value {\n\t\t\tif( this.status === $mol_atom_status.obsolete ) return\n\t\t\t\n\t\t\t//if( this.status === $mol_atom_status.pulling ) {\n\t\t\t//\tthrow new Error( `Obsolated while pulling ${ this }` )\n\t\t\t//} \n\t\t\t\n\t\t\tthis.log( [ 'obsolete' ] )\n\t\t\t\n\t\t\tthis.status = $mol_atom_status.obsolete\n\t\t\t\n\t\t\tthis.check_slaves()\n\t\t\t\n\t\t\treturn void null\n\t\t}\n\t\t\n\t\tlead( slave : $mol_atom ) {\n\t\t\tif( !this.slaves ) {\n\t\t\t\tthis.slaves = new $mol_set<$mol_atom>()\n\t\t\t\t$mol_atom.unreap( this )\n\t\t\t}\n\t\t\tthis.slaves.add( slave )\n\t\t}\n\t\t\n\t\tdislead( slave : $mol_atom ) {\n\t\t\tif( !this.slaves ) return\n\t\t\t\n\t\t\tif( this.slaves.size === 1 ) {\n\t\t\t\tthis.slaves = null\n\t\t\t\t$mol_atom.reap( this )\n\t\t\t} else {\n\t\t\t\tthis.slaves.delete( slave )\n\t\t\t}\n\t\t}\n\t\t\n\t\tobey( master : $mol_atom ) {\n\t\t\tif( !this.masters ) this.masters = new $mol_set< $mol_atom >()\n\t\t\tthis.masters.add( master )\n\t\t}\n\t\t\n\t\tdisobey( master : $mol_atom ) {\n\t\t\tif( !this.masters ) return\n\t\t\tthis.masters.delete( master )\n\t\t}\n\t\t\n\t\tdisobey_all() {\n\t\t\tif( !this.masters ) return\n\t\t\t\n\t\t\tthis.masters.forEach( master => master.dislead( this ) )\n\t\t\t\n\t\t\tthis.masters = null\n\t\t}\n\t\t\n\t\tvalue( next? : Value , force? : $mol_atom_force ) {\n\t\t\tif( next === void null ) {\n\t\t\t\treturn this.get( force )\n\t\t\t} else {\n\t\t\t\tif( force ) {\n\t\t\t\t\treturn this.push( next )\n\t\t\t\t} else {\n\t\t\t\t\treturn this.set( next )\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic stack = [ null ] as $mol_atom[]\n\t\tstatic updating : $mol_atom[] = []\n\t\tstatic reaping = new $mol_set< $mol_atom >()\n\t\tstatic scheduled = false\n\t\t\n\t\tstatic actualize( atom : $mol_atom ) {\n\t\t\t$mol_atom.updating.push( atom )\n\t\t\t$mol_atom.schedule()\n\t\t}\n\t\t\n\t\tstatic reap( atom : $mol_atom ) {\n\t\t\t$mol_atom.reaping.add( atom )\n\t\t\t$mol_atom.schedule()\n\t\t}\n\t\t\n\t\tstatic unreap( atom : $mol_atom ) {\n\t\t\t$mol_atom.reaping.delete( atom )\n\t\t}\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.scheduled ) return\n\t\t\t\n\t\t\tnew $mol_defer(\n\t\t\t\t() => {\n\t\t\t\t\tif( !this.scheduled ) return\n\t\t\t\t\tthis.scheduled = false\n\t\t\t\t\tthis.sync()\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\tthis.scheduled = true\n\t\t}\n\t\t\n\t\tstatic sync() {\n\t\t\t$mol_log( '$mol_atom.sync' , [] )\n\t\t\tthis.schedule()\n\t\t\t\n\t\t\twhile( this.updating.length ) {\n\t\t\t\tconst atom = this.updating.shift()\n\t\t\t\tif( this.reaping.has( atom ) ) continue\n\t\t\t\tif( !atom.destroyed() ) atom.get()\n\t\t\t}\n\t\t\t\n\t\t\twhile( this.reaping.size ) {\n\t\t\t\tthis.reaping.forEach(\n\t\t\t\t\tatom => {\n\t\t\t\t\t\tthis.reaping.delete( atom )\n\t\t\t\t\t\tif( !atom.slaves ) atom.destroyed( true )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\t\n\t\t\tthis.scheduled = false\n\t\t}\n\t\t\n\t}\n\t\n\t$mol_state_stack.set( '$mol_atom.stack' , $mol_atom.stack )\n\t\n\texport class $mol_atom_wait extends Error {\n\t\tname = '$mol_atom_wait'\n\t\t\n\t\tconstructor( public message = 'Wait...' ) {\n\t\t\tsuper( message )\n\t\t\tconst error : any = new Error( message )\n\t\t\terror.name = this.name\n\t\t\terror['__proto__'] = $mol_atom_wait.prototype\n\t\t\treturn error\n\t\t}\n\t}\n\t\n\texport class $mol_atom_force extends Object {\n\t\t$mol_atom_force : boolean\n\t\tstatic $mol_atom_force : boolean\n\t}\n\t\n\texport function $mol_atom_task< Value >(\n\t\thost : any ,\n\t\thandler : ()=> Value ,\n\t) {\n\t\tconst atom = new $mol_atom(\n\t\t\thost ,\n\t\t\t() => {\n\t\t\t\ttry {\n\t\t\t\t\thandler()\n\t\t\t\t} catch( error ) {\n\t\t\t\t\tif(!( error instanceof $mol_atom_wait )) atom.destroyed( true )\n\t\t\t\t\tthrow error\n\t\t\t\t}\n\t\t\t\tatom.destroyed( true )\n\t\t\t} ,\n\t\t)\n\t\t\n\t\t$mol_atom.actualize( atom )\n\t\t\n\t\treturn atom\n\t}\n\t\n}\n","namespace $ {\n\t\n\t/// Creates the decorator for caching result value by json-key passed as first argument.\n\t/// Method must be a polymorphic property (getter/setter/getter+setter).\n\texport function $mol_mem< Host , Value >(\n\t\tconfig? : {\n\t\t\tlazy? : boolean\n\t\t}\n\t) {\n\t\t\n\t\treturn function(\n\t\t\tobj : Host ,\n\t\t\tname : string ,\n\t\t\tdescr : TypedPropertyDescriptor< ( next? : Value , force? : $mol_atom_force )=> Value >\n\t\t) {\n\t\t\tconst value = descr.value\n\t\t\t\n\t\t\tdescr.value = function( next? : Value , force? : $mol_atom_force ) {\n\t\t\t\tconst host : any = this\n\t\t\t\tconst field = name + \"()\"\n\t\t\t\tconst fieldA = field + '@'\n\t\t\t\t\n\t\t\t\tlet atom : $mol_atom = host[ fieldA ]\n\t\t\t\tif( !atom ) {\n\t\t\t\t\tif( force && ( next === void null ) ) return next\n\t\t\t\t\t\n\t\t\t\t\thost[ fieldA ] = atom = new $mol_atom(\n\t\t\t\t\t\thost ,\n\t\t\t\t\t\tvalue.bind( host ) as any , // FIXME: type checking\n\t\t\t\t\t\tfield ,\n\t\t\t\t\t)\n\t\t\t\t\tif( config ) atom.autoFresh = !config.lazy\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn atom.value( next , force )\n\t\t\t}\n\t\t\t\n\t\t\tvoid( (descr.value)[ 'value' ] = value )\n\t\t}\n\t\t\n\t}\n\t\n\texport function $mol_mem_key< Host , Key , Value >(\n\t\tconfig? : {\n\t\t\tlazy? : boolean\n\t\t}\n\t) {\n\t\t\n\t\treturn function(\n\t\t\tobj : Host ,\n\t\t\tname : string ,\n\t\t\tdescr : TypedPropertyDescriptor< ( key : Key , next? : Value , force? : $mol_atom_force )=> Value >\n\t\t) {\n\t\t\tconst value = descr.value\n\n\t\t\tdescr.value = function( key : Key , next? : Value , force? : $mol_atom_force ) {\n\t\t\t\tconst host : any = this\n\t\t\t\tconst field = name + \"(\" + JSON.stringify( key ) + \")\"\n\t\t\t\tconst fieldA = field + '@'\n\t\t\t\t\n\t\t\t\tlet atom : $mol_atom = host[ fieldA ]\n\t\t\t\tif( !atom ) {\n\t\t\t\t\tif( force && ( next === void null ) ) return next\n\t\t\t\t\t\n\t\t\t\t\thost[ fieldA ] = atom = new $mol_atom(\n\t\t\t\t\t\thost ,\n\t\t\t\t\t\tvalue.bind( host , key ) as any , // FIXME: type checking\n\t\t\t\t\t\tfield ,\n\t\t\t\t\t)\n\t\t\t\t\tif( config ) atom.autoFresh = !config.lazy\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn atom.value( next , force )\n\t\t\t}\n\t\t\t\n\t\t\tvoid( (descr.value)[ 'value' ] = value )\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\texport class $mol_window extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic size( next? : {\n\t\t\twidth : number\n\t\t\theight : number\n\t\t} ) {\n\t\t\treturn next || {\n\t\t\t\twidth : window.innerWidth ,\n\t\t\t\theight : window.innerHeight ,\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\twindow.addEventListener( 'resize' , ()=> {\n\t\t$mol_window.size( null )\n\t} )\n\t\n}\n","namespace $ {\n\t\n\texport let $mol_view_context = <$mol_view_context> {}\n\t\n\texport interface $mol_view_context {\n\t\t$mol_view_visible_width() : number\n\t\t$mol_view_visible_height() : number\n\t}\n\t\n\t$mol_view_context.$mol_view_visible_width = () => $mol_window.size().width\n\t$mol_view_context.$mol_view_visible_height = () => $mol_window.size().height\n\n\t/// Reactive statefull lazy ViewModel \n\texport class $mol_view extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic Root( id : number ) {\n\t\t\treturn new this\n\t\t}\n\t\t\n\t\ttitle() : string {\n\t\t\treturn this.Class().toString()\n\t\t}\n\t\t\n\t\tstatic state_prefix() {\n\t\t\treturn ''\n\t\t}\n\t\t\n\t\t@$mol_mem()\n\t\tfocused ( next?: boolean ) {\n\t\t\tconst value = $mol_view_selection.focused( next === void 0 ? void 0 : [ this.dom_node() ] )\n\t\t\treturn value.indexOf( this.dom_node() ) !== -1\n\t\t} \n\t\t\n\t\tstate_prefix() {\n\t\t\tconst owner = this.object_owner()\n\t\t\treturn owner ? (owner).state_prefix() : ''\n\t\t}\n\t\t\n\t\tstate_key( postfix : string ) {\n\t\t\treturn this.state_prefix() + postfix\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tcontext( next? : $mol_view_context ) {\n\t\t\treturn next || $mol_view_context\n\t\t}\n\t\t\n\t\tcontext_sub() {\n\t\t\treturn this.context()\n\t\t}\n\t\t\n\t\t/// Name of element that created when element not found in DOM\n\t\tdom_name() {\n\t\t\treturn this.constructor.toString().replace( '$' , '' )\n\t\t}\n\t\t\n\t\t/// NameSpace of element that created when element not found in DOM\n\t\tdom_name_space() { return 'http://www.w3.org/1999/xhtml' }\n\t\t\n\t\t/// Raw child views\n\t\tsub() {\n\t\t\treturn > null\n\t\t}\n\t\t\n\t\t/// Visible sub views with defined context()\n\t\t/// Render all by default\n\t\tsub_visible() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return sub\n\t\t\t\n\t\t\tconst context = this.context_sub()\n\t\t\tsub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.context( context )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn sub\n\t\t}\n\t\t\n\t\t/// Minimal height that used for lazy rendering\n\t\t@ $mol_mem()\n\t\tminimal_width() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return 0\n\t\t\t\n\t\t\tlet min = 0\n\t\t\tsub.forEach( view => {\n\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\tmin = Math.max( min , view.minimal_width() )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn min\n\t\t}\n\t\t\n\t\t/// Minimal width that used for lazy rendering\n\t\t@ $mol_mem()\n\t\tminimal_height() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return 0\n\t\t\t\n\t\t\tlet min = 0\n\t\t\tsub.forEach( view => {\n\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\tmin = Math.max( min , view.minimal_height() )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn min\n\t\t}\n\t\t\n\t\tprivate 'dom_node()' : Element\n\t\t\n\t\tdom_node( next? : Element ) {\n\t\t\tconst path = this.toString()\n\t\t\t\n\t\t\tlet next2 = next\n\t\t\tif( !next2 ) {\n\t\t\t\tnext2 = this[ 'dom_node()' ]\n\t\t\t\tif( next2 ) return next2\n\t\t\t\t\n\t\t\t\tnext2 = document.getElementById( path )\n\t\t\t\tif( next2 ) {\n\t\t\t\t\tif( (next2)[ '$mol_view' ] ) {\n\t\t\t\t\t\treturn this[ 'dom_node()' ] = next2\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tnext2 = document.createElementNS( this.dom_name_space() , this.dom_name() )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tnext2.id = path\n\t\t\tvoid( (next2)[ '$mol_view' ] = this )\n\t\t\tthis[ 'dom_node()' ] = next2\n\t\t\t\n\t\t\t/// Set BEM-like element-attributes with inheritance support\n\t\t\tlet ownerProto = this.object_owner() && Object.getPrototypeOf( this.object_owner() ) as $mol_object\n\t\t\tif( ownerProto ) {\n\t\t\t\tconst suffix = this.object_field().replace( /\\(.*/ , '' )\n\t\t\t\tconst suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1)\n\t\t\t\t\n\t\t\t\twhile( ownerProto && ( ownerProto instanceof $mol_view ) && ( suffix in ownerProto ) ) {\n\t\t\t\t\tconst attrName = ownerProto.constructor.toString().replace( /\\$/g , '' ) + suffix2\n\t\t\t\t\tnext2.setAttribute( attrName , '' )\n\t\t\t\t\townerProto = Object.getPrototypeOf( ownerProto )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/// Set BEM-like block-attributes with inheritance support\n\t\t\tlet proto = Object.getPrototypeOf( this ) as $mol_view\n\t\t\twhile( proto ) {\n\t\t\t\tconst attrName = proto.constructor.toString().replace( /\\$/g , '' ).toLowerCase()\n\t\t\t\tnext2.setAttribute( attrName , '' )\n\t\t\t\tif(!( proto instanceof $mol_view )) break\n\t\t\t\tproto = Object.getPrototypeOf( proto )\n\t\t\t}\n\t\t\t\n\t\t\t/// Bind properties to events\n\t\t\t$mol_view.bind_event( next2 , this.event() )\n\t\t\t\n\t\t\treturn next2\n\t\t}\n\t\t\n\t\tstatic bind_event( node: Element , events: { [ key : string ] : ( event : Event )=> void } ) {\n\t\t\tfor( let name in events ) {\n\t\t\t\tlet handle = events[ name ]\n\t\t\t\tnode.addEventListener( name , event => {\n\t\t\t\t\t$mol_atom_task( `${ this }.event()['${ name }']` , ()=> {\n\t\t\t\t\t\thandle( event )\n\t\t\t\t\t} ).get()\n\t\t\t\t} )\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic render_sub( node : Element , sub : ($mol_view|Node|string|number|boolean)[] ) {\n\t\t\tif( sub == null ) return\n\t\t\t\t\n\t\t\tlet nextNode = node.firstChild\n\t\t\tfor( let view of sub ) {\n\t\t\t\t\n\t\t\t\tif( view == null ) {\n\t\t\t\t} else if( typeof view === 'object' ) {\n\t\t\t\t\tconst existsNode = ( ( view instanceof $mol_view ) ? view.dom_node() : view.valueOf() as Node )\n\t\t\t\t\twhile( true ) {\n\t\t\t\t\t\tif( !nextNode ) {\n\t\t\t\t\t\t\tnode.appendChild( existsNode )\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif( nextNode == existsNode ) {\n\t\t\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t//if( childViews.indexOf( nextNode ) === -1 ) {\n\t\t\t\t\t\t\t//\tvar nn = nextNode.nextSibling\n\t\t\t\t\t\t\t//\tprev.removeChild( nextNode )\n\t\t\t\t\t\t\t//\tnextNode = nn\n\t\t\t\t\t\t\t//} else {\n\t\t\t\t\t\t\tnode.insertBefore( existsNode , nextNode )\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t//}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif( nextNode && nextNode.nodeName === '#text' ) {\n\t\t\t\t\t\tnextNode.nodeValue = String( view )\n\t\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst textNode = document.createTextNode( String( view ) )\n\t\t\t\t\t\tnode.insertBefore( textNode , nextNode )\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\twhile( nextNode ) {\n\t\t\t\tconst currNode = nextNode\n\t\t\t\tnextNode = currNode.nextSibling\n\t\t\t\tnode.removeChild( currNode )\n\t\t\t}\n\t\t\t\n\t\t\tfor( let view of sub ) {\n\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tview.dom_tree()\n\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\tconsole.error(e)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic render_attr( node : Element , attrs : { [ key : string ] : string|number|boolean } ) {\n\t\t\tfor( let name in attrs ) {\n\t\t\t\tlet val = attrs[ name ]\n\t\t\t\tif( ( val == null ) || ( val === false ) ) {\n\t\t\t\t\tnode.removeAttribute( name )\n\t\t\t\t} else if( val === true ) {\n\t\t\t\t\tnode.setAttribute( name , 'true' )\n\t\t\t\t} else {\n\t\t\t\t\tnode.setAttribute( name , String( val ) )\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic render_style( node : HTMLElement , styles : { [ key : string ] : string|number } ) {\n\t\t\tfor( let name in styles ) {\n\t\t\t\tlet val = styles[ name ] as any\n\t\t\t\tif( typeof val === 'number' ) val = `${ val }px`\n\t\t\t\tconst style = node.style as any\n\t\t\t\tstyle[ name ] = val\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic render_field( node : any , field : { [ key : string ] : any } ) {\n\t\t\tfor( let key in field ) {\n\t\t\t\tconst val = field[ key ]\n\t\t\t\tif( node[ key ] !== val ) node[ key ] = val\n\t\t\t}\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tdom_tree() {\n\t\t\tlet node = this.dom_node() as HTMLElement\n\t\t\t\n\t\t\ttry {\n\t\t\t\t$mol_view.render_attr( node , this.attr() )\n\t\t\t\t$mol_view.render_style( node , this.style() )\n\t\t\t\t$mol_view.render_sub( node , this.sub_visible() )\n\t\t\t\t$mol_view.render_field( node , this.field() )\n\t\t\t\t\n\t\t\t\treturn node\n\t\t\t} catch( error ) {\n\t\t\t\tif( !error['$mol_view_catched'] ) {\n\t\t\t\t\tnode.setAttribute( 'mol_view_error' , error.name )\n\t\t\t\t\terror['$mol_view_catched'] = true\n\t\t\t\t}\n\t\t\t\tthrow error\n\t\t\t}\n\t\t}\n\t\t\n\t\tattr() : { [ key : string ] : string|number|boolean } { return {\n\t\t\t'mol_view_error' : false\n\t\t} }\n\t\t\n\t\tstyle() : { [ key : string ] : string|number } { return {\n\t\t} }\n\t\t\n\t\tfield() : { [ key : string ] : any } { return {\n\t\t} }\n\t\t\n\t\tevent() : { [ key : string ] : ( event : Event )=> void } { return {} }\n\t\t\n\t\tlocale_contexts() {\n\t\t\tconst contexts = [] as string[]\n\t\t\tlet proto = Object.getPrototypeOf( this ) as $mol_view\n\t\t\twhile( proto && ( proto instanceof $mol_view ) ) {\n\t\t\t\tcontexts.push( proto.constructor.toString() )\n\t\t\t\tproto = Object.getPrototypeOf( proto )\n\t\t\t}\n\t\t\treturn contexts\n\t\t}\n\t\t\n\t}\n\t\n}\n","interface Window {\n\tcordova : any\n}\n\nnamespace $ {\n\n\t/// Autoattach view roots to loaded DOM.\n\tdocument.addEventListener( window.cordova ? 'deviceready' : 'DOMContentLoaded' , event => {\n\t\t\t\n\t\tconst nodes = document.querySelectorAll( '[mol_view_root]' )\n\t\t\n\t\tfor( let i = nodes.length - 1 ; i >= 0 ; --i ) {\n\t\t\tlet view = ($)[ nodes.item( i ).getAttribute( 'mol_view_root' ) ].Root( i )\n\t\t\tview.dom_node( nodes.item( i ) )\n\t\t\tlet win = new $mol_atom( `$mol_view.Root(${ i })` , ()=> {\n\t\t\t\tview.dom_tree()\n\t\t\t\tdocument.title = view.title()\n\t\t\t\treturn null\n\t\t\t} )\n\t\t\tnew $mol_defer( ()=> win.get() )\n\t\t}\n\t\t\n\t\t$mol_defer.run()\n\t} )\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_view_selection extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic focused( next? : Element[] , force? : $mol_atom_force ) {\n\t\t\tif( next === void 0 ) return [] as Element[]\n\t\t\t\n\t\t\tif( next.length !== 1 ) throw new Error( 'Length must be equals 1' )\n\t\t\t\n\t\t\tconst node = next[ 0 ] as HTMLElement\n\t\t\t\n\t\t\tnode.focus();\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic position( ...diff : any[] ) {\n\t\t\tif( diff.length ) {\n\t\t\t\tif( !diff[ 0 ] ) return diff[ 0 ]\n\t\t\t\t\n\t\t\t\tvar start = diff[ 0 ].start\n\t\t\t\tvar end = diff[ 0 ].end\n\t\t\t\tif( !( start <= end ) ) throw new Error( `Wrong offsets (${start},${end})` )\n\t\t\t\t\n\t\t\t\tvar root = document.getElementById( diff[ 0 ].id )\n\t\t\t\troot.focus()\n\t\t\t\t\n\t\t\t\tvar range = new Range\n\t\t\t\t\n\t\t\t\tvar cur = root.firstChild\n\t\t\t\twhile( cur !== root ) {\n\t\t\t\t\twhile( cur.firstChild ) cur = cur.firstChild\n\t\t\t\t\tif( cur.nodeValue ) {\n\t\t\t\t\t\tvar length = cur.nodeValue.length\n\t\t\t\t\t\tif( length >= start ) break\n\t\t\t\t\t\tstart -= length\n\t\t\t\t\t}\n\t\t\t\t\twhile( !cur.nextSibling ) {\n\t\t\t\t\t\tcur = cur.parentNode\n\t\t\t\t\t\tif( cur === root ) {\n\t\t\t\t\t\t\tstart = root.childNodes.length\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trange.setStart( cur , start )\n\t\t\t\t\n\t\t\t\tvar cur = root.firstChild\n\t\t\t\twhile( cur !== root ) {\n\t\t\t\t\twhile( cur.firstChild ) cur = cur.firstChild\n\t\t\t\t\tif( cur.nodeValue ) {\n\t\t\t\t\t\tvar length = cur.nodeValue.length\n\t\t\t\t\t\tif( length >= end ) break\n\t\t\t\t\t\tend -= length\n\t\t\t\t\t}\n\t\t\t\t\twhile( !cur.nextSibling ) {\n\t\t\t\t\t\tcur = cur.parentNode\n\t\t\t\t\t\tif( cur === root ) {\n\t\t\t\t\t\t\tend = root.childNodes.length\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trange.setEnd( cur , end )\n\t\t\t\t\n\t\t\t\tvar sel = document.getSelection()\n\t\t\t\tsel.removeAllRanges()\n\t\t\t\tsel.addRange( range )\n\t\t\t\t\n\t\t\t\treturn diff[ 0 ]\n\t\t\t} else {\n\t\t\t\tvar sel = document.getSelection()\n\t\t\t\tif( sel.rangeCount === 0 ) return null\n\t\t\t\tvar range = sel.getRangeAt( 0 )\n\t\t\t\t\n\t\t\t\tvar el = range.commonAncestorContainer\n\t\t\t\twhile( el && !el.id ) el = el.parentElement\n\t\t\t\t\n\t\t\t\tif( !el ) return { id : null , start : 0 , end : 0 }\n\t\t\t\t\n\t\t\t\tvar meter = new Range\n\t\t\t\tmeter.selectNodeContents( el )\n\t\t\t\t\n\t\t\t\tmeter.setEnd( range.startContainer , range.startOffset )\n\t\t\t\tvar startOffset = meter.toString().length\n\t\t\t\t\n\t\t\t\tmeter.setEnd( range.endContainer , range.endOffset )\n\t\t\t\tvar endOffset = meter.toString().length\n\t\t\t\t\n\t\t\t\treturn { id : el.id , start : startOffset , end : endOffset }\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic onFocus( event : FocusEvent ) {\n\t\t\tconst parents : Element[] = []\n\t\t\tlet element = event.target as HTMLElement\n\t\t\t\n\t\t\twhile( element ) {\n\t\t\t\tparents.push( element )\n\t\t\t\telement = element.parentElement\n\t\t\t}\n\t\t\t\n\t\t\t$mol_view_selection.focused( parents , $mol_atom_force )\n\t\t}\n\t\t\n\t\tstatic onBlur( event : FocusEvent ) {\n\t\t\t$mol_view_selection.focused( [] , $mol_atom_force )\n\t\t}\n\t}\n\t\n}\n","namespace $ {\n\t\n\tdocument.addEventListener( 'selectionchange' , event => {\n\t\t$mol_view_selection.position( void 0 )\n\t} )\n\t\n\tdocument.addEventListener( 'focusin' , $mol_view_selection.onFocus )\n\tdocument.addEventListener( 'focus' , $mol_view_selection.onFocus , true ) // FF\n\t\n\tdocument.addEventListener( 'focusout' , $mol_view_selection.onBlur )\n\tdocument.addEventListener( 'blur' , $mol_view_selection.onBlur , true ) // FF\n\t\n}\n","namespace $ { export class $mol_string extends $mol_view {\n\n\t/// dom_name \\input\n\tdom_name() {\n\t\treturn \"input\"\n\t}\n\n\t/// enabled true\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/// disabled false\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/// value?val \\\n\t@ $mol_mem()\n\tvalue( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// value_changed?val <=> value?val\n\t@ $mol_mem()\n\tvalue_changed( val? : any ) {\n\t\treturn this.value( val )\n\t}\n\n\t/// autofocus?val false\n\t@ $mol_mem()\n\tautofocus( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// type?val \\text\n\t@ $mol_mem()\n\ttype( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : \"text\"\n\t}\n\n\t/// field * \n\t/// \tdisabled <= disabled \n\t/// \tvalue <= value_changed?val \n\t/// \tautofocus <= autofocus?val \n\t/// \tplaceholder <= hint \n\t/// \ttype <= type?val\n\tfield() {\n\t\treturn ( { ...super.field() , \n\t\t\t\"disabled\" : this.disabled() ,\n\t\t\t\"value\" : this.value_changed() ,\n\t\t\t\"autofocus\" : this.autofocus() ,\n\t\t\t\"placeholder\" : this.hint() ,\n\t\t\t\"type\" : this.type() ,\n\t\t} )\n\t}\n\n\t/// event_change?event null\n\t@ $mol_mem()\n\tevent_change( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event * input?event <=> event_change?event\n\tevent() {\n\t\treturn ( { ...super.event() , \n\t\t\t\"input\" : ( event? : any )=> this.event_change( event ) ,\n\t\t} )\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_string extends $.$mol_string {\n\t\t\n\t\tevent_change( next? : Event ) {\n\t\t\tthis.value( ( this.dom_node() as HTMLInputElement ).value.trim() )\n\t\t}\n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t}\n}\n","namespace $ {\n export enum $mol_keyboard_code {\n backspace = 8,\n tab = 9,\n enter = 13,\n shift= 16,\n ctrl = 17,\n alt = 18,\n pause = 19,\n capsLock = 20,\n escape = 27,\n space = 32,\n pageUp = 33,\n pageDown = 34,\n end = 35,\n home = 36,\n left = 37,\n up = 38,\n right = 39,\n down = 40,\n insert = 45,\n delete = 46,\n key0 = 48,\n key1 = 49,\n key2 = 50,\n key3 = 51,\n key4 = 52,\n key5 = 53,\n key6 = 54,\n key7 = 55,\n key8 = 56,\n key9 = 57,\n A = 65,\n B = 66,\n C = 67,\n D = 68,\n E = 69,\n F = 70,\n G = 71,\n H = 72,\n I = 73,\n J = 74,\n K = 75,\n L = 76,\n M = 77,\n N = 78,\n O = 79,\n P = 80,\n Q = 81,\n R = 82,\n S = 83,\n T = 84,\n U = 85,\n V = 86,\n W = 87,\n X = 88,\n Y = 89,\n Z = 90,\n metaLeft = 91,\n metaRight = 92,\n select = 93,\n numpad0 = 96,\n numpad1 = 97,\n numpad2 = 98,\n numpad3 = 99,\n numpad4 = 100,\n numpad5 = 101,\n numpad6 = 102,\n numpad7 = 103,\n numpad8 = 104,\n numpad9 = 105,\n multiply = 106,\n add = 107,\n subtract = 109,\n decimal = 110,\n divide = 111,\n F1 = 112,\n F2 = 113,\n F3 = 114,\n F4 = 115,\n F5 = 116,\n F6 = 117,\n F7 = 118,\n F8 = 119,\n F9 = 120,\n F10 = 121,\n F11 = 122,\n F12 = 123,\n numLock = 144,\n scrollLock = 145,\n semicolon = 186,\n equals = 187,\n comma = 188,\n dash = 189,\n period = 190,\n forwardSlash = 191,\n graveAccent = 192,\n bracketOpen = 219,\n slashBack = 220,\n bracketClose = 221,\n quoteSingle = 222\n }\n}\n","namespace $ { export class $mol_button extends $mol_view {\n\n\t/// enabled true\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/// event_click?event null\n\t@ $mol_mem()\n\tevent_click( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event_activate?event <=> event_click?event\n\t@ $mol_mem()\n\tevent_activate( event? : any ) {\n\t\treturn this.event_click( event )\n\t}\n\n\t/// evenet_key_press?event null\n\t@ $mol_mem()\n\tevenet_key_press( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event * \n\t/// \tclick?event <=> event_activate?event \n\t/// \tkeypress?event <=> evenet_key_press?event\n\tevent() {\n\t\treturn ( { ...super.event() , \n\t\t\t\"click\" : ( event? : any )=> this.event_activate( event ) ,\n\t\t\t\"keypress\" : ( event? : any )=> this.evenet_key_press( event ) ,\n\t\t} )\n\t}\n\n\t/// disabled false\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/// tab_index \\0\n\ttab_index() {\n\t\treturn \"0\"\n\t}\n\n\t/// attr * \n\t/// \tdisabled <= disabled \n\t/// \trole \\button\n\t/// \ttabindex <= tab_index\n\tattr() {\n\t\treturn ( { ...super.attr() , \n\t\t\t\"disabled\" : this.disabled() ,\n\t\t\t\"role\" : \"button\" ,\n\t\t\t\"tabindex\" : this.tab_index() ,\n\t\t} )\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_button extends $.$mol_button {\n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t\t\n\t\tevent_activate( next : Event ) {\n\t\t\tif( !this.enabled() ) return\n\t\t\tthis.event_click( next )\n\t\t}\n\t\t\n\t\tevenet_key_press ( event: KeyboardEvent ) { \n \t\tif( event.keyCode === $mol_keyboard_code.enter ) \n \t\treturn this.event_activate( event )\n \t} \n\t\t\n\t\ttab_index() {\n\t\t\treturn this.enabled() ? super.tab_index() : null\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { export class $mol_button_major extends $mol_button {\n\n} }\n\nnamespace $ { export class $mol_button_minor extends $mol_button {\n\n} }\n\nnamespace $ { export class $mol_button_danger extends $mol_button {\n\n} }\n\n","namespace $ {\n\t\n\texport function $mol_merge_dict< Target , Source >( target : Target , source : Source ) : Target & Source {\n\t\tlet result = {}\n\t\tfor( let key in target ) result[ key ] = ( target )[ key ]\n\t\tfor( let key in source ) result[ key ] = ( source )[ key ]\n\t\treturn result\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_state_arg< Value > extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic href( next? : string ) {\n\t\t\tif( next ) history.replaceState( history.state , document.title , `${ next }` )\n\t\t\treturn window.location.search + window.location.hash\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic dict( next? : { [ key : string ] : string } ) {\n\t\t\tvar href = this.href( next && this.make( next ) )\n\t\t\tvar chunks = href.split( /[\\/\\?#!&;]/g )\n\t\t\t\n\t\t\tvar params : { [ key : string ] : string } = {}\n\t\t\tchunks.forEach(\n\t\t\t\tchunk => {\n\t\t\t\t\tif( !chunk ) return\n\t\t\t\t\tvar vals = chunk.split( '=' ).map( decodeURIComponent )\n\t\t\t\t\tparams[ vals.shift() ] = vals.join( '=' )\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\treturn params\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic value( key : string , next? : string ) {\n\t\t\tconst nextDict = ( next === void 0 ) ? void 0 : $mol_merge_dict( this.dict() , { [ key ] : next } ) \n\t\t\treturn this.dict( nextDict )[ key ] || null\n\t\t}\n\t\t\n\t\tstatic link( next : { [ key : string ] : string } ) {\n\t\t\treturn this.make( $mol_merge_dict( this.dict() , next ) )\n\t\t}\n\t\t\n\t\tstatic make( next : { [ key : string ] : string } ) {\n\t\t\tconst chunks : string[] = []\n\t\t\tfor( let key in next ) {\n\t\t\t\tif( null == next[ key ] ) continue\n\t\t\t\tchunks.push( [ key ].concat( next[ key ] ).map( encodeURIComponent ).join( '=' ) )\n\t\t\t}\n\t\t\t\n\t\t\tconst hash = chunks.join( '#' )\n\t\t\t\n\t\t\treturn hash ? '#' + hash + '#' : '#'\n\t\t}\n\t\t\n\t\tconstructor( public prefix = '' ) {\n\t\t\tsuper()\n\t\t}\n\t\t\n\t\tvalue( key : string , next? : string ) {\n\t\t\treturn $mol_state_arg.value( this.prefix + key , next )\n\t\t}\n\t\t\n\t\tsub( postfix : string ) {\n\t\t\treturn new $mol_state_arg( this.prefix + postfix + '.' )\n\t\t}\n\t\t\n\t\tlink( next : { [ key : string ] : string } ) {\n\t\t\tvar prefix = this.prefix\n\t\t\tvar dict : { [ key : string ] : string } = {}\n\t\t\tfor( var key in next ) {\n\t\t\t\tdict[ prefix + key ] = next[ key ]\n\t\t\t}\n\t\t\treturn $mol_state_arg.link( dict )\n\t\t}\n\t\t\n\t}\n\t\n\twindow.addEventListener( 'hashchange' , event => $mol_state_arg.href( null ) )\n\t\n}\n","namespace $ { export class $mol_link extends $mol_view {\n\n\t/// minimal_height 36\n\tminimal_height() {\n\t\treturn 36\n\t}\n\n\t/// dom_name \\a\n\tdom_name() {\n\t\treturn \"a\"\n\t}\n\n\t/// uri \\\n\turi() {\n\t\treturn \"\"\n\t}\n\n\t/// current false\n\tcurrent() {\n\t\treturn false\n\t}\n\n\t/// attr * \n\t/// \thref <= uri \n\t/// \tmol_link_current <= current\n\tattr() {\n\t\treturn ( { ...super.attr() , \n\t\t\t\"href\" : this.uri() ,\n\t\t\t\"mol_link_current\" : this.current() ,\n\t\t} )\n\t}\n\n\t/// arg *\n\targ() {\n\t\treturn ({\n\t\t})\n\t}\n\n} }\n\n","namespace $.$mol {\n\t\n\texport class $mol_link extends $.$mol_link {\n\t\t\n\t\t@ $mol_mem()\n\t\turi() {\n\t\t\treturn new $mol_state_arg( this.state_prefix() ).link( this.arg() )\n\t\t}\n\t\t\n\t\tcurrent() {\n\t\t\treturn this.uri() === $mol_state_arg.link( {} )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_check extends $mol_button {\n\n\t/// checked?val false\n\t@ $mol_mem()\n\tchecked( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// attr * \n\t/// \tmol_check_checked <= checked?val \n\t/// \taria-checked <= checked?val \n\t/// \trole \\checkbox\n\tattr() {\n\t\treturn ( { ...super.attr() , \n\t\t\t\"mol_check_checked\" : this.checked() ,\n\t\t\t\"aria-checked\" : this.checked() ,\n\t\t\t\"role\" : \"checkbox\" ,\n\t\t} )\n\t}\n\n\t/// Icon null\n\tIcon() {\n\t\treturn null\n\t}\n\n\t/// label /\n\tlabel() {\n\t\treturn [] as any[]\n\t}\n\n\t/// Label $mol_view sub / <= label\n\t@ $mol_mem()\n\tLabel() {\n\t\treturn new $mol_view().setup( obj => { \n\t\t\tobj.sub = () => [].concat( this.label() )\n\t\t} )\n\t}\n\n\t/// sub / \n\t/// \t<= Icon \n\t/// \t<= Label\n\tsub() {\n\t\treturn [].concat( this.Icon() , this.Label() )\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_check extends $.$mol_check {\n\n\t\tevent_click( next? : Event ) {\n\t\t\tthis.checked( !this.checked() )\n\t\t\t//next.preventDefault()\n\t\t}\n\n\t}\n}\n\n","namespace $ {\n\t\n\texport class $mol_state_session< Value > extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic value< Value >( key : string , next? : Value ) : Value {\n\t\t\tif( next === void 0 ) return JSON.parse( sessionStorage.getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) sessionStorage.removeItem( key )\n\t\t\telse sessionStorage.setItem( key , JSON.stringify( next ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_session.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_scroll extends $mol_view {\n\n\t/// minimal_height 0\n\tminimal_height() {\n\t\treturn 0\n\t}\n\n\t/// scroll_top?val 0\n\t@ $mol_mem()\n\tscroll_top( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// scroll_left?val 0\n\t@ $mol_mem()\n\tscroll_left( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// field * \n\t/// \tscrollTop <= scroll_top?val \n\t/// \tscrollLeft <= scroll_left?val\n\tfield() {\n\t\treturn ( { ...super.field() , \n\t\t\t\"scrollTop\" : this.scroll_top() ,\n\t\t\t\"scrollLeft\" : this.scroll_left() ,\n\t\t} )\n\t}\n\n\t/// event_scroll?event null\n\t@ $mol_mem()\n\tevent_scroll( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event * \n\t/// \tscroll?event <=> event_scroll?event \n\t/// \toverflow?event <=> event_scroll?event \n\t/// \tunderflow?event <=> event_scroll?event\n\tevent() {\n\t\treturn ( { ...super.event() , \n\t\t\t\"scroll\" : ( event? : any )=> this.event_scroll( event ) ,\n\t\t\t\"overflow\" : ( event? : any )=> this.event_scroll( event ) ,\n\t\t\t\"underflow\" : ( event? : any )=> this.event_scroll( event ) ,\n\t\t} )\n\t}\n\n} }\n\n","namespace $ {\n\t\n\texport interface $mol_view_context {\n\t\t$mol_scroll_scroll_top() : number\n\t\t$mol_scroll_scroll_left() : number\n\t\t$mol_scroll_moving() : boolean\n\t}\n\n\t$mol_view_context.$mol_scroll_scroll_top = () => 0\n\t$mol_view_context.$mol_scroll_scroll_left = () => 0\n\t$mol_view_context.$mol_scroll_moving = () => false\n\t\n}\n\nnamespace $.$mol {\n\t\n\texport class $mol_scroll extends $.$mol_scroll {\n\n\t\tscroll_top( next? : number ) {\n\t\t\treturn $mol_state_session.value( `${ this }.scroll_top()` , next ) || 0\n\t\t}\n\t\t\n\t\tscroll_left( next? : number ) {\n\t\t\treturn $mol_state_session.value( `${ this }.scroll_left()` , next ) || 0\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tscroll_bottom( next? : number ) {\n\t\t\treturn next || 0\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tscroll_right( next? : number ) {\n\t\t\treturn next || 0\n\t\t}\n\t\t\n\t\tevent_scroll( next? : Event ) {\n\t\t\tthis.moving( true )\n\t\t\tnew $mol_defer( ()=> {\n\t\t\t\tconst el = this.dom_node() as HTMLElement\n\t\t\t\tthis.scroll_top( Math.max( 0 , el.scrollTop ) )\n\t\t\t\tthis.scroll_left( Math.max( 0 , el.scrollLeft ) )\n\t\t\t\tthis.scroll_bottom( Math.max( 0 , el.scrollHeight - el.scrollTop - el.offsetHeight ) )\n\t\t\t\tthis.scroll_right( Math.max( 0 , el.scrollWidth - el.scrollLeft - el.offsetWidth ) )\n\t\t\t} )\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tmoving( next? : boolean ) {\n\t\t\tif( next ) {\n\t\t\t\tsetTimeout( ()=> {\n\t\t\t\t\tthis.moving( false )\n\t\t\t\t} )\n\t\t\t}\t\t\t\t\n\t\t\treturn next || false\n\t\t}\n\n\t\t@ $mol_mem()\n\t\tcontext_sub( ) {\n\t\t\tconst context = this.context()\n\t\t\tconst subContext : $mol_view_context = Object.create( context )\n\t\t\tsubContext.$mol_view_visible_height = ()=> {\n\t\t\t\tconst sizeWin = $mol_window.size()\n\t\t\t\tconst limit = context.$mol_view_visible_height()\n\t\t\t\treturn this.scroll_top() + Math.min( sizeWin.height , limit )\n\t\t\t}\n\t\t\tsubContext.$mol_view_visible_width = ()=> {\n\t\t\t\tconst sizeWin = $mol_window.size()\n\t\t\t\tconst limit = context.$mol_view_visible_width()\n\t\t\t\treturn this.scroll_left() + Math.min( sizeWin.width , limit )\n\t\t\t}\n\t\t\tsubContext.$mol_scroll_scroll_top = ()=> this.scroll_top()\n\t\t\tsubContext.$mol_scroll_scroll_left = ()=> this.scroll_left()\n\t\t\tsubContext.$mol_scroll_moving = ()=> this.moving()\n\t\t\treturn subContext\n\t\t}\n\t\t\n\t}\n\n}\n","var localStorage = localStorage || {\n\tgetItem( key : string ) {\n\t\treturn this[ ':' + key ]\n\t} ,\n\tsetItem( key : string , value : string ) {\n\t\tthis[ ':' + key ] = value\n\t} ,\n\tremoveItem( key : string ) {\n\t\tthis[ ':' + key ] = void 0\n\t}\n}\n\nnamespace $ {\n\t\n\texport class $mol_state_local< Value > extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic value< Value >( key : string , next? : Value , force? : $mol_atom_force ) {\n\t\t\tif( next === void 0 ) return JSON.parse( localStorage.getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) localStorage.removeItem( key )\n\t\t\telse localStorage.setItem( key , JSON.stringify( next ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_local.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\twindow.addEventListener( 'storage' , event => {\n\t\t$.$mol_state_local.value( event.key , void 0 , $mol_atom_force )\n\t} )\n}\n","namespace $ {\n\t\n\texport class $mol_http_request extends $mol_object {\n\t\t\n\t\turi() { return '' }\n\t\t\n\t\tmethod() { return 'Get' }\n\t\t\n\t\tcredentials() { return null as {\n\t\t\tlogin? : string\n\t\t\tpassword? : string\n\t\t} }\n\t\t\n\t\tbody() { return null }\n\t\t\n\t\t'native()' : XMLHttpRequest\n\t\tnative() {\n\t\t\tif( this[ 'native()' ] ) return this[ 'native()' ]\n\t\t\t\n\t\t\tvar next = this[ 'native()' ] = $mol_http_request_native()\n\t\t\t\n\t\t\tnext.withCredentials = Boolean( this.credentials() )\n\t\t\t\n\t\t\tnext.onload = ( event : Event )=> {\n\t\t\t\tif( Math.floor( next.status / 100 ) === 2 ) {\n\t\t\t\t\tthis.response( next.responseText , $mol_atom_force )\n\t\t\t\t} else {\n\t\t\t\t\tthis.response( new Error( next.responseText ) as any , $mol_atom_force )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tnext.onerror = ( event : ErrorEvent ) => {\n\t\t\t\tthis.response( event.error || new Error( 'Unknown HTTP error' ) , $mol_atom_force )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next ) {\n\t\t\t\tconst native = this[ 'native()' ]\n\t\t\t\tif( native ) native.abort()\n\t\t\t}\n\t\t\treturn super.destroyed( next )\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tresponse( next? : any , force? : $mol_atom_force ) : any {\n\t\t\tconst creds = this.credentials()\n\t\t\tconst native = this.native()\n\t\t\tconst method = ( next === void 0 ) ? 'Get' : this.method()\n\t\t\tconst uri = this.uri()\n\t\t\t\n\t\t\tnative.open( method , uri , true , creds && creds.login , creds && creds.password )\n\t\t\tnative.send( next )\n\t\t\t\n\t\t\tthrow new $mol_atom_wait( `${ method } ${ uri }` )\n\t\t}\n\t\t\n\t\ttext( next? : string , force? : $mol_atom_force ) : string {\n\t\t\treturn this.response( next , force )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\texport var $mol_http_request_native = ()=> new XMLHttpRequest;\n}\n","namespace $ {\n\t\n\texport class $mol_http_resource extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic item( uri : string ) {\n\t\t\treturn new $mol_http_resource().setup( obj => {\n\t\t\t\tobj.uri = ()=> uri\n\t\t\t} )\n\t\t}\n\t\t\n\t\turi() { return '' }\n\t\t\n\t\tcredentials() { return null as {\n\t\t\tlogin? : string\n\t\t\tpassword? : string\n\t\t} }\n\t\t\n\t\t@ $mol_mem()\n\t\trequest() {\n\t\t\tconst request = new $mol_http_request()\n\t\t\trequest.method = () => 'Put'\n\t\t\trequest.uri = () => this.uri()\n\t\t\trequest.credentials = () => this.credentials()\n\t\t\treturn request\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\ttext( next? : string , force? : $mol_atom_force ) {\n\t\t\treturn this.request().text( next , force )\n\t\t}\n\t\t\n\t}\n\t\n\texport class $mol_http_resource_json< Content > extends $mol_http_resource {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic item< Content >( uri : string ) {\n\t\t\treturn new $mol_http_resource_json< Content >().setup( obj => {\n\t\t\t\tobj.uri = ()=> uri\n\t\t\t} )\n\t\t}\n\t\t\n\t\tjson( next? : Content , force? : $mol_atom_force ) : Content {\n\t\t\treturn JSON.parse( this.text( next && JSON.stringify( next , null , '\\t' ) , force ) )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport interface $mol_locale_dict {\n\t\t[ key : string ] : string\n\t}\n\t\n\texport class $mol_locale extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic lang( next? : string ) {\n\t\t\treturn $mol_state_local.value( 'locale' , next ) || $mol_state_arg.value( 'locale' ) || 'en'\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic texts() {\n\t\t\tconst uri = `-/web.locale=${ this.lang() }.json`\n\t\t\tconst resource = $mol_http_resource_json.item< $mol_locale_dict >( uri ) \n\t\t\treturn resource.json()\n\t\t}\n\t\t\n\t\tstatic text( contexts : string[] , key : string ) {\n\t\t\tconst texts = this.texts()\n\t\t\t\n\t\t\tfor( let i = 0 ; i < contexts.length ; ++i ) {\n\t\t\t\tconst text = texts[ `${ contexts[i] }_${ key }` ]\n\t\t\t\tif( text ) return text\n\t\t\t}\n\t\t\t\n\t\t\tconsole.warn( 'Locale tet not found: ' , contexts , key )\n\t\t\t\n\t\t\treturn `<${ key }>`\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_list extends $mol_view {\n\n\t/// style * minHeight <= minimal_height\n\tstyle() {\n\t\treturn ( { ...super.style() , \n\t\t\t\"minHeight\" : this.minimal_height() ,\n\t\t} )\n\t}\n\n\t/// rows /\n\trows() {\n\t\treturn [] as any[]\n\t}\n\n\t/// sub <= rows\n\tsub() {\n\t\treturn this.rows()\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_list extends $.$mol_list {\n\t\t\n\t\t@ $mol_mem()\n\t\trow_offsets() : number[] {\n\t\t\tvar sub = this.sub()\n\t\t\tif( !sub ) return null\n\t\t\t\n\t\t\tlet heightLimit = this.context().$mol_view_visible_height()\n\t\t\tvar offset = 0\n\t\t\t\n\t\t\tvar next : number[] = []\n\t\t\tfor( let child of sub ) {\n\t\t\t\tnext.push( offset )\n\t\t\t\t\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\toffset += child.minimal_height()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( offset > heightLimit ) break\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\trow_context( index : number ) {\n\t\t\tlet context = this.context()\n\t\t\tlet next = Object.create( context )\n\t\t\tnext.$mol_view_visible_height = ()=> {\n\t\t\t\tconst limit = context.$mol_view_visible_height()\n\t\t\t\treturn limit - this.row_offsets()[ index ]\n\t\t\t}\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tsub_visible() {\n\t\t\tvar sub = this.sub()\n\t\t\tif( !sub ) return sub\n\t\t\t\n\t\t\tvar limit = this.row_offsets().length\n\t\t\t\n\t\t\tvar next : $mol_view[] = []\n\t\t\tfor( let i = 0 ; i < limit ; ++ i ) {\n\t\t\t\tconst child = sub[ i ]\n\t\t\t\tif( child == null ) continue \n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.context( this.row_context( i ) )\n\t\t\t\t}\n\t\t\t\tnext.push( child )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tminimal_height() {\n\t\t\tvar height = 0\n\t\t\tvar sub = this.sub()\n\t\t\tif( sub ) sub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\theight += child.minimal_height()\n\t\t\t\t}\n\t\t\t} )\n\t\t\treturn height\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { export class $mol_bar extends $mol_view {\n\n} }\n\n","namespace $ { export class $mol_app_todomvc extends $mol_scroll {\n\n\t/// title @ \\todos\n\ttitle() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"title\" )\n\t}\n\n\t/// Title $mol_view \n\t/// \tminimal_height 142 \n\t/// \tsub / <= title\n\t@ $mol_mem()\n\tTitle() {\n\t\treturn new $mol_view().setup( obj => { \n\t\t\tobj.minimal_height = () => 142\n\t\t\tobj.sub = () => [].concat( this.title() )\n\t\t} )\n\t}\n\n\t/// head_complete_enabled false\n\thead_complete_enabled() {\n\t\treturn false\n\t}\n\n\t/// completed_all?val false\n\t@ $mol_mem()\n\tcompleted_all( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// Head_complete $mol_check \n\t/// \tenabled <= head_complete_enabled \n\t/// \tchecked?val <=> completed_all?val \n\t/// \tsub / \\❯\n\t@ $mol_mem()\n\tHead_complete() {\n\t\treturn new $mol_check().setup( obj => { \n\t\t\tobj.enabled = () => this.head_complete_enabled()\n\t\t\tobj.checked = ( val? : any ) => this.completed_all( val )\n\t\t\tobj.sub = () => [].concat( \"❯\" )\n\t\t} )\n\t}\n\n\t/// task_title_new?val \\\n\t@ $mol_mem()\n\ttask_title_new( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// event_add?event null\n\t@ $mol_mem()\n\tevent_add( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// Add $mol_app_todomvc_add \n\t/// \tvalue?val <=> task_title_new?val \n\t/// \tevent_done?event <=> event_add?event\n\t@ $mol_mem()\n\tAdd() {\n\t\treturn new $mol_app_todomvc_add().setup( obj => { \n\t\t\tobj.value = ( val? : any ) => this.task_title_new( val )\n\t\t\tobj.event_done = ( event? : any ) => this.event_add( event )\n\t\t} )\n\t}\n\n\t/// Head_content / \n\t/// \t<= Head_complete \n\t/// \t<= Add\n\tHead_content() {\n\t\treturn [].concat( this.Head_complete() , this.Add() )\n\t}\n\n\t/// Head $mol_view \n\t/// \tminimal_height 64 \n\t/// \tsub <= Head_content\n\t@ $mol_mem()\n\tHead() {\n\t\treturn new $mol_view().setup( obj => { \n\t\t\tobj.minimal_height = () => 64\n\t\t\tobj.sub = () => this.Head_content()\n\t\t} )\n\t}\n\n\t/// task_rows /\n\ttask_rows() {\n\t\treturn [] as any[]\n\t}\n\n\t/// List $mol_list rows <= task_rows\n\t@ $mol_mem()\n\tList() {\n\t\treturn new $mol_list().setup( obj => { \n\t\t\tobj.rows = () => this.task_rows()\n\t\t} )\n\t}\n\n\t/// pending_message @ \\0 items left\n\tpending_message() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"pending_message\" )\n\t}\n\n\t/// Pending $mol_view sub / <= pending_message\n\t@ $mol_mem()\n\tPending() {\n\t\treturn new $mol_view().setup( obj => { \n\t\t\tobj.sub = () => [].concat( this.pending_message() )\n\t\t} )\n\t}\n\n\t/// filter_all_label @ \\All\n\tfilter_all_label() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"filter_all_label\" )\n\t}\n\n\t/// Filter_all $mol_link \n\t/// \tsub / <= filter_all_label \n\t/// \targ * completed null\n\t@ $mol_mem()\n\tFilter_all() {\n\t\treturn new $mol_link().setup( obj => { \n\t\t\tobj.sub = () => [].concat( this.filter_all_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : null ,\n\t\t})\n\t\t} )\n\t}\n\n\t/// filter_active_label @ \\Active\n\tfilter_active_label() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"filter_active_label\" )\n\t}\n\n\t/// Filter_active $mol_link \n\t/// \tsub / <= filter_active_label \n\t/// \targ * completed false\n\t@ $mol_mem()\n\tFilter_active() {\n\t\treturn new $mol_link().setup( obj => { \n\t\t\tobj.sub = () => [].concat( this.filter_active_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : false ,\n\t\t})\n\t\t} )\n\t}\n\n\t/// filter_completed_label @ \\Completed\n\tfilter_completed_label() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"filter_completed_label\" )\n\t}\n\n\t/// Filter_completed $mol_link \n\t/// \tsub / <= filter_completed_label \n\t/// \targ * completed true\n\t@ $mol_mem()\n\tFilter_completed() {\n\t\treturn new $mol_link().setup( obj => { \n\t\t\tobj.sub = () => [].concat( this.filter_completed_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : true ,\n\t\t})\n\t\t} )\n\t}\n\n\t/// filterOptions / \n\t/// \t<= Filter_all \n\t/// \t<= Filter_active \n\t/// \t<= Filter_completed\n\tfilterOptions() {\n\t\treturn [].concat( this.Filter_all() , this.Filter_active() , this.Filter_completed() )\n\t}\n\n\t/// Filter $mol_bar sub <= filterOptions\n\t@ $mol_mem()\n\tFilter() {\n\t\treturn new $mol_bar().setup( obj => { \n\t\t\tobj.sub = () => this.filterOptions()\n\t\t} )\n\t}\n\n\t/// sanitize_enabled true\n\tsanitize_enabled() {\n\t\treturn true\n\t}\n\n\t/// event_sanitize?event null\n\t@ $mol_mem()\n\tevent_sanitize( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// sanitize_label @ \\Clear completed\n\tsanitize_label() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"sanitize_label\" )\n\t}\n\n\t/// Sanitize $mol_button_minor \n\t/// \tenabled <= sanitize_enabled \n\t/// \tevent_click?event <=> event_sanitize?event \n\t/// \tsub / <= sanitize_label\n\t@ $mol_mem()\n\tSanitize() {\n\t\treturn new $mol_button_minor().setup( obj => { \n\t\t\tobj.enabled = () => this.sanitize_enabled()\n\t\t\tobj.event_click = ( event? : any ) => this.event_sanitize( event )\n\t\t\tobj.sub = () => [].concat( this.sanitize_label() )\n\t\t} )\n\t}\n\n\t/// foot_content / \n\t/// \t<= Pending \n\t/// \t<= Filter \n\t/// \t<= Sanitize\n\tfoot_content() {\n\t\treturn [].concat( this.Pending() , this.Filter() , this.Sanitize() )\n\t}\n\n\t/// Foot $mol_view sub <= foot_content\n\t@ $mol_mem()\n\tFoot() {\n\t\treturn new $mol_view().setup( obj => { \n\t\t\tobj.sub = () => this.foot_content()\n\t\t} )\n\t}\n\n\t/// panels / \n\t/// \t<= Head \n\t/// \t<= List \n\t/// \t<= Foot\n\tpanels() {\n\t\treturn [].concat( this.Head() , this.List() , this.Foot() )\n\t}\n\n\t/// Panel $mol_list rows <= panels\n\t@ $mol_mem()\n\tPanel() {\n\t\treturn new $mol_list().setup( obj => { \n\t\t\tobj.rows = () => this.panels()\n\t\t} )\n\t}\n\n\t/// Page $mol_list sub / \n\t/// \t<= Title \n\t/// \t<= Panel\n\t@ $mol_mem()\n\tPage() {\n\t\treturn new $mol_list().setup( obj => { \n\t\t\tobj.sub = () => [].concat( this.Title() , this.Panel() )\n\t\t} )\n\t}\n\n\t/// sub / <= Page\n\tsub() {\n\t\treturn [].concat( this.Page() )\n\t}\n\n\t/// task_completed!id?val false\n\t@ $mol_mem_key()\n\ttask_completed( id : any , val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// task_title!id?val \\\n\t@ $mol_mem_key()\n\ttask_title( id : any , val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// event_task_drop!id?event null\n\t@ $mol_mem_key()\n\tevent_task_drop( id : any , event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// Task_row!id $mol_app_todomvc_task_row \n\t/// \tcompleted?val <=> task_completed!id?val \n\t/// \ttitle?val <=> task_title!id?val \n\t/// \tevent_drop?event <=> event_task_drop!id?event\n\t@ $mol_mem_key()\n\tTask_row( id : any ) {\n\t\treturn new $mol_app_todomvc_task_row().setup( obj => { \n\t\t\tobj.completed = ( val? : any ) => this.task_completed(id , val )\n\t\t\tobj.title = ( val? : any ) => this.task_title(id , val )\n\t\t\tobj.event_drop = ( event? : any ) => this.event_task_drop(id , event )\n\t\t} )\n\t}\n\n} }\n\nnamespace $ { export class $mol_app_todomvc_add extends $mol_string {\n\n\t/// hint @ \\What needs to be done?\n\thint() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"hint\" )\n\t}\n\n\t/// event_press?event null\n\t@ $mol_mem()\n\tevent_press( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event * keyup?event <=> event_press?event\n\tevent() {\n\t\treturn ( { ...super.event() , \n\t\t\t\"keyup\" : ( event? : any )=> this.event_press( event ) ,\n\t\t} )\n\t}\n\n\t/// event_done?event null\n\t@ $mol_mem()\n\tevent_done( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n} }\n\nnamespace $ { export class $mol_app_todomvc_task_row extends $mol_view {\n\n\t/// minimal_height 64\n\tminimal_height() {\n\t\treturn 64\n\t}\n\n\t/// completed?val false\n\t@ $mol_mem()\n\tcompleted( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// Complete $mol_check \n\t/// \tchecked?val <=> completed?val \n\t/// \tsub /\n\t@ $mol_mem()\n\tComplete() {\n\t\treturn new $mol_check().setup( obj => { \n\t\t\tobj.checked = ( val? : any ) => this.completed( val )\n\t\t\tobj.sub = () => [] as any[]\n\t\t} )\n\t}\n\n\t/// title_hint @ \\Task title\n\ttitle_hint() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"title_hint\" )\n\t}\n\n\t/// title?val \\\n\t@ $mol_mem()\n\ttitle( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// Title $mol_string \n\t/// \thint <= title_hint \n\t/// \tvalue?val <=> title?val\n\t@ $mol_mem()\n\tTitle() {\n\t\treturn new $mol_string().setup( obj => { \n\t\t\tobj.hint = () => this.title_hint()\n\t\t\tobj.value = ( val? : any ) => this.title( val )\n\t\t} )\n\t}\n\n\t/// event_drop?event null\n\t@ $mol_mem()\n\tevent_drop( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// Drop $mol_button \n\t/// \tsub / \\✖\n\t/// \tevent_click?event <=> event_drop?event\n\t@ $mol_mem()\n\tDrop() {\n\t\treturn new $mol_button().setup( obj => { \n\t\t\tobj.sub = () => [].concat( \"✖\" )\n\t\t\tobj.event_click = ( event? : any ) => this.event_drop( event )\n\t\t} )\n\t}\n\n\t/// sub / \n\t/// \t<= Complete \n\t/// \t<= Title \n\t/// \t<= Drop\n\tsub() {\n\t\treturn [].concat( this.Complete() , this.Title() , this.Drop() )\n\t}\n\n\t/// attr * mol_app_todomvc_task_row_completed <= completed?val\n\tattr() {\n\t\treturn ( { ...super.attr() , \n\t\t\t\"mol_app_todomvc_task_row_completed\" : this.completed() ,\n\t\t} )\n\t}\n\n} }\n\n","interface $mol_app_todomvc_task {\n\tcompleted? : boolean\n\ttitle? : string\n}\n\nnamespace $.$mol {\n\t\n\texport class $mol_app_todomvc_add extends $.$mol_app_todomvc_add {\n\t\t\n\t\tevent_press( next? : KeyboardEvent ) {\n\t\t\tswitch( next.keyCode ) {\n\t\t\t\tcase $mol_keyboard_code.enter : return this.event_done( next )\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\texport class $mol_app_todomvc extends $.$mol_app_todomvc {\n\t\t\n\t\ttask_ids( next? : number[] ) : number[] {\n\t\t\treturn $mol_state_local.value( this.state_key( 'mol-todos' ) , next ) || []\n\t\t}\n\t\t\n\t\targ_completed() {\n\t\t\treturn $mol_state_arg.value( this.state_key( 'completed' ) )\n\t\t}\n\n\t\t@ $mol_mem()\n\t\tgroups_completed() {\n\t\t\tvar groups : { [ index : string ] : number[] } = { 'true' : [] , 'false' : [] }\n\t\t\tfor( let id of this.task_ids() ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tgroups[ String( task.completed ) ].push( id )\n\t\t\t}\n\t\t\treturn groups\n\t\t}\n\n\t\t@ $mol_mem()\n\t\ttasks_filtered() {\n\t\t\tvar completed = this.arg_completed()\n\t\t\tif( completed ) {\n\t\t\t\treturn this.groups_completed()[ completed ] || []\n\t\t\t} else {\n\t\t\t\treturn this.task_ids()\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_mem()\n\t\tcompleted_all( next? : boolean ) {\n\t\t\tif( next === void 0 ) return this.groups_completed()[ 'false' ].length === 0\n\t\t\t\n\t\t\tfor( let id of this.groups_completed()[ String( !next ) ] ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tthis.task( id , { title : task.title , completed : next } )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\thead_complete_enabled() {\n\t\t\treturn this.task_ids().length > 0 \n\t\t}\n\n\t\t@ $mol_mem()\n\t\tpending_message() {\n\t\t\tlet count = this.groups_completed()[ 'false' ].length\n\t\t\treturn ( count === 1 ) ? '1 item left' : `${count} items left`\n\t\t}\n\t\t\n\t\t_id_seed = 0\n\n\t\tevent_add( next : Event ) {\n\t\t\tvar title = this.task_title_new() \n\t\t\tif( !title ) return\n\t\t\t\n\t\t\tvar id = ++ this._id_seed\n\t\t\tvar task = { completed : false , title }\n\t\t\tthis.task( id , task )\n\t\t\t\n\t\t\tthis.task_ids( this.task_ids().concat( id ) )\n\t\t\tthis.task_title_new( '' )\n\t\t}\n\n\t\t@ $mol_mem()\n\t\ttask_rows() {\n\t\t\treturn this.tasks_filtered().map( ( id , index )=> this.Task_row( index ) )\n\t\t}\n\t\t\n\t\ttask( id : number , next? : $mol_app_todomvc_task ) {\n\t\t\tconst key = this.state_key( `mol-todos-${id}` )\n\t\t\tif( next === void 0 ) return $mol_state_local.value( key ) || { title : '' , completed : false }\n\t\t\t\n\t\t\t$mol_state_local.value( key , next )\n\t\t\t\n\t\t\treturn next || void 0\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\ttask_completed( index : number , next? : boolean ) {\n\t\t\tvar id = this.tasks_filtered()[ index ]\n\t\t\tif( next === void 0 ) return this.task( id ).completed\n\t\t\t\n\t\t\tthis.task( id , $mol_merge_dict( this.task( id ) , { completed : next } ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\ttask_title( index : number , next? : string ) {\n\t\t\tvar id = this.tasks_filtered()[ index ]\n\t\t\tif( next === void 0 ) return this.task( id ).title\n\t\t\t\n\t\t\tthis.task( id , $mol_merge_dict( this.task( id ) , { title : next } ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tevent_task_drop( index : number , next? : Event ) {\n\t\t\tvar tasks = this.tasks_filtered()\n\t\t\tvar id = tasks[index]\n\t\t\ttasks = tasks.slice( 0 , index ).concat( tasks.slice( index + 1 , tasks.length ) )\n\t\t\tthis.task( id , null )\n\t\t\tthis.task_ids( tasks )\n\t\t}\n\n\t\tevent_sanitize() {\n\t\t\tthis.task_ids( this.task_ids().filter( id => {\n\t\t\t\tif( !this.task( id ).completed ) return true\n\t\t\t\tthis.task( id , null )\n\t\t\t\treturn false\n\t\t\t} ) )\n\t\t}\n\t\t\n\t\tpanels() {\n\t\t\treturn [\n\t\t\t\tthis.Head() , \n\t\t\t\tthis.List() ,\n\t\t\t\tthis.foot_visible() ? this.Foot() : null ,\n\t\t\t]\n\t\t}\n\t\t\n\t\tfoot_visible() {\n\t\t\treturn this.task_ids().length > 0\n\t\t}\n\n\t\tsanitize_enabled() {\n\t\t\treturn this.groups_completed()[ 'true' ].length > 0\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_app_todomvc_demo extends $mol_app_todomvc {\n\n} }\n\n"]} \ No newline at end of file +{"version":3,"sources":["../../../mol.jam.js","../../../dict/dict.ts","../../../dict/dict_select.jam.js","../../../func/func.ts","../../../log/log.web.ts","../../../object/object.ts","../../../set/set.ts","../../../set/set_select.jam.js","../../../defer/defer.ts","../../../state/stack/stack.ts","../../../atom/atom.ie.web.js","../../../atom/atom.ts","../../../mem/mem.ts","../../../window/window.web.ts","../../../dom/context/context.ts","../../../dom/context/context.web.ts","../../../dom/render/render.ts","../../../dom/make/make.ts","../../../view/dom/dom.ts","../../../view/view.ts","../../../view/view.web.ts","../../../view/selection/selection.ts","../../../view/selection/selection.web.ts","../../../string/-view.tree/string.view.tree.ts","../../../string/string.view.ts","../../../keyboard/code.ts","../../../button/-view.tree/button.view.tree.ts","../../../button/button.view.ts","../../../button/-view.tree/button_types.view.tree.ts","../../../merge/dict/dict.ts","../../../state/arg/arg.web.ts","../../../link/-view.tree/link.view.tree.ts","../../../link/link.view.ts","../../../check/-view.tree/check.view.tree.ts","../../../check/check.view.ts","../../../state/session/session.web.ts","../../../scroll/-view.tree/scroll.view.tree.ts","../../../scroll/scroll.view.ts","../../../state/local/local.ts","../../../state/local/local.web.ts","../../../http/request/request.ts","../../../http/resource/resource.ts","../../../file/file.web.ts","../../../locale/locale.ts","../../../list/-view.tree/list.view.tree.ts","../../../list/list.view.ts","../../../bar/-view.tree/bar.view.tree.ts","../-view.tree/todomvc.view.tree.ts","../todomvc.view.ts","../demo/-view.tree/demo.view.tree.ts"],"names":[],"mappings":"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","file":"web.js","sourcesContent":[null,"namespace $ {\n\t\n\texport declare class $mol_dict< Key , Value > {\n\t\tsize : number\n\t\t\n\t\tget( key : Key ) : Value\n\t\t\n\t\tset( key : Key , value : Value ) : this\n\t\t\n\t\tdelete( key : Key ) : void\n\t\t\n\t\thas( key : Key ) : boolean\n\t\t\n\t\tclear() : void\n\t\t\n\t\tkeys() : Key[]\n\t\t\n\t\tvalues() : Value[]\n\t\t\n\t\tentries() : [ Key , Value ][]\n\t\t\n\t\tforEach( handler : ( value : Value , key : Key ) => void ) : void\n\t}\n\t\n\texport class $mol_dict_shim< Key , Value > implements $mol_dict< Key , Value > {\n\t\t\n\t\t_keys : { [ index : string ] : Key[] } = {}\n\t\t_values : { [ index : string ] : Value[] } = {}\n\t\tsize = 0\n\t\t\n\t\tset( key : Key , value : Value ) {\n\t\t\tvar keyStr = String( key )\n\t\t\t\n\t\t\tvar keys = this._keys[ keyStr ]\n\t\t\tif( keys ) {\n\t\t\t\tvar index = keys.indexOf( key )\n\t\t\t\tif( index === -1 ) {\n\t\t\t\t\tindex = keys.length\n\t\t\t\t\tkeys.push( key )\n\t\t\t\t\t++this.size\n\t\t\t\t}\n\t\t\t\tthis._values[ keyStr ][ index ] = value\n\t\t\t} else {\n\t\t\t\tthis._keys[ keyStr ] = [ key ]\n\t\t\t\tthis._values[ keyStr ] = [ value ]\n\t\t\t\t++this.size\n\t\t\t}\n\t\t\t\n\t\t\treturn this\n\t\t}\n\t\t\n\t\tget( key : Key ) {\n\t\t\tvar keyStr = String( key )\n\t\t\t\n\t\t\tvar list = this._keys[ keyStr ]\n\t\t\tif( !list ) return void 0\n\t\t\t\n\t\t\tvar index = list.indexOf( key )\n\t\t\tif( index === -1 ) return void 0\n\t\t\t\n\t\t\treturn this._values[ keyStr ][ index ]\n\t\t}\n\t\t\n\t\thas( key : Key ) {\n\t\t\tvar keyStr = String( key )\n\t\t\t\n\t\t\tvar list = this._keys[ keyStr ]\n\t\t\tif( !list ) return false\n\t\t\t\n\t\t\treturn list.indexOf( key ) !== -1\n\t\t}\n\t\t\n\t\tdelete( key : Key ) {\n\t\t\tvar keyStr = String( key )\n\t\t\t\n\t\t\tvar keys = this._keys[ keyStr ]\n\t\t\tif( !keys ) return\n\t\t\t\n\t\t\tvar index = keys.indexOf( key )\n\t\t\tif( index === -1 ) return\n\t\t\t\n\t\t\tkeys.splice( index , 1 )\n\t\t\tthis._values[ keyStr ].splice( index , 1 )\n\t\t\t\n\t\t\t--this.size\n\t\t}\n\t\t\n\t\tforEach( handle : ( val : Value , key : Key )=> void ) {\n\t\t\tfor( var keyStr in this._keys ) {\n\t\t\t\tif( !this._keys.hasOwnProperty( keyStr ) ) continue\n\t\t\t\tvar values = this._values[ keyStr ]\n\t\t\t\tthis._keys[ keyStr ].forEach(\n\t\t\t\t\t( key , index ) => {\n\t\t\t\t\t\thandle( values[ index ] , key )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\t\n\t\tkeys() {\n\t\t\tvar keys : Key[] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tkeys.push( key )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn keys\n\t\t}\n\t\t\n\t\tvalues() {\n\t\t\tvar values : Value[] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tvalues.push( val )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn values\n\t\t}\n\t\t\n\t\tentries() {\n\t\t\tvar entries : [ Key , Value ][] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tentries.push( [ key , val ] )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn entries\n\t\t}\n\t\t\n\t\tclear() {\n\t\t\tthis._keys = {}\n\t\t\tthis._values = {}\n\t\t\tthis.size = 0\n\t\t}\n\t\t\n\t}\n\t\n}\n",null,"interface Function {\n\tname : string\n}\n\nnamespace $ {\n\t\n\texport var $mol_func_name_dict = new $mol_dict< Function , string >()\n\n\texport function $mol_func_name( func : Function ) : string {\n\t\tif( func.name ) return func.name\n\t\t\n\t\tif( $mol_func_name_dict.has( func ) ) return $mol_func_name_dict.get( func )\n\t\t\n\t\tconst name = Function.prototype.toString.call( func ).match( /^function ([a-z0-9_$]*)/ )[ 1 ]\n\t\t$mol_func_name_dict.set( func , name )\n\t\t\n\t\treturn name\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_log( path : string , values : any[] ) {\n\t\t\n\t\tvar filter = $mol_log.filter()\n\t\tif( filter == null ) return\n\t\tif( path.indexOf( filter ) === -1 ) return\n\t\t\n\t\tvar time = new Date().toLocaleTimeString()\n\t\tconsole.log( time , path , values )\n\t}\n\t\n\texport namespace $mol_log {\n\t\t\n\t\tvar _filter : string\n\t\t\n\t\texport function filter( next? : string ) {\n\t\t\tif( next !== void 0 ) {\n\t\t\t\tif( next == null ) {\n\t\t\t\t\tsessionStorage.removeItem( '$mol_log.filter()' )\n\t\t\t\t} else {\n\t\t\t\t\tsessionStorage.setItem( '$mol_log.filter()' , next )\n\t\t\t\t}\n\t\t\t\t_filter = next\n\t\t\t}\n\t\t\t\n\t\t\tif( _filter !== void 0 ) return _filter\n\t\t\t\n\t\t\treturn _filter = sessionStorage.getItem( '$mol_log.filter()' )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\t/// Common superclass that provides base functionality.\n\texport class $mol_object {\n\t\t\n\t\tClass() {\n\t\t\treturn this.constructor as any\n\t\t}\n\t\t\n\t\tstatic toString() : string {\n\t\t\treturn $mol_func_name( this )\n\t\t}\n\t\t\n\t\t/// Owner object.\n\t\tprivate 'object_owner()' : Object\n\t\t\n\t\tobject_owner( next? : Object ) {\n\t\t\tif( this[ 'object_owner()' ] ) return this[ 'object_owner()' ]\n\t\t\treturn this[ 'object_owner()' ] = next\n\t\t}\n\t\t\n\t\t/// Field in owner where this object is stored.\n\t\tprivate 'object_field()' : string\n\t\t\n\t\tobject_field( next? : string ) {\n\t\t\tif( this[ 'object_field()' ] ) return this[ 'object_field()' ] || ''\n\t\t\treturn this[ 'object_field()' ] = next\n\t\t}\n\t\t\n\t\t/// JS-path to this object from global scope. Can not be redefined.\n\t\ttoString() {\n\t\t\tvar path = ''\n\t\t\t\n\t\t\tvar owner = this.object_owner()\n\t\t\tif( owner ) path = owner.toString()\n\t\t\t\n\t\t\tvar field = this.object_field()\n\t\t\tif( field ) path += '.' + field\n\t\t\t\n\t\t\treturn path\n\t\t}\n\t\t\n\t\ttoJSON() {\n\t\t\treturn this.toString()\n\t\t}\n\t\t\n\t\t/// Helper to override fields in fluent style.\n\t\tsetup( script : ( obj : this )=> void ) : this {\n\t\t\tscript( this )\n\t\t\treturn this\n\t\t}\n\t\t\n\t\t'destroyed()' = false\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next === void 0 ) return this[ 'destroyed()' ]\n\t\t\tthis[ 'destroyed()' ] = next\n\t\t\tthis.log( [ '.destroyed()' , next ] )\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tlog( values : any[] ) {\n\t\t\tif( $mol_log.filter() == null ) return\n\t\t\t$mol_log( this.toString() , values )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport declare class $mol_set< Value > {\n\t\tsize : number\n\t\t\n\t\tadd( key : Value ) : this\n\t\t\n\t\tdelete( key : Value ) : void\n\t\t\n\t\thas( key : Value ) : boolean\n\t\t\n\t\tclear() : void\n\t\t\n\t\tkeys() : Value[]\n\t\t\n\t\tvalues() : Value[]\n\t\t\n\t\tentries() : [ Value , Value ][]\n\t\t\n\t\tforEach( handler : ( key : Value , value : Value ) => void ) : void\n\t}\n\t\n\texport class $mol_set_shim< Value > implements $mol_set< Value > {\n\t\t\n\t\t_index : { [ index : string ] : Value[] } = {}\n\t\tsize = 0\n\t\t\n\t\tadd( value : Value ) {\n\t\t\tvar key = String( value )\n\t\t\t\n\t\t\tvar list = this._index[ key ]\n\t\t\tif( list ) {\n\t\t\t\tif( list.indexOf( value ) !== -1 ) return this\n\t\t\t\tlist.push( value )\n\t\t\t} else {\n\t\t\t\tlist = this._index[ key ] = [ value ]\n\t\t\t}\n\t\t\t\n\t\t\t++this.size\n\t\t\t\n\t\t\treturn this\n\t\t}\n\t\t\n\t\thas( value : Value ) {\n\t\t\tvar key = String( value )\n\t\t\t\n\t\t\tvar list = this._index[ key ]\n\t\t\tif( !list ) return false\n\t\t\t\n\t\t\treturn list.indexOf( value ) !== -1\n\t\t}\n\t\t\n\t\tdelete( value : Value ) {\n\t\t\tvar key = String( value )\n\t\t\t\n\t\t\tvar list = this._index[ key ]\n\t\t\tif( !list ) return\n\t\t\t\n\t\t\tvar index = list.indexOf( value )\n\t\t\tif( index === -1 ) return\n\t\t\t\n\t\t\tlist.splice( index , 1 )\n\t\t\t--this.size\n\t\t}\n\t\t\n\t\tforEach( handle : ( val : Value , key : Value )=> void ) {\n\t\t\tfor( var key in this._index ) {\n\t\t\t\tif( !this._index.hasOwnProperty( key ) ) continue\n\t\t\t\tthis._index[ key ].forEach( ( val , index ) => handle( val , val ) )\n\t\t\t}\n\t\t}\n\t\t\n\t\tkeys() {\n\t\t\tvar keys : Value[] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tkeys.push( key )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn keys\n\t\t}\n\t\t\n\t\tvalues() {\n\t\t\tvar values : Value[] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tvalues.push( val )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn values\n\t\t}\n\t\t\n\t\tentries() {\n\t\t\tvar entries : [ Value , Value ][] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tentries.push( [ val , key ] )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn entries\n\t\t}\n\t\t\n\t\tclear() {\n\t\t\tthis._index = {}\n\t\t\tthis.size = 0\n\t\t}\n\t\t\n\t}\n\t\n}\n",null,"namespace $ {\n\t\n\texport class $mol_defer extends $mol_object {\n\t\t\n\t\tconstructor( public run : ()=> void ) {\n\t\t\tsuper()\n\t\t\t$mol_defer.add( this )\n\t\t}\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next ) $mol_defer.drop( this )\n\t\t\treturn super.destroyed( next )\n\t\t}\n\t\t\n\t\tstatic all : $mol_defer[] = []\n\t\tstatic timer = 0\n\t\t\n\t\tstatic scheduleNative : ( handler : ()=> void ) => number = ( typeof requestAnimationFrame == 'function' )\n\t\t\t? handler => requestAnimationFrame( handler )\n\t\t\t: handler => setTimeout( handler , 16 )\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.timer ) return\n\t\t\t\n\t\t\tthis.timer = this.scheduleNative(\n\t\t\t\t()=> {\n\t\t\t\t\tthis.timer = 0\n\t\t\t\t\tthis.run()\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t\t\n\t\tstatic unschedule() {\n\t\t\tif( !this.timer ) return\n\t\t\t\n\t\t\tcancelAnimationFrame( this.timer )\n\t\t\tthis.timer = 0\n\t\t}\n\t\t\n\t\tstatic add( defer : $mol_defer ) {\n\t\t\tthis.all.push( defer )\n\t\t\tthis.schedule()\n\t\t}\n\t\t\n\t\tstatic drop( defer : $mol_defer ) {\n\t\t\tvar index = this.all.indexOf( defer )\n\t\t\tif( index >= 0 ) this.all.splice( index , 1 )\n\t\t}\n\t\t\n\t\tstatic run() {\n\t\t\tif( this.all.length === 0 ) return\n\t\t\tthis.schedule()\n\t\t\tfor( var defer : $mol_defer ; defer = this.all.pop() ; ) defer.run()\n\t\t\t//this.unschedule()\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\t/// Global storage of temporary state\n\texport var $mol_state_stack = new $mol_dict< string , any >()\n\t\n}\n",null,"declare var Proxy : any\n\nnamespace $ {\n\t\n\texport enum $mol_atom_status {\n\t\tobsolete = 'obsolete' as any ,\n\t\tchecking = 'checking' as any ,\n\t\tpulling = 'pulling' as any ,\n\t\tactual = 'actual' as any ,\n\t}\n\t\n\texport class $mol_atom< Value > extends $mol_object {\n\t\t\n\t\tmasters : $mol_set< $mol_atom > = null\n\t\tslaves : $mol_set< $mol_atom > = null\n\t\t\n\t\tstatus = $mol_atom_status.obsolete\n\t\tautoFresh = true\n\t\t\n\t\thandler : ( next? : Value|Error , force? : $mol_atom_force )=> Value\n\t\thost : { [ key : string ] : any }\n\t\tfield : string\n\t\t\n\t\tconstructor(\n\t\t\thost : any ,\n\t\t\thandler : ( next? : Value|Error , force? : $mol_atom_force )=> Value ,\n\t\t\tfield = 'value()'\n\t\t) {\n\t\t\tsuper()\n\t\t\t\n\t\t\tthis.handler = handler\n\t\t\tthis.host = Object( host )\n\t\t\tthis.field = field || 'value()'\n\t\t}\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next ) {\n\t\t\t\tthis.unlink()\n\t\t\t\t\n\t\t\t\tconst host = this.host\n\t\t\t\tconst value = host[ this.field ]\n\t\t\t\tif( value instanceof $mol_object ) {\n\t\t\t\t\tif( ( value.object_owner() === host ) && ( value.object_field() === this.field ) ) {\n\t\t\t\t\t\tvalue.destroyed( true );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\thost[ this.field ] = void null\n\t\t\t\thost[ this.field + '@' ] = void null\n\t\t\t\t\n\t\t\t\tthis.status = $mol_atom_status.obsolete\n\t\t\t}\n\t\t\t\n\t\t\treturn super.destroyed( next )\n\t\t}\n\t\t\n\t\tunlink() {\n\t\t\tthis.disobey_all()\n\t\t\tthis.check_slaves()\n\t\t}\n\t\t\n\t\ttoString() {\n\t\t\treturn `${ this.host }.${ this.field }@`\n\t\t}\n\t\t\n\t\tget( force? : $mol_atom_force ) {\n\t\t\tif( this.status === $mol_atom_status.pulling ) {\n\t\t\t\tthrow new Error( `Cyclic atom dependency of ${ this }` )\n\t\t\t}\n\t\t\t\n\t\t\tthis.actualize( force )\n\t\t\t\n\t\t\tconst slave = $mol_atom.stack[0]\n\t\t\tif( slave ) this.lead( slave )\n\t\t\tif( slave ) slave.obey( this )\n\t\t\t\n\t\t\tconst value : Value = this.host[ this.field ]\n\t\t\t\n\t\t\tif( value instanceof Error ) {\n\t\t\t\tif( typeof Proxy !== 'function' ) throw value\n\t\t\t\t//if(!( value instanceof $mol_atom_wait )) throw value\n\t\t\t}\n\t\t\t\n\t\t\treturn value\n\t\t}\n\t\t\n\t\tactualize( force? : $mol_atom_force ) {\n\t\t\t\n\t\t\t//this.log([ 'actualize' ])\n\t\t\t\n\t\t\tif( !force && this.status === $mol_atom_status.actual ) return\n\t\t\t\n\t\t\tconst slave = $mol_atom.stack[0]\n\t\t\t$mol_atom.stack[0] = this\n\t\t\t\n\t\t\tif( !force && this.status === $mol_atom_status.checking ) {\n\t\t\t\t\n\t\t\t\tthis.masters.forEach(\n\t\t\t\t\tmaster => {\n\t\t\t\t\t\tif( this.status !== $mol_atom_status.checking ) return\n\t\t\t\t\t\tmaster.actualize()\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tif( this.status === $mol_atom_status.checking ) {\n\t\t\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif( force || this.status !== $mol_atom_status.actual ) {\n\t\t\t\t\n\t\t\t\tconst oldMasters = this.masters\n\t\t\t\tthis.masters = null\n\t\t\t\t\n\t\t\t\tif( oldMasters ) oldMasters.forEach(\n\t\t\t\t\tmaster => {\n\t\t\t\t\t\tmaster.dislead( this )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tthis.status = $mol_atom_status.pulling\n\t\t\t\tconst next = this.pull( force )\n\t\t\t\t\n\t\t\t\tthis.push( next )\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t$mol_atom.stack[0] = slave\n\t\t}\n\t\t\n\t\tpull( force? : $mol_atom_force ) {\n\t\t\ttry {\n\t\t\t\treturn this.handler( this._next , force )\n\t\t\t} catch( error ) {\n\t\t\t\tif( error[ '$mol_atom_catched' ] ) return error\n\t\t\t\tif( error instanceof $mol_atom_wait ) return error\n\t\t\t\t\n\t\t\t\tconsole.error( error.stack || error )\n\t\t\t\t\n\t\t\t\tif(!( error instanceof Error )) {\n\t\t\t\t\terror = new Error( error.stack || error )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\terror['$mol_atom_catched'] = true\n\t\t\t\treturn error\n\t\t\t}\n\t\t}\n\t\t\n\t\t_next : Value|Error\n\t\t\n\t\tset( next : Value ) : Value {\n\t\t\tconst next_normal = this.normalize( next , this._next )\n\t\t\tif( next_normal === this._next ) return this.get()\n\t\t\tif( next_normal === this.host[ this.field ] ) return this.get()\n\t\t\t\n\t\t\tthis._next = next_normal\n\t\t\tthis.obsolete()\n\t\t\treturn this.get()\n\t\t}\n\t\t\n\t\tnormalize( next : Value , prev : Value|Error ) : Value {\n\t\t\tif( next === prev ) return next\n\t\t\t\n\t\t\tif( ( next instanceof Array ) && ( prev instanceof Array ) && ( next.length === prev.length ) ) {\n\t\t\t\tfor( let i = 0 ; i < next.length ; ++i ) {\n\t\t\t\t\tif( next[ i ] !== prev[ i ] ) return next as any\n\t\t\t\t}\n\t\t\t\treturn prev as any\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tpush( next_raw : Value|Error ) {\n\t\t\tthis._next = void null\n\t\t\t\n\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\n\t\t\tconst host = this.host\n\t\t\tconst prev = host[ this.field ]\n\t\t\t\n\t\t\tif( next_raw === void null ) return prev\n\t\t\t\n\t\t\tlet next = ( next_raw instanceof Error ) ? next_raw : this.normalize( next_raw , prev )\n\t\t\t\n\t\t\tif( next === prev ) return prev\n\t\t\t\n\t\t\tif( next instanceof $mol_object ) {\n\t\t\t\tnext.object_field( this.field )\n\t\t\t\tnext.object_owner( host )\n\t\t\t}\n\t\t\t\n\t\t\tif(( typeof Proxy === 'function' )&&( next instanceof Error )) {\n\t\t\t\tnext = new Proxy( next , {\n\t\t\t\t\tget( target : Error ) {\n\t\t\t\t\t\tthrow target.valueOf()\n\t\t\t\t\t} ,\n\t\t\t\t\townKeys( target : Error ) {\n\t\t\t\t\t\tthrow target.valueOf()\n\t\t\t\t\t} ,\n\t\t\t\t} )\n\t\t\t}\n\t\t\t\n\t\t\thost[ this.field ] = next\n\t\t\tthis.log( [ 'push' , next , prev ] )\n\t\t\t\n\t\t\tthis.obsolete_slaves()\n\t\t\t\n\t\t\treturn next as Value\n\t\t}\n\t\t\n\t\tobsolete_slaves() {\n\t\t\tif( !this.slaves ) return\n\t\t\t\n\t\t\tthis.slaves.forEach( slave => slave.obsolete() )\n\t\t}\n\t\t\n\t\tcheck_slaves() {\n\t\t\tif( this.slaves ) {\n\t\t\t\tthis.slaves.forEach( slave => slave.check() )\n\t\t\t} else {\n\t\t\t\tif( this.autoFresh ) $mol_atom.actualize( this )\n\t\t\t}\n\t\t}\n\t\t\n\t\tcheck() {\n\t\t\t//if( this.status === $mol_atom_status.pulling ) {\n\t\t\t//\tthrow new Error( `May be obsolated while pulling ${ this }` )\n\t\t\t//}\n\t\t\t\n\t\t\tif( this.status === $mol_atom_status.actual ) {\n\t\t\t\t//this.log([ 'checking' ])\n\t\t\t\tthis.status = $mol_atom_status.checking\n\t\t\t\t\n\t\t\t\tthis.check_slaves()\n\t\t\t}\n\t\t}\n\t\t\n\t\tobsolete() : Value {\n\t\t\tif( this.status === $mol_atom_status.obsolete ) return\n\t\t\t\n\t\t\t//if( this.status === $mol_atom_status.pulling ) {\n\t\t\t//\tthrow new Error( `Obsolated while pulling ${ this }` )\n\t\t\t//} \n\t\t\t\n\t\t\tthis.log( [ 'obsolete' ] )\n\t\t\t\n\t\t\tthis.status = $mol_atom_status.obsolete\n\t\t\t\n\t\t\tthis.check_slaves()\n\t\t\t\n\t\t\treturn void null\n\t\t}\n\t\t\n\t\tlead( slave : $mol_atom ) {\n\t\t\tif( !this.slaves ) {\n\t\t\t\tthis.slaves = new $mol_set<$mol_atom>()\n\t\t\t\t$mol_atom.unreap( this )\n\t\t\t}\n\t\t\tthis.slaves.add( slave )\n\t\t}\n\t\t\n\t\tdislead( slave : $mol_atom ) {\n\t\t\tif( !this.slaves ) return\n\t\t\t\n\t\t\tif( this.slaves.size === 1 ) {\n\t\t\t\tthis.slaves = null\n\t\t\t\t$mol_atom.reap( this )\n\t\t\t} else {\n\t\t\t\tthis.slaves.delete( slave )\n\t\t\t}\n\t\t}\n\t\t\n\t\tobey( master : $mol_atom ) {\n\t\t\tif( !this.masters ) this.masters = new $mol_set< $mol_atom >()\n\t\t\tthis.masters.add( master )\n\t\t}\n\t\t\n\t\tdisobey( master : $mol_atom ) {\n\t\t\tif( !this.masters ) return\n\t\t\tthis.masters.delete( master )\n\t\t}\n\t\t\n\t\tdisobey_all() {\n\t\t\tif( !this.masters ) return\n\t\t\t\n\t\t\tthis.masters.forEach( master => master.dislead( this ) )\n\t\t\t\n\t\t\tthis.masters = null\n\t\t}\n\t\t\n\t\tvalue( next? : Value , force? : $mol_atom_force ) {\n\t\t\tif( next === void null ) {\n\t\t\t\treturn this.get( force )\n\t\t\t} else {\n\t\t\t\tif( force ) {\n\t\t\t\t\treturn this.push( next )\n\t\t\t\t} else {\n\t\t\t\t\treturn this.set( next )\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic stack = [ null ] as $mol_atom[]\n\t\tstatic updating : $mol_atom[] = []\n\t\tstatic reaping = new $mol_set< $mol_atom >()\n\t\tstatic scheduled = false\n\t\t\n\t\tstatic actualize( atom : $mol_atom ) {\n\t\t\t$mol_atom.updating.push( atom )\n\t\t\t$mol_atom.schedule()\n\t\t}\n\t\t\n\t\tstatic reap( atom : $mol_atom ) {\n\t\t\t$mol_atom.reaping.add( atom )\n\t\t\t$mol_atom.schedule()\n\t\t}\n\t\t\n\t\tstatic unreap( atom : $mol_atom ) {\n\t\t\t$mol_atom.reaping.delete( atom )\n\t\t}\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.scheduled ) return\n\t\t\t\n\t\t\tnew $mol_defer(\n\t\t\t\t() => {\n\t\t\t\t\tif( !this.scheduled ) return\n\t\t\t\t\tthis.scheduled = false\n\t\t\t\t\tthis.sync()\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\tthis.scheduled = true\n\t\t}\n\t\t\n\t\tstatic sync() {\n\t\t\t$mol_log( '$mol_atom.sync' , [] )\n\t\t\tthis.schedule()\n\t\t\t\n\t\t\twhile( this.updating.length ) {\n\t\t\t\tconst atom = this.updating.shift()\n\t\t\t\tif( this.reaping.has( atom ) ) continue\n\t\t\t\tif( !atom.destroyed() ) atom.get()\n\t\t\t}\n\t\t\t\n\t\t\twhile( this.reaping.size ) {\n\t\t\t\tthis.reaping.forEach(\n\t\t\t\t\tatom => {\n\t\t\t\t\t\tthis.reaping.delete( atom )\n\t\t\t\t\t\tif( !atom.slaves ) atom.destroyed( true )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\t\n\t\t\tthis.scheduled = false\n\t\t}\n\t\t\n\t}\n\t\n\t$mol_state_stack.set( '$mol_atom.stack' , $mol_atom.stack )\n\t\n\texport class $mol_atom_wait extends Error {\n\t\tname = '$mol_atom_wait'\n\t\t\n\t\tconstructor( public message = 'Wait...' ) {\n\t\t\tsuper( message )\n\t\t\tconst error : any = new Error( message )\n\t\t\terror.name = this.name\n\t\t\terror['__proto__'] = $mol_atom_wait.prototype\n\t\t\treturn error\n\t\t}\n\t}\n\t\n\texport class $mol_atom_force extends Object {\n\t\t$mol_atom_force : boolean\n\t\tstatic $mol_atom_force : boolean\n\t}\n\t\n\texport function $mol_atom_task< Value >(\n\t\thost : any ,\n\t\thandler : ()=> Value ,\n\t) {\n\t\tconst atom = new $mol_atom(\n\t\t\thost ,\n\t\t\t() => {\n\t\t\t\ttry {\n\t\t\t\t\thandler()\n\t\t\t\t} catch( error ) {\n\t\t\t\t\tif(!( error instanceof $mol_atom_wait )) atom.destroyed( true )\n\t\t\t\t\tthrow error\n\t\t\t\t}\n\t\t\t\tatom.destroyed( true )\n\t\t\t} ,\n\t\t)\n\t\t\n\t\t$mol_atom.actualize( atom )\n\t\t\n\t\treturn atom\n\t}\n\t\n}\n","namespace $ {\n\t\n\t/// Creates the decorator for caching result value by json-key passed as first argument.\n\t/// Method must be a polymorphic property (getter/setter/getter+setter).\n\texport function $mol_mem< Host , Value >(\n\t\tconfig? : {\n\t\t\tlazy? : boolean\n\t\t}\n\t) {\n\t\t\n\t\treturn function(\n\t\t\tobj : Host ,\n\t\t\tname : string ,\n\t\t\tdescr : TypedPropertyDescriptor< ( next? : Value , force? : $mol_atom_force )=> Value >\n\t\t) {\n\t\t\tconst value = descr.value\n\t\t\t\n\t\t\tdescr.value = function( next? : Value , force? : $mol_atom_force ) {\n\t\t\t\tconst host : any = this\n\t\t\t\tconst field = name + \"()\"\n\t\t\t\tconst fieldA = field + '@'\n\t\t\t\t\n\t\t\t\tlet atom : $mol_atom = host[ fieldA ]\n\t\t\t\tif( !atom ) {\n\t\t\t\t\tif( force && ( next === void null ) ) return next\n\t\t\t\t\t\n\t\t\t\t\thost[ fieldA ] = atom = new $mol_atom(\n\t\t\t\t\t\thost ,\n\t\t\t\t\t\tvalue.bind( host ) as any , // FIXME: type checking\n\t\t\t\t\t\tfield ,\n\t\t\t\t\t)\n\t\t\t\t\tif( config ) atom.autoFresh = !config.lazy\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn atom.value( next , force )\n\t\t\t}\n\t\t\t\n\t\t\tvoid( (descr.value)[ 'value' ] = value )\n\t\t}\n\t\t\n\t}\n\t\n\texport function $mol_mem_key< Host , Key , Value >(\n\t\tconfig? : {\n\t\t\tlazy? : boolean\n\t\t}\n\t) {\n\t\t\n\t\treturn function(\n\t\t\tobj : Host ,\n\t\t\tname : string ,\n\t\t\tdescr : TypedPropertyDescriptor< ( key : Key , next? : Value , force? : $mol_atom_force )=> Value >\n\t\t) {\n\t\t\tconst value = descr.value\n\n\t\t\tdescr.value = function( key : Key , next? : Value , force? : $mol_atom_force ) {\n\t\t\t\tconst host : any = this\n\t\t\t\tconst field = name + \"(\" + JSON.stringify( key ) + \")\"\n\t\t\t\tconst fieldA = field + '@'\n\t\t\t\t\n\t\t\t\tlet atom : $mol_atom = host[ fieldA ]\n\t\t\t\tif( !atom ) {\n\t\t\t\t\tif( force && ( next === void null ) ) return next\n\t\t\t\t\t\n\t\t\t\t\thost[ fieldA ] = atom = new $mol_atom(\n\t\t\t\t\t\thost ,\n\t\t\t\t\t\tvalue.bind( host , key ) as any , // FIXME: type checking\n\t\t\t\t\t\tfield ,\n\t\t\t\t\t)\n\t\t\t\t\tif( config ) atom.autoFresh = !config.lazy\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn atom.value( next , force )\n\t\t\t}\n\t\t\t\n\t\t\tvoid( (descr.value)[ 'value' ] = value )\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\texport class $mol_window extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic size( next? : {\n\t\t\twidth : number\n\t\t\theight : number\n\t\t} ) {\n\t\t\treturn next || {\n\t\t\t\twidth : window.innerWidth ,\n\t\t\t\theight : window.innerHeight ,\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\twindow.addEventListener( 'resize' , ()=> {\n\t\t$mol_window.size( null )\n\t} )\n\t\n}\n","namespace $ {\n\t\n\texport var $mol_dom_context : Window & {\n\t\tNode : typeof Node\n\t\tElement : typeof Element\n\t\tHTMLElement : typeof HTMLElement\n\t\tXMLHttpRequest : typeof XMLHttpRequest\n\t}\n\t\n}\n","namespace $ {\n\t\n\t$mol_dom_context = window as any\n\t\n}\n","namespace $ {\n\t\n\texport interface $mol_dom_render_config {\n\t\tchildNodes? : NodeList | Array< Node | string | number | boolean | { render : ()=> Node } >\n\t\tattributes? : { [ key : string ] : string|number|boolean }\n\t\tstyle? : { [ key : string ] : string|number }\n\t\tevents? : { [ key : string ] : ( event : Event )=> any }\n\t\tevents_async? : { [ key : string ] : ( event : Event )=> any }\n\t\t[ key : string ] : any\n\t}\n\t\n\texport function $mol_dom_render( el : Element , config : $mol_dom_make_config ) {\n\t\tconst document = el.ownerDocument\n\t\t\n\t\tfor( let key in config ) {\n\t\t\tswitch( key ) {\n\t\t\t\tcase 'localName' : break\n\t\t\t\tcase 'namespaceURI' : break\n\t\t\t\t\n\t\t\t\tcase 'childNodes' : {\n\t\t\t\t\tif( !config.childNodes ) break\n\t\t\t\t\t$mol_dom_render_childNodes( el , config.childNodes )\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcase 'attributes' : {\n\t\t\t\t\tif( !config.attributes ) break\n\t\t\t\t\t$mol_dom_render_attributes( el , config.attributes )\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcase 'style' : {\n\t\t\t\t\tif( !config.style ) break\n\t\t\t\t\t$mol_dom_render_style( el , config.style )\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcase 'events' : {\n\t\t\t\t\t$mol_dom_render_event( el , config.events )\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcase 'events_async' : {\n\t\t\t\t\t$mol_dom_render_event_async( el , config.events_async )\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tdefault : {\n\t\t\t\t\tif( el[ key ] !== config[ key ] ) {\n\t\t\t\t\t\tel[ key ] = config[ key ]\n\t\t\t\t\t\tif( el[ key ] !== config[ key ] ) {\n\t\t\t\t\t\t\tconst setter = ()=> {\n\t\t\t\t\t\t\t\tel.removeEventListener( 'DOMNodeInsertedIntoDocument' , setter , { passive : true } as any )\n\t\t\t\t\t\t\t\tnew $mol_defer( ()=> {\n\t\t\t\t\t\t\t\t\tel[ key ] = config[ key ]\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tel.addEventListener( 'DOMNodeInsertedIntoDocument' , setter , { passive : true } as any )\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn el\n\t}\n\t\n\texport function $mol_dom_render_childNodes(\n\t\tel : Element ,\n\t\tchildNodes? : NodeList | Array< Node | string | number | boolean | { render : ()=> Node } >\n\t) {\n\t\tconst nodes = [] as ( Node | string )[]\n\t\t\n\t\tfor( let i = 0 ; i < childNodes.length ; ++i ) {\n\t\t\tlet node = childNodes[ i ] as any\n\t\t\tif( node == null ) continue\n\t\t\tif( Object( node ) === node ) {\n\t\t\t\tif( node[ 'render' ] ) node = node[ 'render' ]()\n\t\t\t\tnodes.push( node )\n\t\t\t} else {\n\t\t\t\tnodes.push( String( node ) )\n\t\t\t}\n\t\t}\n\t\t\n\t\tlet nextNode = el.firstChild\n\t\tfor( let view_ of nodes ) {\n\t\t\tconst view = view_.valueOf() as Node\n\t\t\t\n\t\t\tif( view instanceof $mol_dom_context.Node ) {\n\t\t\t\t\n\t\t\t\twhile( true ) {\n\t\t\t\t\tif( !nextNode ) {\n\t\t\t\t\t\tel.appendChild( view )\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tif( nextNode == view ) {\n\t\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t\t\tbreak\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif( nodes.indexOf( nextNode ) === -1 ) {\n\t\t\t\t\t\t\tconst nn = nextNode.nextSibling\n\t\t\t\t\t\t\tel.removeChild( nextNode )\n\t\t\t\t\t\t\tnextNode = nn\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tel.insertBefore( view , nextNode )\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\tif( nextNode && nextNode.nodeName === '#text' ) {\n\t\t\t\t\tnextNode.nodeValue = String( view )\n\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t} else {\n\t\t\t\t\tconst textNode = $mol_dom_context.document.createTextNode( String( view ) )\n\t\t\t\t\tel.insertBefore( textNode , nextNode )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\twhile( nextNode ) {\n\t\t\tconst currNode = nextNode\n\t\t\tnextNode = currNode.nextSibling\n\t\t\tel.removeChild( currNode )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_attributes(\n\t\tel : Element ,\n\t\tattrs? : { [ key : string ] : string|number|boolean }\n\t) {\n\t\tfor( let name in attrs ) {\n\t\t\tlet val = attrs[ name ] as any\n\t\t\tif( el.getAttribute( name ) === val ) continue\n\t\t\tif( val === null || val === false ) el.removeAttribute( name )\n\t\t\telse el.setAttribute( name , String( val ) )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_style(\n\t\tel : Element ,\n\t\tstyles? : { [ key : string ] : string|number }\n\t) {\n\t\tfor( let name in styles ) {\n\t\t\tlet val = styles[ name ]\n\t\t\tif( typeof val === 'number' ) val = `${ val }px`\n\t\t\t\n\t\t\tconst style = ( el ).style as any\n\t\t\tif( val !== style[ name ] ) style[ name ] = val\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_event(\n\t\tel : Element ,\n\t\tevents? : { [ key : string ] : ( event : Event )=> any }\n\t) {\n\t\tfor( let name in events ) {\n\t\t\tel.addEventListener( name , events[ name ] )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_event_async(\n\t\tel : Element ,\n\t\tevents? : { [ key : string ] : ( event : Event )=> any }\n\t) {\n\t\tfor( let name in events ) {\n\t\t\tel.addEventListener( name , events[ name ] , { passive : true } as any )\n\t\t}\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport interface $mol_dom_make_config extends $mol_dom_render_config {\n\t\tid? : string\n\t\tlocalName? : string\n\t\tnamespaceURI? : string\n\t}\n\t\n\texport function $mol_dom_make( config : $mol_dom_make_config ) {\n\t\tconst document = $mol_dom_context.document\n\t\t\n\t\tlet el = config.id && document.getElementById( config.id ) as any\n\t\tif( !el ) {\n\t\t\tconst name = config.localName || 'span'\n\t\t\tconst space = config.namespaceURI || 'http://www.w3.org/1999/xhtml'\n\t\t\tel = document.createElementNS( space , name )\n\t\t}\n\t\t\n\t\treturn $mol_dom_render( el , config )\n\t}\n\t\n}\n","declare class WeakMap< Key , Value > {\n\tget( key : Key ) : Value\n\tset( key : Key , value : Value ) : this\n}\n\nnamespace $ {\n\t\n\texport class $mol_view_dom extends $mol_object {\n\t\t\n\t\tstatic nodes = new ( WeakMap || $mol_dict )< $mol_view , Element >()\n\t\t\n\t\tstatic node( view : $mol_view ) {\n\t\t\tlet node = $mol_view_dom.nodes.get( view )\n\t\t\tif( !node ) {\n\t\t\t\tnode = $mol_dom_make(\n\t\t\t\t\t{\n\t\t\t\t\t\tlocalName : view.dom_name() ,\n\t\t\t\t\t\tnamespaceURI : view.dom_name_space() ,\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t$mol_view_dom.mount( view , node )\n\t\t\t}\n\t\t\treturn node\n\t\t}\n\t\t\n\t\tstatic mount( view : $mol_view , node : Element ) {\n\t\t\t$mol_view_dom.nodes.set( view , node )\n\t\t\t\n\t\t\t$mol_dom_render(\n\t\t\t\tnode , {\n\t\t\t\t\tid : view.toString() ,\n\t\t\t\t\tattributes : view.attr_static() ,\n\t\t\t\t\tevents : view.event() ,\n\t\t\t\t\tevents_async : view.event_async() ,\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\tfor( let plugin of view.plugins() ) {\n\t\t\t\t$mol_view_dom.nodes.set( plugin , node )\n\t\t\t\t$mol_dom_render(\n\t\t\t\t\tnode , {\n\t\t\t\t\t\tattributes : plugin.attr_static() ,\n\t\t\t\t\t\tevents : plugin.event() ,\n\t\t\t\t\t\tevents_async : plugin.event_async() ,\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\t\n\t\t\treturn node\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport let $mol_view_context = <$mol_view_context> {}\n\t\n\texport interface $mol_view_context {\n\t\t$mol_view_visible_width() : number\n\t\t$mol_view_visible_height() : number\n\t\t$mol_view_state_key( suffix : string ) : string\n\t}\n\t\n\t$mol_view_context.$mol_view_visible_width = () => $mol_window.size().width\n\t$mol_view_context.$mol_view_visible_height = () => $mol_window.size().height\n\t$mol_view_context.$mol_view_state_key = ( suffix : string )=> suffix\n\n\t/// Reactive statefull lazy ViewModel\n\texport class $mol_view extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic Root( id : number ) {\n\t\t\treturn new this\n\t\t}\n\t\t\n\t\ttitle() : string {\n\t\t\treturn this.Class().toString()\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tfocused ( next?: boolean ) {\n\t\t\tlet node = $mol_view_dom.node( this )\n\t\t\tconst value = $mol_view_selection.focused( next === void 0 ? void 0 : [ node ] )\n\t\t\treturn value.indexOf( node ) !== -1\n\t\t} \n\t\t\n\t\t@ $mol_mem()\n\t\tcontext( next? : $mol_view_context ) {\n\t\t\treturn next || $mol_view_context\n\t\t}\n\t\t\n\t\tcontext_sub() {\n\t\t\treturn this.context()\n\t\t}\n\t\t\n\t\tstate_key( suffix = '' ) {\n\t\t\treturn this.context().$mol_view_state_key( suffix )\n\t\t}\n\t\t\n\t\t/// Name of element that created when element not found in DOM\n\t\tdom_name() {\n\t\t\treturn this.constructor.toString().replace( '$' , '' )\n\t\t}\n\t\t\n\t\t/// NameSpace of element that created when element not found in DOM\n\t\tdom_name_space() { return 'http://www.w3.org/1999/xhtml' }\n\t\t\n\t\t/// Raw child views\n\t\tsub() {\n\t\t\treturn > null\n\t\t}\n\t\t\n\t\t/// Visible sub views with defined context()\n\t\t/// Render all by default\n\t\tsub_visible() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return sub\n\t\t\t\n\t\t\tconst context = this.context_sub()\n\t\t\tsub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.context( context )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn sub\n\t\t}\n\t\t\n\t\t/// Minimal height that used for lazy rendering\n\t\t@ $mol_mem()\n\t\tminimal_width() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return 0\n\t\t\t\n\t\t\tlet min = 0\n\t\t\tsub.forEach( view => {\n\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\tmin = Math.max( min , view.minimal_width() )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn min\n\t\t}\n\t\t\n\t\t/// Minimal width that used for lazy rendering\n\t\t@ $mol_mem()\n\t\tminimal_height() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return 0\n\t\t\t\n\t\t\tlet min = 0\n\t\t\tsub.forEach( view => {\n\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\tmin = Math.max( min , view.minimal_height() )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn min\n\t\t}\n\t\t\n\t\t'view_classes()' : Function[]\n\t\tview_classes() {\n\t\t\tconst proto = Object.getPrototypeOf( this ) as $mol_view\n\t\t\tif( this[ 'view_classes()' ] ) return this[ 'view_classes()' ]\n\t\t\t\n\t\t\tlet current = proto\n\t\t\tconst classes = [] as Function[]\n\t\t\t\n\t\t\twhile( current ) {\n\t\t\t\tclasses.push( current.constructor )\n\t\t\t\tif(!( current instanceof $mol_view )) break\n\t\t\t\tcurrent = Object.getPrototypeOf( current )\n\t\t\t}\n\t\t\t\n\t\t\treturn this['view_classes()'] = classes\n\t\t}\n\t\t\n\t\tdom_node() {\n\t\t\treturn $mol_view_dom.node( this )\n\t\t}\n\t\t\n\t\tdom_tree() {\n\t\t\tconsole.warn( '$mol_view.dom_tree is deprecated by $mol_view.render' )\n\t\t\treturn this.render()\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\trender() : Element {\n\t\t\tconst node = this.dom_node()\n\t\t\t\n\t\t\ttry {\n\t\t\t\t\n\t\t\t\tfor( let plugin of this.plugins() ) plugin.render()\n\t\t\t\t\n\t\t\t\t$mol_dom_render( node , {\n\t\t\t\t\tattributes : this.attr() ,\n\t\t\t\t\tchildNodes : this.sub_visible() ,\n\t\t\t\t\tstyle : this.style() ,\n\t\t\t\t\t...( this.field() || {} ) ,\n\t\t\t\t} )\n\t\t\t\t\n\t\t\t} catch( error ) {\n\t\t\t\t\n\t\t\t\t$mol_dom_render( node , {\n\t\t\t\t\tattributes : { mol_view_error : error.name } ,\n\t\t\t\t} )\n\t\t\t\t\n\t\t\t\tif( error instanceof $mol_atom_wait ) return node\n\t\t\t\t\n\t\t\t\tif( error[ '$mol_atom_catched' ] ) return node\n\t\t\t\t\n\t\t\t\tconsole.error( error )\n\n\t\t\t\terror[ '$mol_atom_catched' ] = true\n\t\t\t}\n\t\t\t\n\t\t\treturn node\n\t\t}\n\t\t\n\t\tattr_static() : { [ key : string ] : string|number|boolean } {\n\t\t\tlet attrs = { 'mol_view_error' : false } as any\n\t\t\t\n\t\t\t/// Set BEM-like element-attributes with inheritance support\n\t\t\tconst owner = this.object_owner()\n\t\t\tif( owner instanceof $mol_view ) {\n\t\t\t\tconst suffix = this.object_field().replace( /\\(.*/ , '' )\n\t\t\t\tconst suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1)\n\t\t\t\towner.view_classes().forEach( Class => {\n\t\t\t\t\tif( suffix in Class.prototype ) {\n\t\t\t\t\t\tconst attrName = Class.toString().replace( /\\$/g , '' ) + suffix2\n\t\t\t\t\t\tattrs[ attrName ] = ''\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t}\n\t\t\t\n\t\t\t/// Set BEM-like block-attributes with inheritance support\n\t\t\tthis.view_classes().forEach( Class => {\n\t\t\t\tattrs[ Class.toString().replace( /\\$/g , '' ).toLowerCase() ] = ''\n\t\t\t} )\n\t\t\t\n\t\t\treturn attrs\n\t\t}\n\t\t\n\t\tattr() : { [ key : string ] : string|number|boolean } {\n\t\t\treturn {\n\t\t\t\t'mol_view_error' : false ,\n\t\t\t}\n\t\t}\n\t\t\n\t\tstyle() : { [ key : string ] : string|number } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tfield() : { [ key : string ] : any } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tevent() : { [ key : string ] : ( event : Event )=> void } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tevent_async() : { [ key : string ] : ( event : Event )=> void } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\t'event_wrapped()' = null as { [ name : string ] : ( event? : Event )=> any }\n\t\tevent_wrapped() {\n\t\t\tif( this[ 'event_wrapped()' ] ) return this[ 'event_wrapped()' ]\n\t\t\t\n\t\t\tconst event = this.event()\n\t\t\tconst wrapped = {} as typeof event\n\t\t\t\n\t\t\tfor( let name in event ) {\n\t\t\t\tlet handle = event[ name ]\n\t\t\t\twrapped[ name ] = event => {\n\t\t\t\t\t$mol_atom_task( `${ this }.event()['${ name }']` , () => handle( event ) ).get()\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn this[ 'event_wrapped()' ] = wrapped\n\t\t}\n\t\t\n\t\t'locale_contexts()' : string[]\n\t\tlocale_contexts() {\n\t\t\treturn this['locale_contexts()'] || ( this[ 'locale_contexts()' ] = this.view_classes().map( String ) )\n\t\t}\n\t\t\n\t\tplugins() {\n\t\t\treturn [] as $mol_view[]\n\t\t}\n\t\t\n\t}\n\t\n}\n","interface Window {\n\tcordova : any\n}\n\nnamespace $ {\n\n\t/// Autoattach view roots to loaded DOM.\n\t$mol_dom_context.document.addEventListener( window.cordova ? 'deviceready' : 'DOMContentLoaded' , event => {\n\t\t\t\n\t\tconst nodes = $mol_dom_context.document.querySelectorAll( '[mol_view_root]' )\n\t\t\n\t\tfor( let i = nodes.length - 1 ; i >= 0 ; --i ) {\n\t\t\tconst name = nodes.item( i ).getAttribute( 'mol_view_root' )\n\t\t\t\n\t\t\tconst View = $[ name ]\n\t\t\tif( !View ) {\n\t\t\t\tconsole.error( `Can not attach view. Class not found: ${ name }` )\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t\n\t\t\tconst view = View.Root( i )\n\t\t\t\n\t\t\t$mol_view_dom.mount( view , nodes.item( i ) )\n\t\t\t\n\t\t\tlet win = new $mol_atom( `$mol_view.Root(${ i })` , ()=> {\n\t\t\t\tview.render()\n\t\t\t\t$mol_dom_context.document.title = view.title()\n\t\t\t\treturn null\n\t\t\t} )\n\t\t\t\n\t\t\tnew $mol_defer( ()=> win.get() )\n\t\t}\n\t\t\n\t\t$mol_defer.run()\n\t} )\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_view_selection extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic focused( next? : Element[] , force? : $mol_atom_force ) {\n\t\t\tif( next === void 0 ) return [] as Element[]\n\t\t\t\n\t\t\tif( next.length !== 1 ) throw new Error( 'Length must be equals 1' )\n\t\t\t\n\t\t\tconst node = next[ 0 ] as HTMLElement\n\t\t\t\n\t\t\tnode.focus();\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic position( ...diff : any[] ) {\n\t\t\tif( diff.length ) {\n\t\t\t\tif( !diff[ 0 ] ) return diff[ 0 ]\n\t\t\t\t\n\t\t\t\tvar start = diff[ 0 ].start\n\t\t\t\tvar end = diff[ 0 ].end\n\t\t\t\tif( !( start <= end ) ) throw new Error( `Wrong offsets (${start},${end})` )\n\t\t\t\t\n\t\t\t\tvar root = $mol_dom_context.document.getElementById( diff[ 0 ].id )\n\t\t\t\troot.focus()\n\t\t\t\t\n\t\t\t\tvar range = new Range\n\t\t\t\t\n\t\t\t\tvar cur = root.firstChild\n\t\t\t\twhile( cur !== root ) {\n\t\t\t\t\twhile( cur.firstChild ) cur = cur.firstChild\n\t\t\t\t\tif( cur.nodeValue ) {\n\t\t\t\t\t\tvar length = cur.nodeValue.length\n\t\t\t\t\t\tif( length >= start ) break\n\t\t\t\t\t\tstart -= length\n\t\t\t\t\t}\n\t\t\t\t\twhile( !cur.nextSibling ) {\n\t\t\t\t\t\tcur = cur.parentNode\n\t\t\t\t\t\tif( cur === root ) {\n\t\t\t\t\t\t\tstart = root.childNodes.length\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trange.setStart( cur , start )\n\t\t\t\t\n\t\t\t\tvar cur = root.firstChild\n\t\t\t\twhile( cur !== root ) {\n\t\t\t\t\twhile( cur.firstChild ) cur = cur.firstChild\n\t\t\t\t\tif( cur.nodeValue ) {\n\t\t\t\t\t\tvar length = cur.nodeValue.length\n\t\t\t\t\t\tif( length >= end ) break\n\t\t\t\t\t\tend -= length\n\t\t\t\t\t}\n\t\t\t\t\twhile( !cur.nextSibling ) {\n\t\t\t\t\t\tcur = cur.parentNode\n\t\t\t\t\t\tif( cur === root ) {\n\t\t\t\t\t\t\tend = root.childNodes.length\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trange.setEnd( cur , end )\n\t\t\t\t\n\t\t\t\tvar sel = $mol_dom_context.document.getSelection()\n\t\t\t\tsel.removeAllRanges()\n\t\t\t\tsel.addRange( range )\n\t\t\t\t\n\t\t\t\treturn diff[ 0 ]\n\t\t\t} else {\n\t\t\t\tvar sel = $mol_dom_context.document.getSelection()\n\t\t\t\tif( sel.rangeCount === 0 ) return null\n\t\t\t\tvar range = sel.getRangeAt( 0 )\n\t\t\t\t\n\t\t\t\tvar el = range.commonAncestorContainer\n\t\t\t\twhile( el && !el.id ) el = el.parentElement\n\t\t\t\t\n\t\t\t\tif( !el ) return { id : null , start : 0 , end : 0 }\n\t\t\t\t\n\t\t\t\tvar meter = new Range\n\t\t\t\tmeter.selectNodeContents( el )\n\t\t\t\t\n\t\t\t\tmeter.setEnd( range.startContainer , range.startOffset )\n\t\t\t\tvar startOffset = meter.toString().length\n\t\t\t\t\n\t\t\t\tmeter.setEnd( range.endContainer , range.endOffset )\n\t\t\t\tvar endOffset = meter.toString().length\n\t\t\t\t\n\t\t\t\treturn { id : el.id , start : startOffset , end : endOffset }\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic onFocus( event : FocusEvent ) {\n\t\t\tconst parents : Element[] = []\n\t\t\tlet element = event.target as HTMLElement\n\t\t\t\n\t\t\twhile( element ) {\n\t\t\t\tparents.push( element )\n\t\t\t\telement = element.parentElement\n\t\t\t}\n\t\t\t\n\t\t\t$mol_view_selection.focused( parents , $mol_atom_force )\n\t\t}\n\t\t\n\t\tstatic onBlur( event : FocusEvent ) {\n\t\t\t$mol_view_selection.focused( [] , $mol_atom_force )\n\t\t}\n\t}\n\t\n}\n","namespace $ {\n\t\n\t$mol_dom_context.document.addEventListener( 'selectionchange' , event => {\n\t\t$mol_view_selection.position( void null , $mol_atom_force )\n\t} )\n\t\n\t$mol_dom_context.document.addEventListener( 'focus' , event => setTimeout( ()=> $mol_view_selection.onFocus( event ) ) , true )\n\t$mol_dom_context.document.addEventListener( 'blur' , event => setTimeout( ()=> $mol_view_selection.onBlur( event ) ) , true )\n\t\n}\n","namespace $ { export class $mol_string extends $mol_view {\n\n\t/// dom_name \\input\n\tdom_name() {\n\t\treturn \"input\"\n\t}\n\n\t/// enabled true\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/// disabled false\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/// value?val \\\n\t@ $mol_mem()\n\tvalue( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// value_changed?val <=> value?val\n\t@ $mol_mem()\n\tvalue_changed( val? : any ) {\n\t\treturn this.value( val )\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// type?val \\text\n\t@ $mol_mem()\n\ttype( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : \"text\"\n\t}\n\n\t/// field * \n\t/// \tdisabled <= disabled \n\t/// \tvalue <= value_changed?val \n\t/// \tplaceholder <= hint \n\t/// \ttype <= type?val\n\tfield() {\n\t\treturn ( { ...super.field() , \n\t\t\t\"disabled\" : this.disabled() ,\n\t\t\t\"value\" : this.value_changed() ,\n\t\t\t\"placeholder\" : this.hint() ,\n\t\t\t\"type\" : this.type() ,\n\t\t} )\n\t}\n\n\t/// event_change?event null\n\t@ $mol_mem()\n\tevent_change( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event * input?event <=> event_change?event\n\tevent() {\n\t\treturn ( { ...super.event() , \n\t\t\t\"input\" : ( event? : any )=> this.event_change( event ) ,\n\t\t} )\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_string extends $.$mol_string {\n\t\t\n\t\tevent_change( next? : Event ) {\n\t\t\tthis.value( ( next.target as HTMLInputElement ).value.trim() )\n\t\t}\n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t}\n}\n","namespace $ {\n export enum $mol_keyboard_code {\n backspace = 8,\n tab = 9,\n enter = 13,\n shift= 16,\n ctrl = 17,\n alt = 18,\n pause = 19,\n capsLock = 20,\n escape = 27,\n space = 32,\n pageUp = 33,\n pageDown = 34,\n end = 35,\n home = 36,\n left = 37,\n up = 38,\n right = 39,\n down = 40,\n insert = 45,\n delete = 46,\n key0 = 48,\n key1 = 49,\n key2 = 50,\n key3 = 51,\n key4 = 52,\n key5 = 53,\n key6 = 54,\n key7 = 55,\n key8 = 56,\n key9 = 57,\n A = 65,\n B = 66,\n C = 67,\n D = 68,\n E = 69,\n F = 70,\n G = 71,\n H = 72,\n I = 73,\n J = 74,\n K = 75,\n L = 76,\n M = 77,\n N = 78,\n O = 79,\n P = 80,\n Q = 81,\n R = 82,\n S = 83,\n T = 84,\n U = 85,\n V = 86,\n W = 87,\n X = 88,\n Y = 89,\n Z = 90,\n metaLeft = 91,\n metaRight = 92,\n select = 93,\n numpad0 = 96,\n numpad1 = 97,\n numpad2 = 98,\n numpad3 = 99,\n numpad4 = 100,\n numpad5 = 101,\n numpad6 = 102,\n numpad7 = 103,\n numpad8 = 104,\n numpad9 = 105,\n multiply = 106,\n add = 107,\n subtract = 109,\n decimal = 110,\n divide = 111,\n F1 = 112,\n F2 = 113,\n F3 = 114,\n F4 = 115,\n F5 = 116,\n F6 = 117,\n F7 = 118,\n F8 = 119,\n F9 = 120,\n F10 = 121,\n F11 = 122,\n F12 = 123,\n numLock = 144,\n scrollLock = 145,\n semicolon = 186,\n equals = 187,\n comma = 188,\n dash = 189,\n period = 190,\n forwardSlash = 191,\n graveAccent = 192,\n bracketOpen = 219,\n slashBack = 220,\n bracketClose = 221,\n quoteSingle = 222\n }\n}\n","namespace $ { export class $mol_button extends $mol_view {\n\n\t/// enabled true\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/// event_click?event null\n\t@ $mol_mem()\n\tevent_click( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event_activate?event <=> event_click?event\n\t@ $mol_mem()\n\tevent_activate( event? : any ) {\n\t\treturn this.event_click( event )\n\t}\n\n\t/// evenet_key_press?event null\n\t@ $mol_mem()\n\tevenet_key_press( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event * \n\t/// \tclick?event <=> event_activate?event \n\t/// \tkeypress?event <=> evenet_key_press?event\n\tevent() {\n\t\treturn ( { ...super.event() , \n\t\t\t\"click\" : ( event? : any )=> this.event_activate( event ) ,\n\t\t\t\"keypress\" : ( event? : any )=> this.evenet_key_press( event ) ,\n\t\t} )\n\t}\n\n\t/// disabled false\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/// tab_index \\0\n\ttab_index() {\n\t\treturn \"0\"\n\t}\n\n\t/// attr * \n\t/// \tdisabled <= disabled \n\t/// \trole \\button\n\t/// \ttabindex <= tab_index\n\tattr() {\n\t\treturn ( { ...super.attr() , \n\t\t\t\"disabled\" : this.disabled() ,\n\t\t\t\"role\" : \"button\" ,\n\t\t\t\"tabindex\" : this.tab_index() ,\n\t\t} )\n\t}\n\n\t/// sub / <= title\n\tsub() {\n\t\treturn [].concat( this.title() )\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_button extends $.$mol_button {\n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t\t\n\t\tevent_activate( next : Event ) {\n\t\t\tif( !this.enabled() ) return\n\t\t\tthis.event_click( next )\n\t\t}\n\t\t\n\t\tevenet_key_press ( event: KeyboardEvent ) { \n \t\tif( event.keyCode === $mol_keyboard_code.enter ) \n \t\treturn this.event_activate( event )\n \t} \n\t\t\n\t\ttab_index() {\n\t\t\treturn this.enabled() ? super.tab_index() : null\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { export class $mol_button_major extends $mol_button {\n\n} }\n\nnamespace $ { export class $mol_button_minor extends $mol_button {\n\n} }\n\nnamespace $ { export class $mol_button_danger extends $mol_button {\n\n} }\n\n","namespace $ {\n\t\n\texport function $mol_merge_dict< Target , Source >( target : Target , source : Source ) : Target & Source {\n\t\tlet result = {}\n\t\tfor( let key in target ) result[ key ] = ( target )[ key ]\n\t\tfor( let key in source ) result[ key ] = ( source )[ key ]\n\t\treturn result\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_state_arg< Value > extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic href( next? : string , force? : $mol_atom_force ) {\n\t\t\tif( next ) history.replaceState( history.state , $mol_dom_context.document.title , `${ next }` )\n\t\t\treturn window.location.search + window.location.hash\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic dict( next? : { [ key : string ] : string } ) {\n\t\t\tvar href = this.href( next && this.make( next ) )\n\t\t\tvar chunks = href.split( /[\\/\\?#!&;]/g )\n\t\t\t\n\t\t\tvar params : { [ key : string ] : string } = {}\n\t\t\tchunks.forEach(\n\t\t\t\tchunk => {\n\t\t\t\t\tif( !chunk ) return\n\t\t\t\t\tvar vals = chunk.split( '=' ).map( decodeURIComponent )\n\t\t\t\t\tparams[ vals.shift() ] = vals.join( '=' )\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\treturn params\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic value( key : string , next? : string ) {\n\t\t\tconst nextDict = ( next === void 0 ) ? void 0 : $mol_merge_dict( this.dict() , { [ key ] : next } ) \n\t\t\treturn this.dict( nextDict )[ key ] || null\n\t\t}\n\t\t\n\t\tstatic link( next : { [ key : string ] : string } ) {\n\t\t\treturn this.make( $mol_merge_dict( this.dict() , next ) )\n\t\t}\n\t\t\n\t\tstatic make( next : { [ key : string ] : string } ) {\n\t\t\tconst chunks : string[] = []\n\t\t\tfor( let key in next ) {\n\t\t\t\tif( null == next[ key ] ) continue\n\t\t\t\tchunks.push( [ key ].concat( next[ key ] ).map( encodeURIComponent ).join( '=' ) )\n\t\t\t}\n\t\t\t\n\t\t\treturn '#' + chunks.join( '/' )\n\t\t}\n\t\t\n\t\tconstructor( public prefix = '' ) {\n\t\t\tsuper()\n\t\t}\n\t\t\n\t\tvalue( key : string , next? : string ) {\n\t\t\treturn $mol_state_arg.value( this.prefix + key , next )\n\t\t}\n\t\t\n\t\tsub( postfix : string ) {\n\t\t\treturn new $mol_state_arg( this.prefix + postfix + '.' )\n\t\t}\n\t\t\n\t\tlink( next : { [ key : string ] : string } ) {\n\t\t\tvar prefix = this.prefix\n\t\t\tvar dict : { [ key : string ] : string } = {}\n\t\t\tfor( var key in next ) {\n\t\t\t\tdict[ prefix + key ] = next[ key ]\n\t\t\t}\n\t\t\treturn $mol_state_arg.link( dict )\n\t\t}\n\t\t\n\t}\n\t\n\twindow.addEventListener( 'hashchange' , event => $mol_state_arg.href( void null , $mol_atom_force ) )\n\t\n}\n","namespace $ { export class $mol_link extends $mol_view {\n\n\t/// minimal_height 36\n\tminimal_height() {\n\t\treturn 36\n\t}\n\n\t/// dom_name \\a\n\tdom_name() {\n\t\treturn \"a\"\n\t}\n\n\t/// uri \\\n\turi() {\n\t\treturn \"\"\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// current false\n\tcurrent() {\n\t\treturn false\n\t}\n\n\t/// attr * \n\t/// \thref <= uri \n\t/// \ttitle <= hint \n\t/// \tmol_link_current <= current\n\tattr() {\n\t\treturn ( { ...super.attr() , \n\t\t\t\"href\" : this.uri() ,\n\t\t\t\"title\" : this.hint() ,\n\t\t\t\"mol_link_current\" : this.current() ,\n\t\t} )\n\t}\n\n\t/// sub / <= title\n\tsub() {\n\t\treturn [].concat( this.title() )\n\t}\n\n\t/// arg *\n\targ() {\n\t\treturn ({\n\t\t})\n\t}\n\n} }\n\n","namespace $.$mol {\n\t\n\texport class $mol_link extends $.$mol_link {\n\t\t\n\t\t@ $mol_mem()\n\t\turi() {\n\t\t\treturn new $mol_state_arg( this.state_key() ).link( this.arg() )\n\t\t}\n\t\t\n\t\tcurrent() {\n\t\t\treturn this.uri() === $mol_state_arg.link( {} )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_check extends $mol_button {\n\n\t/// checked?val false\n\t@ $mol_mem()\n\tchecked( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// attr * \n\t/// \tmol_check_checked <= checked?val \n\t/// \taria-checked <= checked?val \n\t/// \trole \\checkbox\n\tattr() {\n\t\treturn ( { ...super.attr() , \n\t\t\t\"mol_check_checked\" : this.checked() ,\n\t\t\t\"aria-checked\" : this.checked() ,\n\t\t\t\"role\" : \"checkbox\" ,\n\t\t} )\n\t}\n\n\t/// Icon null\n\tIcon() {\n\t\treturn null\n\t}\n\n\t/// label /\n\tlabel() {\n\t\treturn [] as any[]\n\t}\n\n\t/// Label $mol_view sub / <= label\n\t@ $mol_mem()\n\tLabel() {\n\t\treturn new $mol_view().setup( obj => { \n\t\t\tobj.sub = () => [].concat( this.label() )\n\t\t} )\n\t}\n\n\t/// sub / \n\t/// \t<= Icon \n\t/// \t<= Label\n\tsub() {\n\t\treturn [].concat( this.Icon() , this.Label() )\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_check extends $.$mol_check {\n\n\t\tevent_click( next? : Event ) {\n\t\t\tthis.checked( !this.checked() )\n\t\t\tnext.preventDefault()\n\t\t}\n\n\t}\n}\n\n","namespace $ {\n\t\n\texport class $mol_state_session< Value > extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic value< Value >( key : string , next? : Value ) : Value {\n\t\t\tif( next === void 0 ) return JSON.parse( sessionStorage.getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) sessionStorage.removeItem( key )\n\t\t\telse sessionStorage.setItem( key , JSON.stringify( next ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_session.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_scroll extends $mol_view {\n\n\t/// minimal_height 0\n\tminimal_height() {\n\t\treturn 0\n\t}\n\n\t/// scroll_top?val 0\n\t@ $mol_mem()\n\tscroll_top( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// scroll_left?val 0\n\t@ $mol_mem()\n\tscroll_left( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// field * \n\t/// \tscrollTop <= scroll_top?val \n\t/// \tscrollLeft <= scroll_left?val\n\tfield() {\n\t\treturn ( { ...super.field() , \n\t\t\t\"scrollTop\" : this.scroll_top() ,\n\t\t\t\"scrollLeft\" : this.scroll_left() ,\n\t\t} )\n\t}\n\n\t/// event_scroll?event null\n\t@ $mol_mem()\n\tevent_scroll( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event_async * scroll?event <=> event_scroll?event\n\tevent_async() {\n\t\treturn ( { ...super.event_async() , \n\t\t\t\"scroll\" : ( event? : any )=> this.event_scroll( event ) ,\n\t\t} )\n\t}\n\n} }\n\n","namespace $ {\n\t\n\texport interface $mol_view_context {\n\t\t$mol_scroll_scroll_top() : number\n\t\t$mol_scroll_scroll_left() : number\n\t\t$mol_scroll_moving() : boolean\n\t}\n\n\t$mol_view_context.$mol_scroll_scroll_top = () => 0\n\t$mol_view_context.$mol_scroll_scroll_left = () => 0\n\t$mol_view_context.$mol_scroll_moving = () => false\n\t\n}\n\nnamespace $.$mol {\n\t\n\texport class $mol_scroll extends $.$mol_scroll {\n\n\t\tscroll_top( next? : number ) {\n\t\t\treturn $mol_state_session.value( `${ this }.scroll_top()` , next ) || 0\n\t\t}\n\t\t\n\t\tscroll_left( next? : number ) {\n\t\t\treturn $mol_state_session.value( `${ this }.scroll_left()` , next ) || 0\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tscroll_bottom( next? : number ) {\n\t\t\treturn next || 0\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tscroll_right( next? : number ) {\n\t\t\treturn next || 0\n\t\t}\n\t\t\n\t\tevent_scroll( next? : Event ) {\n\t\t\tthis.moving( true )\n\t\t\tthis.moving_task_stop()\n\t\t\tnew $mol_defer( ()=> {\n\t\t\t\tconst el = next.target as HTMLElement\n\t\t\t\tthis.scroll_top( Math.max( 0 , el.scrollTop ) )\n\t\t\t\tthis.scroll_left( Math.max( 0 , el.scrollLeft ) )\n\t\t\t\tthis.scroll_bottom( Math.max( 0 , el.scrollHeight - el.scrollTop - el.offsetHeight ) )\n\t\t\t\tthis.scroll_right( Math.max( 0 , el.scrollWidth - el.scrollLeft - el.offsetWidth ) )\n\t\t\t} )\n\t\t}\n\t\t\n\t\t_moving_task_frame = 0\n\t\tmoving_task_stop() {\n\t\t\tcancelAnimationFrame( this._moving_task_frame )\n\t\t\tthis._moving_task_frame = requestAnimationFrame( ()=> {\n\t\t\t\tthis.moving( false )\n\t\t\t} )\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tmoving( next? : boolean ) {\n\t\t\treturn next || false\n\t\t}\n\n\t\t@ $mol_mem()\n\t\tcontext_sub( ) {\n\t\t\tconst context = this.context()\n\t\t\tconst subContext : $mol_view_context = Object.create( context )\n\t\t\tsubContext.$mol_view_visible_height = ()=> {\n\t\t\t\tconst sizeWin = $mol_window.size()\n\t\t\t\tconst limit = context.$mol_view_visible_height()\n\t\t\t\treturn this.scroll_top() + Math.min( sizeWin.height , limit )\n\t\t\t}\n\t\t\tsubContext.$mol_view_visible_width = ()=> {\n\t\t\t\tconst sizeWin = $mol_window.size()\n\t\t\t\tconst limit = context.$mol_view_visible_width()\n\t\t\t\treturn this.scroll_left() + Math.min( sizeWin.width , limit )\n\t\t\t}\n\t\t\tsubContext.$mol_scroll_scroll_top = ()=> this.scroll_top()\n\t\t\tsubContext.$mol_scroll_scroll_left = ()=> this.scroll_left()\n\t\t\tsubContext.$mol_scroll_moving = ()=> this.moving()\n\t\t\treturn subContext\n\t\t}\n\t\t\n\t}\n\n}\n","var localStorage = localStorage || {\n\tgetItem( key : string ) {\n\t\treturn this[ ':' + key ]\n\t} ,\n\tsetItem( key : string , value : string ) {\n\t\tthis[ ':' + key ] = value\n\t} ,\n\tremoveItem( key : string ) {\n\t\tthis[ ':' + key ] = void 0\n\t}\n}\n\nnamespace $ {\n\t\n\texport class $mol_state_local< Value > extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic value< Value >( key : string , next? : Value , force? : $mol_atom_force ) : Value {\n\t\t\tif( next === void 0 ) return JSON.parse( localStorage.getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) localStorage.removeItem( key )\n\t\t\telse localStorage.setItem( key , JSON.stringify( next ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_local.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\twindow.addEventListener( 'storage' , event => {\n\t\t$.$mol_state_local.value( event.key , void 0 , $mol_atom_force )\n\t} )\n}\n","namespace $ {\n\t\n\texport class $mol_http_request extends $mol_object {\n\t\t\n\t\turi() { return '' }\n\t\t\n\t\tmethod_get() { return 'Get' }\n\t\tmethod_put() { return 'Put' }\n\t\t\n\t\tcredentials() { return null as {\n\t\t\tlogin? : string\n\t\t\tpassword? : string\n\t\t} }\n\t\t\n\t\theaders() {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tbody() { return null }\n\t\t\n\t\t'native()' : XMLHttpRequest\n\t\tnative() {\n\t\t\tif( this[ 'native()' ] ) return this[ 'native()' ]\n\t\t\t\n\t\t\tvar next = this[ 'native()' ] = new $mol_dom_context.XMLHttpRequest\n\t\t\t\n\t\t\tnext.withCredentials = Boolean( this.credentials() )\n\t\t\t\n\t\t\tnext.onload = ( event : Event )=> {\n\t\t\t\tif(( next.status === 0 )||( Math.floor( next.status / 100 ) === 2 )) {\n\t\t\t\t\tthis.response( next , $mol_atom_force )\n\t\t\t\t} else {\n\t\t\t\t\tthis.response( new Error( next.responseText ) as any , $mol_atom_force )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tnext.onerror = ( event : ErrorEvent ) => {\n\t\t\t\tthis.response( event.error || new Error( 'Unknown HTTP error' ) , $mol_atom_force )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next ) {\n\t\t\t\tconst native = this[ 'native()' ]\n\t\t\t\tif( native ) native.abort()\n\t\t\t}\n\t\t\treturn super.destroyed( next )\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tresponse( next? : any , force? : $mol_atom_force ) : XMLHttpRequest {\n\t\t\tconst creds = this.credentials()\n\t\t\tconst native = this.native()\n\t\t\tconst method = ( next === void 0 ) ? this.method_get() : this.method_put()\n\t\t\tconst uri = this.uri()\n\t\t\t\n\t\t\tnative.open( method , uri , true , creds && creds.login , creds && creds.password )\n\t\t\t\n\t\t\tconst headers = this.headers()\n\t\t\tfor( let name in headers ) native.setRequestHeader( name , headers[ name ] )\n\t\t\t\n\t\t\tnative.send( next )\n\t\t\t\n\t\t\tthrow new $mol_atom_wait( `${ method } ${ uri }` )\n\t\t}\n\t\t\n\t\ttext( next? : string , force? : $mol_atom_force ) : string {\n\t\t\treturn this.response( next , force ).responseText\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_http_resource extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic item( uri : string ) {\n\t\t\treturn new $mol_http_resource().setup( obj => {\n\t\t\t\tobj.uri = ()=> uri\n\t\t\t} )\n\t\t}\n\t\t\n\t\turi() { return '' }\n\t\t\n\t\tmethod_get() { return 'Get' }\n\t\tmethod_put() { return 'Put' }\n\t\t\n\t\tcredentials() { return null as {\n\t\t\tlogin? : string\n\t\t\tpassword? : string\n\t\t} }\n\t\t\n\t\theaders() {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\trequest() {\n\t\t\tconst request = new $mol_http_request()\n\t\t\trequest.uri = () => this.uri()\n\t\t\trequest.method_get = ()=> this.method_get()\n\t\t\trequest.method_put = ()=> this.method_put()\n\t\t\trequest.credentials = () => this.credentials()\n\t\t\trequest.headers = ()=> this.headers()\n\t\t\treturn request\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\ttext( next? : string , force? : $mol_atom_force ) {\n\t\t\treturn this.request().text( next , force )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_file extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic absolute( path : string ) {\n\t\t\treturn new $mol_file().setup(\n\t\t\t\tobj => {\n\t\t\t\t\tobj.path = ()=> path\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t\t\n\t\tstatic relative( path : string ) : $mol_file {\n\t\t\tif( /^\\//.test( path ) ) {\n\t\t\t\treturn $mol_file.root().resolve( path.substring(1) )\n\t\t\t}\n\t\t\treturn $mol_file.base().resolve( path )\n\t\t}\n\t\t\n\t\tstatic root() {\n\t\t\treturn $mol_file.absolute( '' )\n\t\t}\n\t\t\n\t\tstatic base() {\n\t\t\tconst path = $mol_dom_context.document.location.pathname.replace( /\\/[^\\/]*$/ , '' )\n\t\t\treturn $mol_file.absolute( path )\n\t\t}\n\t\t\n\t\tpath() {\n\t\t\treturn '.'\n\t\t}\n\t\t\n\t\tparent() {\n\t\t\treturn this.resolve( '..' )\n\t\t}\n\t\t\n\t\tname() {\n\t\t\treturn this.path().replace( /^.*\\//, '' )\n\t\t}\n\t\t\n\t\text() {\n\t\t\tvar match = /((?:\\.\\w+)+)$/.exec( this.path() )\n\t\t\treturn match && match[ 1 ].substring( 1 )\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tcontent( next? : string , force? : $mol_atom_force ) {\n\t\t\treturn $mol_http_resource.item( this.path() ).text( next )\n\t\t}\n\t\t\n\t\tresolve( path : string ) : $mol_file {\n\t\t\tlet res = this.path() + '/' + path\n\t\t\t\n\t\t\twhile( true ) {\n\t\t\t\tlet prev = res\n\t\t\t\tres = res.replace( /\\/[^\\/]+\\/\\.\\.\\// , '/' )\n\t\t\t\tif( prev === res ) break\n\t\t\t}\n\t\t\t\n\t\t\twhile( true ) {\n\t\t\t\tlet prev = res\n\t\t\t\tres = res.replace( /\\/\\.\\.\\/[^\\/]+\\// , '/' )\n\t\t\t\tif( prev === res ) break\n\t\t\t}\n\t\t\t\n\t\t\treturn this.Class().absolute( res )\n\t\t}\n\t\t\n\t\trelate( base = this.Class().relative( '.' ) ) {\n\t\t\tthrow new Error( 'Not implemented yet' )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport interface $mol_locale_dict {\n\t\t[ key : string ] : string\n\t}\n\t\n\texport class $mol_locale extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic lang_default() {\n\t\t\treturn 'en'\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic lang( next? : string ) {\n\t\t\treturn $mol_state_local.value( 'locale' , next ) || $mol_dom_context.navigator.language.replace( /-.*/ , '' ) || this.lang_default()\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic source( lang : string ) {\n\t\t\treturn JSON.parse( $mol_file.relative( `-/web.locale=${ lang }.json` ).content() )\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic texts( next? : $mol_locale_dict ) : $mol_locale_dict {\n\t\t\tif( next ) return next\n\t\t\t\n\t\t\tconst lang = this.lang()\n\t\t\t\n\t\t\ttry {\n\t\t\t\treturn this.source( lang ).valueOf()\n\t\t\t} catch( error ) {\n\t\t\t\tconst def = this.lang_default()\n\t\t\t\tif( lang === def ) throw error\n\t\t\t\treturn this.source( def )\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic text( contexts : string[] , key : string ) {\n\t\t\tconst texts = this.texts()\n\t\t\t\n\t\t\tfor( let i = 0 ; i < contexts.length ; ++i ) {\n\t\t\t\tconst text = texts[ `${ contexts[i] }_${ key }` ]\n\t\t\t\tif( text ) return text\n\t\t\t}\n\t\t\t\n\t\t\tconsole.warn( 'Locale tet not found: ' , contexts , key )\n\t\t\t\n\t\t\treturn `<${ key }>`\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_list extends $mol_view {\n\n\t/// style * minHeight <= minimal_height\n\tstyle() {\n\t\treturn ( { ...super.style() , \n\t\t\t\"minHeight\" : this.minimal_height() ,\n\t\t} )\n\t}\n\n\t/// rows /\n\trows() {\n\t\treturn [] as any[]\n\t}\n\n\t/// sub <= rows\n\tsub() {\n\t\treturn this.rows()\n\t}\n\n\t/// Empty null\n\tEmpty() {\n\t\treturn null\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_list extends $.$mol_list {\n\t\t\n\t\tsub() {\n\t\t\tconst rows = this.rows()\n\t\t\treturn ( rows.length === 0 ) ? [ this.Empty() ] : rows\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\trow_offsets() : number[] {\n\t\t\tvar sub = this.sub()\n\t\t\tif( !sub ) return null\n\t\t\t\n\t\t\tlet heightLimit = this.context().$mol_view_visible_height()\n\t\t\tvar offset = 0\n\t\t\t\n\t\t\tvar next : number[] = []\n\t\t\tfor( let child of sub ) {\n\t\t\t\tnext.push( offset )\n\t\t\t\t\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\toffset += child.minimal_height()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( offset > heightLimit ) break\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\trow_context( index : number ) {\n\t\t\tlet context = this.context()\n\t\t\tlet next = Object.create( context )\n\t\t\tnext.$mol_view_visible_height = ()=> {\n\t\t\t\tconst limit = context.$mol_view_visible_height()\n\t\t\t\treturn limit - this.row_offsets()[ index ]\n\t\t\t}\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tsub_visible() {\n\t\t\tvar sub = this.sub()\n\t\t\tif( !sub ) return sub\n\t\t\t\n\t\t\tvar limit = this.row_offsets().length\n\t\t\t\n\t\t\tvar next : $mol_view[] = []\n\t\t\tfor( let i = 0 ; i < limit ; ++ i ) {\n\t\t\t\tconst child = sub[ i ]\n\t\t\t\tif( child == null ) continue \n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.context( this.row_context( i ) )\n\t\t\t\t}\n\t\t\t\tnext.push( child )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tminimal_height() {\n\t\t\tvar height = 0\n\t\t\tvar sub = this.sub()\n\t\t\tif( sub ) sub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\theight += child.minimal_height()\n\t\t\t\t}\n\t\t\t} )\n\t\t\treturn height\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { export class $mol_bar extends $mol_view {\n\n} }\n\n","namespace $ { export class $mol_app_todomvc extends $mol_scroll {\n\n\t/// title @ \\todos\n\ttitle() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"title\" )\n\t}\n\n\t/// Title $mol_view \n\t/// \tminimal_height 142 \n\t/// \tsub / <= title\n\t@ $mol_mem()\n\tTitle() {\n\t\treturn new $mol_view().setup( obj => { \n\t\t\tobj.minimal_height = () => 142\n\t\t\tobj.sub = () => [].concat( this.title() )\n\t\t} )\n\t}\n\n\t/// head_complete_enabled false\n\thead_complete_enabled() {\n\t\treturn false\n\t}\n\n\t/// completed_all?val false\n\t@ $mol_mem()\n\tcompleted_all( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// Head_complete $mol_check \n\t/// \tenabled <= head_complete_enabled \n\t/// \tchecked?val <=> completed_all?val \n\t/// \tsub / \\❯\n\t@ $mol_mem()\n\tHead_complete() {\n\t\treturn new $mol_check().setup( obj => { \n\t\t\tobj.enabled = () => this.head_complete_enabled()\n\t\t\tobj.checked = ( val? : any ) => this.completed_all( val )\n\t\t\tobj.sub = () => [].concat( \"❯\" )\n\t\t} )\n\t}\n\n\t/// task_title_new?val \\\n\t@ $mol_mem()\n\ttask_title_new( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// event_add?event null\n\t@ $mol_mem()\n\tevent_add( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// Add $mol_app_todomvc_add \n\t/// \tvalue?val <=> task_title_new?val \n\t/// \tevent_done?event <=> event_add?event\n\t@ $mol_mem()\n\tAdd() {\n\t\treturn new $mol_app_todomvc_add().setup( obj => { \n\t\t\tobj.value = ( val? : any ) => this.task_title_new( val )\n\t\t\tobj.event_done = ( event? : any ) => this.event_add( event )\n\t\t} )\n\t}\n\n\t/// Head_content / \n\t/// \t<= Head_complete \n\t/// \t<= Add\n\tHead_content() {\n\t\treturn [].concat( this.Head_complete() , this.Add() )\n\t}\n\n\t/// Head $mol_view \n\t/// \tminimal_height 64 \n\t/// \tsub <= Head_content\n\t@ $mol_mem()\n\tHead() {\n\t\treturn new $mol_view().setup( obj => { \n\t\t\tobj.minimal_height = () => 64\n\t\t\tobj.sub = () => this.Head_content()\n\t\t} )\n\t}\n\n\t/// task_rows /\n\ttask_rows() {\n\t\treturn [] as any[]\n\t}\n\n\t/// List $mol_list rows <= task_rows\n\t@ $mol_mem()\n\tList() {\n\t\treturn new $mol_list().setup( obj => { \n\t\t\tobj.rows = () => this.task_rows()\n\t\t} )\n\t}\n\n\t/// pending_message @ \\0 items left\n\tpending_message() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"pending_message\" )\n\t}\n\n\t/// Pending $mol_view sub / <= pending_message\n\t@ $mol_mem()\n\tPending() {\n\t\treturn new $mol_view().setup( obj => { \n\t\t\tobj.sub = () => [].concat( this.pending_message() )\n\t\t} )\n\t}\n\n\t/// filter_all_label @ \\All\n\tfilter_all_label() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"filter_all_label\" )\n\t}\n\n\t/// Filter_all $mol_link \n\t/// \tsub / <= filter_all_label \n\t/// \targ * completed null\n\t@ $mol_mem()\n\tFilter_all() {\n\t\treturn new $mol_link().setup( obj => { \n\t\t\tobj.sub = () => [].concat( this.filter_all_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : null ,\n\t\t})\n\t\t} )\n\t}\n\n\t/// filter_active_label @ \\Active\n\tfilter_active_label() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"filter_active_label\" )\n\t}\n\n\t/// Filter_active $mol_link \n\t/// \tsub / <= filter_active_label \n\t/// \targ * completed false\n\t@ $mol_mem()\n\tFilter_active() {\n\t\treturn new $mol_link().setup( obj => { \n\t\t\tobj.sub = () => [].concat( this.filter_active_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : false ,\n\t\t})\n\t\t} )\n\t}\n\n\t/// filter_completed_label @ \\Completed\n\tfilter_completed_label() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"filter_completed_label\" )\n\t}\n\n\t/// Filter_completed $mol_link \n\t/// \tsub / <= filter_completed_label \n\t/// \targ * completed true\n\t@ $mol_mem()\n\tFilter_completed() {\n\t\treturn new $mol_link().setup( obj => { \n\t\t\tobj.sub = () => [].concat( this.filter_completed_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : true ,\n\t\t})\n\t\t} )\n\t}\n\n\t/// filterOptions / \n\t/// \t<= Filter_all \n\t/// \t<= Filter_active \n\t/// \t<= Filter_completed\n\tfilterOptions() {\n\t\treturn [].concat( this.Filter_all() , this.Filter_active() , this.Filter_completed() )\n\t}\n\n\t/// Filter $mol_bar sub <= filterOptions\n\t@ $mol_mem()\n\tFilter() {\n\t\treturn new $mol_bar().setup( obj => { \n\t\t\tobj.sub = () => this.filterOptions()\n\t\t} )\n\t}\n\n\t/// sweep_enabled true\n\tsweep_enabled() {\n\t\treturn true\n\t}\n\n\t/// event_sweep?event null\n\t@ $mol_mem()\n\tevent_sweep( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// sweep_label @ \\Clear completed\n\tsweep_label() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"sweep_label\" )\n\t}\n\n\t/// Sweep $mol_button_minor \n\t/// \tenabled <= sweep_enabled \n\t/// \tevent_click?event <=> event_sweep?event \n\t/// \tsub / <= sweep_label\n\t@ $mol_mem()\n\tSweep() {\n\t\treturn new $mol_button_minor().setup( obj => { \n\t\t\tobj.enabled = () => this.sweep_enabled()\n\t\t\tobj.event_click = ( event? : any ) => this.event_sweep( event )\n\t\t\tobj.sub = () => [].concat( this.sweep_label() )\n\t\t} )\n\t}\n\n\t/// foot_content / \n\t/// \t<= Pending \n\t/// \t<= Filter \n\t/// \t<= Sweep\n\tfoot_content() {\n\t\treturn [].concat( this.Pending() , this.Filter() , this.Sweep() )\n\t}\n\n\t/// Foot $mol_view sub <= foot_content\n\t@ $mol_mem()\n\tFoot() {\n\t\treturn new $mol_view().setup( obj => { \n\t\t\tobj.sub = () => this.foot_content()\n\t\t} )\n\t}\n\n\t/// panels / \n\t/// \t<= Head \n\t/// \t<= List \n\t/// \t<= Foot\n\tpanels() {\n\t\treturn [].concat( this.Head() , this.List() , this.Foot() )\n\t}\n\n\t/// Panel $mol_list rows <= panels\n\t@ $mol_mem()\n\tPanel() {\n\t\treturn new $mol_list().setup( obj => { \n\t\t\tobj.rows = () => this.panels()\n\t\t} )\n\t}\n\n\t/// Page $mol_list rows / \n\t/// \t<= Title \n\t/// \t<= Panel\n\t@ $mol_mem()\n\tPage() {\n\t\treturn new $mol_list().setup( obj => { \n\t\t\tobj.rows = () => [].concat( this.Title() , this.Panel() )\n\t\t} )\n\t}\n\n\t/// sub / <= Page\n\tsub() {\n\t\treturn [].concat( this.Page() )\n\t}\n\n\t/// task_completed!id?val false\n\t@ $mol_mem_key()\n\ttask_completed( id : any , val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// task_title!id?val \\\n\t@ $mol_mem_key()\n\ttask_title( id : any , val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// event_task_drop!id?event null\n\t@ $mol_mem_key()\n\tevent_task_drop( id : any , event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// Task_row!id $mol_app_todomvc_task_row \n\t/// \tcompleted?val <=> task_completed!id?val \n\t/// \ttitle?val <=> task_title!id?val \n\t/// \tevent_drop?event <=> event_task_drop!id?event\n\t@ $mol_mem_key()\n\tTask_row( id : any ) {\n\t\treturn new $mol_app_todomvc_task_row().setup( obj => { \n\t\t\tobj.completed = ( val? : any ) => this.task_completed(id , val )\n\t\t\tobj.title = ( val? : any ) => this.task_title(id , val )\n\t\t\tobj.event_drop = ( event? : any ) => this.event_task_drop(id , event )\n\t\t} )\n\t}\n\n} }\n\nnamespace $ { export class $mol_app_todomvc_add extends $mol_string {\n\n\t/// hint @ \\What needs to be done?\n\thint() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"hint\" )\n\t}\n\n\t/// event_press?event null\n\t@ $mol_mem()\n\tevent_press( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event * keyup?event <=> event_press?event\n\tevent() {\n\t\treturn ( { ...super.event() , \n\t\t\t\"keyup\" : ( event? : any )=> this.event_press( event ) ,\n\t\t} )\n\t}\n\n\t/// event_done?event null\n\t@ $mol_mem()\n\tevent_done( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n} }\n\nnamespace $ { export class $mol_app_todomvc_task_row extends $mol_view {\n\n\t/// minimal_height 64\n\tminimal_height() {\n\t\treturn 64\n\t}\n\n\t/// completed?val false\n\t@ $mol_mem()\n\tcompleted( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// Complete $mol_check \n\t/// \tchecked?val <=> completed?val \n\t/// \tsub /\n\t@ $mol_mem()\n\tComplete() {\n\t\treturn new $mol_check().setup( obj => { \n\t\t\tobj.checked = ( val? : any ) => this.completed( val )\n\t\t\tobj.sub = () => [] as any[]\n\t\t} )\n\t}\n\n\t/// title_hint @ \\Task title\n\ttitle_hint() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"title_hint\" )\n\t}\n\n\t/// title?val \\\n\t@ $mol_mem()\n\ttitle( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// Title $mol_string \n\t/// \thint <= title_hint \n\t/// \tvalue?val <=> title?val\n\t@ $mol_mem()\n\tTitle() {\n\t\treturn new $mol_string().setup( obj => { \n\t\t\tobj.hint = () => this.title_hint()\n\t\t\tobj.value = ( val? : any ) => this.title( val )\n\t\t} )\n\t}\n\n\t/// event_drop?event null\n\t@ $mol_mem()\n\tevent_drop( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// Drop $mol_button \n\t/// \tsub / \\✖\n\t/// \tevent_click?event <=> event_drop?event\n\t@ $mol_mem()\n\tDrop() {\n\t\treturn new $mol_button().setup( obj => { \n\t\t\tobj.sub = () => [].concat( \"✖\" )\n\t\t\tobj.event_click = ( event? : any ) => this.event_drop( event )\n\t\t} )\n\t}\n\n\t/// sub / \n\t/// \t<= Complete \n\t/// \t<= Title \n\t/// \t<= Drop\n\tsub() {\n\t\treturn [].concat( this.Complete() , this.Title() , this.Drop() )\n\t}\n\n\t/// attr * mol_app_todomvc_task_row_completed <= completed?val\n\tattr() {\n\t\treturn ( { ...super.attr() , \n\t\t\t\"mol_app_todomvc_task_row_completed\" : this.completed() ,\n\t\t} )\n\t}\n\n} }\n\n","interface $mol_app_todomvc_task {\n\tcompleted? : boolean\n\ttitle? : string\n}\n\nnamespace $.$mol {\n\t\n\texport class $mol_app_todomvc_add extends $.$mol_app_todomvc_add {\n\t\t\n\t\tevent_press( next? : KeyboardEvent ) {\n\t\t\tswitch( next.keyCode ) {\n\t\t\t\tcase $mol_keyboard_code.enter : return this.event_done( next )\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\texport class $mol_app_todomvc extends $.$mol_app_todomvc {\n\t\t\n\t\ttask_ids( next? : number[] ) : number[] {\n\t\t\treturn $mol_state_local.value( this.state_key( 'mol-todos' ) , next ) || []\n\t\t}\n\t\t\n\t\targ_completed() {\n\t\t\treturn $mol_state_arg.value( this.state_key( 'completed' ) )\n\t\t}\n\n\t\t@ $mol_mem()\n\t\tgroups_completed() {\n\t\t\tvar groups : { [ index : string ] : number[] } = { 'true' : [] , 'false' : [] }\n\t\t\tfor( let id of this.task_ids() ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tgroups[ String( task.completed ) ].push( id )\n\t\t\t}\n\t\t\treturn groups\n\t\t}\n\n\t\t@ $mol_mem()\n\t\ttasks_filtered() {\n\t\t\tvar completed = this.arg_completed()\n\t\t\tif( completed ) {\n\t\t\t\treturn this.groups_completed()[ completed ] || []\n\t\t\t} else {\n\t\t\t\treturn this.task_ids()\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_mem()\n\t\tcompleted_all( next? : boolean ) {\n\t\t\tif( next === void 0 ) return this.groups_completed()[ 'false' ].length === 0\n\t\t\t\n\t\t\tfor( let id of this.groups_completed()[ String( !next ) ] ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tthis.task( id , { title : task.title , completed : next } )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\thead_complete_enabled() {\n\t\t\treturn this.task_ids().length > 0 \n\t\t}\n\n\t\t@ $mol_mem()\n\t\tpending_message() {\n\t\t\tlet count = this.groups_completed()[ 'false' ].length\n\t\t\treturn ( count === 1 ) ? '1 item left' : `${count} items left`\n\t\t}\n\t\t\n\t\t_id_seed = 0\n\n\t\tevent_add( next : Event ) {\n\t\t\tvar title = this.task_title_new() \n\t\t\tif( !title ) return\n\t\t\t\n\t\t\tvar id = ++ this._id_seed\n\t\t\tvar task = { completed : false , title }\n\t\t\tthis.task( id , task )\n\t\t\t\n\t\t\tthis.task_ids( this.task_ids().concat( id ) )\n\t\t\tthis.task_title_new( '' )\n\t\t}\n\n\t\t@ $mol_mem()\n\t\ttask_rows() {\n\t\t\treturn this.tasks_filtered().map( ( id , index )=> this.Task_row( index ) )\n\t\t}\n\t\t\n\t\ttask( id : number , next? : $mol_app_todomvc_task ) {\n\t\t\tconst key = this.state_key( `mol-todos-${id}` )\n\t\t\tif( next === void 0 ) {\n\t\t\t\treturn $mol_state_local.value<$mol_app_todomvc_task>( key ) || { title : '' , completed : false }\n\t\t\t}\n\t\t\t\n\t\t\t$mol_state_local.value( key , next )\n\t\t\t\n\t\t\treturn next || void 0\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\ttask_completed( index : number , next? : boolean ) {\n\t\t\tvar id = this.tasks_filtered()[ index ]\n\t\t\tif( next === void 0 ) return this.task( id ).completed\n\t\t\t\n\t\t\tthis.task( id , $mol_merge_dict( this.task( id ) , { completed : next } ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\ttask_title( index : number , next? : string ) {\n\t\t\tvar id = this.tasks_filtered()[ index ]\n\t\t\tif( next === void 0 ) return this.task( id ).title\n\t\t\t\n\t\t\tthis.task( id , $mol_merge_dict( this.task( id ) , { title : next } ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tevent_task_drop( index : number , next? : Event ) {\n\t\t\tvar tasks = this.tasks_filtered()\n\t\t\tvar id = tasks[index]\n\t\t\ttasks = tasks.slice( 0 , index ).concat( tasks.slice( index + 1 , tasks.length ) )\n\t\t\tthis.task( id , null )\n\t\t\tthis.task_ids( tasks )\n\t\t}\n\n\t\tevent_sweep() {\n\t\t\tthis.task_ids( this.task_ids().filter( id => {\n\t\t\t\tif( !this.task( id ).completed ) return true\n\t\t\t\tthis.task( id , null )\n\t\t\t\treturn false\n\t\t\t} ) )\n\t\t}\n\t\t\n\t\tpanels() {\n\t\t\treturn [\n\t\t\t\tthis.Head() , \n\t\t\t\tthis.List() ,\n\t\t\t\tthis.foot_visible() ? this.Foot() : null ,\n\t\t\t]\n\t\t}\n\t\t\n\t\tfoot_visible() {\n\t\t\treturn this.task_ids().length > 0\n\t\t}\n\n\t\tsweep_enabled() {\n\t\t\treturn this.groups_completed()[ 'true' ].length > 0\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_app_todomvc_demo extends $mol_app_todomvc {\n\n} }\n\n"]} \ No newline at end of file diff --git a/examples/mol/-/web.locale=en.json b/examples/mol/-/web.locale=en.json index f116743501..085a008236 100644 --- a/examples/mol/-/web.locale=en.json +++ b/examples/mol/-/web.locale=en.json @@ -4,7 +4,7 @@ "$mol_app_todomvc_filter_all_label": "All", "$mol_app_todomvc_filter_active_label": "Active", "$mol_app_todomvc_filter_completed_label": "Completed", - "$mol_app_todomvc_sanitize_label": "Clear completed", + "$mol_app_todomvc_sweep_label": "Clear completed", "$mol_app_todomvc_add_hint": "What needs to be done?", "$mol_app_todomvc_task_row_title_hint": "Task title" } \ No newline at end of file diff --git a/examples/mol/index.html b/examples/mol/index.html index e0df2f02f4..cbf84e5d3a 100644 --- a/examples/mol/index.html +++ b/examples/mol/index.html @@ -1,10 +1,9 @@ - + - + - -
+
- + + diff --git a/examples/mol/todomvc.css b/examples/mol/todomvc.css index 7594b57e4b..9c54aecc7c 100644 --- a/examples/mol/todomvc.css +++ b/examples/mol/todomvc.css @@ -1,70 +1,74 @@ [mol_app_todomvc] { align-self: stretch; width: 100%; - height: 100%; -} - -[mol_app_todomvc] [mol_stringer] , -[mol_app_todomvc] [mol_stringer]:focus , -[mol_app_todomvc] [mol_stringer]:hover , -[mol_app_todomvc] [mol_clicker] , -[mol_app_todomvc] [mol_clicker]:focus , -[mol_app_todomvc] [mol_clicker]:hover , -[mol_app_todomvc] [mol_linker] , -[mol_app_todomvc] [mol_linker]:focus , -[mol_app_todomvc] [mol_linker]:hover { + background-color: #f5f5f5; + margin: 0; +} + +[mol_app_todomvc] [mol_string] , +[mol_app_todomvc] [mol_string]:focus , +[mol_app_todomvc] [mol_string]:hover , +[mol_app_todomvc] [mol_button] , +[mol_app_todomvc] [mol_button]:focus , +[mol_app_todomvc] [mol_button]:hover , +[mol_app_todomvc] [mol_link] , +[mol_app_todomvc] [mol_link]:focus , +[mol_app_todomvc] [mol_link]:hover { box-shadow: none; + background-color: transparent; } -[mol_app_todomvc] [mol_stringer] , -[mol_app_todomvc] [mol_linker] { - background: transparent; +[mol_app_todomvc] [mol_link_current] { + color: black; } -[mol_app_todomvc] [mol_linker]:not([mol_linker_current]):hover , -[mol_app_todomvc] [mol_linker]:not([mol_linker_current]):focus { +[mol_app_todomvc] [mol_link]:not([mol_link_current]):hover , +[mol_app_todomvc] [mol_link]:not([mol_link_current]):focus { text-decoration: underline; } -[mol_app_todomvc_allCompleter] { +[mol_app_todomvc_head_complete] { flex: 0 0 4rem; transform: rotate( 90deg ); opacity: .5; padding: 0; justify-content: center; } -[mol_app_todomvc_allCompleter]:disabled { +[mol_app_todomvc_head_complete]:disabled { visibility: hidden; } -[mol_app_todomvc_allCompleter][mol_checker_checked] { +[mol_app_todomvc_head_complete][mol_check_checked] { opacity: 1; } -[mol_app_todomvc_adder] { +[mol_app_todomvc_add] { padding: 0; + flex: 1 1 auto; } -[mol_app_todomvc_lister] { +[mol_app_todomvc_list] { font-size: 1.5rem; } -[mol_app_todomvc_paneler] { +[mol_app_todomvc_panel] { box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1); max-width: 38rem; - background: white; + background-color: white; display: flex; flex-direction: column; margin: 0 auto 2rem; + transition: none; } -[mol_app_todomvc_header] { +[mol_app_todomvc_head] { font-size: 1.5rem; padding: 0; display: flex; height: 4rem; } -[mol_app_todomvc_titler] { +[mol_app_todomvc_title] { + display: block; padding: .25rem; font-size: 7rem; font-weight: 100; @@ -73,42 +77,42 @@ text-rendering: optimizeLegibility; } -[mol_app_todomvc_tasker] { +[mol_app_todomvc_task_row] { display: flex; - background: white; + background-color: white; box-shadow: 0 -1px 0 0 #ededed; height: 4rem; } -[mol_app_todomvc_tasker_completer] { +[mol_app_todomvc_task_row_complete] { flex: 0 0 4rem; - background: no-repeat center center url('data:image/svg+xml;utf8,'); + padding: 1rem; + background: no-repeat center center url('data:image/svg+xml;utf8,'); } -[mol_app_todomvc_tasker_completer][mol_checker_checked] { - background: no-repeat center center url('data:image/svg+xml;utf8,') +[mol_app_todomvc_task_row_complete][mol_check_checked] { + background: no-repeat center center url('data:image/svg+xml;utf8,') } -[mol_app_todomvc_tasker_titler] { +[mol_app_todomvc_task_row_title] { padding: 0; - transition: all 0.4s; + flex: 1 1 auto; } -[mol_app_todomvc_tasker_completed] [mol_app_todomvc_tasker_titler] { +[mol_app_todomvc_task_row_completed] [mol_app_todomvc_task_row_title] { color: #d9d9d9; text-decoration: line-through; } -[mol_app_todomvc_tasker_dropper] { +[mol_app_todomvc_task_row_drop] { font-size: 1.25rem; flex: 0 04rem; } -[mol_app_todomvc_tasker]:not(:hover) [mol_app_todomvc_tasker_dropper]:not(:focus) { +[mol_app_todomvc_task_row]:not(:hover) [mol_app_todomvc_task_row_drop]:not(:focus) { opacity: 0; color: #cc9a9a; - transition: all 0.2s ease-out; } -[mol_app_todomvc_footer] { +[mol_app_todomvc_foot] { display: flex; flex-wrap: wrap; align-items: baseline; @@ -119,7 +123,7 @@ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2); } -[mol_app_todomvc_pendinger] { +[mol_app_todomvc_pending] { padding: .25rem; flex: 0 1 6rem; } @@ -132,16 +136,15 @@ box-shadow: none; } -[mol_app_todomvc_sanitizer] { +[mol_app_todomvc_sweep] { flex: 0 1 auto; padding: .25rem; } -[mol_app_todomvc_sanitizer]:disabled { +[mol_app_todomvc_sweep][disabled] { visibility: hidden; } -[mol_app_todomvc_sanitizer]:hover , -[mol_app_todomvc_sanitizer]:focus { +[mol_app_todomvc_sweep]:hover , +[mol_app_todomvc_sweep]:focus { text-decoration: underline; } - diff --git a/examples/mol/todomvc.view.tree b/examples/mol/todomvc.view.tree index c1f34da024..a9bff7d484 100644 --- a/examples/mol/todomvc.view.tree +++ b/examples/mol/todomvc.view.tree @@ -1,57 +1,74 @@ -$mol_app_todomvc $mol_scroller - childs / < pager $mol_lister childs / - < titler $mol_viewer - heightMinimal 142 - childs / < title @ \todos - < paneler $mol_lister rows < panels / - < header $mol_viewer - heightMinimal 64 - childs < headerContent / - < allCompleter $mol_checker - enabled < allCompleterEnabled false - checked > allCompleted false - childs / \❯ - < adder $mol_app_todomvc_adder - value > taskNewTitle \ - eventDone > eventAdd null - < lister $mol_lister rows < taskers / - < footer $mol_viewer - childs < footerContent / - < pendinger $mol_viewer childs / < pendingMessage @ \0 items left - < filter $mol_barer childs < filterOptions / - < filterAll $mol_linker - childs / < filterAllLabel @ \All - arg * completed null - < filterActive $mol_linker - childs / < filterActiveLabel @ \Active - arg * completed false - < filterCompleted $mol_linker - childs / < filterCompletedLabel @ \Completed - arg * completed true - < sanitizer $mol_clicker_minor - enabled < sanitizerEnabled true - eventClick < eventSanitize null - childs / < sanitizerLabel @ \Clear completed - tasker# $mol_app_todomvc_tasker - completed > taskCompleted# false - title > taskTitle# \ - eventDrop > eventTaskDrop# null +$mol_app_todomvc $mol_scroll + sub / + <= Page $mol_list + rows / + <= Title $mol_view + minimal_height 142 + sub / + <= title @ \todos + <= Panel $mol_list + rows <= panels / + <= Head $mol_view + minimal_height 64 + sub <= Head_content / + <= Head_complete $mol_check + enabled <= head_complete_enabled false + checked?val <=> completed_all?val false + sub / + \❯ + <= Add $mol_app_todomvc_add + value?val <=> task_title_new?val \ + event_done?event <=> event_add?event null + <= List $mol_list + rows <= task_rows / + <= Foot $mol_view + sub <= foot_content / + <= Pending $mol_view + sub / + <= pending_message @ \0 items left + <= Filter $mol_bar + sub <= filterOptions / + <= Filter_all $mol_link + sub / + <= filter_all_label @ \All + arg * + completed null + <= Filter_active $mol_link + sub / + <= filter_active_label @ \Active + arg * + completed false + <= Filter_completed $mol_link + sub / + <= filter_completed_label @ \Completed + arg * + completed true + <= Sweep $mol_button_minor + enabled <= sweep_enabled true + event_click?event <=> event_sweep?event null + sub / <= sweep_label @ \Clear completed + Task_row!id $mol_app_todomvc_task_row + completed?val <=> task_completed!id?val false + title?val <=> task_title!id?val \ + event_drop?event <=> event_task_drop!id?event null -$mol_app_todomvc_adder $mol_stringer +$mol_app_todomvc_add $mol_string hint @ \What needs to be done? - event * keyup > eventPress null - > eventDone null + event * + keyup?event <=> event_press?event null + event_done?event null -$mol_app_todomvc_tasker $mol_viewer - heightMinimal 64 - childs / - < completer $mol_checker - checked > completed false - childs / - < titler $mol_stringer - hint < titleHint @ \Task title - value > title \ - < dropper $mol_clicker - childs / \✖ - eventClick > eventDrop null - attr * mol_app_todomvc_tasker_completed < completed +$mol_app_todomvc_task_row $mol_view + minimal_height 64 + sub / + <= Complete $mol_check + checked?val <=> completed?val false + sub / + <= Title $mol_string + hint <= title_hint @ \Task title + value?val <=> title?val \ + <= Drop $mol_button + sub / \✖ + event_click?event <=> event_drop?event null + attr * + mol_app_todomvc_task_row_completed <= completed?val false diff --git a/examples/mol/todomvc.view.ts b/examples/mol/todomvc.view.ts index 6863e8034a..1c20b31caa 100644 --- a/examples/mol/todomvc.view.ts +++ b/examples/mol/todomvc.view.ts @@ -5,11 +5,11 @@ interface $mol_app_todomvc_task { namespace $.$mol { - export class $mol_app_todomvc_adder extends $.$mol_app_todomvc_adder { + export class $mol_app_todomvc_add extends $.$mol_app_todomvc_add { - eventPress( next? : KeyboardEvent ) { - switch( next['code'] || next.key ) { - case 'Enter' : return this.eventDone( next ) + event_press( next? : KeyboardEvent ) { + switch( next.keyCode ) { + case $mol_keyboard_code.enter : return this.event_done( next ) } } @@ -17,18 +17,18 @@ namespace $.$mol { export class $mol_app_todomvc extends $.$mol_app_todomvc { - taskIds( next? : number[] ) : number[] { - return $mol_state_local.value( this.stateKey( 'taskIds' ) , next ) || [] + task_ids( next? : number[] ) : number[] { + return $mol_state_local.value( this.state_key( 'mol-todos' ) , next ) || [] } - argCompleted() { - return $mol_state_arg.value( this.stateKey( 'completed' ) ) + arg_completed() { + return $mol_state_arg.value( this.state_key( 'completed' ) ) } @ $mol_mem() - groupsByCompleted() { + groups_completed() { var groups : { [ index : string ] : number[] } = { 'true' : [] , 'false' : [] } - for( let id of this.taskIds() ) { + for( let id of this.task_ids() ) { var task = this.task( id ) groups[ String( task.completed ) ].push( id ) } @@ -36,20 +36,20 @@ namespace $.$mol { } @ $mol_mem() - tasksFiltered() { - var completed = this.argCompleted() + tasks_filtered() { + var completed = this.arg_completed() if( completed ) { - return this.groupsByCompleted()[ completed ] || [] + return this.groups_completed()[ completed ] || [] } else { - return this.taskIds() + return this.task_ids() } } @ $mol_mem() - allCompleted( next? : boolean ) { - if( next === void 0 ) return this.groupsByCompleted()[ 'false' ].length === 0 + completed_all( next? : boolean ) { + if( next === void 0 ) return this.groups_completed()[ 'false' ].length === 0 - for( let id of this.groupsByCompleted()[ String( !next ) ] ) { + for( let id of this.groups_completed()[ String( !next ) ] ) { var task = this.task( id ) this.task( id , { title : task.title , completed : next } ) } @@ -57,38 +57,40 @@ namespace $.$mol { return next } - allCompleterEnabled() { - return this.taskIds().length > 0 + head_complete_enabled() { + return this.task_ids().length > 0 } @ $mol_mem() - pendingMessage() { - let count = this.groupsByCompleted()[ 'false' ].length + pending_message() { + let count = this.groups_completed()[ 'false' ].length return ( count === 1 ) ? '1 item left' : `${count} items left` } - _idSeed = 0 + _id_seed = 0 - eventAdd( next : Event ) { - var title = this.taskNewTitle() + event_add( next : Event ) { + var title = this.task_title_new() if( !title ) return - var id = ++ this._idSeed + var id = ++ this._id_seed var task = { completed : false , title } this.task( id , task ) - this.taskIds( this.taskIds().concat( id ) ) - this.taskNewTitle( '' ) + this.task_ids( this.task_ids().concat( id ) ) + this.task_title_new( '' ) } @ $mol_mem() - taskers() { - return this.tasksFiltered().map( ( id , index )=> this.tasker( index ) ) + task_rows() { + return this.tasks_filtered().map( ( id , index )=> this.Task_row( index ) ) } task( id : number , next? : $mol_app_todomvc_task ) { - const key = this.stateKey( `task=${id}` ) - if( next === void 0 ) return $mol_state_local.value( key ) || { title : '' , completed : false } + const key = this.state_key( `mol-todos-${id}` ) + if( next === void 0 ) { + return $mol_state_local.value<$mol_app_todomvc_task>( key ) || { title : '' , completed : false } + } $mol_state_local.value( key , next ) @@ -96,8 +98,8 @@ namespace $.$mol { } @ $mol_mem_key() - taskCompleted( index : number , next? : boolean ) { - var id = this.tasksFiltered()[ index ] + task_completed( index : number , next? : boolean ) { + var id = this.tasks_filtered()[ index ] if( next === void 0 ) return this.task( id ).completed this.task( id , $mol_merge_dict( this.task( id ) , { completed : next } ) ) @@ -106,8 +108,8 @@ namespace $.$mol { } @ $mol_mem_key() - taskTitle( index : number , next? : string ) { - var id = this.tasksFiltered()[ index ] + task_title( index : number , next? : string ) { + var id = this.tasks_filtered()[ index ] if( next === void 0 ) return this.task( id ).title this.task( id , $mol_merge_dict( this.task( id ) , { title : next } ) ) @@ -115,16 +117,16 @@ namespace $.$mol { return next } - eventTaskDrop( index : number , next? : Event ) { - var tasks = this.tasksFiltered() + event_task_drop( index : number , next? : Event ) { + var tasks = this.tasks_filtered() var id = tasks[index] tasks = tasks.slice( 0 , index ).concat( tasks.slice( index + 1 , tasks.length ) ) this.task( id , null ) - this.taskIds( tasks ) + this.task_ids( tasks ) } - eventSanitize() { - this.taskIds( this.taskIds().filter( id => { + event_sweep() { + this.task_ids( this.task_ids().filter( id => { if( !this.task( id ).completed ) return true this.task( id , null ) return false @@ -133,18 +135,18 @@ namespace $.$mol { panels() { return [ - this.header() , - this.lister() , - this.footerVisible() ? this.footer() : null , + this.Head() , + this.List() , + this.foot_visible() ? this.Foot() : null , ] } - footerVisible() { - return this.taskIds().length > 0 + foot_visible() { + return this.task_ids().length > 0 } - sanitizerEnabled() { - return this.groupsByCompleted()[ 'true' ].length > 0 + sweep_enabled() { + return this.groups_completed()[ 'true' ].length > 0 } } From dfef3fa9d4272204a504ed4927c19170d22e8679 Mon Sep 17 00:00:00 2001 From: nin-jin Date: Thu, 30 Mar 2017 23:34:15 +0300 Subject: [PATCH 11/53] Better measuring in benchmark. --- benchmark/index.html | 58 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 45 insertions(+), 13 deletions(-) diff --git a/benchmark/index.html b/benchmark/index.html index 21da69503c..3dd283e1ce 100644 --- a/benchmark/index.html +++ b/benchmark/index.html @@ -11,15 +11,21 @@ height: 100%; overflow: hidden; font: 12pt/1.25 "-apple-system", BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; - display: flex; + } + + @keyframes measure { + from { + outline : 1px solid black; + } + to { + outline : 1px solid white; + } } #sandbox { border: none; width: 100%; height: 100%; - margin: auto; - box-shadow: 0 0 0 1px rgba(220, 220, 220, 1); } @@ -93,15 +99,20 @@ } function start( sample ) { - var start = Date.now() - sandbox.src = '../examples/' + sample + '/' - sandbox.onload = function() { - step() - function step() { - if( sandbox.contentDocument.querySelector( selector.adder ) ) done( Date.now() - start + ' ms' ) - else setTimeout( step , 10 ) + var sandbox = document.getElementById( 'sandbox' ) + sandbox.src = 'about:blank' + setTimeout( function() { + var start = Date.now() + sandbox.src = '../examples/' + sample + '/' + sandbox.onload = function() { + step() + function step() { + if( sandbox.contentDocument.querySelector( selector.adder ) ) done( Date.now() - start + ' ms' ) + else setTimeout( step , 10 ) + } + sandbox.onload = null } - } + } ) } function fill( sample ) { @@ -152,7 +163,17 @@ } if( ++i <= count ) setImmediate( step ) - else done( Date.now() - start + ' ms' ) + else { + sandbox.addEventListener( 'animationend' , end ) + requestAnimationFrame( function(){ setTimeout( function() { // wait for message processed + sandbox.style.animation = 'measure .001s' + } ) } ) + function end() { // wait for painting ends + done( Date.now() - start + ' ms' ) + sandbox.style.animation = '' + sandbox.removeEventListener( 'animationend' , end ) + } + } } } @@ -162,7 +183,18 @@ step() function step() { var dropper = sandbox.contentDocument.querySelector( selector.dropper ) - if( !dropper ) return done( Date.now() - start + ' ms' ) + if( !dropper ) { + sandbox.addEventListener( 'animationend' , end ) + requestAnimationFrame( function(){ setTimeout( function() { // wait for message processed + sandbox.style.animation = 'measure .001s' + } ) } ) + function end() { // wait for painting ends + done( Date.now() - start + ' ms' ) + sandbox.style.animation = '' + sandbox.removeEventListener( 'animationend' , end ) + } + return + } dropper.dispatchEvent( new Event( 'mousedown' , { bubbles : true } ) ) dropper.dispatchEvent( new Event( 'mouseup' , { bubbles : true } ) ) From 6d9bea82551cddc92504a0a97a8bff5bf8264513 Mon Sep 17 00:00:00 2001 From: nin-jin Date: Mon, 17 Jul 2017 14:12:29 +0300 Subject: [PATCH 12/53] New build of $mol example. --- .../mol/-/mol/app/todomvc/todomvc_active.svg | 3 + .../-/mol/app/todomvc/todomvc_completed.svg | 4 + examples/mol/-/web.css | 135 +- examples/mol/-/web.css.map | 18 +- examples/mol/-/web.d.ts | 784 ------ examples/mol/-/web.deps.json | 1 - examples/mol/-/web.js | 2251 +++++++++-------- examples/mol/-/web.js.map | 2 +- examples/mol/-/web.locale=en.json | 2 +- .../-view.tree/todomvc.view.tree.locale.json | 10 + examples/mol/-view.tree/todomvc.view.tree.ts | 399 +++ examples/mol/todomvc.css | 9 +- examples/mol/todomvc.meta.tree | 2 + examples/mol/todomvc.view.tree | 13 +- examples/mol/todomvc.view.ts | 9 +- examples/mol/todomvc_active.svg | 3 + examples/mol/todomvc_completed.svg | 4 + 17 files changed, 1661 insertions(+), 1988 deletions(-) create mode 100644 examples/mol/-/mol/app/todomvc/todomvc_active.svg create mode 100644 examples/mol/-/mol/app/todomvc/todomvc_completed.svg delete mode 100644 examples/mol/-/web.d.ts delete mode 100644 examples/mol/-/web.deps.json create mode 100644 examples/mol/-view.tree/todomvc.view.tree.locale.json create mode 100644 examples/mol/-view.tree/todomvc.view.tree.ts create mode 100644 examples/mol/todomvc.meta.tree create mode 100644 examples/mol/todomvc_active.svg create mode 100644 examples/mol/todomvc_completed.svg diff --git a/examples/mol/-/mol/app/todomvc/todomvc_active.svg b/examples/mol/-/mol/app/todomvc/todomvc_active.svg new file mode 100644 index 0000000000..417859015a --- /dev/null +++ b/examples/mol/-/mol/app/todomvc/todomvc_active.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/examples/mol/-/mol/app/todomvc/todomvc_completed.svg b/examples/mol/-/mol/app/todomvc/todomvc_completed.svg new file mode 100644 index 0000000000..4231bde0ad --- /dev/null +++ b/examples/mol/-/mol/app/todomvc/todomvc_completed.svg @@ -0,0 +1,4 @@ + + + + diff --git a/examples/mol/-/web.css b/examples/mol/-/web.css index bf001323f8..576c61a847 100644 --- a/examples/mol/-/web.css +++ b/examples/mol/-/web.css @@ -1,27 +1,34 @@ [mol_view] { transition-property: background-color, height, width, min-height, min-width, max-width, max-height, transform; - transition-duration: .1s; - -webkit-appearance: none + transition-duration: .2s; + -webkit-appearance: none; + word-break: break-word +} +[mol_view] > * { + word-break: inherit } [mol_view_root] { margin: 0; padding: 0; width: 100%; height: 100%; - font: 12pt/1.5 "-apple-system", BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif + font: 1rem/1.5 "-apple-system", BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; + background: #fcfcfc; + touch-action: manipulation } -[mol_view_error] { +[mol_view][mol_view_error]:not([mol_view_error="$mol_atom_wait"]) { background-image: repeating-linear-gradient( 135deg, rgba(255, 220, 220, 1), rgba(255, 220, 220, 1) 11px, rgba(255, 255, 220, 1) 10px, rgba(255, 255, 220, 1) 20px - ) !important; - background-size: 28px 28px !important + ); + background-size: 28px 28px; + color: black } -[mol_view_error] * { - background: none !important +[mol_view][mol_view_error] * { + background: none } @keyframes mol_view_wait_show { from { @@ -36,40 +43,40 @@ background-position: 28px 0 } } -[mol_view_error="$mol_atom_wait"] , -[mol_view_error="$mol_atom_wait"] * { +[mol_view][mol_view_error="$mol_atom_wait"] { background-image: repeating-linear-gradient( 45deg, - rgba(91, 136, 200, 0.025), - rgba(91, 136, 200, 0.025) 9px, + rgba(58, 140, 203, 0.025), + rgba(58, 140, 203, 0.025) 9px, rgba(255, 255, 255, .015) 10px, rgba(255, 255, 255, .015) 20px - ) !important; - background-size: 28px 28px !important; - animation: mol_view_wait_show .5s ease-in , mol_view_wait_move .25s steps(6) infinite !important + ); + background-size: 28px 28px; + animation: mol_view_wait_show .5s ease-in , mol_view_wait_move .25s steps(6) infinite +} +[mol_view][mol_view_error="$mol_atom_wait"] * { + background: none } [mol_string] { box-sizing: border-box; - box-shadow: 0 0 0 1px rgba(230, 230, 230, 1); + box-shadow: 0 0 0 1px rgba(230, 230, 230, .75); outline-offset: 0; border: none; border-radius: 2px; white-space: nowrap; overflow: hidden; - padding: .5rem; + padding: .5rem 1rem; text-align: left; position: relative; z-index: 0; font: inherit; flex: 0 1 auto; - width: 8em; + width: 100%; background: #eee; - color: darkgray; - margin: auto + color: rgba(0, 0, 0, .9) } [mol_string]:enabled { - background: white; - color: rgba(0, 0, 0, .9) + background: white } [mol_string]:enabled:hover , [mol_string]:focus { @@ -90,46 +97,48 @@ border: none; font: inherit; background-color: none; - box-shadow: 0 0 0 1px rgba(230, 230, 230, 1); + box-shadow: 0 0 0 1px rgba(230, 230, 230, .75); border-radius: 2px; - flex: 0 1 auto; justify-content: center; align-content: center; align-items: center; vertical-align: middle; text-align: center; - padding: .5rem; + padding: .5rem 1rem; display: inline-flex; + flex-shrink: 0; text-decoration: inherit; color: inherit; cursor: inherit; position: relative; box-sizing: border-box; - margin: auto + word-break: normal } [mol_button][disabled] { - color: darkgray + color: rgba(0, 0, 0, .5); + background: none; + pointer-events: none } -[mol_button_minor]:not([disabled]) { +[mol_button_minor] { background-color: rgba(245, 245, 245, .9); color: rgba(0, 0, 0, .9) } -[mol_button_major]:not([disabled]) { - background-color: rgb(211, 80, 91); - color: rgb(251, 254, 254); - box-shadow: 0 0 0 1px rgba(230, 230, 230, 1) +[mol_button_major] { + background-color: rgb(221, 14, 62); + color: rgb(250, 255, 254); + box-shadow: 0 0 0 1px rgba(230, 230, 230, .75) } -[mol_button_danger]:not([disabled]) { +[mol_button_danger] { background-color: rgba(255, 50, 50, .75); color: white } -[mol_button]:not([disabled]):hover { +[mol_button]:hover { z-index: 1; cursor: pointer; background-color: rgba(0, 0, 0, .05) } -[mol_button_minor]:not([disabled]):hover { - background-color: rgb(240, 240, 240); +[mol_button_minor]:hover { + background-color: rgb(255, 255, 255); color: rgba(0, 0, 0, .9) } [mol_button]:focus { @@ -137,72 +146,63 @@ outline: none; box-shadow: 0 0 0 1px rgba(0, 0, 0, .2) } -[mol_button_major]:not([disabled]):hover { - background-color: rgb(206, 59, 71) +[mol_button_major]:hover { + background-color: rgb(197, 13, 55) } -[mol_button_danger]:not([disabled]):hover { +[mol_button_danger]:hover { background-color: rgba(255, 26, 26, 0.75) } [mol_link] { text-decoration: none; - color: hsl(215, 50%, 57%); + color: inherit; cursor: pointer; border-radius: 2px; - display: inline-flex; padding: .5rem; - box-sizing: border-box; - align-items: baseline + box-sizing: border-box } [mol_link]:not([mol_link_current]):hover { background-color: rgba(0, 0, 0, .05) } [mol_link]:not([mol_link_current]):focus { - /*box-shadow: 0 0 0 1px var(--mol_skin_focus);*/ background-color: rgba(0, 0, 0, .05); box-shadow: 0 0 0 1px var(--mol_skin_hover_line) } [mol_link_current] { - background-color: hsl(215, 50%, 57%); - color: rgb(251, 252, 254) + background-color: #3a8ccb; + color: white } [mol_link]:focus { outline: none } [mol_check] { - flex: 0 1 auto; + flex: 0 0 auto; justify-content: flex-start; align-items: center; align-content: center; border: none; font-weight: normal; box-shadow: none; - text-align: left + text-align: left; + padding: .5rem } [mol_check]:not([mol_check_checked]) { - /*background: transparent;*/ color: inherit } -[mol_check_icon] { - display: inline-flex; - /*vertical-align: -10%;*/ - vertical-align: middle -} [mol_check_label] { - display: inline-flex + display: inline-flex; + margin: 0 .5rem } [mol_scroll] { + display: block; overflow: auto; - /*overflow-y: scroll;*/ flex: 1 1 auto; box-sizing: border-box; will-change: scroll-position; transform: translateZ(0); - box-shadow: 0 0 0 1px rgba(230, 230, 230, 1); + box-shadow: 0 0 0 1px rgba(230, 230, 230, .75); max-height: 100%; max-width: 100%; - -webkit-overflow-scrolling: touch; - -ms-grid-row-align: stretch; - align-self: stretch + -webkit-overflow-scrolling: touch } @media print { [mol_scroll] { @@ -215,9 +215,8 @@ } [mol_bar] { display: flex; - box-shadow: 0 0 0 1px rgba(230, 230, 230, 1); - border-radius: 2px; - margin: auto + box-shadow: 0 0 0 1px rgba(230, 230, 230, .75); + border-radius: 2px } [mol_bar] > * { border-radius: 0 @@ -279,6 +278,9 @@ [mol_app_todomvc_list] { font-size: 1.5rem } +[mol_app_todomvc_page] { + flex: 1 1 auto +} [mol_app_todomvc_panel] { box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .2), 0 25px 50px 0 rgba(0, 0, 0, .1); max-width: 38rem; @@ -301,7 +303,8 @@ font-weight: 100; text-align: center; color: rgba(175, 47, 47, .15); - text-rendering: optimizeLegibility + text-rendering: optimizeLegibility; + text-transform: lowercase } [mol_app_todomvc_task_row] { display: flex; @@ -312,10 +315,10 @@ [mol_app_todomvc_task_row_complete] { flex: 0 0 4rem; padding: 1rem; - background: no-repeat center center url('data:image/svg+xml;utf8,') + background: no-repeat center center url('mol/app/todomvc/todomvc_active.svg') } [mol_app_todomvc_task_row_complete][mol_check_checked] { - background: no-repeat center center url('data:image/svg+xml;utf8,') + background: no-repeat center center url('mol/app/todomvc/todomvc_completed.svg') } [mol_app_todomvc_task_row_title] { padding: 0; diff --git a/examples/mol/-/web.css.map b/examples/mol/-/web.css.map index 599fd87208..0619d7847e 100644 --- a/examples/mol/-/web.css.map +++ b/examples/mol/-/web.css.map @@ -12,17 +12,17 @@ "../todomvc.css" ], "names": [], - "mappings": "AAAA;IACC,8GAA8G;IAC9G,yBAAyB;IACzB,wBAAyB;CACzB;AAED;IACC,UAAU;IACV,WAAW;IACX,YAAY;IACZ,aAAa;IACb,oGAA2B;CAC3B;AAED;IACC;;;;;;cAMa;IACb,qCAAsC;CACtC;AACD;IACC,2BAA4B;CAC5B;AAED;IACC;QACC,gBAAiB;KACjB;CACD;AAED;IACC;QACC,wBAAyB;KACzB;IACD;QACC,2BAA4B;KAC5B;CACD;AAED;;IAEC;;;;;;cAMa;IACb,sCAAsC;IACtC,gGAAiG;CACjG;ACtDD;IACC,uBAAuB;IACvB,6CAAiD;IACjD,kBAAkB;IAClB,aAAa;IACb,mBAAqC;IACrC,oBAAoB;IACpB,iBAAiB;IACjB,eAAe;IACf,iBAAiB;IACjB,mBAAmB;IACnB,WAAW;IACX,cAAc;IACd,eAAe;IACf,WAAW;IACX,iBAAoC;IACpC,gBAAoC;IACpC,YAAa;CACb;AAED;IACC,kBAAiC;IACjC,wBAAkC;CAClC;AAED;;IAEC,cAAc;IACd,UAAW;CACX;AAED;IACC,uCAAiD;CACjD;AAED;IACC,aAAc;CACd;ACrCD;IACC,0BAAkB;OAAlB,uBAAkB;QAAlB,sBAAkB;YAAlB,kBAAkB;IAClB,aAAa;IACb,cAAc;IACd,uBAAuB;IACvB,6CAAiD;IACjD,mBAAqC;IACrC,eAAe;IACf,wBAAwB;IACxB,sBAAsB;IACtB,oBAAoB;IACpB,uBAAuB;IACvB,mBAAmB;IACnB,eAAe;IACf,qBAAqB;IACrB,yBAAyB;IACzB,eAAe;IACf,gBAAgB;IAChB,mBAAmB;IACnB,uBAAuB;IACvB,YAAa;CACb;AAED;IACC,eAAoC;CACpC;AAED;IACC,0CAAyC;IACzC,wBAAkC;CAClC;AAED;IACC,mCAAyC;IACzC,0BAAmC;IACnC,4CAAiD;CACjD;AAED;IACC,yCAAuC;IACvC,YAAiC;CACjC;AAED;IACC,WAAW;IACX,gBAAgB;IAChB,oCAAwC;CACxC;AAED;IACC,qCAA8C;IAC9C,wBAAkC;CAClC;AAED;IACC,WAAW;IACX,cAAc;IACd,uCAAiD;CACjD;AAED;IACC,kCAA+C;CAC/C;AAED;IACC,yCAA6C;CAC7C;AClED;IACC,sBAAsB;IACtB,0BAA4B;IAC5B,gBAAgB;IAChB,mBAAqC;IACrC,qBAAqB;IACrB,eAAe;IACf,uBAAuB;IACvB,qBAAsB;CACtB;AAED;IACC,oCAAwC;CACxC;AAED;IACC,gDAAgD;IAChD,qCAAwC;IACxC,gDAAiD;CACjD;AAED;IACC,qCAAuC;IACvC,yBAAiC;CACjC;AAED;IACC,aAAc;CACd;AC5BD;IACC,eAAe;IACf,4BAA4B;IAC5B,oBAAoB;IACpB,sBAAsB;IACtB,aAAa;IACb,oBAAoB;IACpB,iBAAiB;IACjB,gBAAiB;CACjB;AAED;IACC,4BAA4B;IAC5B,cAAe;CACf;AAED;IACC,qBAAqB;IACrB,yBAAyB;IACzB,sBAAuB;CACvB;AAED;IACC,oBAAqB;CACrB;ACxBD;IACC,eAAe;IACf,uBAAuB;IACvB,eAAe;IACf,uBAAuB;IACvB,6BAA6B;IAC7B,yBAAyB;IACzB,6CAAiD;IACjD,iBAAiB;IACjB,gBAAgB;IAChB,kCAAkC;IAClC,4BAAoB;QAApB,mBAAoB;CACpB;AAED;IACC;QACC,iBAAkB;KAClB;CACD;AClBD;IACC,sBAAsB;IACtB,cAAe;CACf;ACHD;IACC,cAAc;IACd,6CAAiD;IACjD,mBAAqC;IACrC,YAAa;CACb;AAED;IACC,gBAAiB;CACjB;AAED;IACC,4BAA8C;IAC9C,8BAAiD;CACjD;AAED;IACC,gBAAiB;CACjB;AAED;IACC,6BAA+C;IAC/C,+BAAkD;CAClD;ACvBD;IACC,4BAAoB;QAApB,oBAAoB;IACpB,YAAY;IACZ,0BAA0B;IAC1B,SAAU;CACV;AAED;;;;;;;;;IASC,iBAAiB;IACjB,6BAA8B;CAC9B;AAED;IACC,YAAa;CACb;AAED;;IAEC,0BAA2B;CAC3B;AAED;IACC,eAAe;IACf,2BAA2B;IAC3B,YAAY;IACZ,WAAW;IACX,uBAAwB;CACxB;AACD;IACC,kBAAmB;CACnB;AACD;IACC,UAAW;CACX;AAED;IACC,WAAW;IACX,cAAe;CACf;AAED;IACC,iBAAkB;CAClB;AAED;IACC,2EAA6E;IAC7E,iBAAiB;IACjB,wBAAwB;IACxB,cAAc;IACd,uBAAuB;IACvB,oBAAoB;IACpB,gBAAiB;CACjB;AAED;IACC,kBAAkB;IAClB,WAAW;IACX,cAAc;IACd,YAAa;CACb;AAED;IACC,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;IACjB,mBAAmB;IACnB,8BAA+B;IAC/B,kCAAmC;CACnC;AAED;IACC,cAAc;IACd,wBAAwB;IACxB,+BAA+B;IAC/B,YAAa;CACb;AAED;IACC,eAAe;IACf,cAAc;IACd,gPAAiP;CACjP;AACD;IACC,iTAAiT;CACjT;AAED;IACC,WAAW;IACX,cAAe;CACf;AAED;IACC,eAAe;IACf,6BAA8B;CAC9B;AAED;IACC,mBAAmB;IACnB,aAAe;CACf;AACD;IACC,WAAW;IACX,cAAe;CACf;AAED;IACC,cAAc;IACd,gBAAgB;IAChB,sBAAsB;IACtB,oBAAoB;IACpB,YAAY;IACZ,kBAAkB;IAClB,8BAA8B;IAC9B,yJAA6J;CAC7J;AAED;IACC,gBAAgB;IAChB,cAAe;CACf;AAED;IACC,iBAAiB;IACjB,cAAc;IACd,wBAAwB;IACxB,eAAe;IACf,gBAAiB;CACjB;AAED;IACC,eAAe;IACf,eAAgB;CAChB;AACD;IACC,kBAAmB;CACnB;AAED;;IAEC,0BAA2B;CAC3B", + "mappings": "AAAA;IACC,8GAA8G;IAC9G,yBAAyB;IACzB,yBAAyB;IACzB,sBAAuB;CACvB;AAED;IACC,mBAAoB;CACpB;AAED;IACC,UAAU;IACV,WAAW;IACX,YAAY;IACZ,aAAa;IACb,qGAA2B;IAC3B,oBAAkC;IAClC,0BAA2B;CAC3B;AAED;IACC;;;;;;GAME;IACF,2BAA2B;IAC3B,YAAa;CACb;AACD;IACC,gBAAiB;CACjB;AAED;IACC;QACC,gBAAiB;KACjB;CACD;AAED;IACC;QACC,wBAAyB;KACzB;IACD;QACC,2BAA4B;KAC5B;CACD;AAED;IACC;;;;;;GAME;IACF,2BAA2B;IAC3B,qFAAsF;CACtF;AAED;IACC,gBAAiB;CACjB;ACjED;IACC,uBAAuB;IACvB,+CAA0C;IAC1C,kBAAkB;IAClB,aAAa;IACb,mBAAqC;IACrC,oBAAoB;IACpB,iBAAiB;IACjB,oBAAoB;IACpB,iBAAiB;IACjB,mBAAmB;IACnB,WAAW;IACX,cAAc;IACd,eAAe;IACf,YAAY;IACZ,iBAAoC;IACpC,wBAAkC;CAClC;AAED;IACC,iBAAiC;CACjC;AAED;;IAEC,cAAc;IACd,UAAW;CACX;AAED;IACC,uCAA0C;CAC1C;AAED;IACC,aAAc;CACd;ACnCD;IACC,0BAAkB;OAAlB,uBAAkB;QAAlB,sBAAkB;YAAlB,kBAAkB;IAClB,aAAa;IACb,cAAc;IACd,uBAAuB;IACvB,+CAA0C;IAC1C,mBAAqC;IACrC,wBAAwB;IACxB,sBAAsB;IACtB,oBAAoB;IACpB,uBAAuB;IACvB,mBAAmB;IACnB,oBAAoB;IACpB,qBAAqB;IACrB,eAAe;IACf,yBAAyB;IACzB,eAAe;IACf,gBAAgB;IAChB,mBAAmB;IACnB,uBAAuB;IACvB,kBAAmB;CACnB;AAED;IACC,yBAAoC;IACpC,iBAAiB;IACjB,oBAAqB;CACrB;AAED;IACC,0CAAyC;IACzC,wBAAkC;CAClC;AAED;IACC,mCAAyC;IACzC,0BAAmC;IACnC,8CAA0C;CAC1C;AAED;IACC,yCAAuC;IACvC,YAAiC;CACjC;AAED;IACC,WAAW;IACX,gBAAgB;IAChB,oCAAwC;CACxC;AAED;IACC,qCAA8C;IAC9C,wBAAkC;CAClC;AAED;IACC,WAAW;IACX,cAAc;IACd,uCAA0C;CAC1C;AAED;IACC,kCAA+C;CAC/C;AAED;IACC,yCAA6C;CAC7C;ACpED;IACC,sBAAsB;IACtB,eAAe;IACf,gBAAgB;IAChB,mBAAqC;IACrC,eAAe;IACf,sBAAuB;CACvB;AAED;IACC,oCAAwC;CACxC;AAED;IACC,qCAAwC;IACxC,gDAAiD;CACjD;AAED;IACC,0BAA0C;IAC1C,YAAoC;CACpC;AAED;IACC,aAAc;CACd;ACzBD;IACC,eAAe;IACf,4BAA4B;IAC5B,oBAAoB;IACpB,sBAAsB;IACtB,aAAa;IACb,oBAAoB;IACpB,iBAAiB;IACjB,iBAAiB;IACjB,cAAe;CACf;AAED;IACC,cAAe;CACf;AAED;IACC,qBAAqB;IACrB,eAAgB;CAChB;ACnBD;IACC,eAAe;IACf,eAAe;IACf,eAAe;IACf,uBAAuB;IACvB,6BAA6B;IAC7B,yBAAyB;IACzB,+CAA0C;IAC1C,iBAAiB;IACjB,gBAAgB;IAChB,iCAAkC;CAClC;AAED;IACC;QACC,iBAAkB;KAClB;CACD;ACjBD;IACC,sBAAsB;IACtB,cAAe;CACf;ACHD;IACC,cAAc;IACd,+CAA0C;IAC1C,kBAAqC;CACrC;AAED;IACC,gBAAiB;CACjB;AAED;IACC,4BAA8C;IAC9C,8BAAiD;CACjD;AAED;IACC,gBAAiB;CACjB;AAED;IACC,6BAA+C;IAC/C,+BAAkD;CAClD;ACtBD;IACC,4BAAoB;QAApB,oBAAoB;IACpB,YAAY;IACZ,0BAA0B;IAC1B,SAAU;CACV;AAED;;;;;;;;;IASC,iBAAiB;IACjB,6BAA8B;CAC9B;AAED;IACC,YAAa;CACb;AAED;;IAEC,0BAA2B;CAC3B;AAED;IACC,eAAe;IACf,2BAA2B;IAC3B,YAAY;IACZ,WAAW;IACX,uBAAwB;CACxB;AACD;IACC,kBAAmB;CACnB;AACD;IACC,UAAW;CACX;AAED;IACC,WAAW;IACX,cAAe;CACf;AAED;IACC,iBAAkB;CAClB;AAED;IACC,cAAe;CACf;AAED;IACC,2EAA6E;IAC7E,iBAAiB;IACjB,wBAAwB;IACxB,cAAc;IACd,uBAAuB;IACvB,oBAAoB;IACpB,gBAAiB;CACjB;AAED;IACC,kBAAkB;IAClB,WAAW;IACX,cAAc;IACd,YAAa;CACb;AAED;IACC,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;IACjB,mBAAmB;IACnB,8BAA+B;IAC/B,mCAAmC;IACnC,yBAA0B;CAC1B;AAED;IACC,cAAc;IACd,wBAAwB;IACxB,+BAA+B;IAC/B,YAAa;CACb;AAED;IACC,eAAe;IACf,cAAc;IACd,6EAA8E;CAC9E;AACD;IACC,gFAAiF;CACjF;AAED;IACC,WAAW;IACX,cAAe;CACf;AAED;IACC,eAAe;IACf,6BAA8B;CAC9B;AAED;IACC,mBAAmB;IACnB,aAAe;CACf;AACD;IACC,WAAW;IACX,cAAe;CACf;AAED;IACC,cAAc;IACd,gBAAgB;IAChB,sBAAsB;IACtB,oBAAoB;IACpB,YAAY;IACZ,kBAAkB;IAClB,8BAA8B;IAC9B,yJAA6J;CAC7J;AAED;IACC,gBAAgB;IAChB,cAAe;CACf;AAED;IACC,iBAAiB;IACjB,cAAc;IACd,wBAAwB;IACxB,eAAe;IACf,gBAAiB;CACjB;AAED;IACC,eAAe;IACf,eAAgB;CAChB;AACD;IACC,kBAAmB;CACnB;AAED;;IAEC,0BAA2B;CAC3B", "file": "web.css", "sourcesContent": [ - "[mol_view] {\n\ttransition-property: background-color, height, width, min-height, min-width, max-width, max-height, transform;\n\ttransition-duration: .1s;\n\t-webkit-appearance: none;\n}\n\n[mol_view_root] {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\theight: 100%;\n\tfont: var(--mol_skin_font);\n}\n\n[mol_view_error] {\n\tbackground-image: repeating-linear-gradient(\n\t\t135deg,\n\t\trgba(255,220,220,1),\n\t\trgba(255,220,220,1) 11px,\n\t\trgba(255,255,220,1) 10px,\n\t\trgba(255,255,220,1) 20px\n\t) !important;\n\tbackground-size: 28px 28px !important;\n}\n[mol_view_error] * {\n\tbackground: none !important;\n}\n\n@keyframes mol_view_wait_show {\n\tfrom {\n\t\tbackground: none;\n\t}\n}\n\n@keyframes mol_view_wait_move {\n\tfrom {\n\t\tbackground-position: 0 0;\n\t}\n\tto {\n\t\tbackground-position: 28px 0;\n\t}\n}\n\n[mol_view_error=\"$mol_atom_wait\"] ,\n[mol_view_error=\"$mol_atom_wait\"] * {\n\tbackground-image: repeating-linear-gradient(\n\t\t45deg,\n\t\tcolor( var(--mol_skin_base) alpha(.025) ),\n\t\tcolor( var(--mol_skin_base) alpha(.025) ) 9px,\n\t\trgba(255,255,255,.015) 10px,\n\t\trgba(255,255,255,.015) 20px\n\t) !important;\n\tbackground-size: 28px 28px !important;\n\tanimation: mol_view_wait_show .5s ease-in , mol_view_wait_move .25s steps(6) infinite !important;\n}\n", - "[mol_string] {\n\tbox-sizing: border-box;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n\toutline-offset: 0;\n\tborder: none;\n\tborder-radius: var(--mol_skin_round);\n\twhite-space: nowrap;\n\toverflow: hidden;\n\tpadding: .5rem;\n\ttext-align: left;\n\tposition: relative;\n\tz-index: 0;\n\tfont: inherit;\n\tflex: 0 1 auto;\n\twidth: 8em;\n\tbackground: var(--mol_skin_passive);\n\tcolor: var(--mol_skin_passive_text);\n\tmargin: auto;\n}\n\n[mol_string]:enabled {\n\tbackground: var(--mol_skin_card);\n\tcolor: var(--mol_skin_light_text);\n}\n\n[mol_string]:enabled:hover ,\n[mol_string]:focus {\n\toutline: none;\n\tz-index: 1;\n}\n\n[mol_string]:focus {\n\tbox-shadow: 0 0 0 1px var(--mol_skin_focus_line);\n}\n\n[mol_string]::-ms-clear {\n\tdisplay: none;\n}\n", - "[mol_button] {\n\tuser-select: none;\n\tborder: none;\n\tfont: inherit;\n\tbackground-color: none;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n\tborder-radius: var(--mol_skin_round);\n\tflex: 0 1 auto;\n\tjustify-content: center;\n\talign-content: center;\n\talign-items: center;\n\tvertical-align: middle;\n\ttext-align: center;\n\tpadding: .5rem;\n\tdisplay: inline-flex;\n\ttext-decoration: inherit;\n\tcolor: inherit;\n\tcursor: inherit;\n\tposition: relative;\n\tbox-sizing: border-box;\n\tmargin: auto;\n}\n\n[mol_button][disabled] {\n\tcolor: var(--mol_skin_passive_text);\n}\n\n[mol_button_minor]:not([disabled]) {\n\tbackground-color: var(--mol_skin_button);\n\tcolor: var(--mol_skin_light_text);\n}\n\n[mol_button_major]:not([disabled]) {\n\tbackground-color: var(--mol_skin_accent);\n\tcolor: var(--mol_skin_accent_text);\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n}\n\n[mol_button_danger]:not([disabled]) {\n\tbackground-color: var(--mol_skin_warn);\n\tcolor: var(--mol_skin_warn_text);\n}\n\n[mol_button]:not([disabled]):hover {\n\tz-index: 1;\n\tcursor: pointer;\n\tbackground-color: var(--mol_skin_hover);\n}\n\n[mol_button_minor]:not([disabled]):hover {\n\tbackground-color: var(--mol_skin_light_hover);\n\tcolor: var(--mol_skin_light_text);\n}\n\n[mol_button]:focus {\n\tz-index: 1;\n\toutline: none;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_focus_line);\n}\n\n[mol_button_major]:not([disabled]):hover {\n\tbackground-color: var(--mol_skin_accent_hover);\n}\n\n[mol_button_danger]:not([disabled]):hover {\n\tbackground-color: var(--mol_skin_warn_hover);\n}\n", - "[mol_link] {\n\ttext-decoration: none;\n\tcolor: var(--mol_skin_base);\n\tcursor: pointer;\n\tborder-radius: var(--mol_skin_round);\n\tdisplay: inline-flex;\n\tpadding: .5rem;\n\tbox-sizing: border-box;\n\talign-items: baseline;\n}\n\n[mol_link]:not([mol_link_current]):hover {\n\tbackground-color: var(--mol_skin_hover);\n}\n\n[mol_link]:not([mol_link_current]):focus {\n\t/*box-shadow: 0 0 0 1px var(--mol_skin_focus);*/\n\tbackground-color: var(--mol_skin_hover);\n\tbox-shadow: 0 0 0 1px var(--mol_skin_hover_line);\n}\n\n[mol_link_current] {\n\tbackground-color: var(--mol_skin_base);\n\tcolor: var(--mol_skin_base_text);\n}\n\n[mol_link]:focus {\n\toutline: none;\n}\n", - "[mol_check] {\n\tflex: 0 1 auto;\n\tjustify-content: flex-start;\n\talign-items: center;\n\talign-content: center;\n\tborder: none;\n\tfont-weight: normal;\n\tbox-shadow: none;\n\ttext-align: left;\n}\n\n[mol_check]:not([mol_check_checked]) {\n\t/*background: transparent;*/\n\tcolor: inherit;\n}\n\n[mol_check_icon] {\n\tdisplay: inline-flex;\n\t/*vertical-align: -10%;*/\n\tvertical-align: middle;\n}\n\n[mol_check_label] {\n\tdisplay: inline-flex;\n}\n", - "[mol_scroll] {\n\toverflow: auto;\n\t/*overflow-y: scroll;*/\n\tflex: 1 1 auto;\n\tbox-sizing: border-box;\n\twill-change: scroll-position;\n\ttransform: translateZ(0);\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n\tmax-height: 100%;\n\tmax-width: 100%;\n\t-webkit-overflow-scrolling: touch;\n\talign-self: stretch;\n}\n\n@media print {\n\t[mol_scroll] {\n\t\toverflow: visible;\n\t}\n}\n", + "[mol_view] {\n\ttransition-property: background-color, height, width, min-height, min-width, max-width, max-height, transform;\n\ttransition-duration: .2s;\n\t-webkit-appearance: none;\n\tword-break: break-word;\n}\n\n[mol_view] > * {\n\tword-break: inherit;\n}\n\n[mol_view_root] {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\theight: 100%;\n\tfont: var(--mol_skin_font);\n\tbackground: var(--mol_skin_light);\n\ttouch-action: manipulation;\n}\n\n[mol_view][mol_view_error]:not([mol_view_error=\"$mol_atom_wait\"]) {\n\tbackground-image: repeating-linear-gradient(\n\t\t135deg,\n\t\trgba(255,220,220,1),\n\t\trgba(255,220,220,1) 11px,\n\t\trgba(255,255,220,1) 10px,\n\t\trgba(255,255,220,1) 20px\n\t);\n\tbackground-size: 28px 28px;\n\tcolor: black;\n}\n[mol_view][mol_view_error] * {\n\tbackground: none;\n}\n\n@keyframes mol_view_wait_show {\n\tfrom {\n\t\tbackground: none;\n\t}\n}\n\n@keyframes mol_view_wait_move {\n\tfrom {\n\t\tbackground-position: 0 0;\n\t}\n\tto {\n\t\tbackground-position: 28px 0;\n\t}\n}\n\n[mol_view][mol_view_error=\"$mol_atom_wait\"] {\n\tbackground-image: repeating-linear-gradient(\n\t\t45deg,\n\t\tcolor( var(--mol_skin_base) alpha(.025) ),\n\t\tcolor( var(--mol_skin_base) alpha(.025) ) 9px,\n\t\trgba(255,255,255,.015) 10px,\n\t\trgba(255,255,255,.015) 20px\n\t);\n\tbackground-size: 28px 28px;\n\tanimation: mol_view_wait_show .5s ease-in , mol_view_wait_move .25s steps(6) infinite;\n}\n\n[mol_view][mol_view_error=\"$mol_atom_wait\"] * {\n\tbackground: none;\n}\n", + "[mol_string] {\n\tbox-sizing: border-box;\n\tbox-shadow: var(--mol_skin_light_outline);\n\toutline-offset: 0;\n\tborder: none;\n\tborder-radius: var(--mol_skin_round);\n\twhite-space: nowrap;\n\toverflow: hidden;\n\tpadding: .5rem 1rem;\n\ttext-align: left;\n\tposition: relative;\n\tz-index: 0;\n\tfont: inherit;\n\tflex: 0 1 auto;\n\twidth: 100%;\n\tbackground: var(--mol_skin_passive);\n\tcolor: var(--mol_skin_light_text);\n}\n\n[mol_string]:enabled {\n\tbackground: var(--mol_skin_card);\n}\n\n[mol_string]:enabled:hover ,\n[mol_string]:focus {\n\toutline: none;\n\tz-index: 1;\n}\n\n[mol_string]:focus {\n\tbox-shadow: var(--mol_skin_focus_outline);\n}\n\n[mol_string]::-ms-clear {\n\tdisplay: none;\n}\n", + "[mol_button] {\n\tuser-select: none;\n\tborder: none;\n\tfont: inherit;\n\tbackground-color: none;\n\tbox-shadow: var(--mol_skin_light_outline);\n\tborder-radius: var(--mol_skin_round);\n\tjustify-content: center;\n\talign-content: center;\n\talign-items: center;\n\tvertical-align: middle;\n\ttext-align: center;\n\tpadding: .5rem 1rem;\n\tdisplay: inline-flex;\n\tflex-shrink: 0;\n\ttext-decoration: inherit;\n\tcolor: inherit;\n\tcursor: inherit;\n\tposition: relative;\n\tbox-sizing: border-box;\n\tword-break: normal;\n}\n\n[mol_button][disabled] {\n\tcolor: var(--mol_skin_passive_text);\n\tbackground: none;\n\tpointer-events: none;\n}\n\n[mol_button_minor] {\n\tbackground-color: var(--mol_skin_button);\n\tcolor: var(--mol_skin_light_text);\n}\n\n[mol_button_major] {\n\tbackground-color: var(--mol_skin_accent);\n\tcolor: var(--mol_skin_accent_text);\n\tbox-shadow: var(--mol_skin_light_outline);\n}\n\n[mol_button_danger] {\n\tbackground-color: var(--mol_skin_warn);\n\tcolor: var(--mol_skin_warn_text);\n}\n\n[mol_button]:hover {\n\tz-index: 1;\n\tcursor: pointer;\n\tbackground-color: var(--mol_skin_hover);\n}\n\n[mol_button_minor]:hover {\n\tbackground-color: var(--mol_skin_light_hover);\n\tcolor: var(--mol_skin_light_text);\n}\n\n[mol_button]:focus {\n\tz-index: 1;\n\toutline: none;\n\tbox-shadow: var(--mol_skin_focus_outline);\n}\n\n[mol_button_major]:hover {\n\tbackground-color: var(--mol_skin_accent_hover);\n}\n\n[mol_button_danger]:hover {\n\tbackground-color: var(--mol_skin_warn_hover);\n}\n", + "[mol_link] {\n\ttext-decoration: none;\n\tcolor: inherit;\n\tcursor: pointer;\n\tborder-radius: var(--mol_skin_round);\n\tpadding: .5rem;\n\tbox-sizing: border-box;\n}\n\n[mol_link]:not([mol_link_current]):hover {\n\tbackground-color: var(--mol_skin_hover);\n}\n\n[mol_link]:not([mol_link_current]):focus {\n\tbackground-color: var(--mol_skin_hover);\n\tbox-shadow: 0 0 0 1px var(--mol_skin_hover_line);\n}\n\n[mol_link_current] {\n\tbackground-color: var(--mol_skin_current);\n\tcolor: var(--mol_skin_current_text);\n}\n\n[mol_link]:focus {\n\toutline: none;\n}\n", + "[mol_check] {\n\tflex: 0 0 auto;\n\tjustify-content: flex-start;\n\talign-items: center;\n\talign-content: center;\n\tborder: none;\n\tfont-weight: normal;\n\tbox-shadow: none;\n\ttext-align: left;\n\tpadding: .5rem;\n}\n\n[mol_check]:not([mol_check_checked]) {\n\tcolor: inherit;\n}\n\n[mol_check_label] {\n\tdisplay: inline-flex;\n\tmargin: 0 .5rem;\n}\n", + "[mol_scroll] {\n\tdisplay: block;\n\toverflow: auto;\n\tflex: 1 1 auto;\n\tbox-sizing: border-box;\n\twill-change: scroll-position;\n\ttransform: translateZ(0);\n\tbox-shadow: var(--mol_skin_light_outline);\n\tmax-height: 100%;\n\tmax-width: 100%;\n\t-webkit-overflow-scrolling: touch;\n}\n\n@media print {\n\t[mol_scroll] {\n\t\toverflow: visible;\n\t}\n}\n", "[mol_list] {\n\twill-change: contents;\n\tdisplay: block;\n}\n", - "[mol_bar] {\n\tdisplay: flex;\n\tbox-shadow: 0 0 0 1px var(--mol_skin_light_line);\n\tborder-radius: var(--mol_skin_round);\n\tmargin: auto;\n}\n\n[mol_bar] > * {\n\tborder-radius: 0;\n}\n\n[mol_bar] > *:first-child {\n\tborder-top-left-radius: var(--mol_skin_round);\n\tborder-bottom-left-radius: var(--mol_skin_round);\n}\n\n[mol_bar] > *:not(:first-child) {\n\tmargin-left: 1px;\n}\n\n[mol_bar] > *:last-child {\n\tborder-top-right-radius: var(--mol_skin_round);\n\tborder-bottom-right-radius: var(--mol_skin_round);\n}\n", - "[mol_app_todomvc] {\n\talign-self: stretch;\n\twidth: 100%;\n\tbackground-color: #f5f5f5;\n\tmargin: 0;\n}\n\n[mol_app_todomvc] [mol_string] ,\n[mol_app_todomvc] [mol_string]:focus ,\n[mol_app_todomvc] [mol_string]:hover ,\n[mol_app_todomvc] [mol_button] ,\n[mol_app_todomvc] [mol_button]:focus ,\n[mol_app_todomvc] [mol_button]:hover ,\n[mol_app_todomvc] [mol_link] ,\n[mol_app_todomvc] [mol_link]:focus ,\n[mol_app_todomvc] [mol_link]:hover {\n\tbox-shadow: none;\n\tbackground-color: transparent;\n}\n\n[mol_app_todomvc] [mol_link_current] {\n\tcolor: black;\n}\n\n[mol_app_todomvc] [mol_link]:not([mol_link_current]):hover ,\n[mol_app_todomvc] [mol_link]:not([mol_link_current]):focus {\n\ttext-decoration: underline;\n}\n\n[mol_app_todomvc_head_complete] {\n\tflex: 0 0 4rem;\n\ttransform: rotate( 90deg );\n\topacity: .5;\n\tpadding: 0;\n\tjustify-content: center;\n}\n[mol_app_todomvc_head_complete]:disabled {\n\tvisibility: hidden;\n}\n[mol_app_todomvc_head_complete][mol_check_checked] {\n\topacity: 1;\n}\n\n[mol_app_todomvc_add] {\n\tpadding: 0;\n\tflex: 1 1 auto;\n}\n\n[mol_app_todomvc_list] {\n\tfont-size: 1.5rem;\n}\n\n[mol_app_todomvc_panel] {\n\tbox-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1);\n\tmax-width: 38rem;\n\tbackground-color: white;\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 0 auto 2rem;\n\ttransition: none;\n}\n\n[mol_app_todomvc_head] {\n\tfont-size: 1.5rem;\n\tpadding: 0;\n\tdisplay: flex;\n\theight: 4rem;\n}\n\n[mol_app_todomvc_title] {\n\tdisplay: block;\n\tpadding: .25rem;\n\tfont-size: 7rem;\n\tfont-weight: 100;\n\ttext-align: center;\n\tcolor: rgba(175, 47, 47, 0.15);\n\ttext-rendering: optimizeLegibility;\n}\n\n[mol_app_todomvc_task_row] {\n\tdisplay: flex;\n\tbackground-color: white;\n\tbox-shadow: 0 -1px 0 0 #ededed;\n\theight: 4rem;\n}\n\n[mol_app_todomvc_task_row_complete] {\n\tflex: 0 0 4rem;\n\tpadding: 1rem;\n\tbackground: no-repeat center center url('data:image/svg+xml;utf8,');\n}\n[mol_app_todomvc_task_row_complete][mol_check_checked] {\n\tbackground: no-repeat center center url('data:image/svg+xml;utf8,')\n}\n\n[mol_app_todomvc_task_row_title] {\n\tpadding: 0;\n\tflex: 1 1 auto;\n}\n\n[mol_app_todomvc_task_row_completed] [mol_app_todomvc_task_row_title] {\n\tcolor: #d9d9d9;\n\ttext-decoration: line-through;\n}\n\n[mol_app_todomvc_task_row_drop] {\n\tfont-size: 1.25rem;\n\tflex: 0 04rem;\n}\n[mol_app_todomvc_task_row]:not(:hover) [mol_app_todomvc_task_row_drop]:not(:focus) {\n\topacity: 0;\n\tcolor: #cc9a9a;\n}\n\n[mol_app_todomvc_foot] {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: baseline;\n\tpadding: .5rem 1rem;\n\tcolor: #777;\n\tfont-size: .85rem;\n\tborder-top: 1px solid #ededed;\n\tbox-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2);\n}\n\n[mol_app_todomvc_pending] {\n\tpadding: .25rem;\n\tflex: 0 1 6rem;\n}\n\n[mol_app_todomvc_filter] {\n\tflex: 1 100 auto;\n\tdisplay: flex;\n\tjustify-content: center;\n\tmargin: .25rem;\n\tbox-shadow: none;\n}\n\n[mol_app_todomvc_sweep] {\n\tflex: 0 1 auto;\n\tpadding: .25rem;\n}\n[mol_app_todomvc_sweep][disabled] {\n\tvisibility: hidden;\n}\n\n[mol_app_todomvc_sweep]:hover ,\n[mol_app_todomvc_sweep]:focus {\n\ttext-decoration: underline;\n}\n" + "[mol_bar] {\n\tdisplay: flex;\n\tbox-shadow: var(--mol_skin_light_outline);\n\tborder-radius: var(--mol_skin_round);\n}\n\n[mol_bar] > * {\n\tborder-radius: 0;\n}\n\n[mol_bar] > *:first-child {\n\tborder-top-left-radius: var(--mol_skin_round);\n\tborder-bottom-left-radius: var(--mol_skin_round);\n}\n\n[mol_bar] > *:not(:first-child) {\n\tmargin-left: 1px;\n}\n\n[mol_bar] > *:last-child {\n\tborder-top-right-radius: var(--mol_skin_round);\n\tborder-bottom-right-radius: var(--mol_skin_round);\n}\n", + "[mol_app_todomvc] {\n\talign-self: stretch;\n\twidth: 100%;\n\tbackground-color: #f5f5f5;\n\tmargin: 0;\n}\n\n[mol_app_todomvc] [mol_string] ,\n[mol_app_todomvc] [mol_string]:focus ,\n[mol_app_todomvc] [mol_string]:hover ,\n[mol_app_todomvc] [mol_button] ,\n[mol_app_todomvc] [mol_button]:focus ,\n[mol_app_todomvc] [mol_button]:hover ,\n[mol_app_todomvc] [mol_link] ,\n[mol_app_todomvc] [mol_link]:focus ,\n[mol_app_todomvc] [mol_link]:hover {\n\tbox-shadow: none;\n\tbackground-color: transparent;\n}\n\n[mol_app_todomvc] [mol_link_current] {\n\tcolor: black;\n}\n\n[mol_app_todomvc] [mol_link]:not([mol_link_current]):hover ,\n[mol_app_todomvc] [mol_link]:not([mol_link_current]):focus {\n\ttext-decoration: underline;\n}\n\n[mol_app_todomvc_head_complete] {\n\tflex: 0 0 4rem;\n\ttransform: rotate( 90deg );\n\topacity: .5;\n\tpadding: 0;\n\tjustify-content: center;\n}\n[mol_app_todomvc_head_complete]:disabled {\n\tvisibility: hidden;\n}\n[mol_app_todomvc_head_complete][mol_check_checked] {\n\topacity: 1;\n}\n\n[mol_app_todomvc_add] {\n\tpadding: 0;\n\tflex: 1 1 auto;\n}\n\n[mol_app_todomvc_list] {\n\tfont-size: 1.5rem;\n}\n\n[mol_app_todomvc_page] {\n\tflex: 1 1 auto;\n}\n\n[mol_app_todomvc_panel] {\n\tbox-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1);\n\tmax-width: 38rem;\n\tbackground-color: white;\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 0 auto 2rem;\n\ttransition: none;\n}\n\n[mol_app_todomvc_head] {\n\tfont-size: 1.5rem;\n\tpadding: 0;\n\tdisplay: flex;\n\theight: 4rem;\n}\n\n[mol_app_todomvc_title] {\n\tdisplay: block;\n\tpadding: .25rem;\n\tfont-size: 7rem;\n\tfont-weight: 100;\n\ttext-align: center;\n\tcolor: rgba(175, 47, 47, 0.15);\n\ttext-rendering: optimizeLegibility;\n\ttext-transform: lowercase;\n}\n\n[mol_app_todomvc_task_row] {\n\tdisplay: flex;\n\tbackground-color: white;\n\tbox-shadow: 0 -1px 0 0 #ededed;\n\theight: 4rem;\n}\n\n[mol_app_todomvc_task_row_complete] {\n\tflex: 0 0 4rem;\n\tpadding: 1rem;\n\tbackground: no-repeat center center url('mol/app/todomvc/todomvc_active.svg');\n}\n[mol_app_todomvc_task_row_complete][mol_check_checked] {\n\tbackground: no-repeat center center url('mol/app/todomvc/todomvc_completed.svg');\n}\n\n[mol_app_todomvc_task_row_title] {\n\tpadding: 0;\n\tflex: 1 1 auto;\n}\n\n[mol_app_todomvc_task_row_completed] [mol_app_todomvc_task_row_title] {\n\tcolor: #d9d9d9;\n\ttext-decoration: line-through;\n}\n\n[mol_app_todomvc_task_row_drop] {\n\tfont-size: 1.25rem;\n\tflex: 0 04rem;\n}\n[mol_app_todomvc_task_row]:not(:hover) [mol_app_todomvc_task_row_drop]:not(:focus) {\n\topacity: 0;\n\tcolor: #cc9a9a;\n}\n\n[mol_app_todomvc_foot] {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: baseline;\n\tpadding: .5rem 1rem;\n\tcolor: #777;\n\tfont-size: .85rem;\n\tborder-top: 1px solid #ededed;\n\tbox-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2);\n}\n\n[mol_app_todomvc_pending] {\n\tpadding: .25rem;\n\tflex: 0 1 6rem;\n}\n\n[mol_app_todomvc_filter] {\n\tflex: 1 100 auto;\n\tdisplay: flex;\n\tjustify-content: center;\n\tmargin: .25rem;\n\tbox-shadow: none;\n}\n\n[mol_app_todomvc_sweep] {\n\tflex: 0 1 auto;\n\tpadding: .25rem;\n}\n[mol_app_todomvc_sweep][disabled] {\n\tvisibility: hidden;\n}\n\n[mol_app_todomvc_sweep]:hover ,\n[mol_app_todomvc_sweep]:focus {\n\ttext-decoration: underline;\n}\n" ] } \ No newline at end of file diff --git a/examples/mol/-/web.d.ts b/examples/mol/-/web.d.ts deleted file mode 100644 index b4a3b93cfa..0000000000 --- a/examples/mol/-/web.d.ts +++ /dev/null @@ -1,784 +0,0 @@ -declare namespace $ { - class $mol_dict { - size: number; - get(key: Key): Value; - set(key: Key, value: Value): this; - delete(key: Key): void; - has(key: Key): boolean; - clear(): void; - keys(): Key[]; - values(): Value[]; - entries(): [Key, Value][]; - forEach(handler: (value: Value, key: Key) => void): void; - } - class $mol_dict_shim implements $mol_dict { - _keys: { - [index: string]: Key[]; - }; - _values: { - [index: string]: Value[]; - }; - size: number; - set(key: Key, value: Value): this; - get(key: Key): Value; - has(key: Key): boolean; - delete(key: Key): void; - forEach(handle: (val: Value, key: Key) => void): void; - keys(): Key[]; - values(): Value[]; - entries(): [Key, Value][]; - clear(): void; - } -} -interface Function { - name: string; -} -declare namespace $ { - var $mol_func_name_dict: $mol_dict; - function $mol_func_name(func: Function): string; -} -declare namespace $ { - function $mol_log(path: string, values: any[]): void; - namespace $mol_log { - function filter(next?: string): string; - } -} -declare namespace $ { - class $mol_object { - Class(): any; - static toString(): string; - private 'object_owner()'; - object_owner(next?: Object): Object; - private 'object_field()'; - object_field(next?: string): string; - toString(): string; - toJSON(): string; - setup(script: (obj: this) => void): this; - 'destroyed()': boolean; - destroyed(next?: boolean): boolean; - log(values: any[]): void; - } -} -declare namespace $ { - class $mol_set { - size: number; - add(key: Value): this; - delete(key: Value): void; - has(key: Value): boolean; - clear(): void; - keys(): Value[]; - values(): Value[]; - entries(): [Value, Value][]; - forEach(handler: (key: Value, value: Value) => void): void; - } - class $mol_set_shim implements $mol_set { - _index: { - [index: string]: Value[]; - }; - size: number; - add(value: Value): this; - has(value: Value): boolean; - delete(value: Value): void; - forEach(handle: (val: Value, key: Value) => void): void; - keys(): Value[]; - values(): Value[]; - entries(): [Value, Value][]; - clear(): void; - } -} -declare namespace $ { - class $mol_defer extends $mol_object { - run: () => void; - constructor(run: () => void); - destroyed(next?: boolean): boolean; - static all: $mol_defer[]; - static timer: number; - static scheduleNative: (handler: () => void) => number; - static schedule(): void; - static unschedule(): void; - static add(defer: $mol_defer): void; - static drop(defer: $mol_defer): void; - static run(): void; - } -} -declare namespace $ { - var $mol_state_stack: $mol_dict; -} -declare var Proxy: any; -declare namespace $ { - enum $mol_atom_status { - obsolete, - checking, - pulling, - actual, - } - class $mol_atom extends $mol_object { - masters: $mol_set<$mol_atom>; - slaves: $mol_set<$mol_atom>; - status: $mol_atom_status; - autoFresh: boolean; - handler: (next?: Value | Error, force?: $mol_atom_force) => Value; - host: { - [key: string]: any; - }; - field: string; - constructor(host: any, handler: (next?: Value | Error, force?: $mol_atom_force) => Value, field?: string); - destroyed(next?: boolean): boolean; - unlink(): void; - toString(): string; - get(force?: $mol_atom_force): Value; - actualize(force?: $mol_atom_force): void; - pull(force?: $mol_atom_force): any; - _next: Value | Error; - set(next: Value): Value; - normalize(next: Value, prev: Value | Error): Value; - push(next_raw: Value | Error): any; - obsolete_slaves(): void; - check_slaves(): void; - check(): void; - obsolete(): Value; - lead(slave: $mol_atom): void; - dislead(slave: $mol_atom): void; - obey(master: $mol_atom): void; - disobey(master: $mol_atom): void; - disobey_all(): void; - value(next?: Value, force?: $mol_atom_force): any; - static stack: $mol_atom[]; - static updating: $mol_atom[]; - static reaping: $mol_set<$mol_atom>; - static scheduled: boolean; - static actualize(atom: $mol_atom): void; - static reap(atom: $mol_atom): void; - static unreap(atom: $mol_atom): void; - static schedule(): void; - static sync(): void; - } - class $mol_atom_wait extends Error { - message: string; - name: string; - constructor(message?: string); - } - class $mol_atom_force extends Object { - $mol_atom_force: boolean; - static $mol_atom_force: boolean; - } - function $mol_atom_task(host: any, handler: () => Value): $mol_atom; -} -declare namespace $ { - function $mol_mem(config?: { - lazy?: boolean; - }): (obj: Host, name: string, descr: TypedPropertyDescriptor<(next?: Value, force?: $mol_atom_force) => Value>) => void; - function $mol_mem_key(config?: { - lazy?: boolean; - }): (obj: Host, name: string, descr: TypedPropertyDescriptor<(key: Key, next?: Value, force?: $mol_atom_force) => Value>) => void; -} -declare namespace $ { - class $mol_window extends $mol_object { - static size(next?: { - width: number; - height: number; - }): { - width: number; - height: number; - }; - } -} -declare namespace $ { - var $mol_dom_context: Window & { - Node: typeof Node; - Element: typeof Element; - HTMLElement: typeof HTMLElement; - XMLHttpRequest: typeof XMLHttpRequest; - }; -} -declare namespace $ { -} -declare namespace $ { - interface $mol_dom_render_config { - childNodes?: NodeList | Array Node; - }>; - attributes?: { - [key: string]: string | number | boolean; - }; - style?: { - [key: string]: string | number; - }; - events?: { - [key: string]: (event: Event) => any; - }; - [key: string]: any; - } - function $mol_dom_render(el: Element, config: $mol_dom_make_config): Element; - function $mol_dom_render_childNodes(el: Element, childNodes?: NodeList | Array Node; - }>): void; - function $mol_dom_render_attributes(el: Element, attrs?: { - [key: string]: string | number | boolean; - }): void; - function $mol_dom_render_style(el: Element, styles?: { - [key: string]: string | number; - }): void; - function $mol_dom_render_event(el: Element, events?: { - [key: string]: (event: Event) => any; - }): void; -} -declare namespace $ { - interface $mol_dom_make_config extends $mol_dom_render_config { - id?: string; - localName?: string; - namespaceURI?: string; - } - function $mol_dom_make(config: $mol_dom_make_config): Element; -} -declare class WeakMap { - get(key: Key): Value; - set(key: Key, value: Value): this; -} -declare namespace $ { - class $mol_view_dom extends $mol_object { - static nodes: WeakMap<$mol_view, Element>; - static node(view: $mol_view): Element; - static mount(view: $mol_view, node: Element): Element; - } -} -declare namespace $ { - let $mol_view_context: $mol_view_context; - interface $mol_view_context { - $mol_view_visible_width(): number; - $mol_view_visible_height(): number; - $mol_view_state_key(suffix: string): string; - } - class $mol_view extends $mol_object { - static Root(id: number): $mol_view; - title(): string; - focused(next?: boolean): boolean; - context(next?: $mol_view_context): $mol_view_context; - context_sub(): $mol_view_context; - state_key(suffix?: string): string; - dom_name(): string; - dom_name_space(): string; - sub(): (string | number | boolean | Node | $mol_view)[]; - sub_visible(): (string | number | boolean | Node | $mol_view)[]; - minimal_width(): number; - minimal_height(): number; - 'view_classes()': Function[]; - view_classes(): Function[]; - dom_node(): Element; - dom_tree(): Element; - render(): Element; - attr_static(): { - [key: string]: string | number | boolean; - }; - attr(): { - [key: string]: string | number | boolean; - }; - style(): { - [key: string]: string | number; - }; - field(): { - [key: string]: any; - }; - event(): { - [key: string]: (event: Event) => void; - }; - 'event_wrapped()': { - [name: string]: (event?: Event) => any; - }; - event_wrapped(): { - [key: string]: (event: Event) => void; - }; - 'locale_contexts()': string[]; - locale_contexts(): string[]; - plugins(): $mol_view[]; - } -} -interface Window { - cordova: any; -} -declare namespace $ { -} -declare namespace $ { - class $mol_view_selection extends $mol_object { - static focused(next?: Element[], force?: $mol_atom_force): Element[]; - static position(...diff: any[]): any; - static onFocus(event: FocusEvent): void; - static onBlur(event: FocusEvent): void; - } -} -declare namespace $ { -} -declare namespace $ { - class $mol_string extends $mol_view { - dom_name(): string; - enabled(): boolean; - disabled(): boolean; - value(val?: any): any; - value_changed(val?: any): any; - hint(): string; - type(val?: any): any; - field(): { - "disabled": any; - "value": any; - "placeholder": any; - "type": any; - }; - event_change(event?: any): any; - event(): { - "input": (event?: any) => any; - }; - } -} -declare namespace $.$mol { - class $mol_string extends $.$mol_string { - event_change(next?: Event): void; - disabled(): boolean; - } -} -declare namespace $ { - enum $mol_keyboard_code { - backspace = 8, - tab = 9, - enter = 13, - shift = 16, - ctrl = 17, - alt = 18, - pause = 19, - capsLock = 20, - escape = 27, - space = 32, - pageUp = 33, - pageDown = 34, - end = 35, - home = 36, - left = 37, - up = 38, - right = 39, - down = 40, - insert = 45, - delete = 46, - key0 = 48, - key1 = 49, - key2 = 50, - key3 = 51, - key4 = 52, - key5 = 53, - key6 = 54, - key7 = 55, - key8 = 56, - key9 = 57, - A = 65, - B = 66, - C = 67, - D = 68, - E = 69, - F = 70, - G = 71, - H = 72, - I = 73, - J = 74, - K = 75, - L = 76, - M = 77, - N = 78, - O = 79, - P = 80, - Q = 81, - R = 82, - S = 83, - T = 84, - U = 85, - V = 86, - W = 87, - X = 88, - Y = 89, - Z = 90, - metaLeft = 91, - metaRight = 92, - select = 93, - numpad0 = 96, - numpad1 = 97, - numpad2 = 98, - numpad3 = 99, - numpad4 = 100, - numpad5 = 101, - numpad6 = 102, - numpad7 = 103, - numpad8 = 104, - numpad9 = 105, - multiply = 106, - add = 107, - subtract = 109, - decimal = 110, - divide = 111, - F1 = 112, - F2 = 113, - F3 = 114, - F4 = 115, - F5 = 116, - F6 = 117, - F7 = 118, - F8 = 119, - F9 = 120, - F10 = 121, - F11 = 122, - F12 = 123, - numLock = 144, - scrollLock = 145, - semicolon = 186, - equals = 187, - comma = 188, - dash = 189, - period = 190, - forwardSlash = 191, - graveAccent = 192, - bracketOpen = 219, - slashBack = 220, - bracketClose = 221, - quoteSingle = 222, - } -} -declare namespace $ { - class $mol_button extends $mol_view { - enabled(): boolean; - event_click(event?: any): any; - event_activate(event?: any): any; - evenet_key_press(event?: any): any; - event(): { - "click": (event?: any) => any; - "keypress": (event?: any) => any; - }; - disabled(): boolean; - tab_index(): string; - attr(): { - "disabled": any; - "role": any; - "tabindex": any; - }; - sub(): any[]; - } -} -declare namespace $.$mol { - class $mol_button extends $.$mol_button { - disabled(): boolean; - event_activate(next: Event): void; - evenet_key_press(event: KeyboardEvent): void; - tab_index(): string; - } -} -declare namespace $ { - class $mol_button_major extends $mol_button { - } -} -declare namespace $ { - class $mol_button_minor extends $mol_button { - } -} -declare namespace $ { - class $mol_button_danger extends $mol_button { - } -} -declare namespace $ { - function $mol_merge_dict(target: Target, source: Source): Target & Source; -} -declare namespace $ { - class $mol_state_arg extends $mol_object { - prefix: string; - static href(next?: string, force?: $mol_atom_force): string; - static dict(next?: { - [key: string]: string; - }): { - [key: string]: string; - }; - static value(key: string, next?: string): string; - static link(next: { - [key: string]: string; - }): string; - static make(next: { - [key: string]: string; - }): string; - constructor(prefix?: string); - value(key: string, next?: string): string; - sub(postfix: string): $mol_state_arg<{}>; - link(next: { - [key: string]: string; - }): string; - } -} -declare namespace $ { - class $mol_link extends $mol_view { - minimal_height(): number; - dom_name(): string; - uri(): string; - current(): boolean; - attr(): { - "href": any; - "mol_link_current": any; - }; - arg(): {}; - } -} -declare namespace $.$mol { - class $mol_link extends $.$mol_link { - uri(): string; - current(): boolean; - } -} -declare namespace $ { - class $mol_check extends $mol_button { - checked(val?: any): any; - attr(): { - "mol_check_checked": any; - "aria-checked": any; - "role": any; - "disabled": any; - "tabindex": any; - }; - Icon(): any; - label(): any[]; - Label(): $mol_view; - sub(): any[]; - } -} -declare namespace $.$mol { - class $mol_check extends $.$mol_check { - event_click(next?: Event): void; - } -} -declare namespace $ { - class $mol_state_session extends $mol_object { - static value(key: string, next?: Value): Value; - prefix(): string; - value(key: string, next?: Value): Value; - } -} -declare namespace $ { - class $mol_scroll extends $mol_view { - minimal_height(): number; - scroll_top(val?: any): any; - scroll_left(val?: any): any; - field(): { - "scrollTop": any; - "scrollLeft": any; - }; - event_scroll(event?: any): any; - event(): { - "scroll": (event?: any) => any; - }; - } -} -declare namespace $ { - interface $mol_view_context { - $mol_scroll_scroll_top(): number; - $mol_scroll_scroll_left(): number; - $mol_scroll_moving(): boolean; - } -} -declare namespace $.$mol { - class $mol_scroll extends $.$mol_scroll { - scroll_top(next?: number): number; - scroll_left(next?: number): number; - scroll_bottom(next?: number): number; - scroll_right(next?: number): number; - event_scroll(next?: Event): void; - _moving_task_frame: number; - moving_task_stop(): void; - moving(next?: boolean): boolean; - context_sub(): $mol_view_context; - } -} -declare var localStorage: Storage; -declare namespace $ { - class $mol_state_local extends $mol_object { - static value(key: string, next?: Value, force?: $mol_atom_force): Value; - prefix(): string; - value(key: string, next?: Value): Value; - } -} -declare namespace $ { -} -declare namespace $ { - class $mol_http_request extends $mol_object { - uri(): string; - method_get(): string; - method_put(): string; - credentials(): { - login?: string; - password?: string; - }; - headers(): {}; - body(): any; - 'native()': XMLHttpRequest; - native(): XMLHttpRequest; - destroyed(next?: boolean): boolean; - response(next?: any, force?: $mol_atom_force): XMLHttpRequest; - text(next?: string, force?: $mol_atom_force): string; - } -} -declare namespace $ { - class $mol_http_resource extends $mol_object { - static item(uri: string): $mol_http_resource; - uri(): string; - method_get(): string; - method_put(): string; - credentials(): { - login?: string; - password?: string; - }; - headers(): {}; - request(): $mol_http_request; - text(next?: string, force?: $mol_atom_force): string; - } -} -declare namespace $ { - class $mol_file extends $mol_object { - static absolute(path: string): $mol_file; - static relative(path: string): $mol_file; - static root(): $mol_file; - static base(): $mol_file; - path(): string; - parent(): $mol_file; - name(): string; - ext(): string; - content(next?: string, force?: $mol_atom_force): string; - resolve(path: string): $mol_file; - relate(base?: any): void; - } -} -declare namespace $ { - interface $mol_locale_dict { - [key: string]: string; - } - class $mol_locale extends $mol_object { - static lang_default(): string; - static lang(next?: string): string; - static source(lang: string): any; - static texts(next?: $mol_locale_dict): $mol_locale_dict; - static text(contexts: string[], key: string): string; - } -} -declare namespace $ { - class $mol_list extends $mol_view { - style(): { - "minHeight": any; - }; - rows(): any[]; - sub(): any[]; - Empty(): any; - } -} -declare namespace $.$mol { - class $mol_list extends $.$mol_list { - sub(): any[]; - row_offsets(): number[]; - row_context(index: number): $mol_view_context; - sub_visible(): any[]; - minimal_height(): number; - } -} -declare namespace $ { - class $mol_bar extends $mol_view { - } -} -declare namespace $ { - class $mol_app_todomvc extends $mol_scroll { - title(): string; - Title(): $mol_view; - head_complete_enabled(): boolean; - completed_all(val?: any): any; - Head_complete(): $mol_check; - task_title_new(val?: any): any; - event_add(event?: any): any; - Add(): $mol_app_todomvc_add; - Head_content(): any[]; - Head(): $mol_view; - task_rows(): any[]; - List(): $mol_list; - pending_message(): string; - Pending(): $mol_view; - filter_all_label(): string; - Filter_all(): $mol_link; - filter_active_label(): string; - Filter_active(): $mol_link; - filter_completed_label(): string; - Filter_completed(): $mol_link; - filterOptions(): any[]; - Filter(): $mol_bar; - sweep_enabled(): boolean; - event_sweep(event?: any): any; - sweep_label(): string; - Sweep(): $mol_button_minor; - foot_content(): any[]; - Foot(): $mol_view; - panels(): any[]; - Panel(): $mol_list; - Page(): $mol_list; - sub(): any[]; - task_completed(id: any, val?: any): any; - task_title(id: any, val?: any): any; - event_task_drop(id: any, event?: any): any; - Task_row(id: any): $mol_app_todomvc_task_row; - } -} -declare namespace $ { - class $mol_app_todomvc_add extends $mol_string { - hint(): string; - event_press(event?: any): any; - event(): { - "keyup": (event?: any) => any; - "input": (event?: any) => any; - }; - event_done(event?: any): any; - } -} -declare namespace $ { - class $mol_app_todomvc_task_row extends $mol_view { - minimal_height(): number; - completed(val?: any): any; - Complete(): $mol_check; - title_hint(): string; - title(val?: any): any; - Title(): $mol_string; - event_drop(event?: any): any; - Drop(): $mol_button; - sub(): any[]; - attr(): { - "mol_app_todomvc_task_row_completed": any; - }; - } -} -interface $mol_app_todomvc_task { - completed?: boolean; - title?: string; -} -declare namespace $.$mol { - class $mol_app_todomvc_add extends $.$mol_app_todomvc_add { - event_press(next?: KeyboardEvent): any; - } - class $mol_app_todomvc extends $.$mol_app_todomvc { - task_ids(next?: number[]): number[]; - arg_completed(): string; - groups_completed(): { - [index: string]: number[]; - }; - tasks_filtered(): number[]; - completed_all(next?: boolean): boolean; - head_complete_enabled(): boolean; - pending_message(): string; - _id_seed: number; - event_add(next: Event): void; - task_rows(): $mol_app_todomvc_task_row[]; - task(id: number, next?: $mol_app_todomvc_task): $mol_app_todomvc_task; - task_completed(index: number, next?: boolean): boolean; - task_title(index: number, next?: string): string; - event_task_drop(index: number, next?: Event): void; - event_sweep(): void; - panels(): ($mol_view | $.$mol_list)[]; - foot_visible(): boolean; - sweep_enabled(): boolean; - } -} -declare namespace $ { - class $mol_app_todomvc_demo extends $mol_app_todomvc { - } -} diff --git a/examples/mol/-/web.deps.json b/examples/mol/-/web.deps.json deleted file mode 100644 index 425c6f7653..0000000000 --- a/examples/mol/-/web.deps.json +++ /dev/null @@ -1 +0,0 @@ -{"files":["mol/index.html","mol/manifest.json","mol/mol.jam.js","mol/readme.md","mol/skin/skin.view.css","mol/dict/dict.ts","mol/dict/dict_select.jam.js","mol/func/func.ts","mol/log/log.web.ts","mol/object/object.ts","mol/object/readme.md","mol/set/set.ts","mol/set/set_select.jam.js","mol/defer/defer.ts","mol/defer/readme.md","mol/state/stack/stack.ts","mol/atom/atom.ie.web.js","mol/atom/atom.ts","mol/atom/readme.md","mol/mem/mem.ts","mol/mem/readme.md","mol/window/window.web.ts","mol/dom/context/context.ts","mol/dom/context/context.web.ts","mol/dom/render/render.ts","mol/dom/make/make.ts","mol/dom/make/readme.md","mol/view/dom/dom.ts","mol/view/readme.md","mol/view/view.css","mol/view/view.ts","mol/view/view.web.ts","mol/view/selection/selection.ts","mol/view/selection/selection.web.ts","mol/string/string.view.tree","mol/string/readme.md","mol/string/string.css","mol/string/-view.tree/string.view.tree.ts","mol/string/-view.tree/string.view.tree.locale.json","mol/string/string.view.ts","mol/button/button.view.tree","mol/keyboard/code.ts","mol/button/button.css","mol/button/-view.tree/button.view.tree.ts","mol/button/-view.tree/button.view.tree.locale.json","mol/button/button.view.ts","mol/button/-view.tree/button_types.view.tree.ts","mol/button/-view.tree/button_types.view.tree.locale.json","mol/button/readme.md","mol/link/link.view.tree","mol/merge/dict/dict.ts","mol/state/arg/arg.web.ts","mol/link/link.view.css","mol/link/-view.tree/link.view.tree.ts","mol/link/-view.tree/link.view.tree.locale.json","mol/link/link.view.ts","mol/link/readme.md","mol/check/check.view.tree","mol/check/check.css","mol/check/-view.tree/check.view.tree.ts","mol/check/-view.tree/check.view.tree.locale.json","mol/check/check.view.ts","mol/check/readme.md","mol/scroll/scroll.view.tree","mol/state/session/session.web.ts","mol/scroll/readme.md","mol/scroll/scroll.view.css","mol/scroll/-view.tree/scroll.view.tree.ts","mol/scroll/-view.tree/scroll.view.tree.locale.json","mol/scroll/scroll.view.ts","mol/state/local/local.ts","mol/state/local/local.web.ts","mol/http/request/readme.md","mol/http/request/request.ts","mol/http/resource/readme.md","mol/http/resource/resource.ts","mol/file/file.web.ts","mol/locale/locale.ts","mol/list/list.view.tree","mol/list/list.view.css","mol/list/-view.tree/list.view.tree.ts","mol/list/-view.tree/list.view.tree.locale.json","mol/list/list.view.ts","mol/list/readme.md","mol/bar/bar.view.css","mol/bar/-view.tree/bar.view.tree.ts","mol/bar/-view.tree/bar.view.tree.locale.json","mol/bar/readme.md","mol/app/todomvc/todomvc.view.tree","mol/app/todomvc/index.html","mol/app/todomvc/todomvc.css","mol/app/todomvc/-view.tree/todomvc.view.tree.ts","mol/app/todomvc/-view.tree/todomvc.view.tree.locale.json","mol/app/todomvc/todomvc.view.ts","mol/app/todomvc/demo/-view.tree/demo.view.tree.ts","mol/app/todomvc/demo/-view.tree/demo.view.tree.locale.json"],"edgesIn":{"mol/app":{"mol/app/todomvc":{"priority":0}},"mol":{"mol/app":{"priority":0},"mol/string":{"priority":0},"mol/skin":{"priority":0},"mol/view":{"priority":0},"mol/window":{"priority":0},"mol/object":{"priority":0},"mol/func":{"priority":0},"mol/dict":{"priority":0},"mol/log":{"priority":0},"mol/mem":{"priority":0},"mol/atom":{"priority":0},"mol/set":{"priority":0},"mol/defer":{"priority":0},"mol/state":{"priority":0},"mol/dom":{"priority":0},"mol/button":{"priority":0},"mol/keyboard":{"priority":0},"mol/link":{"priority":0},"mol/merge":{"priority":0},"mol/check":{"priority":0},"mol/scroll":{"priority":0},"mol/locale":{"priority":0},"mol/file":{"priority":0},"mol/http":{"priority":0},"mol/list":{"priority":0},"mol/bar":{"priority":0},"mol/app/todomvc":{"priority":0}},"mol/string":{"mol/app/todomvc":{"priority":0}},"mol/skin":{"mol/string":{"priority":-1},"mol/view":{"priority":-2},"mol/button":{"priority":-1},"mol/link":{"priority":-1},"mol/scroll":{"priority":-1},"mol/bar":{"priority":-1}},"mol/view":{"mol/string":{"priority":0},"mol/view/dom":{"priority":-2},"mol/view/selection":{"priority":0},"mol/button":{"priority":0},"mol/link":{"priority":0},"mol/check":{"priority":-2},"mol/scroll":{"priority":-3},"mol/app/todomvc":{"priority":0},"mol/list":{"priority":-3},"mol/bar":{"priority":0}},"mol/window":{"mol/view":{"priority":-1},"mol/scroll":{"priority":-4}},"mol/object":{"mol/window":{"priority":-1},"mol/atom":{"priority":-1},"mol/defer":{"priority":-1},"mol/view":{"priority":-1},"mol/view/dom":{"priority":-1},"mol/view/selection":{"priority":-1},"mol/state/arg":{"priority":-1},"mol/state/session":{"priority":-1},"mol/locale":{"priority":-1},"mol/state/local":{"priority":-1},"mol/file":{"priority":-1},"mol/http/resource":{"priority":-1},"mol/http/request":{"priority":-1}},"mol/func":{"mol/object":{"priority":-3}},"mol/dict":{"mol/func":{"priority":-1},"mol/state/stack":{"priority":-1},"mol/view/dom":{"priority":-2}},"mol/log":{"mol/object":{"priority":-3},"mol/atom":{"priority":-3}},"mol/mem":{"mol/window":{"priority":-2},"mol/view":{"priority":-2},"mol/view/selection":{"priority":-2},"mol/string":{"priority":-1},"mol/button":{"priority":-1},"mol/link":{"priority":-2},"mol/state/arg":{"priority":-2},"mol/check":{"priority":-1},"mol/scroll":{"priority":-1},"mol/state/session":{"priority":-2},"mol/locale":{"priority":-2},"mol/state/local":{"priority":-2},"mol/file":{"priority":-2},"mol/http/resource":{"priority":-2},"mol/http/request":{"priority":-2},"mol/app/todomvc":{"priority":-1},"mol/list":{"priority":-2}},"mol/atom":{"mol/mem":{"priority":-4},"mol/view/selection":{"priority":-2},"mol/view":{"priority":-3},"mol/state/arg":{"priority":-1},"mol/state/local":{"priority":-2},"mol/file":{"priority":-2},"mol/http/request":{"priority":-3},"mol/http/resource":{"priority":-2}},"mol/set":{"mol/atom":{"priority":-2}},"mol/defer":{"mol/atom":{"priority":-3},"mol/dom/render":{"priority":-8},"mol/view":{"priority":-2},"mol/scroll":{"priority":-3}},"mol/state/stack":{"mol/atom":{"priority":-1}},"mol/state":{"mol/state/stack":{"priority":0},"mol/state/arg":{"priority":0},"mol/state/session":{"priority":0},"mol/state/local":{"priority":0}},"mol/view/dom":{"mol/view":{"priority":-3}},"mol/dom/make":{"mol/view/dom":{"priority":-4},"mol/dom/render":{"priority":-1}},"mol/dom":{"mol/dom/make":{"priority":0},"mol/dom/render":{"priority":0},"mol/dom/context":{"priority":0}},"mol/dom/render":{"mol/dom/make":{"priority":-2},"mol/view/dom":{"priority":-3},"mol/view":{"priority":-4}},"mol/dom/context":{"mol/dom/render":{"priority":-5},"mol/dom/make":{"priority":-2},"mol/view/selection":{"priority":-1},"mol/view":{"priority":-4},"mol/state/arg":{"priority":-3},"mol/locale":{"priority":-3},"mol/file":{"priority":-3},"mol/http/request":{"priority":-3}},"mol/view/selection":{"mol/view":{"priority":-3}},"mol/string/string.view.tree":{"mol/string":{"priority":0}},"mol/button":{"mol/app/todomvc":{"priority":-2},"mol/check":{"priority":0}},"mol/button/button.view.tree":{"mol/button":{"priority":0}},"mol/keyboard":{"mol/button":{"priority":-3.5},"mol/app/todomvc":{"priority":-4}},"mol/link":{"mol/app/todomvc":{"priority":0}},"mol/link/link.view.tree":{"mol/link":{"priority":0}},"mol/state/arg":{"mol/link":{"priority":-3},"mol/app/todomvc":{"priority":-3}},"mol/merge/dict":{"mol/state/arg":{"priority":-3},"mol/app/todomvc":{"priority":-3}},"mol/merge":{"mol/merge/dict":{"priority":0}},"mol/check":{"mol/app/todomvc":{"priority":-2}},"mol/check/check.view.tree":{"mol/check":{"priority":0}},"mol/scroll":{"mol/app/todomvc":{"priority":0}},"mol/scroll/scroll.view.tree":{"mol/scroll":{"priority":0}},"mol/state/session":{"mol/scroll":{"priority":-3}},"mol/locale":{"mol/app/todomvc":{"priority":-2}},"mol/state/local":{"mol/locale":{"priority":-3},"mol/app/todomvc":{"priority":-3}},"mol/file":{"mol/locale":{"priority":-3}},"mol/http/resource":{"mol/file":{"priority":-3}},"mol/http":{"mol/http/resource":{"priority":0},"mol/http/request":{"priority":0}},"mol/http/request":{"mol/http/resource":{"priority":-3}},"mol/list":{"mol/app/todomvc":{"priority":-2}},"mol/list/list.view.tree":{"mol/list":{"priority":0}},"mol/bar":{"mol/app/todomvc":{"priority":-2}},"mol/app/todomvc/todomvc.view.tree":{"mol/app/todomvc":{"priority":0}},"mol/app/todomvc":{"mol/app/todomvc/demo":{"priority":0}}},"edgesOut":{"mol/app/todomvc":{"mol/app":{"priority":0},"mol/string":{"priority":0},"mol/button":{"priority":-2},"mol/link":{"priority":0},"mol/check":{"priority":-2},"mol/scroll":{"priority":0},"mol/locale":{"priority":-2},"mol/mem":{"priority":-1},"mol/view":{"priority":0},"mol/list":{"priority":-2},"mol/bar":{"priority":-2},"mol/app/todomvc/todomvc.view.tree":{"priority":0},"mol":{"priority":0},"mol/keyboard":{"priority":-4},"mol/state/local":{"priority":-3},"mol/state/arg":{"priority":-3},"mol/merge/dict":{"priority":-3}},"mol/app":{"mol":{"priority":0}},"mol/string":{"mol":{"priority":0},"mol/skin":{"priority":-1},"mol/view":{"priority":0},"mol/mem":{"priority":-1},"mol/string/string.view.tree":{"priority":0}},"mol/skin":{"mol":{"priority":0}},"mol/view":{"mol":{"priority":0},"mol/skin":{"priority":-2},"mol/window":{"priority":-1},"mol/object":{"priority":-1},"mol/mem":{"priority":-2},"mol/view/dom":{"priority":-3},"mol/view/selection":{"priority":-3},"mol/dom/render":{"priority":-4},"mol/atom":{"priority":-3},"mol/dom/context":{"priority":-4},"mol/defer":{"priority":-2}},"mol/window":{"mol":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2}},"mol/object":{"mol":{"priority":0},"mol/func":{"priority":-3},"mol/log":{"priority":-3}},"mol/func":{"mol":{"priority":0},"mol/dict":{"priority":-1}},"mol/dict":{"mol":{"priority":0}},"mol/log":{"mol":{"priority":0}},"mol/mem":{"mol":{"priority":0},"mol/atom":{"priority":-4}},"mol/atom":{"mol":{"priority":0},"mol/object":{"priority":-1},"mol/set":{"priority":-2},"mol/defer":{"priority":-3},"mol/log":{"priority":-3},"mol/state/stack":{"priority":-1}},"mol/set":{"mol":{"priority":0}},"mol/defer":{"mol":{"priority":0},"mol/object":{"priority":-1}},"mol/state/stack":{"mol/state":{"priority":0},"mol/dict":{"priority":-1}},"mol/state":{"mol":{"priority":0}},"mol/view/dom":{"mol/view":{"priority":-2},"mol/object":{"priority":-1},"mol/dict":{"priority":-2},"mol/dom/make":{"priority":-4},"mol/dom/render":{"priority":-3}},"mol/dom/make":{"mol/dom":{"priority":0},"mol/dom/render":{"priority":-2},"mol/dom/context":{"priority":-2}},"mol/dom":{"mol":{"priority":0}},"mol/dom/render":{"mol/dom":{"priority":0},"mol/dom/make":{"priority":-1},"mol/defer":{"priority":-8},"mol/dom/context":{"priority":-5}},"mol/dom/context":{"mol/dom":{"priority":0}},"mol/view/selection":{"mol/view":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2},"mol/atom":{"priority":-2},"mol/dom/context":{"priority":-1}},"mol/button":{"mol":{"priority":0},"mol/skin":{"priority":-1},"mol/view":{"priority":0},"mol/mem":{"priority":-1},"mol/button/button.view.tree":{"priority":0},"mol/keyboard":{"priority":-3.5}},"mol/keyboard":{"mol":{"priority":0}},"mol/link":{"mol":{"priority":0},"mol/skin":{"priority":-1},"mol/view":{"priority":0},"mol/link/link.view.tree":{"priority":0},"mol/mem":{"priority":-2},"mol/state/arg":{"priority":-3}},"mol/state/arg":{"mol/state":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2},"mol/atom":{"priority":-1},"mol/dom/context":{"priority":-3},"mol/merge/dict":{"priority":-3}},"mol/merge/dict":{"mol/merge":{"priority":0}},"mol/merge":{"mol":{"priority":0}},"mol/check":{"mol":{"priority":0},"mol/button":{"priority":0},"mol/mem":{"priority":-1},"mol/view":{"priority":-2},"mol/check/check.view.tree":{"priority":0}},"mol/scroll":{"mol":{"priority":0},"mol/skin":{"priority":-1},"mol/view":{"priority":-3},"mol/mem":{"priority":-1},"mol/scroll/scroll.view.tree":{"priority":0},"mol/state/session":{"priority":-3},"mol/defer":{"priority":-3},"mol/window":{"priority":-4}},"mol/state/session":{"mol/state":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2}},"mol/locale":{"mol":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2},"mol/state/local":{"priority":-3},"mol/dom/context":{"priority":-3},"mol/file":{"priority":-3}},"mol/state/local":{"mol/state":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2},"mol/atom":{"priority":-2}},"mol/file":{"mol":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2},"mol/dom/context":{"priority":-3},"mol/atom":{"priority":-2},"mol/http/resource":{"priority":-3}},"mol/http/resource":{"mol/http":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2},"mol/http/request":{"priority":-3},"mol/atom":{"priority":-2}},"mol/http":{"mol":{"priority":0}},"mol/http/request":{"mol/http":{"priority":0},"mol/object":{"priority":-1},"mol/dom/context":{"priority":-3},"mol/atom":{"priority":-3},"mol/mem":{"priority":-2}},"mol/list":{"mol":{"priority":0},"mol/view":{"priority":-3},"mol/list/list.view.tree":{"priority":0},"mol/mem":{"priority":-2}},"mol/bar":{"mol":{"priority":0},"mol/skin":{"priority":-1},"mol/view":{"priority":0}},"mol/app/todomvc/demo":{"mol/app/todomvc":{"priority":0}}},"deps":{"mol/app/todomvc":{"..":0,"/mol/app/todomvc":0,"/mol/string":0,"/mol/button":0,"/mol/link":0,"/mol/link/current":0,"/mol/app/todomvc/head/complete":0,"/mol/check/checked":0,"/mol/app/todomvc/add":0,"/mol/app/todomvc/list":0,"/mol/app/todomvc/panel":0,"/mol/app/todomvc/head":0,"/mol/app/todomvc/title":0,"/mol/app/todomvc/task/row":0,"/mol/app/todomvc/task/row/complete":0,"/mol/app/todomvc/task/row/title":0,"/mol/app/todomvc/task/row/completed":0,"/mol/app/todomvc/task/row/drop":0,"/mol/app/todomvc/foot":0,"/mol/app/todomvc/pending":0,"/mol/app/todomvc/filter":0,"/mol/app/todomvc/sweep":0,"/mol/scroll":0,"/mol/locale/text":-2,"/mol/mem":-1,"/mol/view":0,"/mol/check":-2,"/mol/list":-2,"/mol/bar":-2,"/mol/button/minor":-2,"/mol/mem/key":-1,"todomvc.view.tree":0,"/mol/app/todomvc/task":0,"/mol":0,"/mol/keyboard/code/enter":-4,"/mol/state/local/value":-3,"/mol/state/arg/value":-3,"/mol/merge/dict":-3},"mol/app":{"..":0},"mol":{"..":0,"/mol":0},"mol/string":{"..":0,"/mol/string":0,"/mol/skin/light/line":-1,"/mol/skin/round":-1,"/mol/skin/passive":-1,"/mol/skin/passive/text":-1,"/mol/skin/card":-1,"/mol/skin/light/text":-1,"/mol/skin/focus/line":-1,"/mol/view":0,"/mol/mem":-1,"string.view.tree":0,"/mol":0},"mol/skin":{"..":0,"/mol/skin/font":-1,"/mol/skin/base":-1,"/mol/skin/base/text":-1,"/mol/skin/button":-1,"/mol/skin/hover":-1,"/mol/skin/focus/line":-1,"/mol/skin/passive":-1,"/mol/skin/passive/text":-1,"/mol/skin/light":-1,"/mol/skin/light/line":-1,"/mol/skin/light/text":-1,"/mol/skin/light/hover":-1,"/mol/skin/card":-1,"/mol/skin/card/line":-1,"/mol/skin/accent":-1,"/mol/skin/accent/text":-1,"/mol/skin/accent/hover":-1,"/mol/skin/warn":-1,"/mol/skin/warn/text":-1,"/mol/skin/warn/hover":-1,"/mol/skin/good":-1,"/mol/skin/good/text":-1,"/mol/skin/bad":-1,"/mol/skin/bad/text":-1,"/mol/skin/round":-1},"mol/view":{"..":0,"/mol/view":0,"/mol/view/root":0,"/mol/skin/font":-1,"/mol/view/error":0,"/mol/skin/base":-2,"/mol/view/context":-1,"/mol/view/visible/width":-1,"/mol/view/visible/height":-1,"/mol/view/state/key":-1,"/mol/window/size":-1,"/mol/object":-1,"/mol/mem/key":-2,"/mol/mem":-2,"/mol/view/dom/node":-3,"/mol/view/selection/focused":-3,"/mol/view/dom/tree":-3,"/mol/view/render":-3,"/mol/dom/render":-4,"/mol/atom/wait":-4,"/mol/atom/catched":-4,"/mol/atom/task":-5,"/mol/dom/context/document/addEventListener":-1,"/mol/dom/context/document/querySelectorAll":-2,"/mol/view/dom/mount":-3,"/mol/atom":-3,"/mol/view/Root":-3,"/mol/dom/context/document/title":-4,"/mol/defer":-3,"/mol/defer/run":-2},"mol/window":{"..":0,"/mol/window":-1,"/mol/object":-1,"/mol/mem":-2,"/mol/window/size":-2},"mol/object":{"..":0,"/mol/object":-1,"/mol/func/name":-3,"/mol/log/filter":-3,"/mol/log":-3},"mol/func":{"..":0,"/mol/func/name/dict":-1,"/mol/dict":-1,"/mol/func/name":-1,"/mol/func/name/dict/has":-2,"/mol/func/name/dict/get":-2,"/mol/func/name/dict/set":-2},"mol/dict":{"..":0,"/mol/dict":0,"/mol/dict/shim":0},"mol/log":{"..":0,"/mol/log":-1,"/mol/log/filter":-2},"mol/mem":{"..":0,"/mol/mem":-1,"/mol/atom/force":-3,"/mol/atom":-4,"/mol/mem/key":-1},"mol/atom":{"..":0,"/mol/atom/status":-1,"/mol/atom":-1,"/mol/object":-1,"/mol/set":-2,"/mol/atom/status/obsolete":-2,"/mol/atom/force":-1,"/mol/atom/status/pulling":-3,"/mol/atom/stack":-1,"/mol/atom/status/actual":-3,"/mol/atom/status/checking":-3,"/mol/atom/catched":-4,"/mol/atom/wait":-1,"/mol/atom/actualize":-2,"/mol/atom/unreap":-4,"/mol/atom/reap":-4,"/mol/atom/updating/push":-3,"/mol/atom/schedule":-3,"/mol/atom/reaping/add":-3,"/mol/atom/reaping/delete":-3,"/mol/defer":-3,"/mol/log":-3,"/mol/atom/sync":-3,"/mol/state/stack/set":-1,"/mol/atom/wait/prototype":-3,"/mol/atom/task":-1},"mol/set":{"..":0,"/mol/set":0,"/mol/set/shim":0},"mol/defer":{"..":0,"/mol/defer":-1,"/mol/object":-1,"/mol/defer/add":-3,"/mol/defer/drop":-3},"mol/state/stack":{"..":0,"/mol/state/stack":-1,"/mol/dict":-1},"mol/state":{"..":0},"mol/view/dom":{"..":0,"/mol/view/dom":-1,"/mol/object":-1,"/mol/dict":-2,"/mol/view":-2,"/mol/view/dom/nodes/get":-3,"/mol/dom/make":-4,"/mol/view/dom/mount":-4,"/mol/view/dom/nodes/set":-3,"/mol/dom/render":-3},"mol/dom/make":{"..":0,"/mol/dom/make/config":-1,"/mol/dom/render/config":-1,"/mol/dom/make":-1,"/mol/dom/context/document":-2,"/mol/dom/render":-2},"mol/dom":{"..":0},"mol/dom/render":{"..":0,"/mol/dom/render/config":-1,"/mol/dom/render":-1,"/mol/dom/make/config":-1,"/mol/dom/render/childNodes":-1,"/mol/dom/render/attributes":-1,"/mol/dom/render/style":-1,"/mol/dom/render/event":-1,"/mol/defer":-8,"/mol/dom/context/Node":-3,"/mol/dom/context/document/createTextNode":-5},"mol/dom/context":{"..":0,"/mol/dom/context":-1},"mol/view/selection":{"..":0,"/mol/view/selection":-1,"/mol/object":-1,"/mol/mem":-2,"/mol/atom/force":-2,"/mol/dom/context/document/getElementById":-4,"/mol/dom/context/document/getSelection":-4,"/mol/view/selection/focused":-3,"/mol/dom/context/document/addEventListener":-1,"/mol/view/selection/position":-2,"/mol/view/selection/onFocus":-1,"/mol/view/selection/onBlur":-1},"mol/string/string.view.tree":{},"mol/button":{"..":0,"/mol/button":0,"/mol/skin/light/line":-1,"/mol/skin/round":-1,"/mol/skin/passive/text":-1,"/mol/button/minor":0,"/mol/skin/button":-1,"/mol/skin/light/text":-1,"/mol/button/major":0,"/mol/skin/accent":-1,"/mol/skin/accent/text":-1,"/mol/button/danger":0,"/mol/skin/warn":-1,"/mol/skin/warn/text":-1,"/mol/skin/hover":-1,"/mol/skin/light/hover":-1,"/mol/skin/focus/line":-1,"/mol/skin/accent/hover":-1,"/mol/skin/warn/hover":-1,"/mol/view":0,"/mol/mem":-1,"button.view.tree":0,"/mol":0,"/mol/keyboard/code/enter":-3.5},"mol/button/button.view.tree":{},"mol/keyboard":{"..":0,"/mol/keyboard/code":-0.5},"mol/link":{"..":0,"/mol/link":0,"/mol/skin/base":-1,"/mol/skin/round":-1,"/mol/link/current":0,"/mol/skin/hover":-1,"/mol/skin/hover/line":-1,"/mol/skin/base/text":-1,"/mol/view":0,"link.view.tree":0,"/mol":0,"/mol/mem":-2,"/mol/state/arg":-3,"/mol/state/arg/link":-3},"mol/link/link.view.tree":{},"mol/state/arg":{"..":0,"/mol/state/arg":-1,"/mol/object":-1,"/mol/mem":-2,"/mol/atom/force":-1,"/mol/dom/context/document/title":-3,"/mol/mem/key":-2,"/mol/merge/dict":-3,"/mol/state/arg/value":-3,"/mol/state/arg/link":-3,"/mol/state/arg/href":-1},"mol/merge/dict":{"..":0,"/mol/merge/dict":-1},"mol/merge":{"..":0},"mol/check":{"..":0,"/mol/check":0,"/mol/check/checked":0,"/mol/check/icon":0,"/mol/check/label":0,"/mol/button":0,"/mol/mem":-1,"/mol/view":-2,"check.view.tree":0,"/mol":0},"mol/check/check.view.tree":{},"mol/scroll":{"..":0,"/mol/scroll":0,"/mol/skin/light/line":-1,"/mol/view":0,"/mol/mem":-1,"scroll.view.tree":0,"/mol/view/context":-1,"/mol/scroll/scroll/top":-1,"/mol/scroll/scroll/left":-1,"/mol/scroll/moving":-1,"/mol":0,"/mol/state/session/value":-3,"/mol/defer":-3,"/mol/view/visible/height":-3,"/mol/window/size":-4,"/mol/view/visible/width":-3},"mol/scroll/scroll.view.tree":{},"mol/state/session":{"..":0,"/mol/state/session":-1,"/mol/object":-1,"/mol/mem/key":-2,"/mol/state/session/value":-3},"mol/locale":{"..":0,"/mol/locale/dict":-1,"/mol/locale":-1,"/mol/object":-1,"/mol/mem":-2,"/mol/state/local/value":-3,"/mol/dom/context/navigator/language/replace":-3,"/mol/mem/key":-2,"/mol/file/relative":-3},"mol/state/local":{"..":0,"/mol/state/local":-1,"/mol/object":-1,"/mol/mem/key":-2,"/mol/atom/force":-2,"/mol/state/local/value":-2},"mol/file":{"..":0,"/mol/file":-1,"/mol/object":-1,"/mol/mem/key":-2,"/mol/file/root":-4,"/mol/file/base":-3,"/mol/file/absolute":-3,"/mol/dom/context/document/location/pathname/replace":-3,"/mol/mem":-2,"/mol/atom/force":-2,"/mol/http/resource/item":-3},"mol/http/resource":{"..":0,"/mol/http/resource":-1,"/mol/object":-1,"/mol/mem/key":-2,"/mol/mem":-2,"/mol/http/request":-3,"/mol/atom/force":-2},"mol/http":{"..":0},"mol/http/request":{"..":0,"/mol/http/request":-1,"/mol/object":-1,"/mol/dom/context/XMLHttpRequest":-3,"/mol/atom/force":-2,"/mol/mem":-2,"/mol/atom/wait":-3},"mol/list":{"..":0,"/mol/list":0,"/mol/view":0,"list.view.tree":0,"/mol":0,"/mol/mem":-2,"/mol/view/visible/height":-3,"/mol/mem/key":-2},"mol/list/list.view.tree":{},"mol/bar":{"..":0,"/mol/bar":0,"/mol/skin/light/line":-1,"/mol/skin/round":-1,"/mol/view":0},"mol/app/todomvc/todomvc.view.tree":{},"mol/app/todomvc/demo":{"..":0,"/mol/app/todomvc/demo":0,"/mol/app/todomvc":0}}} \ No newline at end of file diff --git a/examples/mol/-/web.js b/examples/mol/-/web.js index c8dd017d5c..acd6190b3e 100644 --- a/examples/mol/-/web.js +++ b/examples/mol/-/web.js @@ -9,116 +9,18 @@ var $ = this.$ $.$mol = $ ; -var $; -(function ($) { - var $mol_dict_shim = (function () { - function $mol_dict_shim() { - this._keys = {}; - this._values = {}; - this.size = 0; - } - $mol_dict_shim.prototype.set = function (key, value) { - var keyStr = String(key); - var keys = this._keys[keyStr]; - if (keys) { - var index = keys.indexOf(key); - if (index === -1) { - index = keys.length; - keys.push(key); - ++this.size; - } - this._values[keyStr][index] = value; - } - else { - this._keys[keyStr] = [key]; - this._values[keyStr] = [value]; - ++this.size; - } - return this; - }; - $mol_dict_shim.prototype.get = function (key) { - var keyStr = String(key); - var list = this._keys[keyStr]; - if (!list) - return void 0; - var index = list.indexOf(key); - if (index === -1) - return void 0; - return this._values[keyStr][index]; - }; - $mol_dict_shim.prototype.has = function (key) { - var keyStr = String(key); - var list = this._keys[keyStr]; - if (!list) - return false; - return list.indexOf(key) !== -1; - }; - $mol_dict_shim.prototype.delete = function (key) { - var keyStr = String(key); - var keys = this._keys[keyStr]; - if (!keys) - return; - var index = keys.indexOf(key); - if (index === -1) - return; - keys.splice(index, 1); - this._values[keyStr].splice(index, 1); - --this.size; - }; - $mol_dict_shim.prototype.forEach = function (handle) { - for (var keyStr in this._keys) { - if (!this._keys.hasOwnProperty(keyStr)) - continue; - var values = this._values[keyStr]; - this._keys[keyStr].forEach(function (key, index) { - handle(values[index], key); - }); - } - }; - $mol_dict_shim.prototype.keys = function () { - var keys = []; - this.forEach(function (val, key) { - keys.push(key); - }); - return keys; - }; - $mol_dict_shim.prototype.values = function () { - var values = []; - this.forEach(function (val, key) { - values.push(val); - }); - return values; - }; - $mol_dict_shim.prototype.entries = function () { - var entries = []; - this.forEach(function (val, key) { - entries.push([key, val]); - }); - return entries; - }; - $mol_dict_shim.prototype.clear = function () { - this._keys = {}; - this._values = {}; - this.size = 0; - }; - return $mol_dict_shim; - }()); - $.$mol_dict_shim = $mol_dict_shim; -})($ || ($ = {})); -//dict.js.map -; -$.$mol_dict = ( typeof Map === 'function' ) ? Map : $.$mol_dict_shim - +//mol.js.map ; var $; (function ($) { - $.$mol_func_name_dict = new $.$mol_dict(); + $.$mol_func_name_dict = new WeakMap(); function $mol_func_name(func) { if (func.name) return func.name; - if ($.$mol_func_name_dict.has(func)) - return $.$mol_func_name_dict.get(func); - var name = Function.prototype.toString.call(func).match(/^function ([a-z0-9_$]*)/)[1]; + var name = $.$mol_func_name_dict.get(func); + if (name != null) + return name; + name = Function.prototype.toString.call(func).match(/^function ([a-z0-9_$]*)/)[1]; $.$mol_func_name_dict.set(func, name); return name; } @@ -127,6 +29,21 @@ var $; //func.js.map ; var $; +(function ($) { + function $mol_deprecated(message) { + return function (host, field, descr) { + var value = descr.value; + descr.value = function $mol_deprecated_wrapper() { + console.warn(host.constructor + "::" + field + " is deprecated. " + message); + return value.apply(this, arguments); + }; + }; + } + $.$mol_deprecated = $mol_deprecated; +})($ || ($ = {})); +//deprecated.js.map +; +var $; (function ($) { function $mol_log(path, values) { var filter = $mol_log.filter(); @@ -159,6 +76,12 @@ var $; })($ || ($ = {})); //log.web.js.map ; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; var $; (function ($) { var $mol_object = (function () { @@ -194,6 +117,12 @@ var $; $mol_object.prototype.toJSON = function () { return this.toString(); }; + $mol_object.make = function (config) { + var instance = new this; + for (var key in config) + instance[key] = config[key]; + return instance; + }; $mol_object.prototype.setup = function (script) { script(this); return this; @@ -210,97 +139,25 @@ var $; return; $.$mol_log(this.toString(), values); }; + __decorate([ + $.$mol_deprecated("Use $mol_object.make() instead.") + ], $mol_object.prototype, "setup", null); return $mol_object; }()); $.$mol_object = $mol_object; })($ || ($ = {})); //object.js.map ; -var $; -(function ($) { - var $mol_set_shim = (function () { - function $mol_set_shim() { - this._index = {}; - this.size = 0; - } - $mol_set_shim.prototype.add = function (value) { - var key = String(value); - var list = this._index[key]; - if (list) { - if (list.indexOf(value) !== -1) - return this; - list.push(value); - } - else { - list = this._index[key] = [value]; - } - ++this.size; - return this; - }; - $mol_set_shim.prototype.has = function (value) { - var key = String(value); - var list = this._index[key]; - if (!list) - return false; - return list.indexOf(value) !== -1; - }; - $mol_set_shim.prototype.delete = function (value) { - var key = String(value); - var list = this._index[key]; - if (!list) - return; - var index = list.indexOf(value); - if (index === -1) - return; - list.splice(index, 1); - --this.size; - }; - $mol_set_shim.prototype.forEach = function (handle) { - for (var key in this._index) { - if (!this._index.hasOwnProperty(key)) - continue; - this._index[key].forEach(function (val, index) { return handle(val, val); }); - } - }; - $mol_set_shim.prototype.keys = function () { - var keys = []; - this.forEach(function (val, key) { - keys.push(key); - }); - return keys; - }; - $mol_set_shim.prototype.values = function () { - var values = []; - this.forEach(function (val, key) { - values.push(val); - }); - return values; - }; - $mol_set_shim.prototype.entries = function () { - var entries = []; - this.forEach(function (val, key) { - entries.push([val, key]); - }); - return entries; - }; - $mol_set_shim.prototype.clear = function () { - this._index = {}; - this.size = 0; - }; - return $mol_set_shim; - }()); - $.$mol_set_shim = $mol_set_shim; -})($ || ($ = {})); -//set.js.map -; -$.$mol_set = ( typeof Set === 'function' ) ? Set : $.$mol_set_shim - -; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var $; (function ($) { var $mol_defer = (function (_super) { @@ -347,20 +204,20 @@ var $; for (var defer; defer = this.all.pop();) defer.run(); }; + $mol_defer.all = []; + $mol_defer.timer = 0; + $mol_defer.scheduleNative = (typeof requestAnimationFrame == 'function') + ? function (handler) { return requestAnimationFrame(handler); } + : function (handler) { return setTimeout(handler, 16); }; return $mol_defer; }($.$mol_object)); - $mol_defer.all = []; - $mol_defer.timer = 0; - $mol_defer.scheduleNative = (typeof requestAnimationFrame == 'function') - ? function (handler) { return requestAnimationFrame(handler); } - : function (handler) { return setTimeout(handler, 16); }; $.$mol_defer = $mol_defer; })($ || ($ = {})); //defer.js.map ; var $; (function ($) { - $.$mol_state_stack = new $.$mol_dict(); + $.$mol_state_stack = new Map(); })($ || ($ = {})); //stack.js.map ; @@ -393,24 +250,30 @@ void function() { }() ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var $; (function ($) { var $mol_atom_status; (function ($mol_atom_status) { - $mol_atom_status[$mol_atom_status["obsolete"] = 'obsolete'] = "obsolete"; - $mol_atom_status[$mol_atom_status["checking"] = 'checking'] = "checking"; - $mol_atom_status[$mol_atom_status["pulling"] = 'pulling'] = "pulling"; - $mol_atom_status[$mol_atom_status["actual"] = 'actual'] = "actual"; + $mol_atom_status["obsolete"] = "obsolete"; + $mol_atom_status["checking"] = "checking"; + $mol_atom_status["pulling"] = "pulling"; + $mol_atom_status["actual"] = "actual"; })($mol_atom_status = $.$mol_atom_status || ($.$mol_atom_status = {})); var $mol_atom = (function (_super) { __extends($mol_atom, _super); function $mol_atom(host, handler, field) { - if (field === void 0) { field = 'value()'; } + if (handler === void 0) { handler = function () { return undefined; }; } + if (field === void 0) { field = ''; } var _this = _super.call(this) || this; _this.masters = null; _this.slaves = null; @@ -418,7 +281,7 @@ var $; _this.autoFresh = true; _this.handler = handler; _this.host = Object(host); - _this.field = field || 'value()'; + _this.field = field; return _this; } $mol_atom.prototype.destroyed = function (next) { @@ -431,8 +294,8 @@ var $; value.destroyed(true); } } - host[this.field] = void null; - host[this.field + '@'] = void null; + host[this.field] = undefined; + host[this.field + '@'] = undefined; this.status = $mol_atom_status.obsolete; } return _super.prototype.destroyed.call(this, next); @@ -450,14 +313,13 @@ var $; } this.actualize(force); var slave = $mol_atom.stack[0]; - if (slave) + if (slave) { this.lead(slave); - if (slave) slave.obey(this); + } var value = this.host[this.field]; - if (value instanceof Error) { - if (typeof Proxy !== 'function') - throw value; + if (typeof Proxy !== 'function' && value instanceof Error) { + throw value; } return value; }; @@ -530,11 +392,11 @@ var $; return next; }; $mol_atom.prototype.push = function (next_raw) { - this._next = void null; + this._next = undefined; this.status = $mol_atom_status.actual; var host = this.host; var prev = host[this.field]; - if (next_raw === void null) + if (next_raw === undefined) return prev; var next = (next_raw instanceof Error) ? next_raw : this.normalize(next_raw, prev); if (next === prev) @@ -581,14 +443,13 @@ var $; $mol_atom.prototype.obsolete = function () { if (this.status === $mol_atom_status.obsolete) return; - this.log(['obsolete']); this.status = $mol_atom_status.obsolete; this.check_slaves(); - return void null; + return; }; $mol_atom.prototype.lead = function (slave) { if (!this.slaves) { - this.slaves = new $.$mol_set(); + this.slaves = new Set(); $mol_atom.unreap(this); } this.slaves.add(slave); @@ -606,7 +467,7 @@ var $; }; $mol_atom.prototype.obey = function (master) { if (!this.masters) - this.masters = new $.$mol_set(); + this.masters = new Set(); this.masters.add(master); }; $mol_atom.prototype.disobey = function (master) { @@ -622,7 +483,7 @@ var $; this.masters = null; }; $mol_atom.prototype.value = function (next, force) { - if (next === void null) { + if (next === undefined) { return this.get(force); } else { @@ -661,8 +522,10 @@ var $; var _this = this; $.$mol_log('$mol_atom.sync', []); this.schedule(); - while (this.updating.length) { + while (true) { var atom = this.updating.shift(); + if (!atom) + break; if (this.reaping.has(atom)) continue; if (!atom.destroyed()) @@ -677,25 +540,61 @@ var $; } this.scheduled = false; }; + $mol_atom.prototype.then = function (done, fail) { + var _this = this; + var prev; + var next; + var atom = new $mol_atom(this, function () { + try { + if (prev == undefined) { + var val = _this.get(); + if (val instanceof $mol_atom_wait) + return val; + if (val) + val.valueOf(); + prev = val; + } + if (next == undefined) { + var val = done(prev); + if (val instanceof $mol_atom_wait) + return val; + if (val) + val.valueOf(); + next = val; + } + return next; + } + catch (error) { + if (error instanceof $mol_atom_wait) + return error; + if (fail) + return fail(error); + return error; + } + }); + $mol_atom.actualize(atom); + return atom; + }; + $mol_atom.prototype.catch = function (fail) { + return this.then(function (next) { return next; }, fail); + }; + $mol_atom.stack = []; + $mol_atom.updating = []; + $mol_atom.reaping = new Set(); + $mol_atom.scheduled = false; return $mol_atom; }($.$mol_object)); - $mol_atom.stack = [null]; - $mol_atom.updating = []; - $mol_atom.reaping = new $.$mol_set(); - $mol_atom.scheduled = false; $.$mol_atom = $mol_atom; $.$mol_state_stack.set('$mol_atom.stack', $mol_atom.stack); var $mol_atom_wait = (function (_super) { __extends($mol_atom_wait, _super); function $mol_atom_wait(message) { + var _newTarget = this.constructor; if (message === void 0) { message = 'Wait...'; } var _this = _super.call(this, message) || this; - _this.message = message; _this.name = '$mol_atom_wait'; - var error = new Error(message); - error.name = _this.name; - error['__proto__'] = $mol_atom_wait.prototype; - return error; + _this['__proto__'] = _newTarget.prototype; + return _this; } return $mol_atom_wait; }(Error)); @@ -703,27 +602,11 @@ var $; var $mol_atom_force = (function (_super) { __extends($mol_atom_force, _super); function $mol_atom_force() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } return $mol_atom_force; }(Object)); $.$mol_atom_force = $mol_atom_force; - function $mol_atom_task(host, handler) { - var atom = new $mol_atom(host, function () { - try { - handler(); - } - catch (error) { - if (!(error instanceof $mol_atom_wait)) - atom.destroyed(true); - throw error; - } - atom.destroyed(true); - }); - $mol_atom.actualize(atom); - return atom; - } - $.$mol_atom_task = $mol_atom_task; })($ || ($ = {})); //atom.js.map ; @@ -738,7 +621,7 @@ var $; var fieldA = field + '@'; var atom = host[fieldA]; if (!atom) { - if (force && (next === void null)) + if (force && (next === undefined)) return next; host[fieldA] = atom = new $.$mol_atom(host, value.bind(host), field); if (config) @@ -759,7 +642,7 @@ var $; var fieldA = field + '@'; var atom = host[fieldA]; if (!atom) { - if (force && (next === void null)) + if (force && (next === undefined)) return next; host[fieldA] = atom = new $.$mol_atom(host, value.bind(host, key), field); if (config) @@ -774,11 +657,16 @@ var $; })($ || ($ = {})); //mem.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -790,7 +678,7 @@ var $; var $mol_window = (function (_super) { __extends($mol_window, _super); function $mol_window() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } $mol_window.size = function (next) { return next || { @@ -798,11 +686,11 @@ var $; height: window.innerHeight, }; }; + __decorate([ + $.$mol_mem() + ], $mol_window, "size", null); return $mol_window; }($.$mol_object)); - __decorate([ - $.$mol_mem() - ], $mol_window, "size", null); $.$mol_window = $mol_window; window.addEventListener('resize', function () { $mol_window.size(null); @@ -823,61 +711,48 @@ var $; ; var $; (function ($) { - function $mol_dom_render(el, config) { - var document = el.ownerDocument; + function $mol_dom_make(id, localName, namespaceURI) { + if (localName === void 0) { localName = 'span'; } + if (namespaceURI === void 0) { namespaceURI = 'http://www.w3.org/1999/xhtml'; } + var document = $.$mol_dom_context.document; + var node = id && document.getElementById(id); + if (!node) { + node = document.createElementNS(namespaceURI, localName); + if (id) + node.id = id; + } + return node; + } + $.$mol_dom_make = $mol_dom_make; +})($ || ($ = {})); +//make.js.map +; +var $; +(function ($) { + function $mol_dom_render_fields(el, fields) { var _loop_1 = function (key) { - switch (key) { - case 'localName': break; - case 'namespaceURI': break; - case 'childNodes': { - if (!config.childNodes) - break; - $mol_dom_render_childNodes(el, config.childNodes); - break; - } - case 'attributes': { - if (!config.attributes) - break; - $mol_dom_render_attributes(el, config.attributes); - break; - } - case 'style': { - if (!config.style) - break; - $mol_dom_render_style(el, config.style); - break; - } - case 'events': { - $mol_dom_render_event(el, config.events); - break; - } - case 'events_async': { - $mol_dom_render_event_async(el, config.events_async); - break; - } - default: { - if (el[key] !== config[key]) { - el[key] = config[key]; - if (el[key] !== config[key]) { - var setter_1 = function () { - el.removeEventListener('DOMNodeInsertedIntoDocument', setter_1, { passive: true }); - new $.$mol_defer(function () { - el[key] = config[key]; - }); - }; - el.addEventListener('DOMNodeInsertedIntoDocument', setter_1, { passive: true }); - } - } - } - } + var val = fields[key]; + if (val === undefined) + return "continue"; + if (el[key] === val) + return "continue"; + el[key] = val; + if (el[key] === val) + return "continue"; + var setter = function () { + el.removeEventListener('DOMNodeInsertedIntoDocument', setter, { passive: true }); + new $.$mol_defer(function () { + el[key] = val; + }); + }; + el.addEventListener('DOMNodeInsertedIntoDocument', setter, { passive: true }); }; - for (var key in config) { + for (var key in fields) { _loop_1(key); } - return el; } - $.$mol_dom_render = $mol_dom_render; - function $mol_dom_render_childNodes(el, childNodes) { + $.$mol_dom_render_fields = $mol_dom_render_fields; + function $mol_dom_render_children(el, childNodes) { var nodes = []; for (var i = 0; i < childNodes.length; ++i) { var node = childNodes[i]; @@ -936,7 +811,7 @@ var $; el.removeChild(currNode); } } - $.$mol_dom_render_childNodes = $mol_dom_render_childNodes; + $.$mol_dom_render_children = $mol_dom_render_children; function $mol_dom_render_attributes(el, attrs) { for (var name_1 in attrs) { var val = attrs[name_1]; @@ -949,110 +824,87 @@ var $; } } $.$mol_dom_render_attributes = $mol_dom_render_attributes; - function $mol_dom_render_style(el, styles) { + function $mol_dom_render_styles(el, styles) { for (var name_2 in styles) { var val = styles[name_2]; - if (typeof val === 'number') - val = val + "px"; var style = el.style; - if (val !== style[name_2]) + var cur = style[name_2]; + if (typeof val === 'number') { + if (parseFloat(cur) == val) + continue; + style[name_2] = val + "px"; + } + if (cur !== val) style[name_2] = val; } } - $.$mol_dom_render_style = $mol_dom_render_style; - function $mol_dom_render_event(el, events) { + $.$mol_dom_render_styles = $mol_dom_render_styles; + function $mol_dom_render_events(el, events) { for (var name_3 in events) { el.addEventListener(name_3, events[name_3]); } } - $.$mol_dom_render_event = $mol_dom_render_event; - function $mol_dom_render_event_async(el, events) { + $.$mol_dom_render_events = $mol_dom_render_events; + function $mol_dom_render_events_async(el, events) { for (var name_4 in events) { el.addEventListener(name_4, events[name_4], { passive: true }); } } - $.$mol_dom_render_event_async = $mol_dom_render_event_async; + $.$mol_dom_render_events_async = $mol_dom_render_events_async; })($ || ($ = {})); //render.js.map ; -var $; -(function ($) { - function $mol_dom_make(config) { - var document = $.$mol_dom_context.document; - var el = config.id && document.getElementById(config.id); - if (!el) { - var name_1 = config.localName || 'span'; - var space = config.namespaceURI || 'http://www.w3.org/1999/xhtml'; - el = document.createElementNS(space, name_1); - } - return $.$mol_dom_render(el, config); - } - $.$mol_dom_make = $mol_dom_make; -})($ || ($ = {})); -//make.js.map -; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var $; (function ($) { var $mol_view_dom = (function (_super) { __extends($mol_view_dom, _super); function $mol_view_dom() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } $mol_view_dom.node = function (view) { var node = $mol_view_dom.nodes.get(view); if (!node) { - node = $.$mol_dom_make({ - localName: view.dom_name(), - namespaceURI: view.dom_name_space(), - }); + node = $.$mol_dom_make(view.toString(), view.dom_name(), view.dom_name_space()); $mol_view_dom.mount(view, node); } return node; }; $mol_view_dom.mount = function (view, node) { + if ($mol_view_dom.nodes.get(view) === node) + return node; $mol_view_dom.nodes.set(view, node); - $.$mol_dom_render(node, { - id: view.toString(), - attributes: view.attr_static(), - events: view.event(), - events_async: view.event_async(), - }); - for (var _i = 0, _a = view.plugins(); _i < _a.length; _i++) { - var plugin = _a[_i]; - $mol_view_dom.nodes.set(plugin, node); - $.$mol_dom_render(node, { - attributes: plugin.attr_static(), - events: plugin.event(), - events_async: plugin.event_async(), - }); - } + $.$mol_dom_render_attributes(node, view.attr_static()); + $.$mol_dom_render_events(node, view.event()); + $.$mol_dom_render_events_async(node, view.event_async()); return node; }; + $mol_view_dom.nodes = new WeakMap(); return $mol_view_dom; }($.$mol_object)); - $mol_view_dom.nodes = new (WeakMap || $.$mol_dict)(); $.$mol_view_dom = $mol_view_dom; })($ || ($ = {})); //dom.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; -var __assign = (this && this.__assign) || Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -1061,16 +913,26 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, }; var $; (function ($) { - $.$mol_view_context = {}; - $.$mol_view_context.$mol_view_visible_width = function () { return $.$mol_window.size().width; }; - $.$mol_view_context.$mol_view_visible_height = function () { return $.$mol_window.size().height; }; - $.$mol_view_context.$mol_view_state_key = function (suffix) { return suffix; }; + var $mol; + (function ($mol_1) { + var $mol; + })($mol = $.$mol || ($.$mol = {})); + function $mol_view_visible_width() { + return $.$mol_window.size().width; + } + $.$mol_view_visible_width = $mol_view_visible_width; + function $mol_view_visible_height() { + return $.$mol_window.size().height; + } + $.$mol_view_visible_height = $mol_view_visible_height; + function $mol_view_state_key(suffix) { + return suffix; + } + $.$mol_view_state_key = $mol_view_state_key; var $mol_view = (function (_super) { __extends($mol_view, _super); function $mol_view() { - var _this = _super.apply(this, arguments) || this; - _this['event_wrapped()'] = null; - return _this; + return _super !== null && _super.apply(this, arguments) || this; } $mol_view.Root = function (id) { return new this; @@ -1084,14 +946,24 @@ var $; return value.indexOf(node) !== -1; }; $mol_view.prototype.context = function (next) { - return next || $.$mol_view_context; - }; + return next || $; + }; + Object.defineProperty($mol_view.prototype, "$", { + get: function () { + return this.context(); + }, + set: function (next) { + this.context(next); + }, + enumerable: true, + configurable: true + }); $mol_view.prototype.context_sub = function () { return this.context(); }; $mol_view.prototype.state_key = function (suffix) { if (suffix === void 0) { suffix = ''; } - return this.context().$mol_view_state_key(suffix); + return this.$.$mol_view_state_key(suffix); }; $mol_view.prototype.dom_name = function () { return this.constructor.toString().replace('$', ''); @@ -1154,7 +1026,6 @@ var $; return $.$mol_view_dom.node(this); }; $mol_view.prototype.dom_tree = function () { - console.warn('$mol_view.dom_tree is deprecated by $mol_view.render'); return this.render(); }; $mol_view.prototype.render = function () { @@ -1162,16 +1033,24 @@ var $; try { for (var _i = 0, _a = this.plugins(); _i < _a.length; _i++) { var plugin = _a[_i]; - plugin.render(); + if (typeof plugin['render'] === 'function') + plugin.render(); } - $.$mol_dom_render(node, __assign({ attributes: this.attr(), childNodes: this.sub_visible(), style: this.style() }, (this.field() || {}))); + var sub = this.sub_visible(); + if (sub) + $.$mol_dom_render_children(node, sub); + $.$mol_dom_render_attributes(node, this.attr()); + $.$mol_dom_render_styles(node, this.style()); + $.$mol_dom_render_fields(node, this.field()); } catch (error) { - $.$mol_dom_render(node, { - attributes: { mol_view_error: error.name }, - }); + $.$mol_dom_render_attributes(node, { mol_view_error: error.name }); if (error instanceof $.$mol_atom_wait) return node; + try { + void (node.innerText = error.message); + } + catch (e) { } if (error['$mol_atom_catched']) return node; console.error(error); @@ -1214,49 +1093,35 @@ var $; $mol_view.prototype.event_async = function () { return {}; }; - $mol_view.prototype.event_wrapped = function () { - var _this = this; - if (this['event_wrapped()']) - return this['event_wrapped()']; - var event = this.event(); - var wrapped = {}; - var _loop_1 = function (name_1) { - var handle = event[name_1]; - wrapped[name_1] = function (event) { - $.$mol_atom_task(_this + ".event()['" + name_1 + "']", function () { return handle(event); }).get(); - }; - }; - for (var name_1 in event) { - _loop_1(name_1); - } - return this['event_wrapped()'] = wrapped; - }; $mol_view.prototype.locale_contexts = function () { return this['locale_contexts()'] || (this['locale_contexts()'] = this.view_classes().map(String)); }; $mol_view.prototype.plugins = function () { return []; }; + __decorate([ + $.$mol_mem() + ], $mol_view.prototype, "focused", null); + __decorate([ + $.$mol_mem() + ], $mol_view.prototype, "context", null); + __decorate([ + $.$mol_mem() + ], $mol_view.prototype, "minimal_width", null); + __decorate([ + $.$mol_mem() + ], $mol_view.prototype, "minimal_height", null); + __decorate([ + $.$mol_deprecated('Use $mol_view.render instead.') + ], $mol_view.prototype, "dom_tree", null); + __decorate([ + $.$mol_mem() + ], $mol_view.prototype, "render", null); + __decorate([ + $.$mol_mem_key() + ], $mol_view, "Root", null); return $mol_view; }($.$mol_object)); - __decorate([ - $.$mol_mem() - ], $mol_view.prototype, "focused", null); - __decorate([ - $.$mol_mem() - ], $mol_view.prototype, "context", null); - __decorate([ - $.$mol_mem() - ], $mol_view.prototype, "minimal_width", null); - __decorate([ - $.$mol_mem() - ], $mol_view.prototype, "minimal_height", null); - __decorate([ - $.$mol_mem() - ], $mol_view.prototype, "render", null); - __decorate([ - $.$mol_mem_key() - ], $mol_view, "Root", null); $.$mol_view = $mol_view; })($ || ($ = {})); //view.js.map @@ -1289,11 +1154,16 @@ var $; })($ || ($ = {})); //view.web.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -1305,7 +1175,7 @@ var $; var $mol_view_selection = (function (_super) { __extends($mol_view_selection, _super); function $mol_view_selection() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } $mol_view_selection.focused = function (next, force) { if (next === void 0) @@ -1397,21 +1267,27 @@ var $; var element = event.target; while (element) { parents.push(element); - element = element.parentElement; + element = element.parentNode; } $mol_view_selection.focused(parents, $.$mol_atom_force); }; $mol_view_selection.onBlur = function (event) { - $mol_view_selection.focused([], $.$mol_atom_force); + var _this = this; + var focused = this.focused(); + setTimeout(function () { + if (focused !== _this.focused()) + return; + _this.focused([], $.$mol_atom_force); + }); }; + __decorate([ + $.$mol_mem() + ], $mol_view_selection, "focused", null); + __decorate([ + $.$mol_mem() + ], $mol_view_selection, "position", null); return $mol_view_selection; }($.$mol_object)); - __decorate([ - $.$mol_mem() - ], $mol_view_selection, "focused", null); - __decorate([ - $.$mol_mem() - ], $mol_view_selection, "position", null); $.$mol_view_selection = $mol_view_selection; })($ || ($ = {})); //selection.js.map @@ -1419,115 +1295,13 @@ var $; var $; (function ($) { $.$mol_dom_context.document.addEventListener('selectionchange', function (event) { - $.$mol_view_selection.position(void null, $.$mol_atom_force); + $.$mol_view_selection.position(undefined, $.$mol_atom_force); }); - $.$mol_dom_context.document.addEventListener('focus', function (event) { return setTimeout(function () { return $.$mol_view_selection.onFocus(event); }); }, true); - $.$mol_dom_context.document.addEventListener('blur', function (event) { return setTimeout(function () { return $.$mol_view_selection.onBlur(event); }); }, true); + $.$mol_dom_context.document.addEventListener('focus', function (event) { return $.$mol_view_selection.onFocus(event); }, true); + $.$mol_dom_context.document.addEventListener('blur', function (event) { return $.$mol_view_selection.onBlur(event); }, true); })($ || ($ = {})); //selection.web.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; -var __assign = (this && this.__assign) || Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; -}; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var $; -(function ($) { - var $mol_string = (function (_super) { - __extends($mol_string, _super); - function $mol_string() { - return _super.apply(this, arguments) || this; - } - $mol_string.prototype.dom_name = function () { - return "input"; - }; - $mol_string.prototype.enabled = function () { - return true; - }; - $mol_string.prototype.disabled = function () { - return false; - }; - $mol_string.prototype.value = function (val) { - return (val !== void 0) ? val : ""; - }; - $mol_string.prototype.value_changed = function (val) { - return this.value(val); - }; - $mol_string.prototype.hint = function () { - return ""; - }; - $mol_string.prototype.type = function (val) { - return (val !== void 0) ? val : "text"; - }; - $mol_string.prototype.field = function () { - return (__assign({}, _super.prototype.field.call(this), { "disabled": this.disabled(), "value": this.value_changed(), "placeholder": this.hint(), "type": this.type() })); - }; - $mol_string.prototype.event_change = function (event) { - return (event !== void 0) ? event : null; - }; - $mol_string.prototype.event = function () { - var _this = this; - return (__assign({}, _super.prototype.event.call(this), { "input": function (event) { return _this.event_change(event); } })); - }; - return $mol_string; - }($.$mol_view)); - __decorate([ - $.$mol_mem() - ], $mol_string.prototype, "value", null); - __decorate([ - $.$mol_mem() - ], $mol_string.prototype, "value_changed", null); - __decorate([ - $.$mol_mem() - ], $mol_string.prototype, "type", null); - __decorate([ - $.$mol_mem() - ], $mol_string.prototype, "event_change", null); - $.$mol_string = $mol_string; -})($ || ($ = {})); -//string.view.tree.js.map -; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; -var $; -(function ($) { - var $mol; - (function ($mol) { - var $mol_string = (function (_super) { - __extends($mol_string, _super); - function $mol_string() { - return _super.apply(this, arguments) || this; - } - $mol_string.prototype.event_change = function (next) { - this.value(next.target.value.trim()); - }; - $mol_string.prototype.disabled = function () { - return !this.enabled(); - }; - return $mol_string; - }($.$mol_string)); - $mol.$mol_string = $mol_string; - })($mol = $.$mol || ($.$mol = {})); -})($ || ($ = {})); -//string.view.js.map -; var $; (function ($) { var $mol_keyboard_code; @@ -1635,11 +1409,144 @@ var $; })($ || ($ = {})); //code.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; +}; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; }; +var $; +(function ($) { + var $mol_string = (function (_super) { + __extends($mol_string, _super); + function $mol_string() { + return _super !== null && _super.apply(this, arguments) || this; + } + $mol_string.prototype.dom_name = function () { + return "input"; + }; + $mol_string.prototype.enabled = function () { + return true; + }; + $mol_string.prototype.disabled = function () { + return false; + }; + $mol_string.prototype.value = function (val, force) { + return (val !== void 0) ? val : ""; + }; + $mol_string.prototype.value_changed = function (val, force) { + return this.value(val); + }; + $mol_string.prototype.hint = function () { + return ""; + }; + $mol_string.prototype.type = function (val, force) { + return (val !== void 0) ? val : "text"; + }; + $mol_string.prototype.field = function () { + return (__assign({}, _super.prototype.field.call(this), { "disabled": this.disabled(), "value": this.value_changed(), "placeholder": this.hint(), "type": this.type() })); + }; + $mol_string.prototype.event_change = function (event, force) { + return (event !== void 0) ? event : null; + }; + $mol_string.prototype.event_key_press = function (event, force) { + return (event !== void 0) ? event : null; + }; + $mol_string.prototype.event = function () { + var _this = this; + return (__assign({}, _super.prototype.event.call(this), { "input": function (event) { return _this.event_change(event); }, "keypress": function (event) { return _this.event_key_press(event); } })); + }; + __decorate([ + $.$mol_mem() + ], $mol_string.prototype, "value", null); + __decorate([ + $.$mol_mem() + ], $mol_string.prototype, "value_changed", null); + __decorate([ + $.$mol_mem() + ], $mol_string.prototype, "type", null); + __decorate([ + $.$mol_mem() + ], $mol_string.prototype, "event_change", null); + __decorate([ + $.$mol_mem() + ], $mol_string.prototype, "event_key_press", null); + return $mol_string; + }($.$mol_view)); + $.$mol_string = $mol_string; +})($ || ($ = {})); +//string.view.tree.js.map +; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var $; +(function ($) { + var $mol; + (function ($mol) { + var $mol_string = (function (_super) { + __extends($mol_string, _super); + function $mol_string() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this._timer = 0; + return _this; + } + $mol_string.prototype.event_change = function (next) { + var _this = this; + var val = next.target.value.trim(); + clearTimeout(this._timer); + this._timer = setTimeout(function () { return _this.value(val); }, 200); + }; + $mol_string.prototype.event_key_press = function (next) { + if (next.keyCode === $.$mol_keyboard_code.enter) { + this.value(next.target.value.trim()); + } + }; + $mol_string.prototype.disabled = function () { + return !this.enabled(); + }; + return $mol_string; + }($.$mol_string)); + $mol.$mol_string = $mol_string; + })($mol = $.$mol || ($.$mol = {})); +})($ || ($ = {})); +//string.view.js.map +; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var __assign = (this && this.__assign) || Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; @@ -1659,23 +1566,23 @@ var $; var $mol_button = (function (_super) { __extends($mol_button, _super); function $mol_button() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } $mol_button.prototype.enabled = function () { return true; }; - $mol_button.prototype.event_click = function (event) { + $mol_button.prototype.event_click = function (event, force) { return (event !== void 0) ? event : null; }; - $mol_button.prototype.event_activate = function (event) { + $mol_button.prototype.event_activate = function (event, force) { return this.event_click(event); }; - $mol_button.prototype.evenet_key_press = function (event) { + $mol_button.prototype.event_key_press = function (event, force) { return (event !== void 0) ? event : null; }; $mol_button.prototype.event = function () { var _this = this; - return (__assign({}, _super.prototype.event.call(this), { "click": function (event) { return _this.event_activate(event); }, "keypress": function (event) { return _this.evenet_key_press(event); } })); + return (__assign({}, _super.prototype.event.call(this), { "click": function (event) { return _this.event_activate(event); }, "keypress": function (event) { return _this.event_key_press(event); } })); }; $mol_button.prototype.disabled = function () { return false; @@ -1683,32 +1590,40 @@ var $; $mol_button.prototype.tab_index = function () { return "0"; }; + $mol_button.prototype.hint = function () { + return ""; + }; $mol_button.prototype.attr = function () { - return (__assign({}, _super.prototype.attr.call(this), { "disabled": this.disabled(), "role": "button", "tabindex": this.tab_index() })); + return (__assign({}, _super.prototype.attr.call(this), { "disabled": this.disabled(), "role": "button", "tabindex": this.tab_index(), "title": this.hint() })); }; $mol_button.prototype.sub = function () { return [].concat(this.title()); }; + __decorate([ + $.$mol_mem() + ], $mol_button.prototype, "event_click", null); + __decorate([ + $.$mol_mem() + ], $mol_button.prototype, "event_activate", null); + __decorate([ + $.$mol_mem() + ], $mol_button.prototype, "event_key_press", null); return $mol_button; }($.$mol_view)); - __decorate([ - $.$mol_mem() - ], $mol_button.prototype, "event_click", null); - __decorate([ - $.$mol_mem() - ], $mol_button.prototype, "event_activate", null); - __decorate([ - $.$mol_mem() - ], $mol_button.prototype, "evenet_key_press", null); $.$mol_button = $mol_button; })($ || ($ = {})); //button.view.tree.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var $; (function ($) { var $mol; @@ -1716,7 +1631,7 @@ var $; var $mol_button = (function (_super) { __extends($mol_button, _super); function $mol_button() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } $mol_button.prototype.disabled = function () { return !this.enabled(); @@ -1726,9 +1641,10 @@ var $; return; this.event_click(next); }; - $mol_button.prototype.evenet_key_press = function (event) { - if (event.keyCode === $.$mol_keyboard_code.enter) + $mol_button.prototype.event_key_press = function (event) { + if (event.keyCode === $.$mol_keyboard_code.enter) { return this.event_activate(event); + } }; $mol_button.prototype.tab_index = function () { return this.enabled() ? _super.prototype.tab_index.call(this) : null; @@ -1740,17 +1656,22 @@ var $; })($ || ($ = {})); //button.view.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var $; (function ($) { var $mol_button_major = (function (_super) { __extends($mol_button_major, _super); function $mol_button_major() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } return $mol_button_major; }($.$mol_button)); @@ -1760,7 +1681,7 @@ var $; var $mol_button_minor = (function (_super) { __extends($mol_button_minor, _super); function $mol_button_minor() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } return $mol_button_minor; }($.$mol_button)); @@ -1770,7 +1691,7 @@ var $; var $mol_button_danger = (function (_super) { __extends($mol_button_danger, _super); function $mol_button_danger() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } return $mol_button_danger; }($.$mol_button)); @@ -1792,11 +1713,16 @@ var $; })($ || ($ = {})); //dict.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -1819,8 +1745,8 @@ var $; return window.location.search + window.location.hash; }; $mol_state_arg.dict = function (next) { - var href = this.href(next && this.make(next)); - var chunks = href.split(/[\/\?#!&;]/g); + var href = this.href(next && this.make_link(next)); + var chunks = href.split(/[\/\?#&;]/g); var params = {}; chunks.forEach(function (chunk) { if (!chunk) @@ -1832,18 +1758,19 @@ var $; }; $mol_state_arg.value = function (key, next) { var nextDict = (next === void 0) ? void 0 : $.$mol_merge_dict(this.dict(), (_a = {}, _a[key] = next, _a)); - return this.dict(nextDict)[key] || null; + var next2 = this.dict(nextDict)[key]; + return (next2 == null) ? null : next2; var _a; }; $mol_state_arg.link = function (next) { - return this.make($.$mol_merge_dict(this.dict(), next)); + return this.make_link($.$mol_merge_dict(this.dict(), next)); }; - $mol_state_arg.make = function (next) { + $mol_state_arg.make_link = function (next) { var chunks = []; for (var key in next) { if (null == next[key]) continue; - chunks.push([key].concat(next[key]).map(encodeURIComponent).join('=')); + chunks.push([key].concat(next[key] ? next[key] : []).map(encodeURIComponent).join('=')); } return '#' + chunks.join('/'); }; @@ -1861,27 +1788,32 @@ var $; } return $mol_state_arg.link(dict); }; + __decorate([ + $.$mol_mem() + ], $mol_state_arg, "href", null); + __decorate([ + $.$mol_mem() + ], $mol_state_arg, "dict", null); + __decorate([ + $.$mol_mem_key() + ], $mol_state_arg, "value", null); return $mol_state_arg; }($.$mol_object)); - __decorate([ - $.$mol_mem() - ], $mol_state_arg, "href", null); - __decorate([ - $.$mol_mem() - ], $mol_state_arg, "dict", null); - __decorate([ - $.$mol_mem_key() - ], $mol_state_arg, "value", null); $.$mol_state_arg = $mol_state_arg; - window.addEventListener('hashchange', function (event) { return $mol_state_arg.href(void null, $.$mol_atom_force); }); + window.addEventListener('hashchange', function (event) { return $mol_state_arg.href(undefined, $.$mol_atom_force); }); })($ || ($ = {})); //arg.web.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var __assign = (this && this.__assign) || Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; @@ -1895,7 +1827,7 @@ var $; var $mol_link = (function (_super) { __extends($mol_link, _super); function $mol_link() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } $mol_link.prototype.minimal_height = function () { return 36; @@ -1909,11 +1841,14 @@ var $; $mol_link.prototype.hint = function () { return ""; }; + $mol_link.prototype.target = function () { + return "_self"; + }; $mol_link.prototype.current = function () { return false; }; $mol_link.prototype.attr = function () { - return (__assign({}, _super.prototype.attr.call(this), { "href": this.uri(), "title": this.hint(), "mol_link_current": this.current() })); + return (__assign({}, _super.prototype.attr.call(this), { "href": this.uri(), "title": this.hint(), "target": this.target(), "mol_link_current": this.current() })); }; $mol_link.prototype.sub = function () { return [].concat(this.title()); @@ -1927,11 +1862,16 @@ var $; })($ || ($ = {})); //link.view.tree.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -1945,7 +1885,7 @@ var $; var $mol_link = (function (_super) { __extends($mol_link, _super); function $mol_link() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } $mol_link.prototype.uri = function () { return new $.$mol_state_arg(this.state_key()).link(this.arg()); @@ -1953,21 +1893,26 @@ var $; $mol_link.prototype.current = function () { return this.uri() === $.$mol_state_arg.link({}); }; + __decorate([ + $.$mol_mem() + ], $mol_link.prototype, "uri", null); return $mol_link; }($.$mol_link)); - __decorate([ - $.$mol_mem() - ], $mol_link.prototype, "uri", null); $mol.$mol_link = $mol_link; })($mol = $.$mol || ($.$mol = {})); })($ || ($ = {})); //link.view.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var __assign = (this && this.__assign) || Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; @@ -1987,9 +1932,9 @@ var $; var $mol_check = (function (_super) { __extends($mol_check, _super); function $mol_check() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } - $mol_check.prototype.checked = function (val) { + $mol_check.prototype.checked = function (val, force) { return (val !== void 0) ? val : false; }; $mol_check.prototype.attr = function () { @@ -1998,35 +1943,43 @@ var $; $mol_check.prototype.Icon = function () { return null; }; + $mol_check.prototype.title = function () { + return ""; + }; $mol_check.prototype.label = function () { - return []; + return [].concat(this.title()); }; $mol_check.prototype.Label = function () { var _this = this; - return new $.$mol_view().setup(function (obj) { - obj.sub = function () { return [].concat(_this.label()); }; + return $.$mol_view.make({ + sub: function () { return _this.label(); }, }); }; $mol_check.prototype.sub = function () { return [].concat(this.Icon(), this.Label()); }; + __decorate([ + $.$mol_mem() + ], $mol_check.prototype, "checked", null); + __decorate([ + $.$mol_mem() + ], $mol_check.prototype, "Label", null); return $mol_check; }($.$mol_button)); - __decorate([ - $.$mol_mem() - ], $mol_check.prototype, "checked", null); - __decorate([ - $.$mol_mem() - ], $mol_check.prototype, "Label", null); $.$mol_check = $mol_check; })($ || ($ = {})); //check.view.tree.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var $; (function ($) { var $mol; @@ -2034,12 +1987,18 @@ var $; var $mol_check = (function (_super) { __extends($mol_check, _super); function $mol_check() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } $mol_check.prototype.event_click = function (next) { this.checked(!this.checked()); next.preventDefault(); }; + $mol_check.prototype.sub = function () { + return [ + this.Icon(), + this.label().some(function (item) { return item; }) ? this.Label() : null, + ]; + }; return $mol_check; }($.$mol_check)); $mol.$mol_check = $mol_check; @@ -2047,51 +2006,16 @@ var $; })($ || ($ = {})); //check.view.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var $; -(function ($) { - var $mol_state_session = (function (_super) { - __extends($mol_state_session, _super); - function $mol_state_session() { - return _super.apply(this, arguments) || this; - } - $mol_state_session.value = function (key, next) { - if (next === void 0) - return JSON.parse(sessionStorage.getItem(key) || 'null'); - if (next === null) - sessionStorage.removeItem(key); - else - sessionStorage.setItem(key, JSON.stringify(next)); - return next; - }; - $mol_state_session.prototype.prefix = function () { return ''; }; - $mol_state_session.prototype.value = function (key, next) { - return $mol_state_session.value(this.prefix() + '.' + key, next); - }; - return $mol_state_session; - }($.$mol_object)); - __decorate([ - $.$mol_mem_key() - ], $mol_state_session, "value", null); - $.$mol_state_session = $mol_state_session; -})($ || ($ = {})); -//session.web.js.map -; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var __assign = (this && this.__assign) || Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; @@ -2111,47 +2035,64 @@ var $; var $mol_scroll = (function (_super) { __extends($mol_scroll, _super); function $mol_scroll() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } $mol_scroll.prototype.minimal_height = function () { return 0; }; - $mol_scroll.prototype.scroll_top = function (val) { + $mol_scroll.prototype.scroll_top = function (val, force) { + return (val !== void 0) ? val : 0; + }; + $mol_scroll.prototype.scroll_left = function (val, force) { + return (val !== void 0) ? val : 0; + }; + $mol_scroll.prototype.scroll_bottom = function (val, force) { return (val !== void 0) ? val : 0; }; - $mol_scroll.prototype.scroll_left = function (val) { + $mol_scroll.prototype.scroll_right = function (val, force) { return (val !== void 0) ? val : 0; }; $mol_scroll.prototype.field = function () { - return (__assign({}, _super.prototype.field.call(this), { "scrollTop": this.scroll_top(), "scrollLeft": this.scroll_left() })); + return (__assign({}, _super.prototype.field.call(this), { "scrollTop": this.scroll_top(), "scrollLeft": this.scroll_left(), "scrollBottom": this.scroll_bottom(), "scrollRight": this.scroll_right() })); }; - $mol_scroll.prototype.event_scroll = function (event) { + $mol_scroll.prototype.event_scroll = function (event, force) { return (event !== void 0) ? event : null; }; $mol_scroll.prototype.event_async = function () { var _this = this; return (__assign({}, _super.prototype.event_async.call(this), { "scroll": function (event) { return _this.event_scroll(event); } })); }; + __decorate([ + $.$mol_mem() + ], $mol_scroll.prototype, "scroll_top", null); + __decorate([ + $.$mol_mem() + ], $mol_scroll.prototype, "scroll_left", null); + __decorate([ + $.$mol_mem() + ], $mol_scroll.prototype, "scroll_bottom", null); + __decorate([ + $.$mol_mem() + ], $mol_scroll.prototype, "scroll_right", null); + __decorate([ + $.$mol_mem() + ], $mol_scroll.prototype, "event_scroll", null); return $mol_scroll; }($.$mol_view)); - __decorate([ - $.$mol_mem() - ], $mol_scroll.prototype, "scroll_top", null); - __decorate([ - $.$mol_mem() - ], $mol_scroll.prototype, "scroll_left", null); - __decorate([ - $.$mol_mem() - ], $mol_scroll.prototype, "event_scroll", null); $.$mol_scroll = $mol_scroll; })($ || ($ = {})); //scroll.view.tree.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -2159,27 +2100,28 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, return c > 3 && r && Object.defineProperty(target, key, r), r; }; var $; -(function ($) { - $.$mol_view_context.$mol_scroll_scroll_top = function () { return 0; }; - $.$mol_view_context.$mol_scroll_scroll_left = function () { return 0; }; - $.$mol_view_context.$mol_scroll_moving = function () { return false; }; -})($ || ($ = {})); (function ($) { var $mol; (function ($mol) { + function $mol_scroll_top() { + return 0; + } + $mol.$mol_scroll_top = $mol_scroll_top; + function $mol_scroll_left() { + return 0; + } + $mol.$mol_scroll_left = $mol_scroll_left; + function $mol_scroll_moving() { + return false; + } + $mol.$mol_scroll_moving = $mol_scroll_moving; var $mol_scroll = (function (_super) { __extends($mol_scroll, _super); function $mol_scroll() { - var _this = _super.apply(this, arguments) || this; - _this._moving_task_frame = 0; + var _this = _super !== null && _super.apply(this, arguments) || this; + _this._moving_task_timer = 0; return _this; } - $mol_scroll.prototype.scroll_top = function (next) { - return $.$mol_state_session.value(this + ".scroll_top()", next) || 0; - }; - $mol_scroll.prototype.scroll_left = function (next) { - return $.$mol_state_session.value(this + ".scroll_left()", next) || 0; - }; $mol_scroll.prototype.scroll_bottom = function (next) { return next || 0; }; @@ -2191,20 +2133,28 @@ var $; this.moving(true); this.moving_task_stop(); new $.$mol_defer(function () { - var el = next.target; - _this.scroll_top(Math.max(0, el.scrollTop)); - _this.scroll_left(Math.max(0, el.scrollLeft)); - _this.scroll_bottom(Math.max(0, el.scrollHeight - el.scrollTop - el.offsetHeight)); - _this.scroll_right(Math.max(0, el.scrollWidth - el.scrollLeft - el.offsetWidth)); + var el = _this.dom_node(); + var top = Math.max(0, el.scrollTop); + var left = Math.max(0, el.scrollLeft); + _this.scroll_top(top); + _this.scroll_left(left); + _this.scroll_bottom(Math.max(0, el.scrollHeight - top - el.offsetHeight)); + _this.scroll_right(Math.max(0, el.scrollWidth - left - el.offsetWidth)); }); }; - $mol_scroll.prototype.moving_task_stop = function () { + $mol_scroll.prototype.event_repos = function (next) { var _this = this; - cancelAnimationFrame(this._moving_task_frame); - this._moving_task_frame = requestAnimationFrame(function () { - _this.moving(false); + new $.$mol_defer(function () { + var el = _this.dom_node(); + _this.scroll_bottom(Math.max(0, el.scrollHeight - _this.scroll_top() - el.offsetHeight)); + _this.scroll_right(Math.max(0, el.scrollWidth - _this.scroll_left() - el.offsetWidth)); }); }; + $mol_scroll.prototype.moving_task_stop = function () { + var _this = this; + clearTimeout(this._moving_task_timer); + this._moving_task_timer = setTimeout(function () { return _this.moving(false); }, 50); + }; $mol_scroll.prototype.moving = function (next) { return next || false; }; @@ -2222,77 +2172,97 @@ var $; var limit = context.$mol_view_visible_width(); return _this.scroll_left() + Math.min(sizeWin.width, limit); }; - subContext.$mol_scroll_scroll_top = function () { return _this.scroll_top(); }; - subContext.$mol_scroll_scroll_left = function () { return _this.scroll_left(); }; + subContext.$mol_scroll_top = function () { return _this.scroll_top(); }; + subContext.$mol_scroll_left = function () { return _this.scroll_left(); }; subContext.$mol_scroll_moving = function () { return _this.moving(); }; return subContext; }; + __decorate([ + $.$mol_mem() + ], $mol_scroll.prototype, "scroll_bottom", null); + __decorate([ + $.$mol_mem() + ], $mol_scroll.prototype, "scroll_right", null); + __decorate([ + $.$mol_mem() + ], $mol_scroll.prototype, "moving", null); + __decorate([ + $.$mol_mem() + ], $mol_scroll.prototype, "context_sub", null); return $mol_scroll; }($.$mol_scroll)); - __decorate([ - $.$mol_mem() - ], $mol_scroll.prototype, "scroll_bottom", null); - __decorate([ - $.$mol_mem() - ], $mol_scroll.prototype, "scroll_right", null); - __decorate([ - $.$mol_mem() - ], $mol_scroll.prototype, "moving", null); - __decorate([ - $.$mol_mem() - ], $mol_scroll.prototype, "context_sub", null); $mol.$mol_scroll = $mol_scroll; })($mol = $.$mol || ($.$mol = {})); })($ || ($ = {})); //scroll.view.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; -var localStorage = localStorage || { - getItem: function (key) { - return this[':' + key]; - }, - setItem: function (key, value) { - this[':' + key] = value; - }, - removeItem: function (key) { - this[':' + key] = void 0; - } -}; var $; (function ($) { var $mol_state_local = (function (_super) { __extends($mol_state_local, _super); function $mol_state_local() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } + $mol_state_local.native = function () { + if (this['native()']) + return this['native()']; + check: try { + var native = $.$mol_dom_context.localStorage; + if (!native) + break check; + native.setItem('', ''); + native.removeItem(''); + return this['native()'] = native; + } + catch (error) { + console.warn(error); + } + return this['native()'] = { + getItem: function (key) { + return this[':' + key]; + }, + setItem: function (key, value) { + this[':' + key] = value; + }, + removeItem: function (key) { + this[':' + key] = void 0; + } + }; + }; $mol_state_local.value = function (key, next, force) { if (next === void 0) - return JSON.parse(localStorage.getItem(key) || 'null'); + return JSON.parse(this.native().getItem(key) || 'null'); if (next === null) - localStorage.removeItem(key); + this.native().removeItem(key); else - localStorage.setItem(key, JSON.stringify(next)); + this.native().setItem(key, JSON.stringify(next)); return next; }; $mol_state_local.prototype.prefix = function () { return ''; }; $mol_state_local.prototype.value = function (key, next) { return $mol_state_local.value(this.prefix() + '.' + key, next); }; + __decorate([ + $.$mol_mem_key() + ], $mol_state_local, "value", null); return $mol_state_local; }($.$mol_object)); - __decorate([ - $.$mol_mem_key() - ], $mol_state_local, "value", null); $.$mol_state_local = $mol_state_local; })($ || ($ = {})); //local.js.map @@ -2305,11 +2275,27 @@ var $; })($ || ($ = {})); //local.web.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var $; +(function ($) { + function $mol_const(value) { + var getter = (function () { return value; }); + getter['()'] = value; + return getter; + } + $.$mol_const = $mol_const; +})($ || ($ = {})); +//const.js.map +; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -2318,33 +2304,42 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, }; var $; (function ($) { - var $mol_http_request = (function (_super) { - __extends($mol_http_request, _super); - function $mol_http_request() { - return _super.apply(this, arguments) || this; + var $mol_http = (function (_super) { + __extends($mol_http, _super); + function $mol_http() { + return _super !== null && _super.apply(this, arguments) || this; } - $mol_http_request.prototype.uri = function () { return ''; }; - $mol_http_request.prototype.method_get = function () { return 'Get'; }; - $mol_http_request.prototype.method_put = function () { return 'Put'; }; - $mol_http_request.prototype.credentials = function () { + $mol_http.resource = function (uri) { + var resolver = $.$mol_dom_context.document.createElement('a'); + resolver.href = uri; + return this.resource_absolute(resolver.href); + }; + $mol_http.resource_absolute = function (uri) { + return $mol_http.make({ + uri: $.$mol_const(uri) + }); + }; + $mol_http.prototype.uri = function () { return ''; }; + $mol_http.prototype.method_get = function () { return 'Get'; }; + $mol_http.prototype.method_put = function () { return 'Put'; }; + $mol_http.prototype.credentials = function () { return null; }; - $mol_http_request.prototype.headers = function () { + $mol_http.prototype.headers = function () { return {}; }; - $mol_http_request.prototype.body = function () { return null; }; - $mol_http_request.prototype.native = function () { + $mol_http.prototype.request = function () { var _this = this; - if (this['native()']) - return this['native()']; - var next = this['native()'] = new $.$mol_dom_context.XMLHttpRequest; + if (this['request()']) + return this['request()']; + var next = this['request()'] = new $.$mol_dom_context.XMLHttpRequest; next.withCredentials = Boolean(this.credentials()); next.onload = function (event) { if ((next.status === 0) || (Math.floor(next.status / 100) === 2)) { _this.response(next, $.$mol_atom_force); } else { - _this.response(new Error(next.responseText), $.$mol_atom_force); + _this.response(new Error(next.statusText || next.responseText), $.$mol_atom_force); } }; next.onerror = function (event) { @@ -2352,17 +2347,17 @@ var $; }; return next; }; - $mol_http_request.prototype.destroyed = function (next) { + $mol_http.prototype.destroyed = function (next) { if (next) { - var native = this['native()']; + var native = this['reques()']; if (native) native.abort(); } return _super.prototype.destroyed.call(this, next); }; - $mol_http_request.prototype.response = function (next, force) { + $mol_http.prototype.response = function (next, force) { var creds = this.credentials(); - var native = this.native(); + var native = this.request(); var method = (next === void 0) ? this.method_get() : this.method_put(); var uri = this.uri(); native.open(method, uri, true, creds && creds.login, creds && creds.password); @@ -2372,23 +2367,38 @@ var $; native.send(next); throw new $.$mol_atom_wait(method + " " + uri); }; - $mol_http_request.prototype.text = function (next, force) { + $mol_http.prototype.text = function (next, force) { return this.response(next, force).responseText; }; - return $mol_http_request; + $mol_http.prototype.json = function (next, force) { + var next2 = next && JSON.stringify(next, null, '\t'); + return JSON.parse(this.text(next2, force)); + }; + __decorate([ + $.$mol_mem() + ], $mol_http.prototype, "response", null); + __decorate([ + $.$mol_mem() + ], $mol_http.prototype, "json", null); + __decorate([ + $.$mol_mem_key() + ], $mol_http, "resource_absolute", null); + return $mol_http; }($.$mol_object)); - __decorate([ - $.$mol_mem() - ], $mol_http_request.prototype, "response", null); - $.$mol_http_request = $mol_http_request; + $.$mol_http = $mol_http; })($ || ($ = {})); -//request.js.map +//http.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -2400,55 +2410,42 @@ var $; var $mol_http_resource = (function (_super) { __extends($mol_http_resource, _super); function $mol_http_resource() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } $mol_http_resource.item = function (uri) { - return new $mol_http_resource().setup(function (obj) { - obj.uri = function () { return uri; }; - }); - }; - $mol_http_resource.prototype.uri = function () { return ''; }; - $mol_http_resource.prototype.method_get = function () { return 'Get'; }; - $mol_http_resource.prototype.method_put = function () { return 'Put'; }; - $mol_http_resource.prototype.credentials = function () { - return null; - }; - $mol_http_resource.prototype.headers = function () { - return {}; - }; - $mol_http_resource.prototype.request = function () { - var _this = this; - var request = new $.$mol_http_request(); - request.uri = function () { return _this.uri(); }; - request.method_get = function () { return _this.method_get(); }; - request.method_put = function () { return _this.method_put(); }; - request.credentials = function () { return _this.credentials(); }; - request.headers = function () { return _this.headers(); }; - return request; - }; - $mol_http_resource.prototype.text = function (next, force) { - return this.request().text(next, force); + return $.$mol_http.resource(uri); }; + __decorate([ + $.$mol_deprecated('Use $mol_http.resource insted.') + ], $mol_http_resource, "item", null); return $mol_http_resource; - }($.$mol_object)); - __decorate([ - $.$mol_mem() - ], $mol_http_resource.prototype, "request", null); - __decorate([ - $.$mol_mem() - ], $mol_http_resource.prototype, "text", null); - __decorate([ - $.$mol_mem_key() - ], $mol_http_resource, "item", null); + }($.$mol_http)); $.$mol_http_resource = $mol_http_resource; + var $mol_http_resource_json = (function () { + function $mol_http_resource_json() { + } + $mol_http_resource_json.item = function (uri) { + return $.$mol_http.resource(uri); + }; + __decorate([ + $.$mol_deprecated('Use $mol_http.resource insted.') + ], $mol_http_resource_json, "item", null); + return $mol_http_resource_json; + }()); + $.$mol_http_resource_json = $mol_http_resource_json; })($ || ($ = {})); //resource.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -2460,25 +2457,17 @@ var $; var $mol_file = (function (_super) { __extends($mol_file, _super); function $mol_file() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } $mol_file.absolute = function (path) { - return new $mol_file().setup(function (obj) { - obj.path = function () { return path; }; + return $mol_file.make({ + path: $.$mol_const(path) }); }; $mol_file.relative = function (path) { - if (/^\//.test(path)) { - return $mol_file.root().resolve(path.substring(1)); - } - return $mol_file.base().resolve(path); - }; - $mol_file.root = function () { - return $mol_file.absolute(''); - }; - $mol_file.base = function () { - var path = $.$mol_dom_context.document.location.pathname.replace(/\/[^\/]*$/, ''); - return $mol_file.absolute(path); + var resolver = $.$mol_dom_context.document.createElement('a'); + resolver.href = path; + return this.absolute(resolver.href); }; $mol_file.prototype.path = function () { return '.'; @@ -2494,19 +2483,13 @@ var $; return match && match[1].substring(1); }; $mol_file.prototype.content = function (next, force) { - return $.$mol_http_resource.item(this.path()).text(next); + return $.$mol_http.resource(this.path()).text(next); }; $mol_file.prototype.resolve = function (path) { var res = this.path() + '/' + path; while (true) { var prev = res; - res = res.replace(/\/[^\/]+\/\.\.\//, '/'); - if (prev === res) - break; - } - while (true) { - var prev = res; - res = res.replace(/\/\.\.\/[^\/]+\//, '/'); + res = res.replace(/\/[^\/.]+\/\.\.\//, '/'); if (prev === res) break; } @@ -2516,23 +2499,28 @@ var $; if (base === void 0) { base = this.Class().relative('.'); } throw new Error('Not implemented yet'); }; + __decorate([ + $.$mol_mem() + ], $mol_file.prototype, "content", null); + __decorate([ + $.$mol_mem_key() + ], $mol_file, "absolute", null); return $mol_file; }($.$mol_object)); - __decorate([ - $.$mol_mem() - ], $mol_file.prototype, "content", null); - __decorate([ - $.$mol_mem_key() - ], $mol_file, "absolute", null); $.$mol_file = $mol_file; })($ || ($ = {})); //file.web.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -2544,7 +2532,7 @@ var $; var $mol_locale = (function (_super) { __extends($mol_locale, _super); function $mol_locale() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } $mol_locale.lang_default = function () { return 'en'; @@ -2576,32 +2564,37 @@ var $; if (text) return text; } - console.warn('Locale tet not found: ', contexts, key); + console.warn('Locale text not found: ', "(" + contexts.join('|') + ")_" + key); return "<" + key + ">"; }; + __decorate([ + $.$mol_mem() + ], $mol_locale, "lang_default", null); + __decorate([ + $.$mol_mem() + ], $mol_locale, "lang", null); + __decorate([ + $.$mol_mem_key() + ], $mol_locale, "source", null); + __decorate([ + $.$mol_mem() + ], $mol_locale, "texts", null); return $mol_locale; }($.$mol_object)); - __decorate([ - $.$mol_mem() - ], $mol_locale, "lang_default", null); - __decorate([ - $.$mol_mem() - ], $mol_locale, "lang", null); - __decorate([ - $.$mol_mem_key() - ], $mol_locale, "source", null); - __decorate([ - $.$mol_mem() - ], $mol_locale, "texts", null); $.$mol_locale = $mol_locale; })($ || ($ = {})); //locale.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var __assign = (this && this.__assign) || Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; @@ -2615,7 +2608,7 @@ var $; var $mol_list = (function (_super) { __extends($mol_list, _super); function $mol_list() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } $mol_list.prototype.style = function () { return (__assign({}, _super.prototype.style.call(this), { "minHeight": this.minimal_height() })); @@ -2635,11 +2628,16 @@ var $; })($ || ($ = {})); //list.view.tree.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -2653,7 +2651,7 @@ var $; var $mol_list = (function (_super) { __extends($mol_list, _super); function $mol_list() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } $mol_list.prototype.sub = function () { var rows = this.rows(); @@ -2663,7 +2661,7 @@ var $; var sub = this.sub(); if (!sub) return null; - var heightLimit = this.context().$mol_view_visible_height(); + var heightLimit = this.$.$mol_view_visible_height(); var offset = 0; var next = []; for (var _i = 0, sub_1 = sub; _i < sub_1.length; _i++) { @@ -2715,33 +2713,38 @@ var $; }); return height; }; + __decorate([ + $.$mol_mem() + ], $mol_list.prototype, "row_offsets", null); + __decorate([ + $.$mol_mem_key() + ], $mol_list.prototype, "row_context", null); + __decorate([ + $.$mol_mem() + ], $mol_list.prototype, "sub_visible", null); return $mol_list; }($.$mol_list)); - __decorate([ - $.$mol_mem() - ], $mol_list.prototype, "row_offsets", null); - __decorate([ - $.$mol_mem_key() - ], $mol_list.prototype, "row_context", null); - __decorate([ - $.$mol_mem() - ], $mol_list.prototype, "sub_visible", null); $mol.$mol_list = $mol_list; })($mol = $.$mol || ($.$mol = {})); })($ || ($ = {})); //list.view.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var $; (function ($) { var $mol_bar = (function (_super) { __extends($mol_bar, _super); function $mol_bar() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } return $mol_bar; }($.$mol_view)); @@ -2749,11 +2752,16 @@ var $; })($ || ($ = {})); //bar.view.tree.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var __assign = (this && this.__assign) || Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; @@ -2773,43 +2781,43 @@ var $; var $mol_app_todomvc = (function (_super) { __extends($mol_app_todomvc, _super); function $mol_app_todomvc() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } $mol_app_todomvc.prototype.title = function () { return $.$mol_locale.text(this.locale_contexts(), "title"); }; $mol_app_todomvc.prototype.Title = function () { var _this = this; - return new $.$mol_view().setup(function (obj) { - obj.minimal_height = function () { return 142; }; - obj.sub = function () { return [].concat(_this.title()); }; + return $.$mol_view.make({ + minimal_height: function () { return 142; }, + sub: function () { return [].concat(_this.title()); }, }); }; $mol_app_todomvc.prototype.head_complete_enabled = function () { return false; }; - $mol_app_todomvc.prototype.completed_all = function (val) { + $mol_app_todomvc.prototype.completed_all = function (val, force) { return (val !== void 0) ? val : false; }; $mol_app_todomvc.prototype.Head_complete = function () { var _this = this; - return new $.$mol_check().setup(function (obj) { - obj.enabled = function () { return _this.head_complete_enabled(); }; - obj.checked = function (val) { return _this.completed_all(val); }; - obj.sub = function () { return [].concat("❯"); }; + return $.$mol_check.make({ + enabled: function () { return _this.head_complete_enabled(); }, + checked: function (val) { return _this.completed_all(val); }, + title: function () { return "❯"; }, }); }; - $mol_app_todomvc.prototype.task_title_new = function (val) { + $mol_app_todomvc.prototype.task_title_new = function (val, force) { return (val !== void 0) ? val : ""; }; - $mol_app_todomvc.prototype.event_add = function (event) { + $mol_app_todomvc.prototype.event_add = function (event, force) { return (event !== void 0) ? event : null; }; $mol_app_todomvc.prototype.Add = function () { var _this = this; - return new $.$mol_app_todomvc_add().setup(function (obj) { - obj.value = function (val) { return _this.task_title_new(val); }; - obj.event_done = function (event) { return _this.event_add(event); }; + return $.$mol_app_todomvc_add.make({ + value: function (val) { return _this.task_title_new(val); }, + event_done: function (event) { return _this.event_add(event); }, }); }; $mol_app_todomvc.prototype.Head_content = function () { @@ -2817,9 +2825,9 @@ var $; }; $mol_app_todomvc.prototype.Head = function () { var _this = this; - return new $.$mol_view().setup(function (obj) { - obj.minimal_height = function () { return 64; }; - obj.sub = function () { return _this.Head_content(); }; + return $.$mol_view.make({ + minimal_height: function () { return 64; }, + sub: function () { return _this.Head_content(); }, }); }; $mol_app_todomvc.prototype.task_rows = function () { @@ -2827,8 +2835,8 @@ var $; }; $mol_app_todomvc.prototype.List = function () { var _this = this; - return new $.$mol_list().setup(function (obj) { - obj.rows = function () { return _this.task_rows(); }; + return $.$mol_list.make({ + rows: function () { return _this.task_rows(); }, }); }; $mol_app_todomvc.prototype.pending_message = function () { @@ -2836,8 +2844,8 @@ var $; }; $mol_app_todomvc.prototype.Pending = function () { var _this = this; - return new $.$mol_view().setup(function (obj) { - obj.sub = function () { return [].concat(_this.pending_message()); }; + return $.$mol_view.make({ + sub: function () { return [].concat(_this.pending_message()); }, }); }; $mol_app_todomvc.prototype.filter_all_label = function () { @@ -2845,11 +2853,11 @@ var $; }; $mol_app_todomvc.prototype.Filter_all = function () { var _this = this; - return new $.$mol_link().setup(function (obj) { - obj.sub = function () { return [].concat(_this.filter_all_label()); }; - obj.arg = function () { return ({ + return $.$mol_link.make({ + sub: function () { return [].concat(_this.filter_all_label()); }, + arg: function () { return ({ "completed": null, - }); }; + }); }, }); }; $mol_app_todomvc.prototype.filter_active_label = function () { @@ -2857,11 +2865,11 @@ var $; }; $mol_app_todomvc.prototype.Filter_active = function () { var _this = this; - return new $.$mol_link().setup(function (obj) { - obj.sub = function () { return [].concat(_this.filter_active_label()); }; - obj.arg = function () { return ({ - "completed": false, - }); }; + return $.$mol_link.make({ + sub: function () { return [].concat(_this.filter_active_label()); }, + arg: function () { return ({ + "completed": "false", + }); }, }); }; $mol_app_todomvc.prototype.filter_completed_label = function () { @@ -2869,11 +2877,11 @@ var $; }; $mol_app_todomvc.prototype.Filter_completed = function () { var _this = this; - return new $.$mol_link().setup(function (obj) { - obj.sub = function () { return [].concat(_this.filter_completed_label()); }; - obj.arg = function () { return ({ - "completed": true, - }); }; + return $.$mol_link.make({ + sub: function () { return [].concat(_this.filter_completed_label()); }, + arg: function () { return ({ + "completed": "true", + }); }, }); }; $mol_app_todomvc.prototype.filterOptions = function () { @@ -2881,14 +2889,14 @@ var $; }; $mol_app_todomvc.prototype.Filter = function () { var _this = this; - return new $.$mol_bar().setup(function (obj) { - obj.sub = function () { return _this.filterOptions(); }; + return $.$mol_bar.make({ + sub: function () { return _this.filterOptions(); }, }); }; $mol_app_todomvc.prototype.sweep_enabled = function () { return true; }; - $mol_app_todomvc.prototype.event_sweep = function (event) { + $mol_app_todomvc.prototype.event_sweep = function (event, force) { return (event !== void 0) ? event : null; }; $mol_app_todomvc.prototype.sweep_label = function () { @@ -2896,10 +2904,10 @@ var $; }; $mol_app_todomvc.prototype.Sweep = function () { var _this = this; - return new $.$mol_button_minor().setup(function (obj) { - obj.enabled = function () { return _this.sweep_enabled(); }; - obj.event_click = function (event) { return _this.event_sweep(event); }; - obj.sub = function () { return [].concat(_this.sweep_label()); }; + return $.$mol_button_minor.make({ + enabled: function () { return _this.sweep_enabled(); }, + event_click: function (event) { return _this.event_sweep(event); }, + sub: function () { return [].concat(_this.sweep_label()); }, }); }; $mol_app_todomvc.prototype.foot_content = function () { @@ -2907,8 +2915,8 @@ var $; }; $mol_app_todomvc.prototype.Foot = function () { var _this = this; - return new $.$mol_view().setup(function (obj) { - obj.sub = function () { return _this.foot_content(); }; + return $.$mol_view.make({ + sub: function () { return _this.foot_content(); }, }); }; $mol_app_todomvc.prototype.panels = function () { @@ -2916,175 +2924,174 @@ var $; }; $mol_app_todomvc.prototype.Panel = function () { var _this = this; - return new $.$mol_list().setup(function (obj) { - obj.rows = function () { return _this.panels(); }; + return $.$mol_list.make({ + rows: function () { return _this.panels(); }, }); }; $mol_app_todomvc.prototype.Page = function () { var _this = this; - return new $.$mol_list().setup(function (obj) { - obj.rows = function () { return [].concat(_this.Title(), _this.Panel()); }; + return $.$mol_list.make({ + rows: function () { return [].concat(_this.Title(), _this.Panel()); }, }); }; $mol_app_todomvc.prototype.sub = function () { return [].concat(this.Page()); }; - $mol_app_todomvc.prototype.task_completed = function (id, val) { + $mol_app_todomvc.prototype.task_completed = function (id, val, force) { return (val !== void 0) ? val : false; }; - $mol_app_todomvc.prototype.task_title = function (id, val) { + $mol_app_todomvc.prototype.task_title = function (id, val, force) { return (val !== void 0) ? val : ""; }; - $mol_app_todomvc.prototype.event_task_drop = function (id, event) { + $mol_app_todomvc.prototype.event_task_drop = function (id, event, force) { return (event !== void 0) ? event : null; }; $mol_app_todomvc.prototype.Task_row = function (id) { var _this = this; - return new $.$mol_app_todomvc_task_row().setup(function (obj) { - obj.completed = function (val) { return _this.task_completed(id, val); }; - obj.title = function (val) { return _this.task_title(id, val); }; - obj.event_drop = function (event) { return _this.event_task_drop(id, event); }; + return $.$mol_app_todomvc_task_row.make({ + completed: function (val) { return _this.task_completed(id, val); }, + title: function (val) { return _this.task_title(id, val); }, + event_drop: function (event) { return _this.event_task_drop(id, event); }, }); }; + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "Title", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "completed_all", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "Head_complete", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "task_title_new", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "event_add", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "Add", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "Head", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "List", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "Pending", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "Filter_all", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "Filter_active", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "Filter_completed", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "Filter", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "event_sweep", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "Sweep", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "Foot", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "Panel", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "Page", null); + __decorate([ + $.$mol_mem_key() + ], $mol_app_todomvc.prototype, "task_completed", null); + __decorate([ + $.$mol_mem_key() + ], $mol_app_todomvc.prototype, "task_title", null); + __decorate([ + $.$mol_mem_key() + ], $mol_app_todomvc.prototype, "event_task_drop", null); + __decorate([ + $.$mol_mem_key() + ], $mol_app_todomvc.prototype, "Task_row", null); return $mol_app_todomvc; }($.$mol_scroll)); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc.prototype, "Title", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc.prototype, "completed_all", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc.prototype, "Head_complete", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc.prototype, "task_title_new", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc.prototype, "event_add", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc.prototype, "Add", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc.prototype, "Head", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc.prototype, "List", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc.prototype, "Pending", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc.prototype, "Filter_all", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc.prototype, "Filter_active", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc.prototype, "Filter_completed", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc.prototype, "Filter", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc.prototype, "event_sweep", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc.prototype, "Sweep", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc.prototype, "Foot", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc.prototype, "Panel", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc.prototype, "Page", null); - __decorate([ - $.$mol_mem_key() - ], $mol_app_todomvc.prototype, "task_completed", null); - __decorate([ - $.$mol_mem_key() - ], $mol_app_todomvc.prototype, "task_title", null); - __decorate([ - $.$mol_mem_key() - ], $mol_app_todomvc.prototype, "event_task_drop", null); - __decorate([ - $.$mol_mem_key() - ], $mol_app_todomvc.prototype, "Task_row", null); $.$mol_app_todomvc = $mol_app_todomvc; })($ || ($ = {})); (function ($) { var $mol_app_todomvc_add = (function (_super) { __extends($mol_app_todomvc_add, _super); function $mol_app_todomvc_add() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } $mol_app_todomvc_add.prototype.hint = function () { return $.$mol_locale.text(this.locale_contexts(), "hint"); }; - $mol_app_todomvc_add.prototype.event_press = function (event) { + $mol_app_todomvc_add.prototype.event_press = function (event, force) { return (event !== void 0) ? event : null; }; $mol_app_todomvc_add.prototype.event = function () { var _this = this; return (__assign({}, _super.prototype.event.call(this), { "keyup": function (event) { return _this.event_press(event); } })); }; - $mol_app_todomvc_add.prototype.event_done = function (event) { + $mol_app_todomvc_add.prototype.event_done = function (event, force) { return (event !== void 0) ? event : null; }; + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc_add.prototype, "event_press", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc_add.prototype, "event_done", null); return $mol_app_todomvc_add; }($.$mol_string)); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc_add.prototype, "event_press", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc_add.prototype, "event_done", null); $.$mol_app_todomvc_add = $mol_app_todomvc_add; })($ || ($ = {})); (function ($) { var $mol_app_todomvc_task_row = (function (_super) { __extends($mol_app_todomvc_task_row, _super); function $mol_app_todomvc_task_row() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } $mol_app_todomvc_task_row.prototype.minimal_height = function () { return 64; }; - $mol_app_todomvc_task_row.prototype.completed = function (val) { + $mol_app_todomvc_task_row.prototype.completed = function (val, force) { return (val !== void 0) ? val : false; }; $mol_app_todomvc_task_row.prototype.Complete = function () { var _this = this; - return new $.$mol_check().setup(function (obj) { - obj.checked = function (val) { return _this.completed(val); }; - obj.sub = function () { return []; }; + return $.$mol_check.make({ + checked: function (val) { return _this.completed(val); }, }); }; $mol_app_todomvc_task_row.prototype.title_hint = function () { return $.$mol_locale.text(this.locale_contexts(), "title_hint"); }; - $mol_app_todomvc_task_row.prototype.title = function (val) { + $mol_app_todomvc_task_row.prototype.title = function (val, force) { return (val !== void 0) ? val : ""; }; $mol_app_todomvc_task_row.prototype.Title = function () { var _this = this; - return new $.$mol_string().setup(function (obj) { - obj.hint = function () { return _this.title_hint(); }; - obj.value = function (val) { return _this.title(val); }; + return $.$mol_string.make({ + hint: function () { return _this.title_hint(); }, + value: function (val) { return _this.title(val); }, }); }; - $mol_app_todomvc_task_row.prototype.event_drop = function (event) { + $mol_app_todomvc_task_row.prototype.event_drop = function (event, force) { return (event !== void 0) ? event : null; }; $mol_app_todomvc_task_row.prototype.Drop = function () { var _this = this; - return new $.$mol_button().setup(function (obj) { - obj.sub = function () { return [].concat("✖"); }; - obj.event_click = function (event) { return _this.event_drop(event); }; + return $.$mol_button.make({ + sub: function () { return [].concat("✖"); }, + event_click: function (event) { return _this.event_drop(event); }, }); }; $mol_app_todomvc_task_row.prototype.sub = function () { @@ -3093,35 +3100,40 @@ var $; $mol_app_todomvc_task_row.prototype.attr = function () { return (__assign({}, _super.prototype.attr.call(this), { "mol_app_todomvc_task_row_completed": this.completed() })); }; + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc_task_row.prototype, "completed", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc_task_row.prototype, "Complete", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc_task_row.prototype, "title", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc_task_row.prototype, "Title", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc_task_row.prototype, "event_drop", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc_task_row.prototype, "Drop", null); return $mol_app_todomvc_task_row; }($.$mol_view)); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc_task_row.prototype, "completed", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc_task_row.prototype, "Complete", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc_task_row.prototype, "title", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc_task_row.prototype, "Title", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc_task_row.prototype, "event_drop", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc_task_row.prototype, "Drop", null); $.$mol_app_todomvc_task_row = $mol_app_todomvc_task_row; })($ || ($ = {})); //todomvc.view.tree.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -3135,7 +3147,7 @@ var $; var $mol_app_todomvc_add = (function (_super) { __extends($mol_app_todomvc_add, _super); function $mol_app_todomvc_add() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } $mol_app_todomvc_add.prototype.event_press = function (next) { switch (next.keyCode) { @@ -3148,9 +3160,7 @@ var $; var $mol_app_todomvc = (function (_super) { __extends($mol_app_todomvc, _super); function $mol_app_todomvc() { - var _this = _super.apply(this, arguments) || this; - _this._id_seed = 0; - return _this; + return _super !== null && _super.apply(this, arguments) || this; } $mol_app_todomvc.prototype.task_ids = function (next) { return $.$mol_state_local.value(this.state_key('mol-todos'), next) || []; @@ -3193,11 +3203,14 @@ var $; var count = this.groups_completed()['false'].length; return (count === 1) ? '1 item left' : count + " items left"; }; + $mol_app_todomvc.prototype.new_id = function () { + return Math.max(1, 1 + Math.max.apply(Math, this.task_ids())); + }; $mol_app_todomvc.prototype.event_add = function (next) { var title = this.task_title_new(); if (!title) return; - var id = ++this._id_seed; + var id = this.new_id(); var task = { completed: false, title: title }; this.task(id, task); this.task_ids(this.task_ids().concat(id)); @@ -3258,45 +3271,53 @@ var $; $mol_app_todomvc.prototype.sweep_enabled = function () { return this.groups_completed()['true'].length > 0; }; + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "groups_completed", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "tasks_filtered", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "completed_all", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "pending_message", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "new_id", null); + __decorate([ + $.$mol_mem() + ], $mol_app_todomvc.prototype, "task_rows", null); + __decorate([ + $.$mol_mem_key() + ], $mol_app_todomvc.prototype, "task_completed", null); + __decorate([ + $.$mol_mem_key() + ], $mol_app_todomvc.prototype, "task_title", null); return $mol_app_todomvc; }($.$mol_app_todomvc)); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc.prototype, "groups_completed", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc.prototype, "tasks_filtered", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc.prototype, "completed_all", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc.prototype, "pending_message", null); - __decorate([ - $.$mol_mem() - ], $mol_app_todomvc.prototype, "task_rows", null); - __decorate([ - $.$mol_mem_key() - ], $mol_app_todomvc.prototype, "task_completed", null); - __decorate([ - $.$mol_mem_key() - ], $mol_app_todomvc.prototype, "task_title", null); $mol.$mol_app_todomvc = $mol_app_todomvc; })($mol = $.$mol || ($.$mol = {})); })($ || ($ = {})); //todomvc.view.js.map ; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var $; (function ($) { var $mol_app_todomvc_demo = (function (_super) { __extends($mol_app_todomvc_demo, _super); function $mol_app_todomvc_demo() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } return $mol_app_todomvc_demo; }($.$mol_app_todomvc)); diff --git a/examples/mol/-/web.js.map b/examples/mol/-/web.js.map index 3dce0a8673..251353c2ec 100644 --- a/examples/mol/-/web.js.map +++ b/examples/mol/-/web.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../mol.jam.js","../../../dict/dict.ts","../../../dict/dict_select.jam.js","../../../func/func.ts","../../../log/log.web.ts","../../../object/object.ts","../../../set/set.ts","../../../set/set_select.jam.js","../../../defer/defer.ts","../../../state/stack/stack.ts","../../../atom/atom.ie.web.js","../../../atom/atom.ts","../../../mem/mem.ts","../../../window/window.web.ts","../../../dom/context/context.ts","../../../dom/context/context.web.ts","../../../dom/render/render.ts","../../../dom/make/make.ts","../../../view/dom/dom.ts","../../../view/view.ts","../../../view/view.web.ts","../../../view/selection/selection.ts","../../../view/selection/selection.web.ts","../../../string/-view.tree/string.view.tree.ts","../../../string/string.view.ts","../../../keyboard/code.ts","../../../button/-view.tree/button.view.tree.ts","../../../button/button.view.ts","../../../button/-view.tree/button_types.view.tree.ts","../../../merge/dict/dict.ts","../../../state/arg/arg.web.ts","../../../link/-view.tree/link.view.tree.ts","../../../link/link.view.ts","../../../check/-view.tree/check.view.tree.ts","../../../check/check.view.ts","../../../state/session/session.web.ts","../../../scroll/-view.tree/scroll.view.tree.ts","../../../scroll/scroll.view.ts","../../../state/local/local.ts","../../../state/local/local.web.ts","../../../http/request/request.ts","../../../http/resource/resource.ts","../../../file/file.web.ts","../../../locale/locale.ts","../../../list/-view.tree/list.view.tree.ts","../../../list/list.view.ts","../../../bar/-view.tree/bar.view.tree.ts","../-view.tree/todomvc.view.tree.ts","../todomvc.view.ts","../demo/-view.tree/demo.view.tree.ts"],"names":[],"mappings":"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","file":"web.js","sourcesContent":[null,"namespace $ {\n\t\n\texport declare class $mol_dict< Key , Value > {\n\t\tsize : number\n\t\t\n\t\tget( key : Key ) : Value\n\t\t\n\t\tset( key : Key , value : Value ) : this\n\t\t\n\t\tdelete( key : Key ) : void\n\t\t\n\t\thas( key : Key ) : boolean\n\t\t\n\t\tclear() : void\n\t\t\n\t\tkeys() : Key[]\n\t\t\n\t\tvalues() : Value[]\n\t\t\n\t\tentries() : [ Key , Value ][]\n\t\t\n\t\tforEach( handler : ( value : Value , key : Key ) => void ) : void\n\t}\n\t\n\texport class $mol_dict_shim< Key , Value > implements $mol_dict< Key , Value > {\n\t\t\n\t\t_keys : { [ index : string ] : Key[] } = {}\n\t\t_values : { [ index : string ] : Value[] } = {}\n\t\tsize = 0\n\t\t\n\t\tset( key : Key , value : Value ) {\n\t\t\tvar keyStr = String( key )\n\t\t\t\n\t\t\tvar keys = this._keys[ keyStr ]\n\t\t\tif( keys ) {\n\t\t\t\tvar index = keys.indexOf( key )\n\t\t\t\tif( index === -1 ) {\n\t\t\t\t\tindex = keys.length\n\t\t\t\t\tkeys.push( key )\n\t\t\t\t\t++this.size\n\t\t\t\t}\n\t\t\t\tthis._values[ keyStr ][ index ] = value\n\t\t\t} else {\n\t\t\t\tthis._keys[ keyStr ] = [ key ]\n\t\t\t\tthis._values[ keyStr ] = [ value ]\n\t\t\t\t++this.size\n\t\t\t}\n\t\t\t\n\t\t\treturn this\n\t\t}\n\t\t\n\t\tget( key : Key ) {\n\t\t\tvar keyStr = String( key )\n\t\t\t\n\t\t\tvar list = this._keys[ keyStr ]\n\t\t\tif( !list ) return void 0\n\t\t\t\n\t\t\tvar index = list.indexOf( key )\n\t\t\tif( index === -1 ) return void 0\n\t\t\t\n\t\t\treturn this._values[ keyStr ][ index ]\n\t\t}\n\t\t\n\t\thas( key : Key ) {\n\t\t\tvar keyStr = String( key )\n\t\t\t\n\t\t\tvar list = this._keys[ keyStr ]\n\t\t\tif( !list ) return false\n\t\t\t\n\t\t\treturn list.indexOf( key ) !== -1\n\t\t}\n\t\t\n\t\tdelete( key : Key ) {\n\t\t\tvar keyStr = String( key )\n\t\t\t\n\t\t\tvar keys = this._keys[ keyStr ]\n\t\t\tif( !keys ) return\n\t\t\t\n\t\t\tvar index = keys.indexOf( key )\n\t\t\tif( index === -1 ) return\n\t\t\t\n\t\t\tkeys.splice( index , 1 )\n\t\t\tthis._values[ keyStr ].splice( index , 1 )\n\t\t\t\n\t\t\t--this.size\n\t\t}\n\t\t\n\t\tforEach( handle : ( val : Value , key : Key )=> void ) {\n\t\t\tfor( var keyStr in this._keys ) {\n\t\t\t\tif( !this._keys.hasOwnProperty( keyStr ) ) continue\n\t\t\t\tvar values = this._values[ keyStr ]\n\t\t\t\tthis._keys[ keyStr ].forEach(\n\t\t\t\t\t( key , index ) => {\n\t\t\t\t\t\thandle( values[ index ] , key )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\t\n\t\tkeys() {\n\t\t\tvar keys : Key[] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tkeys.push( key )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn keys\n\t\t}\n\t\t\n\t\tvalues() {\n\t\t\tvar values : Value[] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tvalues.push( val )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn values\n\t\t}\n\t\t\n\t\tentries() {\n\t\t\tvar entries : [ Key , Value ][] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tentries.push( [ key , val ] )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn entries\n\t\t}\n\t\t\n\t\tclear() {\n\t\t\tthis._keys = {}\n\t\t\tthis._values = {}\n\t\t\tthis.size = 0\n\t\t}\n\t\t\n\t}\n\t\n}\n",null,"interface Function {\n\tname : string\n}\n\nnamespace $ {\n\t\n\texport var $mol_func_name_dict = new $mol_dict< Function , string >()\n\n\texport function $mol_func_name( func : Function ) : string {\n\t\tif( func.name ) return func.name\n\t\t\n\t\tif( $mol_func_name_dict.has( func ) ) return $mol_func_name_dict.get( func )\n\t\t\n\t\tconst name = Function.prototype.toString.call( func ).match( /^function ([a-z0-9_$]*)/ )[ 1 ]\n\t\t$mol_func_name_dict.set( func , name )\n\t\t\n\t\treturn name\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_log( path : string , values : any[] ) {\n\t\t\n\t\tvar filter = $mol_log.filter()\n\t\tif( filter == null ) return\n\t\tif( path.indexOf( filter ) === -1 ) return\n\t\t\n\t\tvar time = new Date().toLocaleTimeString()\n\t\tconsole.log( time , path , values )\n\t}\n\t\n\texport namespace $mol_log {\n\t\t\n\t\tvar _filter : string\n\t\t\n\t\texport function filter( next? : string ) {\n\t\t\tif( next !== void 0 ) {\n\t\t\t\tif( next == null ) {\n\t\t\t\t\tsessionStorage.removeItem( '$mol_log.filter()' )\n\t\t\t\t} else {\n\t\t\t\t\tsessionStorage.setItem( '$mol_log.filter()' , next )\n\t\t\t\t}\n\t\t\t\t_filter = next\n\t\t\t}\n\t\t\t\n\t\t\tif( _filter !== void 0 ) return _filter\n\t\t\t\n\t\t\treturn _filter = sessionStorage.getItem( '$mol_log.filter()' )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\t/// Common superclass that provides base functionality.\n\texport class $mol_object {\n\t\t\n\t\tClass() {\n\t\t\treturn this.constructor as any\n\t\t}\n\t\t\n\t\tstatic toString() : string {\n\t\t\treturn $mol_func_name( this )\n\t\t}\n\t\t\n\t\t/// Owner object.\n\t\tprivate 'object_owner()' : Object\n\t\t\n\t\tobject_owner( next? : Object ) {\n\t\t\tif( this[ 'object_owner()' ] ) return this[ 'object_owner()' ]\n\t\t\treturn this[ 'object_owner()' ] = next\n\t\t}\n\t\t\n\t\t/// Field in owner where this object is stored.\n\t\tprivate 'object_field()' : string\n\t\t\n\t\tobject_field( next? : string ) {\n\t\t\tif( this[ 'object_field()' ] ) return this[ 'object_field()' ] || ''\n\t\t\treturn this[ 'object_field()' ] = next\n\t\t}\n\t\t\n\t\t/// JS-path to this object from global scope. Can not be redefined.\n\t\ttoString() {\n\t\t\tvar path = ''\n\t\t\t\n\t\t\tvar owner = this.object_owner()\n\t\t\tif( owner ) path = owner.toString()\n\t\t\t\n\t\t\tvar field = this.object_field()\n\t\t\tif( field ) path += '.' + field\n\t\t\t\n\t\t\treturn path\n\t\t}\n\t\t\n\t\ttoJSON() {\n\t\t\treturn this.toString()\n\t\t}\n\t\t\n\t\t/// Helper to override fields in fluent style.\n\t\tsetup( script : ( obj : this )=> void ) : this {\n\t\t\tscript( this )\n\t\t\treturn this\n\t\t}\n\t\t\n\t\t'destroyed()' = false\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next === void 0 ) return this[ 'destroyed()' ]\n\t\t\tthis[ 'destroyed()' ] = next\n\t\t\tthis.log( [ '.destroyed()' , next ] )\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tlog( values : any[] ) {\n\t\t\tif( $mol_log.filter() == null ) return\n\t\t\t$mol_log( this.toString() , values )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport declare class $mol_set< Value > {\n\t\tsize : number\n\t\t\n\t\tadd( key : Value ) : this\n\t\t\n\t\tdelete( key : Value ) : void\n\t\t\n\t\thas( key : Value ) : boolean\n\t\t\n\t\tclear() : void\n\t\t\n\t\tkeys() : Value[]\n\t\t\n\t\tvalues() : Value[]\n\t\t\n\t\tentries() : [ Value , Value ][]\n\t\t\n\t\tforEach( handler : ( key : Value , value : Value ) => void ) : void\n\t}\n\t\n\texport class $mol_set_shim< Value > implements $mol_set< Value > {\n\t\t\n\t\t_index : { [ index : string ] : Value[] } = {}\n\t\tsize = 0\n\t\t\n\t\tadd( value : Value ) {\n\t\t\tvar key = String( value )\n\t\t\t\n\t\t\tvar list = this._index[ key ]\n\t\t\tif( list ) {\n\t\t\t\tif( list.indexOf( value ) !== -1 ) return this\n\t\t\t\tlist.push( value )\n\t\t\t} else {\n\t\t\t\tlist = this._index[ key ] = [ value ]\n\t\t\t}\n\t\t\t\n\t\t\t++this.size\n\t\t\t\n\t\t\treturn this\n\t\t}\n\t\t\n\t\thas( value : Value ) {\n\t\t\tvar key = String( value )\n\t\t\t\n\t\t\tvar list = this._index[ key ]\n\t\t\tif( !list ) return false\n\t\t\t\n\t\t\treturn list.indexOf( value ) !== -1\n\t\t}\n\t\t\n\t\tdelete( value : Value ) {\n\t\t\tvar key = String( value )\n\t\t\t\n\t\t\tvar list = this._index[ key ]\n\t\t\tif( !list ) return\n\t\t\t\n\t\t\tvar index = list.indexOf( value )\n\t\t\tif( index === -1 ) return\n\t\t\t\n\t\t\tlist.splice( index , 1 )\n\t\t\t--this.size\n\t\t}\n\t\t\n\t\tforEach( handle : ( val : Value , key : Value )=> void ) {\n\t\t\tfor( var key in this._index ) {\n\t\t\t\tif( !this._index.hasOwnProperty( key ) ) continue\n\t\t\t\tthis._index[ key ].forEach( ( val , index ) => handle( val , val ) )\n\t\t\t}\n\t\t}\n\t\t\n\t\tkeys() {\n\t\t\tvar keys : Value[] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tkeys.push( key )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn keys\n\t\t}\n\t\t\n\t\tvalues() {\n\t\t\tvar values : Value[] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tvalues.push( val )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn values\n\t\t}\n\t\t\n\t\tentries() {\n\t\t\tvar entries : [ Value , Value ][] = []\n\t\t\tthis.forEach(\n\t\t\t\t( val , key ) => {\n\t\t\t\t\tentries.push( [ val , key ] )\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn entries\n\t\t}\n\t\t\n\t\tclear() {\n\t\t\tthis._index = {}\n\t\t\tthis.size = 0\n\t\t}\n\t\t\n\t}\n\t\n}\n",null,"namespace $ {\n\t\n\texport class $mol_defer extends $mol_object {\n\t\t\n\t\tconstructor( public run : ()=> void ) {\n\t\t\tsuper()\n\t\t\t$mol_defer.add( this )\n\t\t}\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next ) $mol_defer.drop( this )\n\t\t\treturn super.destroyed( next )\n\t\t}\n\t\t\n\t\tstatic all : $mol_defer[] = []\n\t\tstatic timer = 0\n\t\t\n\t\tstatic scheduleNative : ( handler : ()=> void ) => number = ( typeof requestAnimationFrame == 'function' )\n\t\t\t? handler => requestAnimationFrame( handler )\n\t\t\t: handler => setTimeout( handler , 16 )\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.timer ) return\n\t\t\t\n\t\t\tthis.timer = this.scheduleNative(\n\t\t\t\t()=> {\n\t\t\t\t\tthis.timer = 0\n\t\t\t\t\tthis.run()\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t\t\n\t\tstatic unschedule() {\n\t\t\tif( !this.timer ) return\n\t\t\t\n\t\t\tcancelAnimationFrame( this.timer )\n\t\t\tthis.timer = 0\n\t\t}\n\t\t\n\t\tstatic add( defer : $mol_defer ) {\n\t\t\tthis.all.push( defer )\n\t\t\tthis.schedule()\n\t\t}\n\t\t\n\t\tstatic drop( defer : $mol_defer ) {\n\t\t\tvar index = this.all.indexOf( defer )\n\t\t\tif( index >= 0 ) this.all.splice( index , 1 )\n\t\t}\n\t\t\n\t\tstatic run() {\n\t\t\tif( this.all.length === 0 ) return\n\t\t\tthis.schedule()\n\t\t\tfor( var defer : $mol_defer ; defer = this.all.pop() ; ) defer.run()\n\t\t\t//this.unschedule()\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\t/// Global storage of temporary state\n\texport var $mol_state_stack = new $mol_dict< string , any >()\n\t\n}\n",null,"declare var Proxy : any\n\nnamespace $ {\n\t\n\texport enum $mol_atom_status {\n\t\tobsolete = 'obsolete' as any ,\n\t\tchecking = 'checking' as any ,\n\t\tpulling = 'pulling' as any ,\n\t\tactual = 'actual' as any ,\n\t}\n\t\n\texport class $mol_atom< Value > extends $mol_object {\n\t\t\n\t\tmasters : $mol_set< $mol_atom > = null\n\t\tslaves : $mol_set< $mol_atom > = null\n\t\t\n\t\tstatus = $mol_atom_status.obsolete\n\t\tautoFresh = true\n\t\t\n\t\thandler : ( next? : Value|Error , force? : $mol_atom_force )=> Value\n\t\thost : { [ key : string ] : any }\n\t\tfield : string\n\t\t\n\t\tconstructor(\n\t\t\thost : any ,\n\t\t\thandler : ( next? : Value|Error , force? : $mol_atom_force )=> Value ,\n\t\t\tfield = 'value()'\n\t\t) {\n\t\t\tsuper()\n\t\t\t\n\t\t\tthis.handler = handler\n\t\t\tthis.host = Object( host )\n\t\t\tthis.field = field || 'value()'\n\t\t}\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next ) {\n\t\t\t\tthis.unlink()\n\t\t\t\t\n\t\t\t\tconst host = this.host\n\t\t\t\tconst value = host[ this.field ]\n\t\t\t\tif( value instanceof $mol_object ) {\n\t\t\t\t\tif( ( value.object_owner() === host ) && ( value.object_field() === this.field ) ) {\n\t\t\t\t\t\tvalue.destroyed( true );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\thost[ this.field ] = void null\n\t\t\t\thost[ this.field + '@' ] = void null\n\t\t\t\t\n\t\t\t\tthis.status = $mol_atom_status.obsolete\n\t\t\t}\n\t\t\t\n\t\t\treturn super.destroyed( next )\n\t\t}\n\t\t\n\t\tunlink() {\n\t\t\tthis.disobey_all()\n\t\t\tthis.check_slaves()\n\t\t}\n\t\t\n\t\ttoString() {\n\t\t\treturn `${ this.host }.${ this.field }@`\n\t\t}\n\t\t\n\t\tget( force? : $mol_atom_force ) {\n\t\t\tif( this.status === $mol_atom_status.pulling ) {\n\t\t\t\tthrow new Error( `Cyclic atom dependency of ${ this }` )\n\t\t\t}\n\t\t\t\n\t\t\tthis.actualize( force )\n\t\t\t\n\t\t\tconst slave = $mol_atom.stack[0]\n\t\t\tif( slave ) this.lead( slave )\n\t\t\tif( slave ) slave.obey( this )\n\t\t\t\n\t\t\tconst value : Value = this.host[ this.field ]\n\t\t\t\n\t\t\tif( value instanceof Error ) {\n\t\t\t\tif( typeof Proxy !== 'function' ) throw value\n\t\t\t\t//if(!( value instanceof $mol_atom_wait )) throw value\n\t\t\t}\n\t\t\t\n\t\t\treturn value\n\t\t}\n\t\t\n\t\tactualize( force? : $mol_atom_force ) {\n\t\t\t\n\t\t\t//this.log([ 'actualize' ])\n\t\t\t\n\t\t\tif( !force && this.status === $mol_atom_status.actual ) return\n\t\t\t\n\t\t\tconst slave = $mol_atom.stack[0]\n\t\t\t$mol_atom.stack[0] = this\n\t\t\t\n\t\t\tif( !force && this.status === $mol_atom_status.checking ) {\n\t\t\t\t\n\t\t\t\tthis.masters.forEach(\n\t\t\t\t\tmaster => {\n\t\t\t\t\t\tif( this.status !== $mol_atom_status.checking ) return\n\t\t\t\t\t\tmaster.actualize()\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tif( this.status === $mol_atom_status.checking ) {\n\t\t\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif( force || this.status !== $mol_atom_status.actual ) {\n\t\t\t\t\n\t\t\t\tconst oldMasters = this.masters\n\t\t\t\tthis.masters = null\n\t\t\t\t\n\t\t\t\tif( oldMasters ) oldMasters.forEach(\n\t\t\t\t\tmaster => {\n\t\t\t\t\t\tmaster.dislead( this )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tthis.status = $mol_atom_status.pulling\n\t\t\t\tconst next = this.pull( force )\n\t\t\t\t\n\t\t\t\tthis.push( next )\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t$mol_atom.stack[0] = slave\n\t\t}\n\t\t\n\t\tpull( force? : $mol_atom_force ) {\n\t\t\ttry {\n\t\t\t\treturn this.handler( this._next , force )\n\t\t\t} catch( error ) {\n\t\t\t\tif( error[ '$mol_atom_catched' ] ) return error\n\t\t\t\tif( error instanceof $mol_atom_wait ) return error\n\t\t\t\t\n\t\t\t\tconsole.error( error.stack || error )\n\t\t\t\t\n\t\t\t\tif(!( error instanceof Error )) {\n\t\t\t\t\terror = new Error( error.stack || error )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\terror['$mol_atom_catched'] = true\n\t\t\t\treturn error\n\t\t\t}\n\t\t}\n\t\t\n\t\t_next : Value|Error\n\t\t\n\t\tset( next : Value ) : Value {\n\t\t\tconst next_normal = this.normalize( next , this._next )\n\t\t\tif( next_normal === this._next ) return this.get()\n\t\t\tif( next_normal === this.host[ this.field ] ) return this.get()\n\t\t\t\n\t\t\tthis._next = next_normal\n\t\t\tthis.obsolete()\n\t\t\treturn this.get()\n\t\t}\n\t\t\n\t\tnormalize( next : Value , prev : Value|Error ) : Value {\n\t\t\tif( next === prev ) return next\n\t\t\t\n\t\t\tif( ( next instanceof Array ) && ( prev instanceof Array ) && ( next.length === prev.length ) ) {\n\t\t\t\tfor( let i = 0 ; i < next.length ; ++i ) {\n\t\t\t\t\tif( next[ i ] !== prev[ i ] ) return next as any\n\t\t\t\t}\n\t\t\t\treturn prev as any\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tpush( next_raw : Value|Error ) {\n\t\t\tthis._next = void null\n\t\t\t\n\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\n\t\t\tconst host = this.host\n\t\t\tconst prev = host[ this.field ]\n\t\t\t\n\t\t\tif( next_raw === void null ) return prev\n\t\t\t\n\t\t\tlet next = ( next_raw instanceof Error ) ? next_raw : this.normalize( next_raw , prev )\n\t\t\t\n\t\t\tif( next === prev ) return prev\n\t\t\t\n\t\t\tif( next instanceof $mol_object ) {\n\t\t\t\tnext.object_field( this.field )\n\t\t\t\tnext.object_owner( host )\n\t\t\t}\n\t\t\t\n\t\t\tif(( typeof Proxy === 'function' )&&( next instanceof Error )) {\n\t\t\t\tnext = new Proxy( next , {\n\t\t\t\t\tget( target : Error ) {\n\t\t\t\t\t\tthrow target.valueOf()\n\t\t\t\t\t} ,\n\t\t\t\t\townKeys( target : Error ) {\n\t\t\t\t\t\tthrow target.valueOf()\n\t\t\t\t\t} ,\n\t\t\t\t} )\n\t\t\t}\n\t\t\t\n\t\t\thost[ this.field ] = next\n\t\t\tthis.log( [ 'push' , next , prev ] )\n\t\t\t\n\t\t\tthis.obsolete_slaves()\n\t\t\t\n\t\t\treturn next as Value\n\t\t}\n\t\t\n\t\tobsolete_slaves() {\n\t\t\tif( !this.slaves ) return\n\t\t\t\n\t\t\tthis.slaves.forEach( slave => slave.obsolete() )\n\t\t}\n\t\t\n\t\tcheck_slaves() {\n\t\t\tif( this.slaves ) {\n\t\t\t\tthis.slaves.forEach( slave => slave.check() )\n\t\t\t} else {\n\t\t\t\tif( this.autoFresh ) $mol_atom.actualize( this )\n\t\t\t}\n\t\t}\n\t\t\n\t\tcheck() {\n\t\t\t//if( this.status === $mol_atom_status.pulling ) {\n\t\t\t//\tthrow new Error( `May be obsolated while pulling ${ this }` )\n\t\t\t//}\n\t\t\t\n\t\t\tif( this.status === $mol_atom_status.actual ) {\n\t\t\t\t//this.log([ 'checking' ])\n\t\t\t\tthis.status = $mol_atom_status.checking\n\t\t\t\t\n\t\t\t\tthis.check_slaves()\n\t\t\t}\n\t\t}\n\t\t\n\t\tobsolete() : Value {\n\t\t\tif( this.status === $mol_atom_status.obsolete ) return\n\t\t\t\n\t\t\t//if( this.status === $mol_atom_status.pulling ) {\n\t\t\t//\tthrow new Error( `Obsolated while pulling ${ this }` )\n\t\t\t//} \n\t\t\t\n\t\t\tthis.log( [ 'obsolete' ] )\n\t\t\t\n\t\t\tthis.status = $mol_atom_status.obsolete\n\t\t\t\n\t\t\tthis.check_slaves()\n\t\t\t\n\t\t\treturn void null\n\t\t}\n\t\t\n\t\tlead( slave : $mol_atom ) {\n\t\t\tif( !this.slaves ) {\n\t\t\t\tthis.slaves = new $mol_set<$mol_atom>()\n\t\t\t\t$mol_atom.unreap( this )\n\t\t\t}\n\t\t\tthis.slaves.add( slave )\n\t\t}\n\t\t\n\t\tdislead( slave : $mol_atom ) {\n\t\t\tif( !this.slaves ) return\n\t\t\t\n\t\t\tif( this.slaves.size === 1 ) {\n\t\t\t\tthis.slaves = null\n\t\t\t\t$mol_atom.reap( this )\n\t\t\t} else {\n\t\t\t\tthis.slaves.delete( slave )\n\t\t\t}\n\t\t}\n\t\t\n\t\tobey( master : $mol_atom ) {\n\t\t\tif( !this.masters ) this.masters = new $mol_set< $mol_atom >()\n\t\t\tthis.masters.add( master )\n\t\t}\n\t\t\n\t\tdisobey( master : $mol_atom ) {\n\t\t\tif( !this.masters ) return\n\t\t\tthis.masters.delete( master )\n\t\t}\n\t\t\n\t\tdisobey_all() {\n\t\t\tif( !this.masters ) return\n\t\t\t\n\t\t\tthis.masters.forEach( master => master.dislead( this ) )\n\t\t\t\n\t\t\tthis.masters = null\n\t\t}\n\t\t\n\t\tvalue( next? : Value , force? : $mol_atom_force ) {\n\t\t\tif( next === void null ) {\n\t\t\t\treturn this.get( force )\n\t\t\t} else {\n\t\t\t\tif( force ) {\n\t\t\t\t\treturn this.push( next )\n\t\t\t\t} else {\n\t\t\t\t\treturn this.set( next )\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic stack = [ null ] as $mol_atom[]\n\t\tstatic updating : $mol_atom[] = []\n\t\tstatic reaping = new $mol_set< $mol_atom >()\n\t\tstatic scheduled = false\n\t\t\n\t\tstatic actualize( atom : $mol_atom ) {\n\t\t\t$mol_atom.updating.push( atom )\n\t\t\t$mol_atom.schedule()\n\t\t}\n\t\t\n\t\tstatic reap( atom : $mol_atom ) {\n\t\t\t$mol_atom.reaping.add( atom )\n\t\t\t$mol_atom.schedule()\n\t\t}\n\t\t\n\t\tstatic unreap( atom : $mol_atom ) {\n\t\t\t$mol_atom.reaping.delete( atom )\n\t\t}\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.scheduled ) return\n\t\t\t\n\t\t\tnew $mol_defer(\n\t\t\t\t() => {\n\t\t\t\t\tif( !this.scheduled ) return\n\t\t\t\t\tthis.scheduled = false\n\t\t\t\t\tthis.sync()\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\tthis.scheduled = true\n\t\t}\n\t\t\n\t\tstatic sync() {\n\t\t\t$mol_log( '$mol_atom.sync' , [] )\n\t\t\tthis.schedule()\n\t\t\t\n\t\t\twhile( this.updating.length ) {\n\t\t\t\tconst atom = this.updating.shift()\n\t\t\t\tif( this.reaping.has( atom ) ) continue\n\t\t\t\tif( !atom.destroyed() ) atom.get()\n\t\t\t}\n\t\t\t\n\t\t\twhile( this.reaping.size ) {\n\t\t\t\tthis.reaping.forEach(\n\t\t\t\t\tatom => {\n\t\t\t\t\t\tthis.reaping.delete( atom )\n\t\t\t\t\t\tif( !atom.slaves ) atom.destroyed( true )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\t\n\t\t\tthis.scheduled = false\n\t\t}\n\t\t\n\t}\n\t\n\t$mol_state_stack.set( '$mol_atom.stack' , $mol_atom.stack )\n\t\n\texport class $mol_atom_wait extends Error {\n\t\tname = '$mol_atom_wait'\n\t\t\n\t\tconstructor( public message = 'Wait...' ) {\n\t\t\tsuper( message )\n\t\t\tconst error : any = new Error( message )\n\t\t\terror.name = this.name\n\t\t\terror['__proto__'] = $mol_atom_wait.prototype\n\t\t\treturn error\n\t\t}\n\t}\n\t\n\texport class $mol_atom_force extends Object {\n\t\t$mol_atom_force : boolean\n\t\tstatic $mol_atom_force : boolean\n\t}\n\t\n\texport function $mol_atom_task< Value >(\n\t\thost : any ,\n\t\thandler : ()=> Value ,\n\t) {\n\t\tconst atom = new $mol_atom(\n\t\t\thost ,\n\t\t\t() => {\n\t\t\t\ttry {\n\t\t\t\t\thandler()\n\t\t\t\t} catch( error ) {\n\t\t\t\t\tif(!( error instanceof $mol_atom_wait )) atom.destroyed( true )\n\t\t\t\t\tthrow error\n\t\t\t\t}\n\t\t\t\tatom.destroyed( true )\n\t\t\t} ,\n\t\t)\n\t\t\n\t\t$mol_atom.actualize( atom )\n\t\t\n\t\treturn atom\n\t}\n\t\n}\n","namespace $ {\n\t\n\t/// Creates the decorator for caching result value by json-key passed as first argument.\n\t/// Method must be a polymorphic property (getter/setter/getter+setter).\n\texport function $mol_mem< Host , Value >(\n\t\tconfig? : {\n\t\t\tlazy? : boolean\n\t\t}\n\t) {\n\t\t\n\t\treturn function(\n\t\t\tobj : Host ,\n\t\t\tname : string ,\n\t\t\tdescr : TypedPropertyDescriptor< ( next? : Value , force? : $mol_atom_force )=> Value >\n\t\t) {\n\t\t\tconst value = descr.value\n\t\t\t\n\t\t\tdescr.value = function( next? : Value , force? : $mol_atom_force ) {\n\t\t\t\tconst host : any = this\n\t\t\t\tconst field = name + \"()\"\n\t\t\t\tconst fieldA = field + '@'\n\t\t\t\t\n\t\t\t\tlet atom : $mol_atom = host[ fieldA ]\n\t\t\t\tif( !atom ) {\n\t\t\t\t\tif( force && ( next === void null ) ) return next\n\t\t\t\t\t\n\t\t\t\t\thost[ fieldA ] = atom = new $mol_atom(\n\t\t\t\t\t\thost ,\n\t\t\t\t\t\tvalue.bind( host ) as any , // FIXME: type checking\n\t\t\t\t\t\tfield ,\n\t\t\t\t\t)\n\t\t\t\t\tif( config ) atom.autoFresh = !config.lazy\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn atom.value( next , force )\n\t\t\t}\n\t\t\t\n\t\t\tvoid( (descr.value)[ 'value' ] = value )\n\t\t}\n\t\t\n\t}\n\t\n\texport function $mol_mem_key< Host , Key , Value >(\n\t\tconfig? : {\n\t\t\tlazy? : boolean\n\t\t}\n\t) {\n\t\t\n\t\treturn function(\n\t\t\tobj : Host ,\n\t\t\tname : string ,\n\t\t\tdescr : TypedPropertyDescriptor< ( key : Key , next? : Value , force? : $mol_atom_force )=> Value >\n\t\t) {\n\t\t\tconst value = descr.value\n\n\t\t\tdescr.value = function( key : Key , next? : Value , force? : $mol_atom_force ) {\n\t\t\t\tconst host : any = this\n\t\t\t\tconst field = name + \"(\" + JSON.stringify( key ) + \")\"\n\t\t\t\tconst fieldA = field + '@'\n\t\t\t\t\n\t\t\t\tlet atom : $mol_atom = host[ fieldA ]\n\t\t\t\tif( !atom ) {\n\t\t\t\t\tif( force && ( next === void null ) ) return next\n\t\t\t\t\t\n\t\t\t\t\thost[ fieldA ] = atom = new $mol_atom(\n\t\t\t\t\t\thost ,\n\t\t\t\t\t\tvalue.bind( host , key ) as any , // FIXME: type checking\n\t\t\t\t\t\tfield ,\n\t\t\t\t\t)\n\t\t\t\t\tif( config ) atom.autoFresh = !config.lazy\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn atom.value( next , force )\n\t\t\t}\n\t\t\t\n\t\t\tvoid( (descr.value)[ 'value' ] = value )\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\texport class $mol_window extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic size( next? : {\n\t\t\twidth : number\n\t\t\theight : number\n\t\t} ) {\n\t\t\treturn next || {\n\t\t\t\twidth : window.innerWidth ,\n\t\t\t\theight : window.innerHeight ,\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\twindow.addEventListener( 'resize' , ()=> {\n\t\t$mol_window.size( null )\n\t} )\n\t\n}\n","namespace $ {\n\t\n\texport var $mol_dom_context : Window & {\n\t\tNode : typeof Node\n\t\tElement : typeof Element\n\t\tHTMLElement : typeof HTMLElement\n\t\tXMLHttpRequest : typeof XMLHttpRequest\n\t}\n\t\n}\n","namespace $ {\n\t\n\t$mol_dom_context = window as any\n\t\n}\n","namespace $ {\n\t\n\texport interface $mol_dom_render_config {\n\t\tchildNodes? : NodeList | Array< Node | string | number | boolean | { render : ()=> Node } >\n\t\tattributes? : { [ key : string ] : string|number|boolean }\n\t\tstyle? : { [ key : string ] : string|number }\n\t\tevents? : { [ key : string ] : ( event : Event )=> any }\n\t\tevents_async? : { [ key : string ] : ( event : Event )=> any }\n\t\t[ key : string ] : any\n\t}\n\t\n\texport function $mol_dom_render( el : Element , config : $mol_dom_make_config ) {\n\t\tconst document = el.ownerDocument\n\t\t\n\t\tfor( let key in config ) {\n\t\t\tswitch( key ) {\n\t\t\t\tcase 'localName' : break\n\t\t\t\tcase 'namespaceURI' : break\n\t\t\t\t\n\t\t\t\tcase 'childNodes' : {\n\t\t\t\t\tif( !config.childNodes ) break\n\t\t\t\t\t$mol_dom_render_childNodes( el , config.childNodes )\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcase 'attributes' : {\n\t\t\t\t\tif( !config.attributes ) break\n\t\t\t\t\t$mol_dom_render_attributes( el , config.attributes )\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcase 'style' : {\n\t\t\t\t\tif( !config.style ) break\n\t\t\t\t\t$mol_dom_render_style( el , config.style )\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcase 'events' : {\n\t\t\t\t\t$mol_dom_render_event( el , config.events )\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcase 'events_async' : {\n\t\t\t\t\t$mol_dom_render_event_async( el , config.events_async )\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tdefault : {\n\t\t\t\t\tif( el[ key ] !== config[ key ] ) {\n\t\t\t\t\t\tel[ key ] = config[ key ]\n\t\t\t\t\t\tif( el[ key ] !== config[ key ] ) {\n\t\t\t\t\t\t\tconst setter = ()=> {\n\t\t\t\t\t\t\t\tel.removeEventListener( 'DOMNodeInsertedIntoDocument' , setter , { passive : true } as any )\n\t\t\t\t\t\t\t\tnew $mol_defer( ()=> {\n\t\t\t\t\t\t\t\t\tel[ key ] = config[ key ]\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tel.addEventListener( 'DOMNodeInsertedIntoDocument' , setter , { passive : true } as any )\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn el\n\t}\n\t\n\texport function $mol_dom_render_childNodes(\n\t\tel : Element ,\n\t\tchildNodes? : NodeList | Array< Node | string | number | boolean | { render : ()=> Node } >\n\t) {\n\t\tconst nodes = [] as ( Node | string )[]\n\t\t\n\t\tfor( let i = 0 ; i < childNodes.length ; ++i ) {\n\t\t\tlet node = childNodes[ i ] as any\n\t\t\tif( node == null ) continue\n\t\t\tif( Object( node ) === node ) {\n\t\t\t\tif( node[ 'render' ] ) node = node[ 'render' ]()\n\t\t\t\tnodes.push( node )\n\t\t\t} else {\n\t\t\t\tnodes.push( String( node ) )\n\t\t\t}\n\t\t}\n\t\t\n\t\tlet nextNode = el.firstChild\n\t\tfor( let view_ of nodes ) {\n\t\t\tconst view = view_.valueOf() as Node\n\t\t\t\n\t\t\tif( view instanceof $mol_dom_context.Node ) {\n\t\t\t\t\n\t\t\t\twhile( true ) {\n\t\t\t\t\tif( !nextNode ) {\n\t\t\t\t\t\tel.appendChild( view )\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tif( nextNode == view ) {\n\t\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t\t\tbreak\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif( nodes.indexOf( nextNode ) === -1 ) {\n\t\t\t\t\t\t\tconst nn = nextNode.nextSibling\n\t\t\t\t\t\t\tel.removeChild( nextNode )\n\t\t\t\t\t\t\tnextNode = nn\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tel.insertBefore( view , nextNode )\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\tif( nextNode && nextNode.nodeName === '#text' ) {\n\t\t\t\t\tnextNode.nodeValue = String( view )\n\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t} else {\n\t\t\t\t\tconst textNode = $mol_dom_context.document.createTextNode( String( view ) )\n\t\t\t\t\tel.insertBefore( textNode , nextNode )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\twhile( nextNode ) {\n\t\t\tconst currNode = nextNode\n\t\t\tnextNode = currNode.nextSibling\n\t\t\tel.removeChild( currNode )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_attributes(\n\t\tel : Element ,\n\t\tattrs? : { [ key : string ] : string|number|boolean }\n\t) {\n\t\tfor( let name in attrs ) {\n\t\t\tlet val = attrs[ name ] as any\n\t\t\tif( el.getAttribute( name ) === val ) continue\n\t\t\tif( val === null || val === false ) el.removeAttribute( name )\n\t\t\telse el.setAttribute( name , String( val ) )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_style(\n\t\tel : Element ,\n\t\tstyles? : { [ key : string ] : string|number }\n\t) {\n\t\tfor( let name in styles ) {\n\t\t\tlet val = styles[ name ]\n\t\t\tif( typeof val === 'number' ) val = `${ val }px`\n\t\t\t\n\t\t\tconst style = ( el ).style as any\n\t\t\tif( val !== style[ name ] ) style[ name ] = val\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_event(\n\t\tel : Element ,\n\t\tevents? : { [ key : string ] : ( event : Event )=> any }\n\t) {\n\t\tfor( let name in events ) {\n\t\t\tel.addEventListener( name , events[ name ] )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_event_async(\n\t\tel : Element ,\n\t\tevents? : { [ key : string ] : ( event : Event )=> any }\n\t) {\n\t\tfor( let name in events ) {\n\t\t\tel.addEventListener( name , events[ name ] , { passive : true } as any )\n\t\t}\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport interface $mol_dom_make_config extends $mol_dom_render_config {\n\t\tid? : string\n\t\tlocalName? : string\n\t\tnamespaceURI? : string\n\t}\n\t\n\texport function $mol_dom_make( config : $mol_dom_make_config ) {\n\t\tconst document = $mol_dom_context.document\n\t\t\n\t\tlet el = config.id && document.getElementById( config.id ) as any\n\t\tif( !el ) {\n\t\t\tconst name = config.localName || 'span'\n\t\t\tconst space = config.namespaceURI || 'http://www.w3.org/1999/xhtml'\n\t\t\tel = document.createElementNS( space , name )\n\t\t}\n\t\t\n\t\treturn $mol_dom_render( el , config )\n\t}\n\t\n}\n","declare class WeakMap< Key , Value > {\n\tget( key : Key ) : Value\n\tset( key : Key , value : Value ) : this\n}\n\nnamespace $ {\n\t\n\texport class $mol_view_dom extends $mol_object {\n\t\t\n\t\tstatic nodes = new ( WeakMap || $mol_dict )< $mol_view , Element >()\n\t\t\n\t\tstatic node( view : $mol_view ) {\n\t\t\tlet node = $mol_view_dom.nodes.get( view )\n\t\t\tif( !node ) {\n\t\t\t\tnode = $mol_dom_make(\n\t\t\t\t\t{\n\t\t\t\t\t\tlocalName : view.dom_name() ,\n\t\t\t\t\t\tnamespaceURI : view.dom_name_space() ,\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t$mol_view_dom.mount( view , node )\n\t\t\t}\n\t\t\treturn node\n\t\t}\n\t\t\n\t\tstatic mount( view : $mol_view , node : Element ) {\n\t\t\t$mol_view_dom.nodes.set( view , node )\n\t\t\t\n\t\t\t$mol_dom_render(\n\t\t\t\tnode , {\n\t\t\t\t\tid : view.toString() ,\n\t\t\t\t\tattributes : view.attr_static() ,\n\t\t\t\t\tevents : view.event() ,\n\t\t\t\t\tevents_async : view.event_async() ,\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\tfor( let plugin of view.plugins() ) {\n\t\t\t\t$mol_view_dom.nodes.set( plugin , node )\n\t\t\t\t$mol_dom_render(\n\t\t\t\t\tnode , {\n\t\t\t\t\t\tattributes : plugin.attr_static() ,\n\t\t\t\t\t\tevents : plugin.event() ,\n\t\t\t\t\t\tevents_async : plugin.event_async() ,\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\t\n\t\t\treturn node\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport let $mol_view_context = <$mol_view_context> {}\n\t\n\texport interface $mol_view_context {\n\t\t$mol_view_visible_width() : number\n\t\t$mol_view_visible_height() : number\n\t\t$mol_view_state_key( suffix : string ) : string\n\t}\n\t\n\t$mol_view_context.$mol_view_visible_width = () => $mol_window.size().width\n\t$mol_view_context.$mol_view_visible_height = () => $mol_window.size().height\n\t$mol_view_context.$mol_view_state_key = ( suffix : string )=> suffix\n\n\t/// Reactive statefull lazy ViewModel\n\texport class $mol_view extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic Root( id : number ) {\n\t\t\treturn new this\n\t\t}\n\t\t\n\t\ttitle() : string {\n\t\t\treturn this.Class().toString()\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tfocused ( next?: boolean ) {\n\t\t\tlet node = $mol_view_dom.node( this )\n\t\t\tconst value = $mol_view_selection.focused( next === void 0 ? void 0 : [ node ] )\n\t\t\treturn value.indexOf( node ) !== -1\n\t\t} \n\t\t\n\t\t@ $mol_mem()\n\t\tcontext( next? : $mol_view_context ) {\n\t\t\treturn next || $mol_view_context\n\t\t}\n\t\t\n\t\tcontext_sub() {\n\t\t\treturn this.context()\n\t\t}\n\t\t\n\t\tstate_key( suffix = '' ) {\n\t\t\treturn this.context().$mol_view_state_key( suffix )\n\t\t}\n\t\t\n\t\t/// Name of element that created when element not found in DOM\n\t\tdom_name() {\n\t\t\treturn this.constructor.toString().replace( '$' , '' )\n\t\t}\n\t\t\n\t\t/// NameSpace of element that created when element not found in DOM\n\t\tdom_name_space() { return 'http://www.w3.org/1999/xhtml' }\n\t\t\n\t\t/// Raw child views\n\t\tsub() {\n\t\t\treturn > null\n\t\t}\n\t\t\n\t\t/// Visible sub views with defined context()\n\t\t/// Render all by default\n\t\tsub_visible() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return sub\n\t\t\t\n\t\t\tconst context = this.context_sub()\n\t\t\tsub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.context( context )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn sub\n\t\t}\n\t\t\n\t\t/// Minimal height that used for lazy rendering\n\t\t@ $mol_mem()\n\t\tminimal_width() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return 0\n\t\t\t\n\t\t\tlet min = 0\n\t\t\tsub.forEach( view => {\n\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\tmin = Math.max( min , view.minimal_width() )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn min\n\t\t}\n\t\t\n\t\t/// Minimal width that used for lazy rendering\n\t\t@ $mol_mem()\n\t\tminimal_height() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return 0\n\t\t\t\n\t\t\tlet min = 0\n\t\t\tsub.forEach( view => {\n\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\tmin = Math.max( min , view.minimal_height() )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn min\n\t\t}\n\t\t\n\t\t'view_classes()' : Function[]\n\t\tview_classes() {\n\t\t\tconst proto = Object.getPrototypeOf( this ) as $mol_view\n\t\t\tif( this[ 'view_classes()' ] ) return this[ 'view_classes()' ]\n\t\t\t\n\t\t\tlet current = proto\n\t\t\tconst classes = [] as Function[]\n\t\t\t\n\t\t\twhile( current ) {\n\t\t\t\tclasses.push( current.constructor )\n\t\t\t\tif(!( current instanceof $mol_view )) break\n\t\t\t\tcurrent = Object.getPrototypeOf( current )\n\t\t\t}\n\t\t\t\n\t\t\treturn this['view_classes()'] = classes\n\t\t}\n\t\t\n\t\tdom_node() {\n\t\t\treturn $mol_view_dom.node( this )\n\t\t}\n\t\t\n\t\tdom_tree() {\n\t\t\tconsole.warn( '$mol_view.dom_tree is deprecated by $mol_view.render' )\n\t\t\treturn this.render()\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\trender() : Element {\n\t\t\tconst node = this.dom_node()\n\t\t\t\n\t\t\ttry {\n\t\t\t\t\n\t\t\t\tfor( let plugin of this.plugins() ) plugin.render()\n\t\t\t\t\n\t\t\t\t$mol_dom_render( node , {\n\t\t\t\t\tattributes : this.attr() ,\n\t\t\t\t\tchildNodes : this.sub_visible() ,\n\t\t\t\t\tstyle : this.style() ,\n\t\t\t\t\t...( this.field() || {} ) ,\n\t\t\t\t} )\n\t\t\t\t\n\t\t\t} catch( error ) {\n\t\t\t\t\n\t\t\t\t$mol_dom_render( node , {\n\t\t\t\t\tattributes : { mol_view_error : error.name } ,\n\t\t\t\t} )\n\t\t\t\t\n\t\t\t\tif( error instanceof $mol_atom_wait ) return node\n\t\t\t\t\n\t\t\t\tif( error[ '$mol_atom_catched' ] ) return node\n\t\t\t\t\n\t\t\t\tconsole.error( error )\n\n\t\t\t\terror[ '$mol_atom_catched' ] = true\n\t\t\t}\n\t\t\t\n\t\t\treturn node\n\t\t}\n\t\t\n\t\tattr_static() : { [ key : string ] : string|number|boolean } {\n\t\t\tlet attrs = { 'mol_view_error' : false } as any\n\t\t\t\n\t\t\t/// Set BEM-like element-attributes with inheritance support\n\t\t\tconst owner = this.object_owner()\n\t\t\tif( owner instanceof $mol_view ) {\n\t\t\t\tconst suffix = this.object_field().replace( /\\(.*/ , '' )\n\t\t\t\tconst suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1)\n\t\t\t\towner.view_classes().forEach( Class => {\n\t\t\t\t\tif( suffix in Class.prototype ) {\n\t\t\t\t\t\tconst attrName = Class.toString().replace( /\\$/g , '' ) + suffix2\n\t\t\t\t\t\tattrs[ attrName ] = ''\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t}\n\t\t\t\n\t\t\t/// Set BEM-like block-attributes with inheritance support\n\t\t\tthis.view_classes().forEach( Class => {\n\t\t\t\tattrs[ Class.toString().replace( /\\$/g , '' ).toLowerCase() ] = ''\n\t\t\t} )\n\t\t\t\n\t\t\treturn attrs\n\t\t}\n\t\t\n\t\tattr() : { [ key : string ] : string|number|boolean } {\n\t\t\treturn {\n\t\t\t\t'mol_view_error' : false ,\n\t\t\t}\n\t\t}\n\t\t\n\t\tstyle() : { [ key : string ] : string|number } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tfield() : { [ key : string ] : any } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tevent() : { [ key : string ] : ( event : Event )=> void } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tevent_async() : { [ key : string ] : ( event : Event )=> void } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\t'event_wrapped()' = null as { [ name : string ] : ( event? : Event )=> any }\n\t\tevent_wrapped() {\n\t\t\tif( this[ 'event_wrapped()' ] ) return this[ 'event_wrapped()' ]\n\t\t\t\n\t\t\tconst event = this.event()\n\t\t\tconst wrapped = {} as typeof event\n\t\t\t\n\t\t\tfor( let name in event ) {\n\t\t\t\tlet handle = event[ name ]\n\t\t\t\twrapped[ name ] = event => {\n\t\t\t\t\t$mol_atom_task( `${ this }.event()['${ name }']` , () => handle( event ) ).get()\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn this[ 'event_wrapped()' ] = wrapped\n\t\t}\n\t\t\n\t\t'locale_contexts()' : string[]\n\t\tlocale_contexts() {\n\t\t\treturn this['locale_contexts()'] || ( this[ 'locale_contexts()' ] = this.view_classes().map( String ) )\n\t\t}\n\t\t\n\t\tplugins() {\n\t\t\treturn [] as $mol_view[]\n\t\t}\n\t\t\n\t}\n\t\n}\n","interface Window {\n\tcordova : any\n}\n\nnamespace $ {\n\n\t/// Autoattach view roots to loaded DOM.\n\t$mol_dom_context.document.addEventListener( window.cordova ? 'deviceready' : 'DOMContentLoaded' , event => {\n\t\t\t\n\t\tconst nodes = $mol_dom_context.document.querySelectorAll( '[mol_view_root]' )\n\t\t\n\t\tfor( let i = nodes.length - 1 ; i >= 0 ; --i ) {\n\t\t\tconst name = nodes.item( i ).getAttribute( 'mol_view_root' )\n\t\t\t\n\t\t\tconst View = $[ name ]\n\t\t\tif( !View ) {\n\t\t\t\tconsole.error( `Can not attach view. Class not found: ${ name }` )\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t\n\t\t\tconst view = View.Root( i )\n\t\t\t\n\t\t\t$mol_view_dom.mount( view , nodes.item( i ) )\n\t\t\t\n\t\t\tlet win = new $mol_atom( `$mol_view.Root(${ i })` , ()=> {\n\t\t\t\tview.render()\n\t\t\t\t$mol_dom_context.document.title = view.title()\n\t\t\t\treturn null\n\t\t\t} )\n\t\t\t\n\t\t\tnew $mol_defer( ()=> win.get() )\n\t\t}\n\t\t\n\t\t$mol_defer.run()\n\t} )\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_view_selection extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic focused( next? : Element[] , force? : $mol_atom_force ) {\n\t\t\tif( next === void 0 ) return [] as Element[]\n\t\t\t\n\t\t\tif( next.length !== 1 ) throw new Error( 'Length must be equals 1' )\n\t\t\t\n\t\t\tconst node = next[ 0 ] as HTMLElement\n\t\t\t\n\t\t\tnode.focus();\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic position( ...diff : any[] ) {\n\t\t\tif( diff.length ) {\n\t\t\t\tif( !diff[ 0 ] ) return diff[ 0 ]\n\t\t\t\t\n\t\t\t\tvar start = diff[ 0 ].start\n\t\t\t\tvar end = diff[ 0 ].end\n\t\t\t\tif( !( start <= end ) ) throw new Error( `Wrong offsets (${start},${end})` )\n\t\t\t\t\n\t\t\t\tvar root = $mol_dom_context.document.getElementById( diff[ 0 ].id )\n\t\t\t\troot.focus()\n\t\t\t\t\n\t\t\t\tvar range = new Range\n\t\t\t\t\n\t\t\t\tvar cur = root.firstChild\n\t\t\t\twhile( cur !== root ) {\n\t\t\t\t\twhile( cur.firstChild ) cur = cur.firstChild\n\t\t\t\t\tif( cur.nodeValue ) {\n\t\t\t\t\t\tvar length = cur.nodeValue.length\n\t\t\t\t\t\tif( length >= start ) break\n\t\t\t\t\t\tstart -= length\n\t\t\t\t\t}\n\t\t\t\t\twhile( !cur.nextSibling ) {\n\t\t\t\t\t\tcur = cur.parentNode\n\t\t\t\t\t\tif( cur === root ) {\n\t\t\t\t\t\t\tstart = root.childNodes.length\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trange.setStart( cur , start )\n\t\t\t\t\n\t\t\t\tvar cur = root.firstChild\n\t\t\t\twhile( cur !== root ) {\n\t\t\t\t\twhile( cur.firstChild ) cur = cur.firstChild\n\t\t\t\t\tif( cur.nodeValue ) {\n\t\t\t\t\t\tvar length = cur.nodeValue.length\n\t\t\t\t\t\tif( length >= end ) break\n\t\t\t\t\t\tend -= length\n\t\t\t\t\t}\n\t\t\t\t\twhile( !cur.nextSibling ) {\n\t\t\t\t\t\tcur = cur.parentNode\n\t\t\t\t\t\tif( cur === root ) {\n\t\t\t\t\t\t\tend = root.childNodes.length\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trange.setEnd( cur , end )\n\t\t\t\t\n\t\t\t\tvar sel = $mol_dom_context.document.getSelection()\n\t\t\t\tsel.removeAllRanges()\n\t\t\t\tsel.addRange( range )\n\t\t\t\t\n\t\t\t\treturn diff[ 0 ]\n\t\t\t} else {\n\t\t\t\tvar sel = $mol_dom_context.document.getSelection()\n\t\t\t\tif( sel.rangeCount === 0 ) return null\n\t\t\t\tvar range = sel.getRangeAt( 0 )\n\t\t\t\t\n\t\t\t\tvar el = range.commonAncestorContainer\n\t\t\t\twhile( el && !el.id ) el = el.parentElement\n\t\t\t\t\n\t\t\t\tif( !el ) return { id : null , start : 0 , end : 0 }\n\t\t\t\t\n\t\t\t\tvar meter = new Range\n\t\t\t\tmeter.selectNodeContents( el )\n\t\t\t\t\n\t\t\t\tmeter.setEnd( range.startContainer , range.startOffset )\n\t\t\t\tvar startOffset = meter.toString().length\n\t\t\t\t\n\t\t\t\tmeter.setEnd( range.endContainer , range.endOffset )\n\t\t\t\tvar endOffset = meter.toString().length\n\t\t\t\t\n\t\t\t\treturn { id : el.id , start : startOffset , end : endOffset }\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic onFocus( event : FocusEvent ) {\n\t\t\tconst parents : Element[] = []\n\t\t\tlet element = event.target as HTMLElement\n\t\t\t\n\t\t\twhile( element ) {\n\t\t\t\tparents.push( element )\n\t\t\t\telement = element.parentElement\n\t\t\t}\n\t\t\t\n\t\t\t$mol_view_selection.focused( parents , $mol_atom_force )\n\t\t}\n\t\t\n\t\tstatic onBlur( event : FocusEvent ) {\n\t\t\t$mol_view_selection.focused( [] , $mol_atom_force )\n\t\t}\n\t}\n\t\n}\n","namespace $ {\n\t\n\t$mol_dom_context.document.addEventListener( 'selectionchange' , event => {\n\t\t$mol_view_selection.position( void null , $mol_atom_force )\n\t} )\n\t\n\t$mol_dom_context.document.addEventListener( 'focus' , event => setTimeout( ()=> $mol_view_selection.onFocus( event ) ) , true )\n\t$mol_dom_context.document.addEventListener( 'blur' , event => setTimeout( ()=> $mol_view_selection.onBlur( event ) ) , true )\n\t\n}\n","namespace $ { export class $mol_string extends $mol_view {\n\n\t/// dom_name \\input\n\tdom_name() {\n\t\treturn \"input\"\n\t}\n\n\t/// enabled true\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/// disabled false\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/// value?val \\\n\t@ $mol_mem()\n\tvalue( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// value_changed?val <=> value?val\n\t@ $mol_mem()\n\tvalue_changed( val? : any ) {\n\t\treturn this.value( val )\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// type?val \\text\n\t@ $mol_mem()\n\ttype( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : \"text\"\n\t}\n\n\t/// field * \n\t/// \tdisabled <= disabled \n\t/// \tvalue <= value_changed?val \n\t/// \tplaceholder <= hint \n\t/// \ttype <= type?val\n\tfield() {\n\t\treturn ( { ...super.field() , \n\t\t\t\"disabled\" : this.disabled() ,\n\t\t\t\"value\" : this.value_changed() ,\n\t\t\t\"placeholder\" : this.hint() ,\n\t\t\t\"type\" : this.type() ,\n\t\t} )\n\t}\n\n\t/// event_change?event null\n\t@ $mol_mem()\n\tevent_change( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event * input?event <=> event_change?event\n\tevent() {\n\t\treturn ( { ...super.event() , \n\t\t\t\"input\" : ( event? : any )=> this.event_change( event ) ,\n\t\t} )\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_string extends $.$mol_string {\n\t\t\n\t\tevent_change( next? : Event ) {\n\t\t\tthis.value( ( next.target as HTMLInputElement ).value.trim() )\n\t\t}\n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t}\n}\n","namespace $ {\n export enum $mol_keyboard_code {\n backspace = 8,\n tab = 9,\n enter = 13,\n shift= 16,\n ctrl = 17,\n alt = 18,\n pause = 19,\n capsLock = 20,\n escape = 27,\n space = 32,\n pageUp = 33,\n pageDown = 34,\n end = 35,\n home = 36,\n left = 37,\n up = 38,\n right = 39,\n down = 40,\n insert = 45,\n delete = 46,\n key0 = 48,\n key1 = 49,\n key2 = 50,\n key3 = 51,\n key4 = 52,\n key5 = 53,\n key6 = 54,\n key7 = 55,\n key8 = 56,\n key9 = 57,\n A = 65,\n B = 66,\n C = 67,\n D = 68,\n E = 69,\n F = 70,\n G = 71,\n H = 72,\n I = 73,\n J = 74,\n K = 75,\n L = 76,\n M = 77,\n N = 78,\n O = 79,\n P = 80,\n Q = 81,\n R = 82,\n S = 83,\n T = 84,\n U = 85,\n V = 86,\n W = 87,\n X = 88,\n Y = 89,\n Z = 90,\n metaLeft = 91,\n metaRight = 92,\n select = 93,\n numpad0 = 96,\n numpad1 = 97,\n numpad2 = 98,\n numpad3 = 99,\n numpad4 = 100,\n numpad5 = 101,\n numpad6 = 102,\n numpad7 = 103,\n numpad8 = 104,\n numpad9 = 105,\n multiply = 106,\n add = 107,\n subtract = 109,\n decimal = 110,\n divide = 111,\n F1 = 112,\n F2 = 113,\n F3 = 114,\n F4 = 115,\n F5 = 116,\n F6 = 117,\n F7 = 118,\n F8 = 119,\n F9 = 120,\n F10 = 121,\n F11 = 122,\n F12 = 123,\n numLock = 144,\n scrollLock = 145,\n semicolon = 186,\n equals = 187,\n comma = 188,\n dash = 189,\n period = 190,\n forwardSlash = 191,\n graveAccent = 192,\n bracketOpen = 219,\n slashBack = 220,\n bracketClose = 221,\n quoteSingle = 222\n }\n}\n","namespace $ { export class $mol_button extends $mol_view {\n\n\t/// enabled true\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/// event_click?event null\n\t@ $mol_mem()\n\tevent_click( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event_activate?event <=> event_click?event\n\t@ $mol_mem()\n\tevent_activate( event? : any ) {\n\t\treturn this.event_click( event )\n\t}\n\n\t/// evenet_key_press?event null\n\t@ $mol_mem()\n\tevenet_key_press( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event * \n\t/// \tclick?event <=> event_activate?event \n\t/// \tkeypress?event <=> evenet_key_press?event\n\tevent() {\n\t\treturn ( { ...super.event() , \n\t\t\t\"click\" : ( event? : any )=> this.event_activate( event ) ,\n\t\t\t\"keypress\" : ( event? : any )=> this.evenet_key_press( event ) ,\n\t\t} )\n\t}\n\n\t/// disabled false\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/// tab_index \\0\n\ttab_index() {\n\t\treturn \"0\"\n\t}\n\n\t/// attr * \n\t/// \tdisabled <= disabled \n\t/// \trole \\button\n\t/// \ttabindex <= tab_index\n\tattr() {\n\t\treturn ( { ...super.attr() , \n\t\t\t\"disabled\" : this.disabled() ,\n\t\t\t\"role\" : \"button\" ,\n\t\t\t\"tabindex\" : this.tab_index() ,\n\t\t} )\n\t}\n\n\t/// sub / <= title\n\tsub() {\n\t\treturn [].concat( this.title() )\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_button extends $.$mol_button {\n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t\t\n\t\tevent_activate( next : Event ) {\n\t\t\tif( !this.enabled() ) return\n\t\t\tthis.event_click( next )\n\t\t}\n\t\t\n\t\tevenet_key_press ( event: KeyboardEvent ) { \n \t\tif( event.keyCode === $mol_keyboard_code.enter ) \n \t\treturn this.event_activate( event )\n \t} \n\t\t\n\t\ttab_index() {\n\t\t\treturn this.enabled() ? super.tab_index() : null\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { export class $mol_button_major extends $mol_button {\n\n} }\n\nnamespace $ { export class $mol_button_minor extends $mol_button {\n\n} }\n\nnamespace $ { export class $mol_button_danger extends $mol_button {\n\n} }\n\n","namespace $ {\n\t\n\texport function $mol_merge_dict< Target , Source >( target : Target , source : Source ) : Target & Source {\n\t\tlet result = {}\n\t\tfor( let key in target ) result[ key ] = ( target )[ key ]\n\t\tfor( let key in source ) result[ key ] = ( source )[ key ]\n\t\treturn result\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_state_arg< Value > extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic href( next? : string , force? : $mol_atom_force ) {\n\t\t\tif( next ) history.replaceState( history.state , $mol_dom_context.document.title , `${ next }` )\n\t\t\treturn window.location.search + window.location.hash\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic dict( next? : { [ key : string ] : string } ) {\n\t\t\tvar href = this.href( next && this.make( next ) )\n\t\t\tvar chunks = href.split( /[\\/\\?#!&;]/g )\n\t\t\t\n\t\t\tvar params : { [ key : string ] : string } = {}\n\t\t\tchunks.forEach(\n\t\t\t\tchunk => {\n\t\t\t\t\tif( !chunk ) return\n\t\t\t\t\tvar vals = chunk.split( '=' ).map( decodeURIComponent )\n\t\t\t\t\tparams[ vals.shift() ] = vals.join( '=' )\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\treturn params\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic value( key : string , next? : string ) {\n\t\t\tconst nextDict = ( next === void 0 ) ? void 0 : $mol_merge_dict( this.dict() , { [ key ] : next } ) \n\t\t\treturn this.dict( nextDict )[ key ] || null\n\t\t}\n\t\t\n\t\tstatic link( next : { [ key : string ] : string } ) {\n\t\t\treturn this.make( $mol_merge_dict( this.dict() , next ) )\n\t\t}\n\t\t\n\t\tstatic make( next : { [ key : string ] : string } ) {\n\t\t\tconst chunks : string[] = []\n\t\t\tfor( let key in next ) {\n\t\t\t\tif( null == next[ key ] ) continue\n\t\t\t\tchunks.push( [ key ].concat( next[ key ] ).map( encodeURIComponent ).join( '=' ) )\n\t\t\t}\n\t\t\t\n\t\t\treturn '#' + chunks.join( '/' )\n\t\t}\n\t\t\n\t\tconstructor( public prefix = '' ) {\n\t\t\tsuper()\n\t\t}\n\t\t\n\t\tvalue( key : string , next? : string ) {\n\t\t\treturn $mol_state_arg.value( this.prefix + key , next )\n\t\t}\n\t\t\n\t\tsub( postfix : string ) {\n\t\t\treturn new $mol_state_arg( this.prefix + postfix + '.' )\n\t\t}\n\t\t\n\t\tlink( next : { [ key : string ] : string } ) {\n\t\t\tvar prefix = this.prefix\n\t\t\tvar dict : { [ key : string ] : string } = {}\n\t\t\tfor( var key in next ) {\n\t\t\t\tdict[ prefix + key ] = next[ key ]\n\t\t\t}\n\t\t\treturn $mol_state_arg.link( dict )\n\t\t}\n\t\t\n\t}\n\t\n\twindow.addEventListener( 'hashchange' , event => $mol_state_arg.href( void null , $mol_atom_force ) )\n\t\n}\n","namespace $ { export class $mol_link extends $mol_view {\n\n\t/// minimal_height 36\n\tminimal_height() {\n\t\treturn 36\n\t}\n\n\t/// dom_name \\a\n\tdom_name() {\n\t\treturn \"a\"\n\t}\n\n\t/// uri \\\n\turi() {\n\t\treturn \"\"\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// current false\n\tcurrent() {\n\t\treturn false\n\t}\n\n\t/// attr * \n\t/// \thref <= uri \n\t/// \ttitle <= hint \n\t/// \tmol_link_current <= current\n\tattr() {\n\t\treturn ( { ...super.attr() , \n\t\t\t\"href\" : this.uri() ,\n\t\t\t\"title\" : this.hint() ,\n\t\t\t\"mol_link_current\" : this.current() ,\n\t\t} )\n\t}\n\n\t/// sub / <= title\n\tsub() {\n\t\treturn [].concat( this.title() )\n\t}\n\n\t/// arg *\n\targ() {\n\t\treturn ({\n\t\t})\n\t}\n\n} }\n\n","namespace $.$mol {\n\t\n\texport class $mol_link extends $.$mol_link {\n\t\t\n\t\t@ $mol_mem()\n\t\turi() {\n\t\t\treturn new $mol_state_arg( this.state_key() ).link( this.arg() )\n\t\t}\n\t\t\n\t\tcurrent() {\n\t\t\treturn this.uri() === $mol_state_arg.link( {} )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_check extends $mol_button {\n\n\t/// checked?val false\n\t@ $mol_mem()\n\tchecked( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// attr * \n\t/// \tmol_check_checked <= checked?val \n\t/// \taria-checked <= checked?val \n\t/// \trole \\checkbox\n\tattr() {\n\t\treturn ( { ...super.attr() , \n\t\t\t\"mol_check_checked\" : this.checked() ,\n\t\t\t\"aria-checked\" : this.checked() ,\n\t\t\t\"role\" : \"checkbox\" ,\n\t\t} )\n\t}\n\n\t/// Icon null\n\tIcon() {\n\t\treturn null\n\t}\n\n\t/// label /\n\tlabel() {\n\t\treturn [] as any[]\n\t}\n\n\t/// Label $mol_view sub / <= label\n\t@ $mol_mem()\n\tLabel() {\n\t\treturn new $mol_view().setup( obj => { \n\t\t\tobj.sub = () => [].concat( this.label() )\n\t\t} )\n\t}\n\n\t/// sub / \n\t/// \t<= Icon \n\t/// \t<= Label\n\tsub() {\n\t\treturn [].concat( this.Icon() , this.Label() )\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_check extends $.$mol_check {\n\n\t\tevent_click( next? : Event ) {\n\t\t\tthis.checked( !this.checked() )\n\t\t\tnext.preventDefault()\n\t\t}\n\n\t}\n}\n\n","namespace $ {\n\t\n\texport class $mol_state_session< Value > extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic value< Value >( key : string , next? : Value ) : Value {\n\t\t\tif( next === void 0 ) return JSON.parse( sessionStorage.getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) sessionStorage.removeItem( key )\n\t\t\telse sessionStorage.setItem( key , JSON.stringify( next ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_session.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_scroll extends $mol_view {\n\n\t/// minimal_height 0\n\tminimal_height() {\n\t\treturn 0\n\t}\n\n\t/// scroll_top?val 0\n\t@ $mol_mem()\n\tscroll_top( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// scroll_left?val 0\n\t@ $mol_mem()\n\tscroll_left( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// field * \n\t/// \tscrollTop <= scroll_top?val \n\t/// \tscrollLeft <= scroll_left?val\n\tfield() {\n\t\treturn ( { ...super.field() , \n\t\t\t\"scrollTop\" : this.scroll_top() ,\n\t\t\t\"scrollLeft\" : this.scroll_left() ,\n\t\t} )\n\t}\n\n\t/// event_scroll?event null\n\t@ $mol_mem()\n\tevent_scroll( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event_async * scroll?event <=> event_scroll?event\n\tevent_async() {\n\t\treturn ( { ...super.event_async() , \n\t\t\t\"scroll\" : ( event? : any )=> this.event_scroll( event ) ,\n\t\t} )\n\t}\n\n} }\n\n","namespace $ {\n\t\n\texport interface $mol_view_context {\n\t\t$mol_scroll_scroll_top() : number\n\t\t$mol_scroll_scroll_left() : number\n\t\t$mol_scroll_moving() : boolean\n\t}\n\n\t$mol_view_context.$mol_scroll_scroll_top = () => 0\n\t$mol_view_context.$mol_scroll_scroll_left = () => 0\n\t$mol_view_context.$mol_scroll_moving = () => false\n\t\n}\n\nnamespace $.$mol {\n\t\n\texport class $mol_scroll extends $.$mol_scroll {\n\n\t\tscroll_top( next? : number ) {\n\t\t\treturn $mol_state_session.value( `${ this }.scroll_top()` , next ) || 0\n\t\t}\n\t\t\n\t\tscroll_left( next? : number ) {\n\t\t\treturn $mol_state_session.value( `${ this }.scroll_left()` , next ) || 0\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tscroll_bottom( next? : number ) {\n\t\t\treturn next || 0\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tscroll_right( next? : number ) {\n\t\t\treturn next || 0\n\t\t}\n\t\t\n\t\tevent_scroll( next? : Event ) {\n\t\t\tthis.moving( true )\n\t\t\tthis.moving_task_stop()\n\t\t\tnew $mol_defer( ()=> {\n\t\t\t\tconst el = next.target as HTMLElement\n\t\t\t\tthis.scroll_top( Math.max( 0 , el.scrollTop ) )\n\t\t\t\tthis.scroll_left( Math.max( 0 , el.scrollLeft ) )\n\t\t\t\tthis.scroll_bottom( Math.max( 0 , el.scrollHeight - el.scrollTop - el.offsetHeight ) )\n\t\t\t\tthis.scroll_right( Math.max( 0 , el.scrollWidth - el.scrollLeft - el.offsetWidth ) )\n\t\t\t} )\n\t\t}\n\t\t\n\t\t_moving_task_frame = 0\n\t\tmoving_task_stop() {\n\t\t\tcancelAnimationFrame( this._moving_task_frame )\n\t\t\tthis._moving_task_frame = requestAnimationFrame( ()=> {\n\t\t\t\tthis.moving( false )\n\t\t\t} )\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tmoving( next? : boolean ) {\n\t\t\treturn next || false\n\t\t}\n\n\t\t@ $mol_mem()\n\t\tcontext_sub( ) {\n\t\t\tconst context = this.context()\n\t\t\tconst subContext : $mol_view_context = Object.create( context )\n\t\t\tsubContext.$mol_view_visible_height = ()=> {\n\t\t\t\tconst sizeWin = $mol_window.size()\n\t\t\t\tconst limit = context.$mol_view_visible_height()\n\t\t\t\treturn this.scroll_top() + Math.min( sizeWin.height , limit )\n\t\t\t}\n\t\t\tsubContext.$mol_view_visible_width = ()=> {\n\t\t\t\tconst sizeWin = $mol_window.size()\n\t\t\t\tconst limit = context.$mol_view_visible_width()\n\t\t\t\treturn this.scroll_left() + Math.min( sizeWin.width , limit )\n\t\t\t}\n\t\t\tsubContext.$mol_scroll_scroll_top = ()=> this.scroll_top()\n\t\t\tsubContext.$mol_scroll_scroll_left = ()=> this.scroll_left()\n\t\t\tsubContext.$mol_scroll_moving = ()=> this.moving()\n\t\t\treturn subContext\n\t\t}\n\t\t\n\t}\n\n}\n","var localStorage = localStorage || {\n\tgetItem( key : string ) {\n\t\treturn this[ ':' + key ]\n\t} ,\n\tsetItem( key : string , value : string ) {\n\t\tthis[ ':' + key ] = value\n\t} ,\n\tremoveItem( key : string ) {\n\t\tthis[ ':' + key ] = void 0\n\t}\n}\n\nnamespace $ {\n\t\n\texport class $mol_state_local< Value > extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic value< Value >( key : string , next? : Value , force? : $mol_atom_force ) : Value {\n\t\t\tif( next === void 0 ) return JSON.parse( localStorage.getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) localStorage.removeItem( key )\n\t\t\telse localStorage.setItem( key , JSON.stringify( next ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_local.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\twindow.addEventListener( 'storage' , event => {\n\t\t$.$mol_state_local.value( event.key , void 0 , $mol_atom_force )\n\t} )\n}\n","namespace $ {\n\t\n\texport class $mol_http_request extends $mol_object {\n\t\t\n\t\turi() { return '' }\n\t\t\n\t\tmethod_get() { return 'Get' }\n\t\tmethod_put() { return 'Put' }\n\t\t\n\t\tcredentials() { return null as {\n\t\t\tlogin? : string\n\t\t\tpassword? : string\n\t\t} }\n\t\t\n\t\theaders() {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tbody() { return null }\n\t\t\n\t\t'native()' : XMLHttpRequest\n\t\tnative() {\n\t\t\tif( this[ 'native()' ] ) return this[ 'native()' ]\n\t\t\t\n\t\t\tvar next = this[ 'native()' ] = new $mol_dom_context.XMLHttpRequest\n\t\t\t\n\t\t\tnext.withCredentials = Boolean( this.credentials() )\n\t\t\t\n\t\t\tnext.onload = ( event : Event )=> {\n\t\t\t\tif(( next.status === 0 )||( Math.floor( next.status / 100 ) === 2 )) {\n\t\t\t\t\tthis.response( next , $mol_atom_force )\n\t\t\t\t} else {\n\t\t\t\t\tthis.response( new Error( next.responseText ) as any , $mol_atom_force )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tnext.onerror = ( event : ErrorEvent ) => {\n\t\t\t\tthis.response( event.error || new Error( 'Unknown HTTP error' ) , $mol_atom_force )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next ) {\n\t\t\t\tconst native = this[ 'native()' ]\n\t\t\t\tif( native ) native.abort()\n\t\t\t}\n\t\t\treturn super.destroyed( next )\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tresponse( next? : any , force? : $mol_atom_force ) : XMLHttpRequest {\n\t\t\tconst creds = this.credentials()\n\t\t\tconst native = this.native()\n\t\t\tconst method = ( next === void 0 ) ? this.method_get() : this.method_put()\n\t\t\tconst uri = this.uri()\n\t\t\t\n\t\t\tnative.open( method , uri , true , creds && creds.login , creds && creds.password )\n\t\t\t\n\t\t\tconst headers = this.headers()\n\t\t\tfor( let name in headers ) native.setRequestHeader( name , headers[ name ] )\n\t\t\t\n\t\t\tnative.send( next )\n\t\t\t\n\t\t\tthrow new $mol_atom_wait( `${ method } ${ uri }` )\n\t\t}\n\t\t\n\t\ttext( next? : string , force? : $mol_atom_force ) : string {\n\t\t\treturn this.response( next , force ).responseText\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_http_resource extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic item( uri : string ) {\n\t\t\treturn new $mol_http_resource().setup( obj => {\n\t\t\t\tobj.uri = ()=> uri\n\t\t\t} )\n\t\t}\n\t\t\n\t\turi() { return '' }\n\t\t\n\t\tmethod_get() { return 'Get' }\n\t\tmethod_put() { return 'Put' }\n\t\t\n\t\tcredentials() { return null as {\n\t\t\tlogin? : string\n\t\t\tpassword? : string\n\t\t} }\n\t\t\n\t\theaders() {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\trequest() {\n\t\t\tconst request = new $mol_http_request()\n\t\t\trequest.uri = () => this.uri()\n\t\t\trequest.method_get = ()=> this.method_get()\n\t\t\trequest.method_put = ()=> this.method_put()\n\t\t\trequest.credentials = () => this.credentials()\n\t\t\trequest.headers = ()=> this.headers()\n\t\t\treturn request\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\ttext( next? : string , force? : $mol_atom_force ) {\n\t\t\treturn this.request().text( next , force )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_file extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic absolute( path : string ) {\n\t\t\treturn new $mol_file().setup(\n\t\t\t\tobj => {\n\t\t\t\t\tobj.path = ()=> path\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t\t\n\t\tstatic relative( path : string ) : $mol_file {\n\t\t\tif( /^\\//.test( path ) ) {\n\t\t\t\treturn $mol_file.root().resolve( path.substring(1) )\n\t\t\t}\n\t\t\treturn $mol_file.base().resolve( path )\n\t\t}\n\t\t\n\t\tstatic root() {\n\t\t\treturn $mol_file.absolute( '' )\n\t\t}\n\t\t\n\t\tstatic base() {\n\t\t\tconst path = $mol_dom_context.document.location.pathname.replace( /\\/[^\\/]*$/ , '' )\n\t\t\treturn $mol_file.absolute( path )\n\t\t}\n\t\t\n\t\tpath() {\n\t\t\treturn '.'\n\t\t}\n\t\t\n\t\tparent() {\n\t\t\treturn this.resolve( '..' )\n\t\t}\n\t\t\n\t\tname() {\n\t\t\treturn this.path().replace( /^.*\\//, '' )\n\t\t}\n\t\t\n\t\text() {\n\t\t\tvar match = /((?:\\.\\w+)+)$/.exec( this.path() )\n\t\t\treturn match && match[ 1 ].substring( 1 )\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tcontent( next? : string , force? : $mol_atom_force ) {\n\t\t\treturn $mol_http_resource.item( this.path() ).text( next )\n\t\t}\n\t\t\n\t\tresolve( path : string ) : $mol_file {\n\t\t\tlet res = this.path() + '/' + path\n\t\t\t\n\t\t\twhile( true ) {\n\t\t\t\tlet prev = res\n\t\t\t\tres = res.replace( /\\/[^\\/]+\\/\\.\\.\\// , '/' )\n\t\t\t\tif( prev === res ) break\n\t\t\t}\n\t\t\t\n\t\t\twhile( true ) {\n\t\t\t\tlet prev = res\n\t\t\t\tres = res.replace( /\\/\\.\\.\\/[^\\/]+\\// , '/' )\n\t\t\t\tif( prev === res ) break\n\t\t\t}\n\t\t\t\n\t\t\treturn this.Class().absolute( res )\n\t\t}\n\t\t\n\t\trelate( base = this.Class().relative( '.' ) ) {\n\t\t\tthrow new Error( 'Not implemented yet' )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport interface $mol_locale_dict {\n\t\t[ key : string ] : string\n\t}\n\t\n\texport class $mol_locale extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic lang_default() {\n\t\t\treturn 'en'\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic lang( next? : string ) {\n\t\t\treturn $mol_state_local.value( 'locale' , next ) || $mol_dom_context.navigator.language.replace( /-.*/ , '' ) || this.lang_default()\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic source( lang : string ) {\n\t\t\treturn JSON.parse( $mol_file.relative( `-/web.locale=${ lang }.json` ).content() )\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic texts( next? : $mol_locale_dict ) : $mol_locale_dict {\n\t\t\tif( next ) return next\n\t\t\t\n\t\t\tconst lang = this.lang()\n\t\t\t\n\t\t\ttry {\n\t\t\t\treturn this.source( lang ).valueOf()\n\t\t\t} catch( error ) {\n\t\t\t\tconst def = this.lang_default()\n\t\t\t\tif( lang === def ) throw error\n\t\t\t\treturn this.source( def )\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic text( contexts : string[] , key : string ) {\n\t\t\tconst texts = this.texts()\n\t\t\t\n\t\t\tfor( let i = 0 ; i < contexts.length ; ++i ) {\n\t\t\t\tconst text = texts[ `${ contexts[i] }_${ key }` ]\n\t\t\t\tif( text ) return text\n\t\t\t}\n\t\t\t\n\t\t\tconsole.warn( 'Locale tet not found: ' , contexts , key )\n\t\t\t\n\t\t\treturn `<${ key }>`\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_list extends $mol_view {\n\n\t/// style * minHeight <= minimal_height\n\tstyle() {\n\t\treturn ( { ...super.style() , \n\t\t\t\"minHeight\" : this.minimal_height() ,\n\t\t} )\n\t}\n\n\t/// rows /\n\trows() {\n\t\treturn [] as any[]\n\t}\n\n\t/// sub <= rows\n\tsub() {\n\t\treturn this.rows()\n\t}\n\n\t/// Empty null\n\tEmpty() {\n\t\treturn null\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_list extends $.$mol_list {\n\t\t\n\t\tsub() {\n\t\t\tconst rows = this.rows()\n\t\t\treturn ( rows.length === 0 ) ? [ this.Empty() ] : rows\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\trow_offsets() : number[] {\n\t\t\tvar sub = this.sub()\n\t\t\tif( !sub ) return null\n\t\t\t\n\t\t\tlet heightLimit = this.context().$mol_view_visible_height()\n\t\t\tvar offset = 0\n\t\t\t\n\t\t\tvar next : number[] = []\n\t\t\tfor( let child of sub ) {\n\t\t\t\tnext.push( offset )\n\t\t\t\t\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\toffset += child.minimal_height()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( offset > heightLimit ) break\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\trow_context( index : number ) {\n\t\t\tlet context = this.context()\n\t\t\tlet next = Object.create( context )\n\t\t\tnext.$mol_view_visible_height = ()=> {\n\t\t\t\tconst limit = context.$mol_view_visible_height()\n\t\t\t\treturn limit - this.row_offsets()[ index ]\n\t\t\t}\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tsub_visible() {\n\t\t\tvar sub = this.sub()\n\t\t\tif( !sub ) return sub\n\t\t\t\n\t\t\tvar limit = this.row_offsets().length\n\t\t\t\n\t\t\tvar next : $mol_view[] = []\n\t\t\tfor( let i = 0 ; i < limit ; ++ i ) {\n\t\t\t\tconst child = sub[ i ]\n\t\t\t\tif( child == null ) continue \n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.context( this.row_context( i ) )\n\t\t\t\t}\n\t\t\t\tnext.push( child )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tminimal_height() {\n\t\t\tvar height = 0\n\t\t\tvar sub = this.sub()\n\t\t\tif( sub ) sub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\theight += child.minimal_height()\n\t\t\t\t}\n\t\t\t} )\n\t\t\treturn height\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { export class $mol_bar extends $mol_view {\n\n} }\n\n","namespace $ { export class $mol_app_todomvc extends $mol_scroll {\n\n\t/// title @ \\todos\n\ttitle() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"title\" )\n\t}\n\n\t/// Title $mol_view \n\t/// \tminimal_height 142 \n\t/// \tsub / <= title\n\t@ $mol_mem()\n\tTitle() {\n\t\treturn new $mol_view().setup( obj => { \n\t\t\tobj.minimal_height = () => 142\n\t\t\tobj.sub = () => [].concat( this.title() )\n\t\t} )\n\t}\n\n\t/// head_complete_enabled false\n\thead_complete_enabled() {\n\t\treturn false\n\t}\n\n\t/// completed_all?val false\n\t@ $mol_mem()\n\tcompleted_all( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// Head_complete $mol_check \n\t/// \tenabled <= head_complete_enabled \n\t/// \tchecked?val <=> completed_all?val \n\t/// \tsub / \\❯\n\t@ $mol_mem()\n\tHead_complete() {\n\t\treturn new $mol_check().setup( obj => { \n\t\t\tobj.enabled = () => this.head_complete_enabled()\n\t\t\tobj.checked = ( val? : any ) => this.completed_all( val )\n\t\t\tobj.sub = () => [].concat( \"❯\" )\n\t\t} )\n\t}\n\n\t/// task_title_new?val \\\n\t@ $mol_mem()\n\ttask_title_new( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// event_add?event null\n\t@ $mol_mem()\n\tevent_add( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// Add $mol_app_todomvc_add \n\t/// \tvalue?val <=> task_title_new?val \n\t/// \tevent_done?event <=> event_add?event\n\t@ $mol_mem()\n\tAdd() {\n\t\treturn new $mol_app_todomvc_add().setup( obj => { \n\t\t\tobj.value = ( val? : any ) => this.task_title_new( val )\n\t\t\tobj.event_done = ( event? : any ) => this.event_add( event )\n\t\t} )\n\t}\n\n\t/// Head_content / \n\t/// \t<= Head_complete \n\t/// \t<= Add\n\tHead_content() {\n\t\treturn [].concat( this.Head_complete() , this.Add() )\n\t}\n\n\t/// Head $mol_view \n\t/// \tminimal_height 64 \n\t/// \tsub <= Head_content\n\t@ $mol_mem()\n\tHead() {\n\t\treturn new $mol_view().setup( obj => { \n\t\t\tobj.minimal_height = () => 64\n\t\t\tobj.sub = () => this.Head_content()\n\t\t} )\n\t}\n\n\t/// task_rows /\n\ttask_rows() {\n\t\treturn [] as any[]\n\t}\n\n\t/// List $mol_list rows <= task_rows\n\t@ $mol_mem()\n\tList() {\n\t\treturn new $mol_list().setup( obj => { \n\t\t\tobj.rows = () => this.task_rows()\n\t\t} )\n\t}\n\n\t/// pending_message @ \\0 items left\n\tpending_message() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"pending_message\" )\n\t}\n\n\t/// Pending $mol_view sub / <= pending_message\n\t@ $mol_mem()\n\tPending() {\n\t\treturn new $mol_view().setup( obj => { \n\t\t\tobj.sub = () => [].concat( this.pending_message() )\n\t\t} )\n\t}\n\n\t/// filter_all_label @ \\All\n\tfilter_all_label() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"filter_all_label\" )\n\t}\n\n\t/// Filter_all $mol_link \n\t/// \tsub / <= filter_all_label \n\t/// \targ * completed null\n\t@ $mol_mem()\n\tFilter_all() {\n\t\treturn new $mol_link().setup( obj => { \n\t\t\tobj.sub = () => [].concat( this.filter_all_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : null ,\n\t\t})\n\t\t} )\n\t}\n\n\t/// filter_active_label @ \\Active\n\tfilter_active_label() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"filter_active_label\" )\n\t}\n\n\t/// Filter_active $mol_link \n\t/// \tsub / <= filter_active_label \n\t/// \targ * completed false\n\t@ $mol_mem()\n\tFilter_active() {\n\t\treturn new $mol_link().setup( obj => { \n\t\t\tobj.sub = () => [].concat( this.filter_active_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : false ,\n\t\t})\n\t\t} )\n\t}\n\n\t/// filter_completed_label @ \\Completed\n\tfilter_completed_label() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"filter_completed_label\" )\n\t}\n\n\t/// Filter_completed $mol_link \n\t/// \tsub / <= filter_completed_label \n\t/// \targ * completed true\n\t@ $mol_mem()\n\tFilter_completed() {\n\t\treturn new $mol_link().setup( obj => { \n\t\t\tobj.sub = () => [].concat( this.filter_completed_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : true ,\n\t\t})\n\t\t} )\n\t}\n\n\t/// filterOptions / \n\t/// \t<= Filter_all \n\t/// \t<= Filter_active \n\t/// \t<= Filter_completed\n\tfilterOptions() {\n\t\treturn [].concat( this.Filter_all() , this.Filter_active() , this.Filter_completed() )\n\t}\n\n\t/// Filter $mol_bar sub <= filterOptions\n\t@ $mol_mem()\n\tFilter() {\n\t\treturn new $mol_bar().setup( obj => { \n\t\t\tobj.sub = () => this.filterOptions()\n\t\t} )\n\t}\n\n\t/// sweep_enabled true\n\tsweep_enabled() {\n\t\treturn true\n\t}\n\n\t/// event_sweep?event null\n\t@ $mol_mem()\n\tevent_sweep( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// sweep_label @ \\Clear completed\n\tsweep_label() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"sweep_label\" )\n\t}\n\n\t/// Sweep $mol_button_minor \n\t/// \tenabled <= sweep_enabled \n\t/// \tevent_click?event <=> event_sweep?event \n\t/// \tsub / <= sweep_label\n\t@ $mol_mem()\n\tSweep() {\n\t\treturn new $mol_button_minor().setup( obj => { \n\t\t\tobj.enabled = () => this.sweep_enabled()\n\t\t\tobj.event_click = ( event? : any ) => this.event_sweep( event )\n\t\t\tobj.sub = () => [].concat( this.sweep_label() )\n\t\t} )\n\t}\n\n\t/// foot_content / \n\t/// \t<= Pending \n\t/// \t<= Filter \n\t/// \t<= Sweep\n\tfoot_content() {\n\t\treturn [].concat( this.Pending() , this.Filter() , this.Sweep() )\n\t}\n\n\t/// Foot $mol_view sub <= foot_content\n\t@ $mol_mem()\n\tFoot() {\n\t\treturn new $mol_view().setup( obj => { \n\t\t\tobj.sub = () => this.foot_content()\n\t\t} )\n\t}\n\n\t/// panels / \n\t/// \t<= Head \n\t/// \t<= List \n\t/// \t<= Foot\n\tpanels() {\n\t\treturn [].concat( this.Head() , this.List() , this.Foot() )\n\t}\n\n\t/// Panel $mol_list rows <= panels\n\t@ $mol_mem()\n\tPanel() {\n\t\treturn new $mol_list().setup( obj => { \n\t\t\tobj.rows = () => this.panels()\n\t\t} )\n\t}\n\n\t/// Page $mol_list rows / \n\t/// \t<= Title \n\t/// \t<= Panel\n\t@ $mol_mem()\n\tPage() {\n\t\treturn new $mol_list().setup( obj => { \n\t\t\tobj.rows = () => [].concat( this.Title() , this.Panel() )\n\t\t} )\n\t}\n\n\t/// sub / <= Page\n\tsub() {\n\t\treturn [].concat( this.Page() )\n\t}\n\n\t/// task_completed!id?val false\n\t@ $mol_mem_key()\n\ttask_completed( id : any , val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// task_title!id?val \\\n\t@ $mol_mem_key()\n\ttask_title( id : any , val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// event_task_drop!id?event null\n\t@ $mol_mem_key()\n\tevent_task_drop( id : any , event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// Task_row!id $mol_app_todomvc_task_row \n\t/// \tcompleted?val <=> task_completed!id?val \n\t/// \ttitle?val <=> task_title!id?val \n\t/// \tevent_drop?event <=> event_task_drop!id?event\n\t@ $mol_mem_key()\n\tTask_row( id : any ) {\n\t\treturn new $mol_app_todomvc_task_row().setup( obj => { \n\t\t\tobj.completed = ( val? : any ) => this.task_completed(id , val )\n\t\t\tobj.title = ( val? : any ) => this.task_title(id , val )\n\t\t\tobj.event_drop = ( event? : any ) => this.event_task_drop(id , event )\n\t\t} )\n\t}\n\n} }\n\nnamespace $ { export class $mol_app_todomvc_add extends $mol_string {\n\n\t/// hint @ \\What needs to be done?\n\thint() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"hint\" )\n\t}\n\n\t/// event_press?event null\n\t@ $mol_mem()\n\tevent_press( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event * keyup?event <=> event_press?event\n\tevent() {\n\t\treturn ( { ...super.event() , \n\t\t\t\"keyup\" : ( event? : any )=> this.event_press( event ) ,\n\t\t} )\n\t}\n\n\t/// event_done?event null\n\t@ $mol_mem()\n\tevent_done( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n} }\n\nnamespace $ { export class $mol_app_todomvc_task_row extends $mol_view {\n\n\t/// minimal_height 64\n\tminimal_height() {\n\t\treturn 64\n\t}\n\n\t/// completed?val false\n\t@ $mol_mem()\n\tcompleted( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// Complete $mol_check \n\t/// \tchecked?val <=> completed?val \n\t/// \tsub /\n\t@ $mol_mem()\n\tComplete() {\n\t\treturn new $mol_check().setup( obj => { \n\t\t\tobj.checked = ( val? : any ) => this.completed( val )\n\t\t\tobj.sub = () => [] as any[]\n\t\t} )\n\t}\n\n\t/// title_hint @ \\Task title\n\ttitle_hint() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"title_hint\" )\n\t}\n\n\t/// title?val \\\n\t@ $mol_mem()\n\ttitle( val? : any ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// Title $mol_string \n\t/// \thint <= title_hint \n\t/// \tvalue?val <=> title?val\n\t@ $mol_mem()\n\tTitle() {\n\t\treturn new $mol_string().setup( obj => { \n\t\t\tobj.hint = () => this.title_hint()\n\t\t\tobj.value = ( val? : any ) => this.title( val )\n\t\t} )\n\t}\n\n\t/// event_drop?event null\n\t@ $mol_mem()\n\tevent_drop( event? : any ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// Drop $mol_button \n\t/// \tsub / \\✖\n\t/// \tevent_click?event <=> event_drop?event\n\t@ $mol_mem()\n\tDrop() {\n\t\treturn new $mol_button().setup( obj => { \n\t\t\tobj.sub = () => [].concat( \"✖\" )\n\t\t\tobj.event_click = ( event? : any ) => this.event_drop( event )\n\t\t} )\n\t}\n\n\t/// sub / \n\t/// \t<= Complete \n\t/// \t<= Title \n\t/// \t<= Drop\n\tsub() {\n\t\treturn [].concat( this.Complete() , this.Title() , this.Drop() )\n\t}\n\n\t/// attr * mol_app_todomvc_task_row_completed <= completed?val\n\tattr() {\n\t\treturn ( { ...super.attr() , \n\t\t\t\"mol_app_todomvc_task_row_completed\" : this.completed() ,\n\t\t} )\n\t}\n\n} }\n\n","interface $mol_app_todomvc_task {\n\tcompleted? : boolean\n\ttitle? : string\n}\n\nnamespace $.$mol {\n\t\n\texport class $mol_app_todomvc_add extends $.$mol_app_todomvc_add {\n\t\t\n\t\tevent_press( next? : KeyboardEvent ) {\n\t\t\tswitch( next.keyCode ) {\n\t\t\t\tcase $mol_keyboard_code.enter : return this.event_done( next )\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\texport class $mol_app_todomvc extends $.$mol_app_todomvc {\n\t\t\n\t\ttask_ids( next? : number[] ) : number[] {\n\t\t\treturn $mol_state_local.value( this.state_key( 'mol-todos' ) , next ) || []\n\t\t}\n\t\t\n\t\targ_completed() {\n\t\t\treturn $mol_state_arg.value( this.state_key( 'completed' ) )\n\t\t}\n\n\t\t@ $mol_mem()\n\t\tgroups_completed() {\n\t\t\tvar groups : { [ index : string ] : number[] } = { 'true' : [] , 'false' : [] }\n\t\t\tfor( let id of this.task_ids() ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tgroups[ String( task.completed ) ].push( id )\n\t\t\t}\n\t\t\treturn groups\n\t\t}\n\n\t\t@ $mol_mem()\n\t\ttasks_filtered() {\n\t\t\tvar completed = this.arg_completed()\n\t\t\tif( completed ) {\n\t\t\t\treturn this.groups_completed()[ completed ] || []\n\t\t\t} else {\n\t\t\t\treturn this.task_ids()\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_mem()\n\t\tcompleted_all( next? : boolean ) {\n\t\t\tif( next === void 0 ) return this.groups_completed()[ 'false' ].length === 0\n\t\t\t\n\t\t\tfor( let id of this.groups_completed()[ String( !next ) ] ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tthis.task( id , { title : task.title , completed : next } )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\thead_complete_enabled() {\n\t\t\treturn this.task_ids().length > 0 \n\t\t}\n\n\t\t@ $mol_mem()\n\t\tpending_message() {\n\t\t\tlet count = this.groups_completed()[ 'false' ].length\n\t\t\treturn ( count === 1 ) ? '1 item left' : `${count} items left`\n\t\t}\n\t\t\n\t\t_id_seed = 0\n\n\t\tevent_add( next : Event ) {\n\t\t\tvar title = this.task_title_new() \n\t\t\tif( !title ) return\n\t\t\t\n\t\t\tvar id = ++ this._id_seed\n\t\t\tvar task = { completed : false , title }\n\t\t\tthis.task( id , task )\n\t\t\t\n\t\t\tthis.task_ids( this.task_ids().concat( id ) )\n\t\t\tthis.task_title_new( '' )\n\t\t}\n\n\t\t@ $mol_mem()\n\t\ttask_rows() {\n\t\t\treturn this.tasks_filtered().map( ( id , index )=> this.Task_row( index ) )\n\t\t}\n\t\t\n\t\ttask( id : number , next? : $mol_app_todomvc_task ) {\n\t\t\tconst key = this.state_key( `mol-todos-${id}` )\n\t\t\tif( next === void 0 ) {\n\t\t\t\treturn $mol_state_local.value<$mol_app_todomvc_task>( key ) || { title : '' , completed : false }\n\t\t\t}\n\t\t\t\n\t\t\t$mol_state_local.value( key , next )\n\t\t\t\n\t\t\treturn next || void 0\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\ttask_completed( index : number , next? : boolean ) {\n\t\t\tvar id = this.tasks_filtered()[ index ]\n\t\t\tif( next === void 0 ) return this.task( id ).completed\n\t\t\t\n\t\t\tthis.task( id , $mol_merge_dict( this.task( id ) , { completed : next } ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\ttask_title( index : number , next? : string ) {\n\t\t\tvar id = this.tasks_filtered()[ index ]\n\t\t\tif( next === void 0 ) return this.task( id ).title\n\t\t\t\n\t\t\tthis.task( id , $mol_merge_dict( this.task( id ) , { title : next } ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tevent_task_drop( index : number , next? : Event ) {\n\t\t\tvar tasks = this.tasks_filtered()\n\t\t\tvar id = tasks[index]\n\t\t\ttasks = tasks.slice( 0 , index ).concat( tasks.slice( index + 1 , tasks.length ) )\n\t\t\tthis.task( id , null )\n\t\t\tthis.task_ids( tasks )\n\t\t}\n\n\t\tevent_sweep() {\n\t\t\tthis.task_ids( this.task_ids().filter( id => {\n\t\t\t\tif( !this.task( id ).completed ) return true\n\t\t\t\tthis.task( id , null )\n\t\t\t\treturn false\n\t\t\t} ) )\n\t\t}\n\t\t\n\t\tpanels() {\n\t\t\treturn [\n\t\t\t\tthis.Head() , \n\t\t\t\tthis.List() ,\n\t\t\t\tthis.foot_visible() ? this.Foot() : null ,\n\t\t\t]\n\t\t}\n\t\t\n\t\tfoot_visible() {\n\t\t\treturn this.task_ids().length > 0\n\t\t}\n\n\t\tsweep_enabled() {\n\t\t\treturn this.groups_completed()[ 'true' ].length > 0\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_app_todomvc_demo extends $mol_app_todomvc {\n\n} }\n\n"]} \ No newline at end of file +{"version":3,"sources":["../../../mol.jam.js","mol.ts","../../../func/func.ts","../../../deprecated/deprecated.ts","../../../log/log.web.ts","../../../object/object.ts","../../../defer/defer.ts","../../../state/stack/stack.ts","../../../atom/atom.ie.web.js","../../../atom/atom.ts","../../../mem/mem.ts","../../../window/window.web.ts","../../../dom/context/context.ts","../../../dom/context/context.web.ts","../../../dom/make/make.ts","../../../dom/render/render.ts","../../../view/dom/dom.ts","../../../view/view.ts","../../../view/view.web.ts","../../../view/selection/selection.ts","../../../view/selection/selection.web.ts","../../../keyboard/code.ts","../../../string/-view.tree/string.view.tree.ts","../../../string/string.view.ts","../../../button/-view.tree/button.view.tree.ts","../../../button/button.view.ts","../../../button/-view.tree/button_types.view.tree.ts","../../../merge/dict/dict.ts","../../../state/arg/arg.web.ts","../../../link/-view.tree/link.view.tree.ts","../../../link/link.view.ts","../../../check/-view.tree/check.view.tree.ts","../../../check/check.view.ts","../../../scroll/-view.tree/scroll.view.tree.ts","../../../scroll/scroll.view.ts","../../../state/local/local.ts","../../../state/local/local.web.ts","../../../const/const.ts","../../../http/http.ts","../../../http/resource/resource.ts","../../../file/file.web.ts","../../../locale/locale.ts","../../../list/-view.tree/list.view.tree.ts","../../../list/list.view.ts","../../../bar/-view.tree/bar.view.tree.ts","../-view.tree/todomvc.view.tree.ts","../todomvc.view.ts","../demo/-view.tree/demo.view.tree.ts"],"names":[],"mappings":"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","file":"web.js","sourcesContent":[null,"declare class WeakMap< Key , Value > {\n\tdelete( key : Key ) : boolean\n\tget( key : Key ) : Value\n\thas( key : Key ) : boolean\n\tset( key : Key , value : Value ) : Map< Key , Value >\n}\n\ndeclare class Map< Key , Value > {\n\tclear(): void\n\tdelete( key : Key ) : boolean\n\tforEach< Context = any >( handler : ( this : Context , value : Value , key : Key , map : Map< Key , Value > ) => void , context? : Context ) : void\n\tget( key : Key ) : Value\n\thas( key : Key ) : boolean\n\tset( key : Key , value : Value ) : Map< Key , Value >\n\tsize : number\n}\n\ndeclare class Set< Value > {\n\tadd( value : Value ) : Set< Value >\n\tclear() : void\n\tdelete( value : Value ) : boolean\n\tforEach< Context = any >( handler : ( this : Context , value : Value , key : Value , map : Set< Value > ) => void , context? : Context ) : void\n\thas( value : Value ) : boolean\n\tsize : number\n}\n","interface Function {\n\tname : string\n}\n\nnamespace $ {\n\t\n\texport var $mol_func_name_dict = new WeakMap< Function , string >()\n\n\texport function $mol_func_name( func : Function ) : string {\n\t\tif( func.name ) return func.name\n\t\t\n\t\tlet name = $mol_func_name_dict.get( func )\n\t\tif( name != null ) return name\n\t\t\n\t\tname = Function.prototype.toString.call( func ).match( /^function ([a-z0-9_$]*)/ )[ 1 ]\n\t\t$mol_func_name_dict.set( func , name )\n\t\t\n\t\treturn name\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_deprecated< Host , Method extends Function >( message : string ) {\n\t\treturn function(\n\t\t\thost : Host ,\n\t\t\tfield : string ,\n\t\t\tdescr : TypedPropertyDescriptor< Method >\n\t\t) {\n\t\t\tconst value = descr.value\n\t\t\tdescr.value = function $mol_deprecated_wrapper() {\n\t\t\t\tconsole.warn( `${ host.constructor }::${ field } is deprecated. ${ message }` )\n\t\t\t\treturn value.apply( this , arguments )\n\t\t\t}\n\t\t}\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_log( path : string , values : any[] ) {\n\t\t\n\t\tvar filter = $mol_log.filter()\n\t\tif( filter == null ) return\n\t\tif( path.indexOf( filter ) === -1 ) return\n\t\t\n\t\tvar time = new Date().toLocaleTimeString()\n\t\tconsole.log( time , path , values )\n\t}\n\t\n\texport namespace $mol_log {\n\t\t\n\t\tvar _filter : string\n\t\t\n\t\texport function filter( next? : string ) {\n\t\t\tif( next !== void 0 ) {\n\t\t\t\tif( next == null ) {\n\t\t\t\t\tsessionStorage.removeItem( '$mol_log.filter()' )\n\t\t\t\t} else {\n\t\t\t\t\tsessionStorage.setItem( '$mol_log.filter()' , next )\n\t\t\t\t}\n\t\t\t\t_filter = next\n\t\t\t}\n\t\t\t\n\t\t\tif( _filter !== void 0 ) return _filter\n\t\t\t\n\t\t\treturn _filter = sessionStorage.getItem( '$mol_log.filter()' )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\t/// Common superclass that provides base functionality.\n\texport class $mol_object {\n\t\t\n\t\tClass() {\n\t\t\treturn this.constructor as any\n\t\t}\n\t\t\n\t\tstatic toString() : string {\n\t\t\treturn $mol_func_name( this )\n\t\t}\n\t\t\n\t\t/// Owner object.\n\t\tprivate 'object_owner()' : Object\n\t\t\n\t\tobject_owner( next? : Object ) {\n\t\t\tif( this[ 'object_owner()' ] ) return this[ 'object_owner()' ]\n\t\t\treturn this[ 'object_owner()' ] = next\n\t\t}\n\t\t\n\t\t/// Field in owner where this object is stored.\n\t\tprivate 'object_field()' : string\n\t\t\n\t\tobject_field( next? : string ) {\n\t\t\tif( this[ 'object_field()' ] ) return this[ 'object_field()' ] || ''\n\t\t\treturn this[ 'object_field()' ] = next\n\t\t}\n\t\t\n\t\t/// JS-path to this object from global scope. Can not be redefined.\n\t\ttoString() {\n\t\t\tvar path = ''\n\t\t\t\n\t\t\tvar owner = this.object_owner()\n\t\t\tif( owner ) path = owner.toString()\n\t\t\t\n\t\t\tvar field = this.object_field()\n\t\t\tif( field ) path += '.' + field\n\t\t\t\n\t\t\treturn path\n\t\t}\n\t\t\n\t\ttoJSON() {\n\t\t\treturn this.toString()\n\t\t}\n\t\t\n\t\t/// Generic factory than allows to override all fields\n\t\tpublic static make< Instance >( this : { new () : Instance } , config : Partial< Instance > ) : Instance {\n\t\t\tconst instance = new this\n\t\t\tfor( let key in config ) instance[ key ] = config[ key ]\n\t\t\treturn instance\n\t\t}\n\t\t\n\t\t/// Helper to override fields in fluent style.\n\t\t@ $mol_deprecated( `Use $mol_object.make() instead.` )\n\t\tsetup( script : ( obj : this )=> void ) : this {\n\t\t\tscript( this )\n\t\t\treturn this\n\t\t}\n\t\t\n\t\t'destroyed()' = false\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next === void 0 ) return this[ 'destroyed()' ]\n\t\t\tthis[ 'destroyed()' ] = next\n\t\t\tthis.log( [ '.destroyed()' , next ] )\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tlog( values : any[] ) {\n\t\t\tif( $mol_log.filter() == null ) return\n\t\t\t$mol_log( this.toString() , values )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_defer extends $mol_object {\n\t\t\n\t\tconstructor( public run : ()=> void ) {\n\t\t\tsuper()\n\t\t\t$mol_defer.add( this )\n\t\t}\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next ) $mol_defer.drop( this )\n\t\t\treturn super.destroyed( next )\n\t\t}\n\t\t\n\t\tstatic all : $mol_defer[] = []\n\t\tstatic timer = 0\n\t\t\n\t\tstatic scheduleNative : ( handler : ()=> void ) => number = ( typeof requestAnimationFrame == 'function' )\n\t\t\t? handler => requestAnimationFrame( handler )\n\t\t\t: handler => setTimeout( handler , 16 )\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.timer ) return\n\t\t\t\n\t\t\tthis.timer = this.scheduleNative(\n\t\t\t\t()=> {\n\t\t\t\t\tthis.timer = 0\n\t\t\t\t\tthis.run()\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t\t\n\t\tstatic unschedule() {\n\t\t\tif( !this.timer ) return\n\t\t\t\n\t\t\tcancelAnimationFrame( this.timer )\n\t\t\tthis.timer = 0\n\t\t}\n\t\t\n\t\tstatic add( defer : $mol_defer ) {\n\t\t\tthis.all.push( defer )\n\t\t\tthis.schedule()\n\t\t}\n\t\t\n\t\tstatic drop( defer : $mol_defer ) {\n\t\t\tvar index = this.all.indexOf( defer )\n\t\t\tif( index >= 0 ) this.all.splice( index , 1 )\n\t\t}\n\t\t\n\t\tstatic run() {\n\t\t\tif( this.all.length === 0 ) return\n\t\t\tthis.schedule()\n\t\t\tfor( var defer : $mol_defer ; defer = this.all.pop() ; ) defer.run()\n\t\t\t//this.unschedule()\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\t/// Global storage of temporary state\n\texport var $mol_state_stack = new Map< string , any >()\n\t\n}\n",null,"declare var Proxy : any\n\nnamespace $ {\n\t\n\texport enum $mol_atom_status {\n\t\tobsolete = 'obsolete' ,\n\t\tchecking = 'checking' ,\n\t\tpulling = 'pulling' ,\n\t\tactual = 'actual' ,\n\t}\n\t\n\texport class $mol_atom< Value = null > extends $mol_object {\n\t\t\n\t\tmasters : Set< $mol_atom > | null = null\n\t\tslaves : Set< $mol_atom > | null = null\n\t\t\n\t\tstatus = $mol_atom_status.obsolete\n\t\tautoFresh = true\n\t\t\n\t\thandler : ( next? : Value|Error , force? : $mol_atom_force )=> Value|void\n\t\thost : { [ key : string ] : any }\n\t\tfield : string\n\t\t\n\t\tconstructor(\n\t\t\thost : any ,\n\t\t\thandler : ( next? : Value , force? : $mol_atom_force )=> Value|void = ()=> undefined,\n\t\t\tfield = ''\n\t\t) {\n\t\t\tsuper()\n\t\t\t\n\t\t\tthis.handler = handler\n\t\t\tthis.host = Object( host )\n\t\t\tthis.field = field\n\t\t}\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next ) {\n\t\t\t\tthis.unlink()\n\t\t\t\t\n\t\t\t\tconst host = this.host\n\t\t\t\tconst value = host[ this.field ]\n\t\t\t\tif( value instanceof $mol_object ) {\n\t\t\t\t\tif( ( value.object_owner() === host ) && ( value.object_field() === this.field ) ) {\n\t\t\t\t\t\tvalue.destroyed( true );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\thost[ this.field ] = undefined\n\t\t\t\thost[ this.field + '@' ] = undefined\n\t\t\t\t\n\t\t\t\tthis.status = $mol_atom_status.obsolete\n\t\t\t}\n\t\t\t\n\t\t\treturn super.destroyed( next )\n\t\t}\n\t\t\n\t\tunlink() {\n\t\t\tthis.disobey_all()\n\t\t\tthis.check_slaves()\n\t\t}\n\t\t\n\t\ttoString() {\n\t\t\treturn `${ this.host }.${ this.field }@`\n\t\t}\n\t\t\n\t\tget( force? : $mol_atom_force ) {\n\t\t\tif( this.status === $mol_atom_status.pulling ) {\n\t\t\t\tthrow new Error( `Cyclic atom dependency of ${ this }` )\n\t\t\t}\n\t\t\t\n\t\t\tthis.actualize( force )\n\t\t\t\n\t\t\tconst slave = $mol_atom.stack[0]\n\t\t\tif( slave ) {\n\t\t\t\tthis.lead( slave )\n\t\t\t\tslave.obey( this )\n\t\t\t}\n\t\t\t\n\t\t\tconst value : Value = this.host[ this.field ]\n\t\t\t\n\t\t\tif( typeof Proxy !== 'function' && value instanceof Error ) {\n\t\t\t\tthrow value\n\t\t\t}\n\t\t\t\n\t\t\treturn value\n\t\t}\n\t\t\n\t\tactualize( force? : $mol_atom_force ) {\n\t\t\t\n\t\t\t//this.log([ 'actualize' ])\n\t\t\t\n\t\t\tif( !force && this.status === $mol_atom_status.actual ) return\n\t\t\t\n\t\t\tconst slave = $mol_atom.stack[0]\n\t\t\t$mol_atom.stack[0] = this\n\t\t\t\n\t\t\tif( !force && this.status === $mol_atom_status.checking ) {\n\t\t\t\t\n\t\t\t\tthis.masters!.forEach(\n\t\t\t\t\tmaster => {\n\t\t\t\t\t\tif( this.status !== $mol_atom_status.checking ) return\n\t\t\t\t\t\tmaster.actualize()\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tif( this.status === $mol_atom_status.checking ) {\n\t\t\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif( force || this.status !== $mol_atom_status.actual ) {\n\t\t\t\t\n\t\t\t\tconst oldMasters = this.masters\n\t\t\t\tthis.masters = null\n\t\t\t\t\n\t\t\t\tif( oldMasters ) oldMasters.forEach(\n\t\t\t\t\tmaster => {\n\t\t\t\t\t\tmaster.dislead( this )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tthis.status = $mol_atom_status.pulling\n\t\t\t\tconst next = this.pull( force )\n\t\t\t\t\n\t\t\t\tthis.push( next )\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t$mol_atom.stack[0] = slave\n\t\t}\n\t\t\n\t\tpull( force? : $mol_atom_force ) {\n\t\t\ttry {\n\t\t\t\treturn this.handler( this._next , force )\n\t\t\t} catch( error ) {\n\t\t\t\tif( error[ '$mol_atom_catched' ] ) return error\n\t\t\t\tif( error instanceof $mol_atom_wait ) return error\n\t\t\t\t\n\t\t\t\tconsole.error( error.stack || error )\n\t\t\t\t\n\t\t\t\tif(!( error instanceof Error )) {\n\t\t\t\t\terror = new Error( error.stack || error )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\terror['$mol_atom_catched'] = true\n\t\t\t\treturn error\n\t\t\t}\n\t\t}\n\t\t\n\t\t_next? : Value|Error\n\t\t\n\t\tset( next : Value ) : Value {\n\t\t\tconst next_normal = this.normalize( next , this._next )\n\t\t\tif( next_normal === this._next ) return this.get()\n\t\t\tif( next_normal === this.host[ this.field ] ) return this.get()\n\t\t\t\n\t\t\tthis._next = next_normal\n\t\t\tthis.obsolete()\n\t\t\treturn this.get()\n\t\t}\n\t\t\n\t\tnormalize( next : Value , prev? : Value|Error ) : Value {\n\t\t\tif( next === prev ) return next\n\t\t\t\n\t\t\tif( ( next instanceof Array ) && ( prev instanceof Array ) && ( next.length === prev.length ) ) {\n\t\t\t\tfor( let i = 0 ; i < next.length ; ++i ) {\n\t\t\t\t\tif( next[ i ] !== prev[ i ] ) return next as any\n\t\t\t\t}\n\t\t\t\treturn prev as any\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tpush( next_raw? : Value|Error ) {\n\t\t\tthis._next = undefined\n\t\t\t\n\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\n\t\t\tconst host = this.host\n\t\t\tconst prev = host[ this.field ]\n\t\t\t\n\t\t\tif( next_raw === undefined ) return prev\n\t\t\t\n\t\t\tlet next = ( next_raw instanceof Error ) ? next_raw : this.normalize( next_raw , prev )\n\t\t\t\n\t\t\tif( next === prev ) return prev\n\t\t\t\n\t\t\tif( next instanceof $mol_object ) {\n\t\t\t\tnext.object_field( this.field )\n\t\t\t\tnext.object_owner( host )\n\t\t\t}\n\t\t\t\n\t\t\tif(( typeof Proxy === 'function' )&&( next instanceof Error )) {\n\t\t\t\tnext = new Proxy( next , {\n\t\t\t\t\tget( target : Error ) {\n\t\t\t\t\t\tthrow target.valueOf()\n\t\t\t\t\t} ,\n\t\t\t\t\townKeys( target : Error ) {\n\t\t\t\t\t\tthrow target.valueOf()\n\t\t\t\t\t} ,\n\t\t\t\t} )\n\t\t\t}\n\t\t\t\n\t\t\thost[ this.field ] = next\n\t\t\tthis.log( [ 'push' , next , prev ] )\n\t\t\t\n\t\t\tthis.obsolete_slaves()\n\t\t\t\n\t\t\treturn next as Value\n\t\t}\n\t\t\n\t\tobsolete_slaves() {\n\t\t\tif( !this.slaves ) return\n\t\t\t\n\t\t\tthis.slaves.forEach( slave => slave.obsolete() )\n\t\t}\n\t\t\n\t\tcheck_slaves() {\n\t\t\tif( this.slaves ) {\n\t\t\t\tthis.slaves.forEach( slave => slave.check() )\n\t\t\t} else {\n\t\t\t\tif( this.autoFresh ) $mol_atom.actualize( this )\n\t\t\t}\n\t\t}\n\t\t\n\t\tcheck() {\n\t\t\t//if( this.status === $mol_atom_status.pulling ) {\n\t\t\t//\tthrow new Error( `May be obsolated while pulling ${ this }` )\n\t\t\t//}\n\t\t\t\n\t\t\tif( this.status === $mol_atom_status.actual ) {\n\t\t\t\t//this.log([ 'checking' ])\n\t\t\t\tthis.status = $mol_atom_status.checking\n\t\t\t\t\n\t\t\t\tthis.check_slaves()\n\t\t\t}\n\t\t}\n\t\t\n\t\tobsolete() {\n\t\t\tif( this.status === $mol_atom_status.obsolete ) return\n\t\t\t\n\t\t\t//if( this.status === $mol_atom_status.pulling ) {\n\t\t\t//\tthrow new Error( `Obsolated while pulling ${ this }` )\n\t\t\t//} \n\t\t\t\n\t\t\t// this.log( [ 'obsolete' ] )\n\t\t\t\n\t\t\tthis.status = $mol_atom_status.obsolete\n\t\t\t\n\t\t\tthis.check_slaves()\n\t\t\t\n\t\t\treturn\n\t\t}\n\t\t\n\t\tlead( slave : $mol_atom ) {\n\t\t\tif( !this.slaves ) {\n\t\t\t\tthis.slaves = new Set<$mol_atom>()\n\t\t\t\t$mol_atom.unreap( this )\n\t\t\t}\n\t\t\tthis.slaves.add( slave )\n\t\t}\n\t\t\n\t\tdislead( slave : $mol_atom ) {\n\t\t\tif( !this.slaves ) return\n\t\t\t\n\t\t\tif( this.slaves.size === 1 ) {\n\t\t\t\tthis.slaves = null\n\t\t\t\t$mol_atom.reap( this )\n\t\t\t} else {\n\t\t\t\tthis.slaves.delete( slave )\n\t\t\t}\n\t\t}\n\t\t\n\t\tobey( master : $mol_atom ) {\n\t\t\tif( !this.masters ) this.masters = new Set< $mol_atom >()\n\t\t\tthis.masters.add( master )\n\t\t}\n\t\t\n\t\tdisobey( master : $mol_atom ) {\n\t\t\tif( !this.masters ) return\n\t\t\tthis.masters.delete( master )\n\t\t}\n\t\t\n\t\tdisobey_all() {\n\t\t\tif( !this.masters ) return\n\t\t\t\n\t\t\tthis.masters.forEach( master => master.dislead( this ) )\n\t\t\t\n\t\t\tthis.masters = null\n\t\t}\n\t\t\n\t\tvalue( next? : Value , force? : $mol_atom_force ) {\n\t\t\tif( next === undefined ) {\n\t\t\t\treturn this.get( force )\n\t\t\t} else {\n\t\t\t\tif( force ) {\n\t\t\t\t\treturn this.push( next )\n\t\t\t\t} else {\n\t\t\t\t\treturn this.set( next )\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic stack = [] as $mol_atom[]\n\t\tstatic updating : $mol_atom[] = []\n\t\tstatic reaping = new Set< $mol_atom >()\n\t\tstatic scheduled = false\n\t\t\n\t\tstatic actualize( atom : $mol_atom ) {\n\t\t\t$mol_atom.updating.push( atom )\n\t\t\t$mol_atom.schedule()\n\t\t}\n\t\t\n\t\tstatic reap( atom : $mol_atom ) {\n\t\t\t$mol_atom.reaping.add( atom )\n\t\t\t$mol_atom.schedule()\n\t\t}\n\t\t\n\t\tstatic unreap( atom : $mol_atom ) {\n\t\t\t$mol_atom.reaping.delete( atom )\n\t\t}\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.scheduled ) return\n\t\t\t\n\t\t\tnew $mol_defer(\n\t\t\t\t() => {\n\t\t\t\t\tif( !this.scheduled ) return\n\t\t\t\t\tthis.scheduled = false\n\t\t\t\t\tthis.sync()\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\tthis.scheduled = true\n\t\t}\n\t\t\n\t\tstatic sync() {\n\t\t\t$mol_log( '$mol_atom.sync' , [] )\n\t\t\tthis.schedule()\n\t\t\t\n\t\t\twhile( true ) {\n\t\t\t\tconst atom = this.updating.shift()\n\t\t\t\tif( !atom ) break\n\t\t\t\tif( this.reaping.has( atom ) ) continue\n\t\t\t\tif( !atom.destroyed() ) atom.get()\n\t\t\t}\n\t\t\t\n\t\t\twhile( this.reaping.size ) {\n\t\t\t\tthis.reaping.forEach(\n\t\t\t\t\tatom => {\n\t\t\t\t\t\tthis.reaping.delete( atom )\n\t\t\t\t\t\tif( !atom.slaves ) atom.destroyed( true )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\t\n\t\t\tthis.scheduled = false\n\t\t}\n\t\t\n\t\tthen< Next >( done : ( prev? : Value )=> Next , fail? : ( error : Error )=> Next ) {\n\t\t\t\n\t\t\tlet prev : Value\n\t\t\tlet next : Next\n\t\t\t\n\t\t\tconst atom = new $mol_atom(\n\t\t\t\tthis ,\n\t\t\t\t() => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( prev == undefined ) {\n\t\t\t\t\t\t\tconst val = this.get()\n\t\t\t\t\t\t\tif( val instanceof $mol_atom_wait ) return val\n\t\t\t\t\t\t\tif( val ) val.valueOf()\n\t\t\t\t\t\t\tprev = val\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( next == undefined ) {\n\t\t\t\t\t\t\tconst val = done( prev )\n\t\t\t\t\t\t\tif( val instanceof $mol_atom_wait ) return val\n\t\t\t\t\t\t\tif( val ) val.valueOf()\n\t\t\t\t\t\t\tnext = val\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn next\n\n\t\t\t\t\t} catch( error ) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( error instanceof $mol_atom_wait ) return error\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( fail ) return fail( error )\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn error\n\t\t\t\t\t}\n\n\t\t\t\t} ,\n\t\t\t)\n\t\t\t\n\t\t\t$mol_atom.actualize( atom )\n\t\t\t\n\t\t\treturn atom\n\t\t}\n\t\t\n\t\tcatch( fail : ( error : Error )=> Value ) {\n\t\t\treturn this.then( next => next , fail )\n\t\t}\n\t\t\n\t}\n\t\n\t$mol_state_stack.set( '$mol_atom.stack' , $mol_atom.stack )\n\t\n\texport class $mol_atom_wait extends Error {\n\t\tname = '$mol_atom_wait'\n\t\t\n\t\tconstructor( message = 'Wait...' ) {\n\t\t\tsuper( message )\n\t\t\tthis['__proto__'] = new.target.prototype\n\t\t}\n\t}\n\t\n\texport class $mol_atom_force extends Object {\n\t\t$mol_atom_force : boolean\n\t\tstatic $mol_atom_force : boolean\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_mem< Host , Value >(\n\t\tconfig? : {\n\t\t\tlazy? : boolean\n\t\t}\n\t) {\n\t\t\n\t\treturn function(\n\t\t\tobj : Host ,\n\t\t\tname : string ,\n\t\t\tdescr : TypedPropertyDescriptor< ( next? : Value , force? : $mol_atom_force )=> Value >\n\t\t) {\n\t\t\tconst value = descr.value\n\t\t\t\n\t\t\tdescr.value = function( next? : Value , force? : $mol_atom_force ) {\n\t\t\t\tconst host : any = this\n\t\t\t\tconst field = name + \"()\"\n\t\t\t\tconst fieldA = field + '@'\n\t\t\t\t\n\t\t\t\tlet atom : $mol_atom = host[ fieldA ]\n\t\t\t\tif( !atom ) {\n\t\t\t\t\tif( force && ( next === undefined ) ) return next\n\t\t\t\t\t\n\t\t\t\t\thost[ fieldA ] = atom = new $mol_atom(\n\t\t\t\t\t\thost ,\n\t\t\t\t\t\tvalue.bind( host ) as any , // FIXME: type checking\n\t\t\t\t\t\tfield ,\n\t\t\t\t\t)\n\t\t\t\t\tif( config ) atom.autoFresh = !config.lazy\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn atom.value( next , force )\n\t\t\t}\n\t\t\t\n\t\t\tvoid( (descr.value)[ 'value' ] = value )\n\t\t}\n\t\t\n\t}\n\t\n\texport function $mol_mem_key< Host , Key , Value >(\n\t\tconfig? : {\n\t\t\tlazy? : boolean\n\t\t}\n\t) {\n\t\t\n\t\treturn function(\n\t\t\tobj : Host ,\n\t\t\tname : string ,\n\t\t\tdescr : TypedPropertyDescriptor< ( key : Key , next? : Value , force? : $mol_atom_force )=> Value >\n\t\t) {\n\t\t\tconst value = descr.value\n\n\t\t\tdescr.value = function( key : Key , next? : Value , force? : $mol_atom_force ) {\n\t\t\t\tconst host : any = this\n\t\t\t\tconst field = name + \"(\" + JSON.stringify( key ) + \")\"\n\t\t\t\tconst fieldA = field + '@'\n\t\t\t\t\n\t\t\t\tlet atom : $mol_atom = host[ fieldA ]\n\t\t\t\tif( !atom ) {\n\t\t\t\t\tif( force && ( next === undefined ) ) return next\n\t\t\t\t\t\n\t\t\t\t\thost[ fieldA ] = atom = new $mol_atom(\n\t\t\t\t\t\thost ,\n\t\t\t\t\t\tvalue.bind( host , key ) as any , // FIXME: type checking\n\t\t\t\t\t\tfield ,\n\t\t\t\t\t)\n\t\t\t\t\tif( config ) atom.autoFresh = !config.lazy\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn atom.value( next , force )\n\t\t\t}\n\t\t\t\n\t\t\tvoid( (descr.value)[ 'value' ] = value )\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\texport class $mol_window extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic size( next? : {\n\t\t\twidth : number\n\t\t\theight : number\n\t\t} ) {\n\t\t\treturn next || {\n\t\t\t\twidth : window.innerWidth ,\n\t\t\t\theight : window.innerHeight ,\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\twindow.addEventListener( 'resize' , ()=> {\n\t\t$mol_window.size( null )\n\t} )\n\t\n}\n","namespace $ {\n\t\n\texport var $mol_dom_context : Window & {\n\t\tNode : typeof Node\n\t\tElement : typeof Element\n\t\tHTMLElement : typeof HTMLElement\n\t\tXMLHttpRequest : typeof XMLHttpRequest\n\t}\n\t\n}\n","namespace $ {\n\t\n\t$mol_dom_context = window as any\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_dom_make( id? : string , localName = 'span' , namespaceURI = 'http://www.w3.org/1999/xhtml' ) {\n\t\tconst document = $mol_dom_context.document\n\t\t\n\t\tlet node = id && document.getElementById( id ) as Element\n\t\tif( !node ) {\n\t\t\tnode = document.createElementNS( namespaceURI , localName )\n\t\t\tif( id ) node.id = id\n\t\t}\n\t\t\n\t\treturn node\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_dom_render_fields (\n\t\tel : Element ,\n\t\tfields : { [ key : string ] : any }\n\t) {\n\t\tfor( let key in fields ) {\n\t\t\t\n\t\t\tconst val : any = fields[ key ]\n\t\t\t\n\t\t\tif( val === undefined ) continue\n\t\t\tif( el[ key ] === val ) continue\n\t\t\t\n\t\t\tel[ key ] = val\n\t\t\tif( el[ key ] === val ) continue\n\t\t\t\n\t\t\tconst setter = ()=> {\n\t\t\t\tel.removeEventListener( 'DOMNodeInsertedIntoDocument' , setter , { passive : true } as any )\n\t\t\t\tnew $mol_defer( ()=> {\n\t\t\t\t\tel[ key ] = val\n\t\t\t\t} )\n\t\t\t}\n\t\t\tel.addEventListener( 'DOMNodeInsertedIntoDocument' , setter , { passive : true } as any )\n\t\t\t\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_children (\n\t\tel : Element ,\n\t\tchildNodes : NodeList | Array< Node | string | number | boolean | { render : ()=> Node } >\n\t) {\n\t\tconst nodes = [] as ( Node | string )[]\n\t\t\n\t\tfor( let i = 0 ; i < childNodes.length ; ++i ) {\n\t\t\tlet node = childNodes[ i ] as any\n\t\t\tif( node == null ) continue\n\t\t\tif( Object( node ) === node ) {\n\t\t\t\tif( node[ 'render' ] ) node = node[ 'render' ]()\n\t\t\t\tnodes.push( node )\n\t\t\t} else {\n\t\t\t\tnodes.push( String( node ) )\n\t\t\t}\n\t\t}\n\t\t\n\t\tlet nextNode = el.firstChild\n\t\tfor( let view_ of nodes ) {\n\t\t\tconst view = view_.valueOf() as Node\n\t\t\t\n\t\t\tif( view instanceof $mol_dom_context.Node ) {\n\t\t\t\t\n\t\t\t\twhile( true ) {\n\t\t\t\t\tif( !nextNode ) {\n\t\t\t\t\t\tel.appendChild( view )\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tif( nextNode == view ) {\n\t\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t\t\tbreak\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif( nodes.indexOf( nextNode ) === -1 ) {\n\t\t\t\t\t\t\tconst nn = nextNode.nextSibling\n\t\t\t\t\t\t\tel.removeChild( nextNode )\n\t\t\t\t\t\t\tnextNode = nn\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tel.insertBefore( view , nextNode )\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\tif( nextNode && nextNode.nodeName === '#text' ) {\n\t\t\t\t\tnextNode.nodeValue = String( view )\n\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t} else {\n\t\t\t\t\tconst textNode = $mol_dom_context.document.createTextNode( String( view ) )\n\t\t\t\t\tel.insertBefore( textNode , nextNode )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\twhile( nextNode ) {\n\t\t\tconst currNode = nextNode\n\t\t\tnextNode = currNode.nextSibling\n\t\t\tel.removeChild( currNode )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_attributes (\n\t\tel : Element ,\n\t\tattrs : { [ key : string ] : string|number|boolean }\n\t) {\n\t\tfor( let name in attrs ) {\n\t\t\tlet val = attrs[ name ] as any\n\t\t\tif( el.getAttribute( name ) === val ) continue\n\t\t\tif( val === null || val === false ) el.removeAttribute( name )\n\t\t\telse el.setAttribute( name , String( val ) )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_styles (\n\t\tel : Element ,\n\t\tstyles : { [ key : string ] : string|number }\n\t) {\n\t\tfor( let name in styles ) {\n\t\t\tlet val = styles[ name ]\n\t\t\t\n\t\t\tconst style = ( el ).style as any\n\t\t\tconst cur = style[ name ]\n\t\t\t\n\t\t\tif( typeof val === 'number' ) {\n\t\t\t\tif( parseFloat( cur ) == val ) continue\n\t\t\t\tstyle[ name ] = `${ val }px`\n\t\t\t}\n\t\t\t\n\t\t\tif( cur !== val ) style[ name ] = val\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_events (\n\t\tel : Element ,\n\t\tevents : { [ key : string ] : ( event : Event )=> any }\n\t) {\n\t\tfor( let name in events ) {\n\t\t\tel.addEventListener( name , events[ name ] )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_events_async (\n\t\tel : Element ,\n\t\tevents : { [ key : string ] : ( event : Event )=> any }\n\t) {\n\t\tfor( let name in events ) {\n\t\t\tel.addEventListener( name , events[ name ] , { passive : true } as any )\n\t\t}\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_view_dom extends $mol_object {\n\t\t\n\t\tstatic nodes = new WeakMap< $mol_view , Element >()\n\t\t\n\t\tstatic node( view : $mol_view ) {\n\t\t\tlet node = $mol_view_dom.nodes.get( view )\n\t\t\tif( !node ) {\n\t\t\t\tnode = $mol_dom_make( view.toString() , view.dom_name() , view.dom_name_space() )\n\t\t\t\t$mol_view_dom.mount( view , node )\n\t\t\t}\n\t\t\treturn node\n\t\t}\n\t\t\n\t\tstatic mount( view : $mol_view , node : Element ) {\n\t\t\tif( $mol_view_dom.nodes.get( view ) === node ) return node \n\t\t\t$mol_view_dom.nodes.set( view , node )\n\t\t\t\n\t\t\t$mol_dom_render_attributes( node , view.attr_static() )\n\t\t\t$mol_dom_render_events( node , view.event() )\n\t\t\t$mol_dom_render_events_async( node , view.event_async() )\n\t\t\t\n\t\t\treturn node\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport namespace $mol { let $mol }\n\n\texport type $mol_view_context = ( typeof $ )&( typeof $.$mol )\n\t\n\texport function $mol_view_visible_width() {\n\t\treturn $mol_window.size().width\n\t}\n\t\n\texport function $mol_view_visible_height() {\n\t\treturn $mol_window.size().height\n\t}\n\t\n\texport function $mol_view_state_key( suffix : string ) {\n\t\treturn suffix\n\t}\n\n\t/// Reactive statefull lazy ViewModel\n\texport class $mol_view extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic Root( id : number ) {\n\t\t\treturn new this\n\t\t}\n\t\t\n\t\ttitle() : string {\n\t\t\treturn this.Class().toString()\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tfocused ( next?: boolean ) {\n\t\t\tlet node = $mol_view_dom.node( this )\n\t\t\tconst value = $mol_view_selection.focused( next === void 0 ? void 0 : [ node ] )\n\t\t\treturn value.indexOf( node ) !== -1\n\t\t} \n\t\t\n\t\t@ $mol_mem()\n\t\tcontext( next? : $mol_view_context ) {\n\t\t\treturn next || $ as any\n\t\t}\n\t\t\n\t\tget $() {\n\t\t\treturn this.context()\n\t\t}\n\t\tset $( next : $mol_view_context ) {\n\t\t\tthis.context( next )\n\t\t}\n\t\t\n\t\tcontext_sub() {\n\t\t\treturn this.context()\n\t\t}\n\t\t\n\t\tstate_key( suffix = '' ) {\n\t\t\treturn this.$.$mol_view_state_key( suffix )\n\t\t}\n\t\t\n\t\t/// Name of element that created when element not found in DOM\n\t\tdom_name() {\n\t\t\treturn this.constructor.toString().replace( '$' , '' )\n\t\t}\n\t\t\n\t\t/// NameSpace of element that created when element not found in DOM\n\t\tdom_name_space() { return 'http://www.w3.org/1999/xhtml' }\n\t\t\n\t\t/// Raw child views\n\t\tsub() {\n\t\t\treturn > null\n\t\t}\n\t\t\n\t\t/// Visible sub views with defined context()\n\t\t/// Render all by default\n\t\tsub_visible() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return sub\n\t\t\t\n\t\t\tconst context = this.context_sub()\n\t\t\tsub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.context( context )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn sub\n\t\t}\n\t\t\n\t\t/// Minimal height that used for lazy rendering\n\t\t@ $mol_mem()\n\t\tminimal_width() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return 0\n\t\t\t\n\t\t\tlet min = 0\n\t\t\tsub.forEach( view => {\n\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\tmin = Math.max( min , view.minimal_width() )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn min\n\t\t}\n\t\t\n\t\t/// Minimal width that used for lazy rendering\n\t\t@ $mol_mem()\n\t\tminimal_height() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return 0\n\t\t\t\n\t\t\tlet min = 0\n\t\t\tsub.forEach( view => {\n\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\tmin = Math.max( min , view.minimal_height() )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn min\n\t\t}\n\t\t\n\t\t'view_classes()' : Function[]\n\t\tview_classes() {\n\t\t\tconst proto = Object.getPrototypeOf( this ) as $mol_view\n\t\t\tif( this[ 'view_classes()' ] ) return this[ 'view_classes()' ]\n\t\t\t\n\t\t\tlet current = proto\n\t\t\tconst classes = [] as Function[]\n\t\t\t\n\t\t\twhile( current ) {\n\t\t\t\tclasses.push( current.constructor )\n\t\t\t\tif(!( current instanceof $mol_view )) break\n\t\t\t\tcurrent = Object.getPrototypeOf( current )\n\t\t\t}\n\t\t\t\n\t\t\treturn this['view_classes()'] = classes\n\t\t}\n\t\t\n\t\tdom_node() {\n\t\t\treturn $mol_view_dom.node( this )\n\t\t}\n\t\t\n\t\t@ $mol_deprecated( 'Use $mol_view.render instead.' )\n\t\tdom_tree() {\n\t\t\treturn this.render()\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\trender() : Element {\n\t\t\tconst node = this.dom_node()\n\t\t\t\n\t\t\ttry {\n\t\t\t\t\n\t\t\t\tfor( let plugin of this.plugins() ) {\n\t\t\t\t\tif( typeof plugin['render'] === 'function' ) plugin.render()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tconst sub = this.sub_visible()\n\t\t\t\tif( sub ) $mol_dom_render_children( node , sub )\n\t\t\t\t\n\t\t\t\t$mol_dom_render_attributes( node , this.attr() )\n\t\t\t\t$mol_dom_render_styles( node , this.style() )\n\t\t\t\t$mol_dom_render_fields( node , this.field() )\n\t\t\t\t\n\t\t\t} catch( error ) {\n\t\t\t\t\n\t\t\t\t$mol_dom_render_attributes( node , { mol_view_error : error.name } )\n\t\t\t\t\n\t\t\t\tif( error instanceof $mol_atom_wait ) return node\n\t\t\t\t\n\t\t\t\ttry { void( ( node as HTMLElement ).innerText = error.message ) } catch( e ) {}\n\t\t\t\t\n\t\t\t\tif( error[ '$mol_atom_catched' ] ) return node\n\t\t\t\t\n\t\t\t\tconsole.error( error )\n\n\t\t\t\terror[ '$mol_atom_catched' ] = true\n\t\t\t}\n\t\t\t\n\t\t\treturn node\n\t\t}\n\t\t\n\t\tattr_static() : { [ key : string ] : string|number|boolean } {\n\t\t\tlet attrs = { 'mol_view_error' : false } as any\n\t\t\t\n\t\t\t/// Set BEM-like element-attributes with inheritance support\n\t\t\tconst owner = this.object_owner()\n\t\t\tif( owner instanceof $mol_view ) {\n\t\t\t\tconst suffix = this.object_field().replace( /\\(.*/ , '' )\n\t\t\t\tconst suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1)\n\t\t\t\towner.view_classes().forEach( Class => {\n\t\t\t\t\tif( suffix in Class.prototype ) {\n\t\t\t\t\t\tconst attrName = Class.toString().replace( /\\$/g , '' ) + suffix2\n\t\t\t\t\t\tattrs[ attrName ] = ''\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t}\n\t\t\t\n\t\t\t/// Set BEM-like block-attributes with inheritance support\n\t\t\tthis.view_classes().forEach( Class => {\n\t\t\t\tattrs[ Class.toString().replace( /\\$/g , '' ).toLowerCase() ] = ''\n\t\t\t} )\n\t\t\t\n\t\t\treturn attrs\n\t\t}\n\t\t\n\t\tattr() : { [ key : string ] : string|number|boolean } {\n\t\t\treturn {\n\t\t\t\t'mol_view_error' : false ,\n\t\t\t}\n\t\t}\n\t\t\n\t\tstyle() : { [ key : string ] : string|number } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tfield() : { [ key : string ] : any } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tevent() : { [ key : string ] : ( event : Event )=> void } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tevent_async() : { [ key : string ] : ( event : Event )=> void } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\t'locale_contexts()' : string[]\n\t\tlocale_contexts() {\n\t\t\treturn this['locale_contexts()'] || ( this[ 'locale_contexts()' ] = this.view_classes().map( String ) )\n\t\t}\n\t\t\n\t\tplugins() {\n\t\t\treturn [] as $mol_view[]\n\t\t}\n\t\t\n\t}\n\t\n}\n","interface Window {\n\tcordova : any\n}\n\nnamespace $ {\n\n\t/// Autoattach view roots to loaded DOM.\n\t$mol_dom_context.document.addEventListener( window.cordova ? 'deviceready' : 'DOMContentLoaded' , event => {\n\t\t\t\n\t\tconst nodes = $mol_dom_context.document.querySelectorAll( '[mol_view_root]' )\n\t\t\n\t\tfor( let i = nodes.length - 1 ; i >= 0 ; --i ) {\n\t\t\tconst name = nodes.item( i ).getAttribute( 'mol_view_root' )\n\t\t\t\n\t\t\tconst View = $[ name ]\n\t\t\tif( !View ) {\n\t\t\t\tconsole.error( `Can not attach view. Class not found: ${ name }` )\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t\n\t\t\tconst view = View.Root( i )\n\t\t\t\n\t\t\t$mol_view_dom.mount( view , nodes.item( i ) )\n\t\t\t\n\t\t\tlet win = new $mol_atom( `$mol_view.Root(${ i })` , ()=> {\n\t\t\t\tview.render()\n\t\t\t\t$mol_dom_context.document.title = view.title()\n\t\t\t\treturn null\n\t\t\t} )\n\t\t\t\n\t\t\tnew $mol_defer( ()=> win.get() )\n\t\t}\n\t\t\n\t\t$mol_defer.run()\n\t} )\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_view_selection extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic focused( next? : Element[] , force? : $mol_atom_force ) {\n\t\t\tif( next === void 0 ) return [] as Element[]\n\t\t\t\n\t\t\tif( next.length !== 1 ) throw new Error( 'Length must be equals 1' )\n\t\t\t\n\t\t\tconst node = next[ 0 ] as HTMLElement\n\t\t\t\n\t\t\tnode.focus()\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic position( ...diff : any[] ) {\n\t\t\tif( diff.length ) {\n\t\t\t\tif( !diff[ 0 ] ) return diff[ 0 ]\n\t\t\t\t\n\t\t\t\tvar start = diff[ 0 ].start\n\t\t\t\tvar end = diff[ 0 ].end\n\t\t\t\tif( !( start <= end ) ) throw new Error( `Wrong offsets (${start},${end})` )\n\t\t\t\t\n\t\t\t\tvar root = $mol_dom_context.document.getElementById( diff[ 0 ].id )\n\t\t\t\troot.focus()\n\t\t\t\t\n\t\t\t\tvar range = new Range\n\t\t\t\t\n\t\t\t\tvar cur = root.firstChild\n\t\t\t\twhile( cur !== root ) {\n\t\t\t\t\twhile( cur.firstChild ) cur = cur.firstChild\n\t\t\t\t\tif( cur.nodeValue ) {\n\t\t\t\t\t\tvar length = cur.nodeValue.length\n\t\t\t\t\t\tif( length >= start ) break\n\t\t\t\t\t\tstart -= length\n\t\t\t\t\t}\n\t\t\t\t\twhile( !cur.nextSibling ) {\n\t\t\t\t\t\tcur = cur.parentNode\n\t\t\t\t\t\tif( cur === root ) {\n\t\t\t\t\t\t\tstart = root.childNodes.length\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trange.setStart( cur , start )\n\t\t\t\t\n\t\t\t\tvar cur = root.firstChild\n\t\t\t\twhile( cur !== root ) {\n\t\t\t\t\twhile( cur.firstChild ) cur = cur.firstChild\n\t\t\t\t\tif( cur.nodeValue ) {\n\t\t\t\t\t\tvar length = cur.nodeValue.length\n\t\t\t\t\t\tif( length >= end ) break\n\t\t\t\t\t\tend -= length\n\t\t\t\t\t}\n\t\t\t\t\twhile( !cur.nextSibling ) {\n\t\t\t\t\t\tcur = cur.parentNode\n\t\t\t\t\t\tif( cur === root ) {\n\t\t\t\t\t\t\tend = root.childNodes.length\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trange.setEnd( cur , end )\n\t\t\t\t\n\t\t\t\tvar sel = $mol_dom_context.document.getSelection()\n\t\t\t\tsel.removeAllRanges()\n\t\t\t\tsel.addRange( range )\n\t\t\t\t\n\t\t\t\treturn diff[ 0 ]\n\t\t\t} else {\n\t\t\t\tvar sel = $mol_dom_context.document.getSelection()\n\t\t\t\tif( sel.rangeCount === 0 ) return null\n\t\t\t\tvar range = sel.getRangeAt( 0 )\n\t\t\t\t\n\t\t\t\tvar el = range.commonAncestorContainer\n\t\t\t\twhile( el && !el.id ) el = el.parentElement\n\t\t\t\t\n\t\t\t\tif( !el ) return { id : null , start : 0 , end : 0 }\n\t\t\t\t\n\t\t\t\tvar meter = new Range\n\t\t\t\tmeter.selectNodeContents( el )\n\t\t\t\t\n\t\t\t\tmeter.setEnd( range.startContainer , range.startOffset )\n\t\t\t\tvar startOffset = meter.toString().length\n\t\t\t\t\n\t\t\t\tmeter.setEnd( range.endContainer , range.endOffset )\n\t\t\t\tvar endOffset = meter.toString().length\n\t\t\t\t\n\t\t\t\treturn { id : el.id , start : startOffset , end : endOffset }\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic onFocus( event : FocusEvent ) {\n\t\t\tconst parents : Element[] = []\n\t\t\tlet element = event.target as HTMLElement\n\t\t\t\n\t\t\twhile( element ) {\n\t\t\t\tparents.push( element )\n\t\t\t\telement = element.parentNode as HTMLElement\n\t\t\t}\n\t\t\t\n\t\t\t$mol_view_selection.focused( parents , $mol_atom_force )\n\t\t}\n\t\t\n\t\tstatic onBlur( event : FocusEvent ) {\n\t\t\tconst focused = this.focused()\n\t\t\tsetTimeout( ()=> {\n\t\t\t\tif( focused !== this.focused() ) return\n\t\t\t\tthis.focused( [] , $mol_atom_force )\n\t\t\t} )\n\t\t}\n\t}\n\t\n}\n","namespace $ {\n\t\n\t$mol_dom_context.document.addEventListener( 'selectionchange' , event => {\n\t\t$mol_view_selection.position( undefined , $mol_atom_force )\n\t} )\n\t\n\t$mol_dom_context.document.addEventListener( 'focus' , event => $mol_view_selection.onFocus( event ) , true )\n\t$mol_dom_context.document.addEventListener( 'blur' , event => $mol_view_selection.onBlur( event ) , true )\n\t\n}\n","namespace $ {\n export enum $mol_keyboard_code {\n backspace = 8,\n tab = 9,\n enter = 13,\n shift= 16,\n ctrl = 17,\n alt = 18,\n pause = 19,\n capsLock = 20,\n escape = 27,\n space = 32,\n pageUp = 33,\n pageDown = 34,\n end = 35,\n home = 36,\n left = 37,\n up = 38,\n right = 39,\n down = 40,\n insert = 45,\n delete = 46,\n key0 = 48,\n key1 = 49,\n key2 = 50,\n key3 = 51,\n key4 = 52,\n key5 = 53,\n key6 = 54,\n key7 = 55,\n key8 = 56,\n key9 = 57,\n A = 65,\n B = 66,\n C = 67,\n D = 68,\n E = 69,\n F = 70,\n G = 71,\n H = 72,\n I = 73,\n J = 74,\n K = 75,\n L = 76,\n M = 77,\n N = 78,\n O = 79,\n P = 80,\n Q = 81,\n R = 82,\n S = 83,\n T = 84,\n U = 85,\n V = 86,\n W = 87,\n X = 88,\n Y = 89,\n Z = 90,\n metaLeft = 91,\n metaRight = 92,\n select = 93,\n numpad0 = 96,\n numpad1 = 97,\n numpad2 = 98,\n numpad3 = 99,\n numpad4 = 100,\n numpad5 = 101,\n numpad6 = 102,\n numpad7 = 103,\n numpad8 = 104,\n numpad9 = 105,\n multiply = 106,\n add = 107,\n subtract = 109,\n decimal = 110,\n divide = 111,\n F1 = 112,\n F2 = 113,\n F3 = 114,\n F4 = 115,\n F5 = 116,\n F6 = 117,\n F7 = 118,\n F8 = 119,\n F9 = 120,\n F10 = 121,\n F11 = 122,\n F12 = 123,\n numLock = 144,\n scrollLock = 145,\n semicolon = 186,\n equals = 187,\n comma = 188,\n dash = 189,\n period = 190,\n forwardSlash = 191,\n graveAccent = 192,\n bracketOpen = 219,\n slashBack = 220,\n bracketClose = 221,\n quoteSingle = 222\n }\n}\n","namespace $ { export class $mol_string extends $mol_view {\n\n\t/// dom_name \\input\n\tdom_name() {\n\t\treturn \"input\"\n\t}\n\n\t/// enabled true\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/// disabled false\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/// value?val \\\n\t@ $mol_mem()\n\tvalue( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// value_changed?val <=> value?val\n\t@ $mol_mem()\n\tvalue_changed( val? : any , force? : $mol_atom_force ) {\n\t\treturn this.value( val )\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// type?val \\text\n\t@ $mol_mem()\n\ttype( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"text\"\n\t}\n\n\t/// field * \n\t/// \t^ \n\t/// \tdisabled <= disabled \n\t/// \tvalue <= value_changed?val \n\t/// \tplaceholder <= hint \n\t/// \ttype <= type?val\n\tfield() {\n\t\treturn ({\n\t\t\t...super.field() ,\n\t\t\t\"disabled\" : this.disabled() ,\n\t\t\t\"value\" : this.value_changed() ,\n\t\t\t\"placeholder\" : this.hint() ,\n\t\t\t\"type\" : this.type() ,\n\t\t})\n\t}\n\n\t/// event_change?event null\n\t@ $mol_mem()\n\tevent_change( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event_key_press?event null\n\t@ $mol_mem()\n\tevent_key_press( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event * \n\t/// \t^ \n\t/// \tinput?event <=> event_change?event \n\t/// \tkeypress?event <=> event_key_press?event\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"input\" : ( event? : any )=> this.event_change( event ) ,\n\t\t\t\"keypress\" : ( event? : any )=> this.event_key_press( event ) ,\n\t\t})\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_string extends $.$mol_string {\n\t\t\n\t\t_timer = 0\n\t\t\n\t\tevent_change( next? : Event ) {\n\t\t\tconst val = ( next.target as HTMLInputElement ).value.trim()\n\t\t\t\n\t\t\tclearTimeout( this._timer )\n\t\t\tthis._timer = setTimeout( () => this.value( val ) , 200 )\n\t\t}\n\t\t\n\t\tevent_key_press( next? : KeyboardEvent ) { \n\t\t\tif( next.keyCode === $mol_keyboard_code.enter ) {\n\t\t\t\tthis.value( ( next.target as HTMLInputElement ).value.trim() )\n\t\t\t}\n\t\t} \n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t}\n}\n","namespace $ { export class $mol_button extends $mol_view {\n\n\t/// enabled true\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/// event_click?event null\n\t@ $mol_mem()\n\tevent_click( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event_activate?event <=> event_click?event\n\t@ $mol_mem()\n\tevent_activate( event? : any , force? : $mol_atom_force ) {\n\t\treturn this.event_click( event )\n\t}\n\n\t/// event_key_press?event null\n\t@ $mol_mem()\n\tevent_key_press( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event * \n\t/// \t^ \n\t/// \tclick?event <=> event_activate?event \n\t/// \tkeypress?event <=> event_key_press?event\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"click\" : ( event? : any )=> this.event_activate( event ) ,\n\t\t\t\"keypress\" : ( event? : any )=> this.event_key_press( event ) ,\n\t\t})\n\t}\n\n\t/// disabled false\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/// tab_index \\0\n\ttab_index() {\n\t\treturn \"0\"\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// attr * \n\t/// \t^ \n\t/// \tdisabled <= disabled \n\t/// \trole \\button\n\t/// \ttabindex <= tab_index \n\t/// \ttitle <= hint\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"disabled\" : this.disabled() ,\n\t\t\t\"role\" : \"button\" ,\n\t\t\t\"tabindex\" : this.tab_index() ,\n\t\t\t\"title\" : this.hint() ,\n\t\t})\n\t}\n\n\t/// sub / <= title\n\tsub() {\n\t\treturn [].concat( this.title() )\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_button extends $.$mol_button {\n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t\t\n\t\tevent_activate( next : Event ) {\n\t\t\tif( !this.enabled() ) return\n\t\t\tthis.event_click( next )\n\t\t}\n\t\t\n\t\tevent_key_press ( event: KeyboardEvent ) { \n\t\t\tif( event.keyCode === $mol_keyboard_code.enter ) {\n\t\t\t\treturn this.event_activate( event )\n\t\t\t}\n\t\t} \n\t\t\n\t\ttab_index() {\n\t\t\treturn this.enabled() ? super.tab_index() : null\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { export class $mol_button_major extends $mol_button {\n\n} }\n\nnamespace $ { export class $mol_button_minor extends $mol_button {\n\n} }\n\nnamespace $ { export class $mol_button_danger extends $mol_button {\n\n} }\n\n","namespace $ {\n\t\n\texport function $mol_merge_dict< Target , Source >( target : Target , source : Source ) : Target & Source {\n\t\tlet result = {}\n\t\tfor( let key in target ) result[ key ] = ( target )[ key ]\n\t\tfor( let key in source ) result[ key ] = ( source )[ key ]\n\t\treturn result\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_state_arg< Value > extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic href( next? : string , force? : $mol_atom_force ) {\n\t\t\tif( next ) history.replaceState( history.state , $mol_dom_context.document.title , `${ next }` )\n\t\t\treturn window.location.search + window.location.hash\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic dict( next? : { [ key : string ] : string } ) {\n\t\t\tvar href = this.href( next && this.make_link( next ) )\n\t\t\tvar chunks = href.split( /[\\/\\?#&;]/g )\n\t\t\t\n\t\t\tvar params : { [ key : string ] : string } = {}\n\t\t\tchunks.forEach(\n\t\t\t\tchunk => {\n\t\t\t\t\tif( !chunk ) return\n\t\t\t\t\tvar vals = chunk.split( '=' ).map( decodeURIComponent )\n\t\t\t\t\tparams[ vals.shift() ] = vals.join( '=' )\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\treturn params\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic value( key : string , next? : string ) {\n\t\t\tconst nextDict = ( next === void 0 ) ? void 0 : $mol_merge_dict( this.dict() , { [ key ] : next } ) \n\t\t\tconst next2 = this.dict( nextDict )[ key ]\n\t\t\treturn ( next2 == null ) ? null : next2\n\t\t}\n\t\t\n\t\tstatic link( next : { [ key : string ] : string } ) {\n\t\t\treturn this.make_link( $mol_merge_dict( this.dict() , next ) )\n\t\t}\n\t\t\n\t\tstatic make_link( next : { [ key : string ] : string } ) {\n\t\t\tconst chunks : string[] = []\n\t\t\tfor( let key in next ) {\n\t\t\t\tif( null == next[ key ] ) continue\n\t\t\t\tchunks.push( [ key ].concat( next[ key ] ? next[ key ] : [] ).map( encodeURIComponent ).join( '=' ) )\n\t\t\t}\n\t\t\t\n\t\t\treturn '#' + chunks.join( '/' )\n\t\t}\n\t\t\n\t\tconstructor( public prefix = '' ) {\n\t\t\tsuper()\n\t\t}\n\t\t\n\t\tvalue( key : string , next? : string ) {\n\t\t\treturn $mol_state_arg.value( this.prefix + key , next )\n\t\t}\n\t\t\n\t\tsub( postfix : string ) {\n\t\t\treturn new $mol_state_arg( this.prefix + postfix + '.' )\n\t\t}\n\t\t\n\t\tlink( next : { [ key : string ] : string } ) {\n\t\t\tvar prefix = this.prefix\n\t\t\tvar dict : { [ key : string ] : string } = {}\n\t\t\tfor( var key in next ) {\n\t\t\t\tdict[ prefix + key ] = next[ key ]\n\t\t\t}\n\t\t\treturn $mol_state_arg.link( dict )\n\t\t}\n\t\t\n\t}\n\t\n\twindow.addEventListener( 'hashchange' , event => $mol_state_arg.href( undefined , $mol_atom_force ) )\n\t\n}\n","namespace $ { export class $mol_link extends $mol_view {\n\n\t/// minimal_height 36\n\tminimal_height() {\n\t\treturn 36\n\t}\n\n\t/// dom_name \\a\n\tdom_name() {\n\t\treturn \"a\"\n\t}\n\n\t/// uri \\\n\turi() {\n\t\treturn \"\"\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// target \\_self\n\ttarget() {\n\t\treturn \"_self\"\n\t}\n\n\t/// current false\n\tcurrent() {\n\t\treturn false\n\t}\n\n\t/// attr * \n\t/// \t^ \n\t/// \thref <= uri \n\t/// \ttitle <= hint \n\t/// \ttarget <= target \n\t/// \tmol_link_current <= current\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"href\" : this.uri() ,\n\t\t\t\"title\" : this.hint() ,\n\t\t\t\"target\" : this.target() ,\n\t\t\t\"mol_link_current\" : this.current() ,\n\t\t})\n\t}\n\n\t/// sub / <= title\n\tsub() {\n\t\treturn [].concat( this.title() )\n\t}\n\n\t/// arg *\n\targ() {\n\t\treturn ({\n\t\t})\n\t}\n\n} }\n\n","namespace $.$mol {\n\t\n\texport class $mol_link extends $.$mol_link {\n\t\t\n\t\t@ $mol_mem()\n\t\turi() {\n\t\t\treturn new $mol_state_arg( this.state_key() ).link( this.arg() )\n\t\t}\n\t\t\n\t\tcurrent() {\n\t\t\treturn this.uri() === $mol_state_arg.link( {} )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_check extends $mol_button {\n\n\t/// checked?val false\n\t@ $mol_mem()\n\tchecked( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// attr * \n\t/// \t^ \n\t/// \tmol_check_checked <= checked?val \n\t/// \taria-checked <= checked?val \n\t/// \trole \\checkbox\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"mol_check_checked\" : this.checked() ,\n\t\t\t\"aria-checked\" : this.checked() ,\n\t\t\t\"role\" : \"checkbox\" ,\n\t\t})\n\t}\n\n\t/// Icon null\n\tIcon() {\n\t\treturn null\n\t}\n\n\t/// title \\\n\ttitle() {\n\t\treturn \"\"\n\t}\n\n\t/// label / <= title\n\tlabel() {\n\t\treturn [].concat( this.title() )\n\t}\n\n\t/// Label $mol_view sub <= label\n\t@ $mol_mem()\n\tLabel() {\n\t\treturn $mol_view.make({\n\t\t\tsub : () => this.label() ,\n\t\t})\n\t}\n\n\t/// sub / \n\t/// \t<= Icon \n\t/// \t<= Label\n\tsub() {\n\t\treturn [].concat( this.Icon() , this.Label() )\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_check extends $.$mol_check {\n\n\t\tevent_click( next? : Event ) {\n\t\t\tthis.checked( !this.checked() )\n\t\t\tnext.preventDefault()\n\t\t}\n\t\t\n\t\tsub() {\n\t\t\treturn [\n\t\t\t\tthis.Icon() ,\n\t\t\t\tthis.label().some( item => item ) ? this.Label() : null ,\n\t\t\t]\n\t\t}\n\n\t}\n}\n","namespace $ { export class $mol_scroll extends $mol_view {\n\n\t/// minimal_height 0\n\tminimal_height() {\n\t\treturn 0\n\t}\n\n\t/// scroll_top?val 0\n\t@ $mol_mem()\n\tscroll_top( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// scroll_left?val 0\n\t@ $mol_mem()\n\tscroll_left( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// scroll_bottom?val 0\n\t@ $mol_mem()\n\tscroll_bottom( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// scroll_right?val 0\n\t@ $mol_mem()\n\tscroll_right( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// field * \n\t/// \t^ \n\t/// \tscrollTop <= scroll_top?val \n\t/// \tscrollLeft <= scroll_left?val \n\t/// \tscrollBottom <= scroll_bottom?val \n\t/// \tscrollRight <= scroll_right?val\n\tfield() {\n\t\treturn ({\n\t\t\t...super.field() ,\n\t\t\t\"scrollTop\" : this.scroll_top() ,\n\t\t\t\"scrollLeft\" : this.scroll_left() ,\n\t\t\t\"scrollBottom\" : this.scroll_bottom() ,\n\t\t\t\"scrollRight\" : this.scroll_right() ,\n\t\t})\n\t}\n\n\t/// event_scroll?event null\n\t@ $mol_mem()\n\tevent_scroll( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event_async * \n\t/// \t^ \n\t/// \tscroll?event <=> event_scroll?event \n\t/// \t- DOMSubtreeModified?event <=> event_repos?event\n\tevent_async() {\n\t\treturn ({\n\t\t\t...super.event_async() ,\n\t\t\t\"scroll\" : ( event? : any )=> this.event_scroll( event ) ,\n\t\t})\n\t}\n\n} }\n\n","namespace $.$mol {\n\t\n\texport function $mol_scroll_top() {\n\t\treturn 0\n\t}\n\t\n\texport function $mol_scroll_left() {\n\t\treturn 0\n\t}\n\t\n\texport function $mol_scroll_moving() {\n\t\treturn false\n\t}\n\t\n\texport class $mol_scroll extends $.$mol_scroll {\n\n\t\t// scroll_top( next? : number ) {\n\t\t// \treturn $mol_state_session.value( `${ this }.scroll_top()` , next ) || 0\n\t\t// }\n\t\t// \n\t\t// scroll_left( next? : number ) {\n\t\t// \treturn $mol_state_session.value( `${ this }.scroll_left()` , next ) || 0\n\t\t// }\n\t\t\n\t\t@ $mol_mem()\n\t\tscroll_bottom( next? : number ) {\n\t\t\treturn next || 0\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tscroll_right( next? : number ) {\n\t\t\treturn next || 0\n\t\t}\n\t\t\n\t\tevent_scroll( next? : Event ) {\n\t\t\tthis.moving( true )\n\t\t\tthis.moving_task_stop()\n\t\t\t\n\t\t\tnew $mol_defer( ()=> {\n\t\t\t\tconst el = this.dom_node() as HTMLElement\n\t\t\t\t\n\t\t\t\tconst top = Math.max( 0 , el.scrollTop )\n\t\t\t\tconst left = Math.max( 0 , el.scrollLeft )\n\t\t\t\t\n\t\t\t\tthis.scroll_top( top )\n\t\t\t\tthis.scroll_left( left )\n\t\t\t\t\n\t\t\t\tthis.scroll_bottom( Math.max( 0 , el.scrollHeight - top - el.offsetHeight ) )\n\t\t\t\tthis.scroll_right( Math.max( 0 , el.scrollWidth - left - el.offsetWidth ) )\n\t\t\t} )\n\t\t}\n\t\t\n\t\tevent_repos( next? : Event ) {\n\t\t\tnew $mol_defer( ()=> {\n\t\t\t\tconst el = this.dom_node() as HTMLElement\n\t\t\t\t\n\t\t\t\tthis.scroll_bottom( Math.max( 0 , el.scrollHeight - this.scroll_top() - el.offsetHeight ) )\n\t\t\t\tthis.scroll_right( Math.max( 0 , el.scrollWidth - this.scroll_left() - el.offsetWidth ) )\n\t\t\t} )\n\t\t}\n\t\t\n\t\t_moving_task_timer = 0\n\t\tmoving_task_stop() {\n\t\t\tclearTimeout( this._moving_task_timer )\n\t\t\tthis._moving_task_timer = setTimeout( ()=> this.moving( false ) , 50 )\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tmoving( next? : boolean ) {\n\t\t\treturn next || false\n\t\t}\n\n\t\t@ $mol_mem()\n\t\tcontext_sub( ) {\n\t\t\tconst context = this.context()\n\t\t\tconst subContext : $mol_view_context = Object.create( context )\n\t\t\tsubContext.$mol_view_visible_height = ()=> {\n\t\t\t\tconst sizeWin = $mol_window.size()\n\t\t\t\tconst limit = context.$mol_view_visible_height()\n\t\t\t\treturn this.scroll_top() + Math.min( sizeWin.height , limit )\n\t\t\t}\n\t\t\tsubContext.$mol_view_visible_width = ()=> {\n\t\t\t\tconst sizeWin = $mol_window.size()\n\t\t\t\tconst limit = context.$mol_view_visible_width()\n\t\t\t\treturn this.scroll_left() + Math.min( sizeWin.width , limit )\n\t\t\t}\n\t\t\tsubContext.$mol_scroll_top = ()=> this.scroll_top()\n\t\t\tsubContext.$mol_scroll_left = ()=> this.scroll_left()\n\t\t\tsubContext.$mol_scroll_moving = ()=> this.moving()\n\t\t\treturn subContext\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\texport class $mol_state_local< Value > extends $mol_object {\n\t\t\n\t\tstatic 'native()' : Pick< Storage , 'getItem'|'setItem'|'removeItem' >\n\t\tstatic native() {\n\t\t\tif( this['native()'] ) return this['native()']\n\n\t\t\tcheck : try {\n\t\t\t\tconst native = $mol_dom_context.localStorage\n\t\t\t\tif( !native ) break check\n\t\t\t\t\n\t\t\t\tnative.setItem( '' , '' )\n\t\t\t\tnative.removeItem( '' )\n\t\t\t\treturn this['native()'] = native\n\t\t\t} catch( error ) {\n\t\t\t\tconsole.warn( error )\n\t\t\t}\n\n\t\t\treturn this['native()'] = {\n\t\t\t\tgetItem( key : string ) {\n\t\t\t\t\treturn this[ ':' + key ]\n\t\t\t\t} ,\n\t\t\t\tsetItem( key : string , value : string ) {\n\t\t\t\t\tthis[ ':' + key ] = value\n\t\t\t\t} ,\n\t\t\t\tremoveItem( key : string ) {\n\t\t\t\t\tthis[ ':' + key ] = void 0\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t@ $mol_mem_key()\n\t\tstatic value< Value >( key : string , next? : Value , force? : $mol_atom_force ) : Value {\n\t\t\tif( next === void 0 ) return JSON.parse( this.native().getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) this.native().removeItem( key )\n\t\t\telse this.native().setItem( key , JSON.stringify( next ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_local.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\twindow.addEventListener( 'storage' , event => {\n\t\t$.$mol_state_local.value( event.key , void 0 , $mol_atom_force )\n\t} )\n}\n","namespace $ { \n\texport function $mol_const< Value >( value : Value ) {\n\t\tvar getter = <{ () : Value , '()' : Value }> ( () => value )\n\t\tgetter['()'] = value\n\t\treturn getter\n\t}\n}\n","namespace $ {\n\t\n\texport class $mol_http extends $mol_object {\n\t\t\n\t\tstatic resource( uri : string ) {\n\t\t\tconst resolver = $mol_dom_context.document.createElement( 'a' )\n\t\t\tresolver.href = uri\n\t\t\treturn this.resource_absolute( resolver.href )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic resource_absolute( uri : string ) {\n\t\t\treturn $mol_http.make({\n\t\t\t\turi : $mol_const( uri )\n\t\t\t})\n\t\t}\n\t\t\n\t\turi() { return '' }\n\t\t\n\t\tmethod_get() { return 'Get' }\n\t\tmethod_put() { return 'Put' }\n\t\t\n\t\tcredentials() { return null as {\n\t\t\tlogin? : string\n\t\t\tpassword? : string\n\t\t} }\n\t\t\n\t\theaders() {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\t'request()' : XMLHttpRequest\n\t\trequest() {\n\t\t\tif( this[ 'request()' ] ) return this[ 'request()' ]\n\t\t\t\n\t\t\tvar next = this[ 'request()' ] = new $mol_dom_context.XMLHttpRequest\n\t\t\t\n\t\t\tnext.withCredentials = Boolean( this.credentials() )\n\t\t\t\n\t\t\tnext.onload = ( event : Event )=> {\n\t\t\t\tif(( next.status === 0 )||( Math.floor( next.status / 100 ) === 2 )) {\n\t\t\t\t\tthis.response( next , $mol_atom_force )\n\t\t\t\t} else {\n\t\t\t\t\tthis.response( new Error( next.statusText || next.responseText ) as any , $mol_atom_force )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tnext.onerror = ( event : ErrorEvent ) => {\n\t\t\t\tthis.response( event.error || new Error( 'Unknown HTTP error' ) , $mol_atom_force )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tdestroyed( next? : boolean ) {\n\t\t\tif( next ) {\n\t\t\t\tconst native = this[ 'reques()' ]\n\t\t\t\tif( native ) native.abort()\n\t\t\t}\n\t\t\treturn super.destroyed( next )\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tresponse( next? : any , force? : $mol_atom_force ) : XMLHttpRequest {\n\t\t\tconst creds = this.credentials()\n\t\t\tconst native = this.request()\n\t\t\tconst method = ( next === void 0 ) ? this.method_get() : this.method_put()\n\t\t\tconst uri = this.uri()\n\t\t\t\n\t\t\tnative.open( method , uri , true , creds && creds.login , creds && creds.password )\n\t\t\t\n\t\t\tconst headers = this.headers()\n\t\t\tfor( let name in headers ) native.setRequestHeader( name , headers[ name ] )\n\t\t\t\n\t\t\tnative.send( next )\n\t\t\t\n\t\t\tthrow new $mol_atom_wait( `${ method } ${ uri }` )\n\t\t}\n\t\t\n\t\ttext( next? : string , force? : $mol_atom_force ) : string {\n\t\t\treturn this.response( next , force ).responseText\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tjson< Content >( next? : Content , force? : $mol_atom_force ) : Content {\n\t\t\tconst next2 = next && JSON.stringify( next , null , '\\t' )\n\t\t\treturn JSON.parse( this.text( next2 , force ) )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_http_resource extends $mol_http {\n\t\t\n\t\t@ $mol_deprecated( 'Use $mol_http.resource insted.' )\n\t\tstatic item( uri : string ) {\n\t\t\treturn $mol_http.resource( uri )\n\t\t}\n\t\t\n\t}\n\t\n\texport class $mol_http_resource_json {\n\t\t\n\t\t@ $mol_deprecated( 'Use $mol_http.resource insted.' )\n\t\tstatic item( uri : string ) {\n\t\t\treturn $mol_http.resource( uri )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_file extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic absolute( path : string ) {\n\t\t\treturn $mol_file.make({\n\t\t\t\tpath : $mol_const( path )\n\t\t\t})\n\t\t}\n\t\t\n\t\tstatic relative( path : string ) : $mol_file {\n\t\t\tconst resolver = $mol_dom_context.document.createElement( 'a' )\n\t\t\tresolver.href = path\n\t\t\t\n\t\t\treturn this.absolute( resolver.href )\n\t\t}\n\t\t\n\t\tpath() {\n\t\t\treturn '.'\n\t\t}\n\t\t\n\t\tparent() {\n\t\t\treturn this.resolve( '..' )\n\t\t}\n\t\t\n\t\tname() {\n\t\t\treturn this.path().replace( /^.*\\//, '' )\n\t\t}\n\t\t\n\t\text() {\n\t\t\tvar match = /((?:\\.\\w+)+)$/.exec( this.path() )\n\t\t\treturn match && match[ 1 ].substring( 1 )\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tcontent( next? : string , force? : $mol_atom_force ) {\n\t\t\treturn $mol_http.resource( this.path() ).text( next )\n\t\t}\n\t\t\n\t\tresolve( path : string ) : $mol_file {\n\t\t\tlet res = this.path() + '/' + path\n\t\t\t\n\t\t\twhile( true ) {\n\t\t\t\tlet prev = res\n\t\t\t\tres = res.replace( /\\/[^\\/.]+\\/\\.\\.\\// , '/' )\n\t\t\t\tif( prev === res ) break\n\t\t\t}\n\t\t\t\n\t\t\treturn this.Class().absolute( res )\n\t\t}\n\t\t\n\t\trelate( base = this.Class().relative( '.' ) ) {\n\t\t\tthrow new Error( 'Not implemented yet' )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport interface $mol_locale_dict {\n\t\t[ key : string ] : string\n\t}\n\t\n\texport class $mol_locale extends $mol_object {\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic lang_default() {\n\t\t\treturn 'en'\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic lang( next? : string ) {\n\t\t\treturn $mol_state_local.value( 'locale' , next ) || $mol_dom_context.navigator.language.replace( /-.*/ , '' ) || this.lang_default()\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\tstatic source( lang : string ) {\n\t\t\treturn JSON.parse( $mol_file.relative( `-/web.locale=${ lang }.json` ).content() )\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tstatic texts( next? : $mol_locale_dict ) : $mol_locale_dict {\n\t\t\tif( next ) return next\n\t\t\t\n\t\t\tconst lang = this.lang()\n\t\t\t\n\t\t\ttry {\n\t\t\t\treturn this.source( lang ).valueOf()\n\t\t\t} catch( error ) {\n\t\t\t\tconst def = this.lang_default()\n\t\t\t\tif( lang === def ) throw error\n\t\t\t\treturn this.source( def )\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic text( contexts : string[] , key : string ) {\n\t\t\tconst texts = this.texts()\n\t\t\t\n\t\t\tfor( let i = 0 ; i < contexts.length ; ++i ) {\n\t\t\t\tconst text = texts[ `${ contexts[i] }_${ key }` ]\n\t\t\t\tif( text ) return text\n\t\t\t}\n\t\t\t\n\t\t\tconsole.warn( 'Locale text not found: ' , `(${ contexts.join( '|' ) })_${ key }` )\n\t\t\t\n\t\t\treturn `<${ key }>`\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_list extends $mol_view {\n\n\t/// style * \n\t/// \t^ \n\t/// \tminHeight <= minimal_height\n\tstyle() {\n\t\treturn ({\n\t\t\t...super.style() ,\n\t\t\t\"minHeight\" : this.minimal_height() ,\n\t\t})\n\t}\n\n\t/// rows /\n\trows() {\n\t\treturn [] as any[]\n\t}\n\n\t/// sub <= rows\n\tsub() {\n\t\treturn this.rows()\n\t}\n\n\t/// Empty null\n\tEmpty() {\n\t\treturn null\n\t}\n\n} }\n\n","namespace $.$mol {\n\texport class $mol_list extends $.$mol_list {\n\t\t\n\t\tsub() {\n\t\t\tconst rows = this.rows()\n\t\t\treturn ( rows.length === 0 ) ? [ this.Empty() ] : rows\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\trow_offsets() : number[] {\n\t\t\tvar sub = this.sub()\n\t\t\tif( !sub ) return null\n\t\t\t\n\t\t\tlet heightLimit = this.$.$mol_view_visible_height()\n\t\t\tvar offset = 0\n\t\t\t\n\t\t\tvar next : number[] = []\n\t\t\tfor( let child of sub ) {\n\t\t\t\tnext.push( offset )\n\t\t\t\t\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\toffset += child.minimal_height()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( offset > heightLimit ) break\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\trow_context( index : number ) {\n\t\t\tlet context = this.context()\n\t\t\tlet next = Object.create( context )\n\t\t\tnext.$mol_view_visible_height = ()=> {\n\t\t\t\tconst limit = context.$mol_view_visible_height()\n\t\t\t\treturn limit - this.row_offsets()[ index ]\n\t\t\t}\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tsub_visible() {\n\t\t\tvar sub = this.sub()\n\t\t\tif( !sub ) return sub\n\t\t\t\n\t\t\tvar limit = this.row_offsets().length\n\t\t\t\n\t\t\tvar next : $mol_view[] = []\n\t\t\tfor( let i = 0 ; i < limit ; ++ i ) {\n\t\t\t\tconst child = sub[ i ]\n\t\t\t\tif( child == null ) continue \n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.context( this.row_context( i ) )\n\t\t\t\t}\n\t\t\t\tnext.push( child )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tminimal_height() {\n\t\t\tvar height = 0\n\t\t\tvar sub = this.sub()\n\t\t\tif( sub ) sub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\theight += child.minimal_height()\n\t\t\t\t}\n\t\t\t} )\n\t\t\treturn height\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { export class $mol_bar extends $mol_view {\n\n} }\n\n","namespace $ { export class $mol_app_todomvc extends $mol_scroll {\n\n\t/// title @ \\Todos\n\ttitle() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"title\" )\n\t}\n\n\t/// Title $mol_view \n\t/// \tminimal_height 142 \n\t/// \tsub / <= title\n\t@ $mol_mem()\n\tTitle() {\n\t\treturn $mol_view.make({\n\t\t\tminimal_height : () => 142 ,\n\t\t\tsub : () => [].concat( this.title() ) ,\n\t\t})\n\t}\n\n\t/// head_complete_enabled false\n\thead_complete_enabled() {\n\t\treturn false\n\t}\n\n\t/// completed_all?val false\n\t@ $mol_mem()\n\tcompleted_all( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// Head_complete $mol_check \n\t/// \tenabled <= head_complete_enabled \n\t/// \tchecked?val <=> completed_all?val \n\t/// \ttitle \\❯\n\t@ $mol_mem()\n\tHead_complete() {\n\t\treturn $mol_check.make({\n\t\t\tenabled : () => this.head_complete_enabled() ,\n\t\t\tchecked : ( val? : any ) => this.completed_all( val ) ,\n\t\t\ttitle : () => \"❯\" ,\n\t\t})\n\t}\n\n\t/// task_title_new?val \\\n\t@ $mol_mem()\n\ttask_title_new( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// event_add?event null\n\t@ $mol_mem()\n\tevent_add( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// Add $mol_app_todomvc_add \n\t/// \tvalue?val <=> task_title_new?val \n\t/// \tevent_done?event <=> event_add?event\n\t@ $mol_mem()\n\tAdd() {\n\t\treturn $mol_app_todomvc_add.make({\n\t\t\tvalue : ( val? : any ) => this.task_title_new( val ) ,\n\t\t\tevent_done : ( event? : any ) => this.event_add( event ) ,\n\t\t})\n\t}\n\n\t/// Head_content / \n\t/// \t<= Head_complete \n\t/// \t<= Add\n\tHead_content() {\n\t\treturn [].concat( this.Head_complete() , this.Add() )\n\t}\n\n\t/// Head $mol_view \n\t/// \tminimal_height 64 \n\t/// \tsub <= Head_content\n\t@ $mol_mem()\n\tHead() {\n\t\treturn $mol_view.make({\n\t\t\tminimal_height : () => 64 ,\n\t\t\tsub : () => this.Head_content() ,\n\t\t})\n\t}\n\n\t/// task_rows /\n\ttask_rows() {\n\t\treturn [] as any[]\n\t}\n\n\t/// List $mol_list rows <= task_rows\n\t@ $mol_mem()\n\tList() {\n\t\treturn $mol_list.make({\n\t\t\trows : () => this.task_rows() ,\n\t\t})\n\t}\n\n\t/// pending_message @ \\0 items left\n\tpending_message() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"pending_message\" )\n\t}\n\n\t/// Pending $mol_view sub / <= pending_message\n\t@ $mol_mem()\n\tPending() {\n\t\treturn $mol_view.make({\n\t\t\tsub : () => [].concat( this.pending_message() ) ,\n\t\t})\n\t}\n\n\t/// filter_all_label @ \\All\n\tfilter_all_label() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"filter_all_label\" )\n\t}\n\n\t/// Filter_all $mol_link \n\t/// \tsub / <= filter_all_label \n\t/// \targ * completed null\n\t@ $mol_mem()\n\tFilter_all() {\n\t\treturn $mol_link.make({\n\t\t\tsub : () => [].concat( this.filter_all_label() ) ,\n\t\t\targ : () => ({\n\t\t\t\"completed\" : null ,\n\t\t}) ,\n\t\t})\n\t}\n\n\t/// filter_active_label @ \\Active\n\tfilter_active_label() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"filter_active_label\" )\n\t}\n\n\t/// Filter_active $mol_link \n\t/// \tsub / <= filter_active_label \n\t/// \targ * completed \\false\n\t@ $mol_mem()\n\tFilter_active() {\n\t\treturn $mol_link.make({\n\t\t\tsub : () => [].concat( this.filter_active_label() ) ,\n\t\t\targ : () => ({\n\t\t\t\"completed\" : \"false\" ,\n\t\t}) ,\n\t\t})\n\t}\n\n\t/// filter_completed_label @ \\Completed\n\tfilter_completed_label() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"filter_completed_label\" )\n\t}\n\n\t/// Filter_completed $mol_link \n\t/// \tsub / <= filter_completed_label \n\t/// \targ * completed \\true\n\t@ $mol_mem()\n\tFilter_completed() {\n\t\treturn $mol_link.make({\n\t\t\tsub : () => [].concat( this.filter_completed_label() ) ,\n\t\t\targ : () => ({\n\t\t\t\"completed\" : \"true\" ,\n\t\t}) ,\n\t\t})\n\t}\n\n\t/// filterOptions / \n\t/// \t<= Filter_all \n\t/// \t<= Filter_active \n\t/// \t<= Filter_completed\n\tfilterOptions() {\n\t\treturn [].concat( this.Filter_all() , this.Filter_active() , this.Filter_completed() )\n\t}\n\n\t/// Filter $mol_bar sub <= filterOptions\n\t@ $mol_mem()\n\tFilter() {\n\t\treturn $mol_bar.make({\n\t\t\tsub : () => this.filterOptions() ,\n\t\t})\n\t}\n\n\t/// sweep_enabled true\n\tsweep_enabled() {\n\t\treturn true\n\t}\n\n\t/// event_sweep?event null\n\t@ $mol_mem()\n\tevent_sweep( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// sweep_label @ \\Clear completed\n\tsweep_label() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"sweep_label\" )\n\t}\n\n\t/// Sweep $mol_button_minor \n\t/// \tenabled <= sweep_enabled \n\t/// \tevent_click?event <=> event_sweep?event \n\t/// \tsub / <= sweep_label\n\t@ $mol_mem()\n\tSweep() {\n\t\treturn $mol_button_minor.make({\n\t\t\tenabled : () => this.sweep_enabled() ,\n\t\t\tevent_click : ( event? : any ) => this.event_sweep( event ) ,\n\t\t\tsub : () => [].concat( this.sweep_label() ) ,\n\t\t})\n\t}\n\n\t/// foot_content / \n\t/// \t<= Pending \n\t/// \t<= Filter \n\t/// \t<= Sweep\n\tfoot_content() {\n\t\treturn [].concat( this.Pending() , this.Filter() , this.Sweep() )\n\t}\n\n\t/// Foot $mol_view sub <= foot_content\n\t@ $mol_mem()\n\tFoot() {\n\t\treturn $mol_view.make({\n\t\t\tsub : () => this.foot_content() ,\n\t\t})\n\t}\n\n\t/// panels / \n\t/// \t<= Head \n\t/// \t<= List \n\t/// \t<= Foot\n\tpanels() {\n\t\treturn [].concat( this.Head() , this.List() , this.Foot() )\n\t}\n\n\t/// Panel $mol_list rows <= panels\n\t@ $mol_mem()\n\tPanel() {\n\t\treturn $mol_list.make({\n\t\t\trows : () => this.panels() ,\n\t\t})\n\t}\n\n\t/// Page $mol_list rows / \n\t/// \t<= Title \n\t/// \t<= Panel\n\t@ $mol_mem()\n\tPage() {\n\t\treturn $mol_list.make({\n\t\t\trows : () => [].concat( this.Title() , this.Panel() ) ,\n\t\t})\n\t}\n\n\t/// sub / <= Page\n\tsub() {\n\t\treturn [].concat( this.Page() )\n\t}\n\n\t/// task_completed!id?val false\n\t@ $mol_mem_key()\n\ttask_completed( id : any , val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// task_title!id?val \\\n\t@ $mol_mem_key()\n\ttask_title( id : any , val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// event_task_drop!id?event null\n\t@ $mol_mem_key()\n\tevent_task_drop( id : any , event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// Task_row!id $mol_app_todomvc_task_row \n\t/// \tcompleted?val <=> task_completed!id?val \n\t/// \ttitle?val <=> task_title!id?val \n\t/// \tevent_drop?event <=> event_task_drop!id?event\n\t@ $mol_mem_key()\n\tTask_row( id : any ) {\n\t\treturn $mol_app_todomvc_task_row.make({\n\t\t\tcompleted : ( val? : any ) => this.task_completed(id , val ) ,\n\t\t\ttitle : ( val? : any ) => this.task_title(id , val ) ,\n\t\t\tevent_drop : ( event? : any ) => this.event_task_drop(id , event ) ,\n\t\t})\n\t}\n\n} }\n\nnamespace $ { export class $mol_app_todomvc_add extends $mol_string {\n\n\t/// hint @ \\What needs to be done?\n\thint() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"hint\" )\n\t}\n\n\t/// event_press?event null\n\t@ $mol_mem()\n\tevent_press( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// event * \n\t/// \t^ \n\t/// \tkeyup?event <=> event_press?event\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"keyup\" : ( event? : any )=> this.event_press( event ) ,\n\t\t})\n\t}\n\n\t/// event_done?event null\n\t@ $mol_mem()\n\tevent_done( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n} }\n\nnamespace $ { export class $mol_app_todomvc_task_row extends $mol_view {\n\n\t/// minimal_height 64\n\tminimal_height() {\n\t\treturn 64\n\t}\n\n\t/// completed?val false\n\t@ $mol_mem()\n\tcompleted( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// Complete $mol_check checked?val <=> completed?val\n\t@ $mol_mem()\n\tComplete() {\n\t\treturn $mol_check.make({\n\t\t\tchecked : ( val? : any ) => this.completed( val ) ,\n\t\t})\n\t}\n\n\t/// title_hint @ \\Task title\n\ttitle_hint() {\n\t\treturn $mol_locale.text( this.locale_contexts() , \"title_hint\" )\n\t}\n\n\t/// title?val \\\n\t@ $mol_mem()\n\ttitle( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// Title $mol_string \n\t/// \thint <= title_hint \n\t/// \tvalue?val <=> title?val\n\t@ $mol_mem()\n\tTitle() {\n\t\treturn $mol_string.make({\n\t\t\thint : () => this.title_hint() ,\n\t\t\tvalue : ( val? : any ) => this.title( val ) ,\n\t\t})\n\t}\n\n\t/// event_drop?event null\n\t@ $mol_mem()\n\tevent_drop( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null\n\t}\n\n\t/// Drop $mol_button \n\t/// \tsub / \\✖\n\t/// \tevent_click?event <=> event_drop?event\n\t@ $mol_mem()\n\tDrop() {\n\t\treturn $mol_button.make({\n\t\t\tsub : () => [].concat( \"✖\" ) ,\n\t\t\tevent_click : ( event? : any ) => this.event_drop( event ) ,\n\t\t})\n\t}\n\n\t/// sub / \n\t/// \t<= Complete \n\t/// \t<= Title \n\t/// \t<= Drop\n\tsub() {\n\t\treturn [].concat( this.Complete() , this.Title() , this.Drop() )\n\t}\n\n\t/// attr * \n\t/// \t^ \n\t/// \tmol_app_todomvc_task_row_completed <= completed?val\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"mol_app_todomvc_task_row_completed\" : this.completed() ,\n\t\t})\n\t}\n\n} }\n\n","interface $mol_app_todomvc_task {\n\tcompleted? : boolean\n\ttitle? : string\n}\n\nnamespace $.$mol {\n\t\n\texport class $mol_app_todomvc_add extends $.$mol_app_todomvc_add {\n\t\t\n\t\tevent_press( next? : KeyboardEvent ) {\n\t\t\tswitch( next.keyCode ) {\n\t\t\t\tcase $mol_keyboard_code.enter : return this.event_done( next )\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\texport class $mol_app_todomvc extends $.$mol_app_todomvc {\n\t\t\n\t\ttask_ids( next? : number[] ) : number[] {\n\t\t\treturn $mol_state_local.value( this.state_key( 'mol-todos' ) , next ) || []\n\t\t}\n\t\t\n\t\targ_completed() {\n\t\t\treturn $mol_state_arg.value( this.state_key( 'completed' ) )\n\t\t}\n\n\t\t@ $mol_mem()\n\t\tgroups_completed() {\n\t\t\tvar groups : { [ index : string ] : number[] } = { 'true' : [] , 'false' : [] }\n\t\t\tfor( let id of this.task_ids() ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tgroups[ String( task.completed ) ].push( id )\n\t\t\t}\n\t\t\treturn groups\n\t\t}\n\n\t\t@ $mol_mem()\n\t\ttasks_filtered() {\n\t\t\tvar completed = this.arg_completed()\n\t\t\tif( completed ) {\n\t\t\t\treturn this.groups_completed()[ completed ] || []\n\t\t\t} else {\n\t\t\t\treturn this.task_ids()\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_mem()\n\t\tcompleted_all( next? : boolean ) {\n\t\t\tif( next === void 0 ) return this.groups_completed()[ 'false' ].length === 0\n\t\t\t\n\t\t\tfor( let id of this.groups_completed()[ String( !next ) ] ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tthis.task( id , { title : task.title , completed : next } )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\thead_complete_enabled() {\n\t\t\treturn this.task_ids().length > 0 \n\t\t}\n\n\t\t@ $mol_mem()\n\t\tpending_message() {\n\t\t\tlet count = this.groups_completed()[ 'false' ].length\n\t\t\treturn ( count === 1 ) ? '1 item left' : `${count} items left`\n\t\t}\n\t\t\n\t\t@ $mol_mem()\n\t\tnew_id() {\n\t\t\treturn Math.max( 1 , 1 + Math.max( ... this.task_ids() ) )\n\t\t}\n\t\t\n\t\tevent_add( next : Event ) {\n\t\t\tvar title = this.task_title_new() \n\t\t\tif( !title ) return\n\t\t\t\n\t\t\tvar id = this.new_id()\n\t\t\tvar task = { completed : false , title }\n\t\t\tthis.task( id , task )\n\t\t\t\n\t\t\tthis.task_ids( this.task_ids().concat( id ) )\n\t\t\tthis.task_title_new( '' )\n\t\t}\n\n\t\t@ $mol_mem()\n\t\ttask_rows() {\n\t\t\treturn this.tasks_filtered().map( ( id , index )=> this.Task_row( index ) )\n\t\t}\n\t\t\n\t\ttask( id : number , next? : $mol_app_todomvc_task ) {\n\t\t\tconst key = this.state_key( `mol-todos-${id}` )\n\t\t\tif( next === void 0 ) {\n\t\t\t\treturn $mol_state_local.value<$mol_app_todomvc_task>( key ) || { title : '' , completed : false }\n\t\t\t}\n\t\t\t\n\t\t\t$mol_state_local.value( key , next )\n\t\t\t\n\t\t\treturn next || void 0\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\ttask_completed( index : number , next? : boolean ) {\n\t\t\tvar id = this.tasks_filtered()[ index ]\n\t\t\tif( next === void 0 ) return this.task( id ).completed\n\t\t\t\n\t\t\tthis.task( id , $mol_merge_dict( this.task( id ) , { completed : next } ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem_key()\n\t\ttask_title( index : number , next? : string ) {\n\t\t\tvar id = this.tasks_filtered()[ index ]\n\t\t\tif( next === void 0 ) return this.task( id ).title\n\t\t\t\n\t\t\tthis.task( id , $mol_merge_dict( this.task( id ) , { title : next } ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tevent_task_drop( index : number , next? : Event ) {\n\t\t\tvar tasks = this.tasks_filtered()\n\t\t\tvar id = tasks[index]\n\t\t\ttasks = tasks.slice( 0 , index ).concat( tasks.slice( index + 1 , tasks.length ) )\n\t\t\tthis.task( id , null )\n\t\t\tthis.task_ids( tasks )\n\t\t}\n\n\t\tevent_sweep() {\n\t\t\tthis.task_ids( this.task_ids().filter( id => {\n\t\t\t\tif( !this.task( id ).completed ) return true\n\t\t\t\tthis.task( id , null )\n\t\t\t\treturn false\n\t\t\t} ) )\n\t\t}\n\t\t\n\t\tpanels() {\n\t\t\treturn [\n\t\t\t\tthis.Head() , \n\t\t\t\tthis.List() ,\n\t\t\t\tthis.foot_visible() ? this.Foot() : null ,\n\t\t\t]\n\t\t}\n\t\t\n\t\tfoot_visible() {\n\t\t\treturn this.task_ids().length > 0\n\t\t}\n\n\t\tsweep_enabled() {\n\t\t\treturn this.groups_completed()[ 'true' ].length > 0\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_app_todomvc_demo extends $mol_app_todomvc {\n\n} }\n\n"]} \ No newline at end of file diff --git a/examples/mol/-/web.locale=en.json b/examples/mol/-/web.locale=en.json index 085a008236..0b4d8e39ab 100644 --- a/examples/mol/-/web.locale=en.json +++ b/examples/mol/-/web.locale=en.json @@ -1,5 +1,5 @@ { - "$mol_app_todomvc_title": "todos", + "$mol_app_todomvc_title": "Todos", "$mol_app_todomvc_pending_message": "0 items left ", "$mol_app_todomvc_filter_all_label": "All", "$mol_app_todomvc_filter_active_label": "Active", diff --git a/examples/mol/-view.tree/todomvc.view.tree.locale.json b/examples/mol/-view.tree/todomvc.view.tree.locale.json new file mode 100644 index 0000000000..0b4d8e39ab --- /dev/null +++ b/examples/mol/-view.tree/todomvc.view.tree.locale.json @@ -0,0 +1,10 @@ +{ + "$mol_app_todomvc_title": "Todos", + "$mol_app_todomvc_pending_message": "0 items left ", + "$mol_app_todomvc_filter_all_label": "All", + "$mol_app_todomvc_filter_active_label": "Active", + "$mol_app_todomvc_filter_completed_label": "Completed", + "$mol_app_todomvc_sweep_label": "Clear completed", + "$mol_app_todomvc_add_hint": "What needs to be done?", + "$mol_app_todomvc_task_row_title_hint": "Task title" +} \ No newline at end of file diff --git a/examples/mol/-view.tree/todomvc.view.tree.ts b/examples/mol/-view.tree/todomvc.view.tree.ts new file mode 100644 index 0000000000..f010aebdb2 --- /dev/null +++ b/examples/mol/-view.tree/todomvc.view.tree.ts @@ -0,0 +1,399 @@ +namespace $ { export class $mol_app_todomvc extends $mol_scroll { + + /// title @ \Todos + title() { + return $mol_locale.text( this.locale_contexts() , "title" ) + } + + /// Title $mol_view + /// minimal_height 142 + /// sub / <= title + @ $mol_mem() + Title() { + return $mol_view.make({ + minimal_height : () => 142 , + sub : () => [].concat( this.title() ) , + }) + } + + /// head_complete_enabled false + head_complete_enabled() { + return false + } + + /// completed_all?val false + @ $mol_mem() + completed_all( val? : any , force? : $mol_atom_force ) { + return ( val !== void 0 ) ? val : false + } + + /// Head_complete $mol_check + /// enabled <= head_complete_enabled + /// checked?val <=> completed_all?val + /// title \❯ + @ $mol_mem() + Head_complete() { + return $mol_check.make({ + enabled : () => this.head_complete_enabled() , + checked : ( val? : any ) => this.completed_all( val ) , + title : () => "❯" , + }) + } + + /// task_title_new?val \ + @ $mol_mem() + task_title_new( val? : any , force? : $mol_atom_force ) { + return ( val !== void 0 ) ? val : "" + } + + /// event_add?event null + @ $mol_mem() + event_add( event? : any , force? : $mol_atom_force ) { + return ( event !== void 0 ) ? event : null + } + + /// Add $mol_app_todomvc_add + /// value?val <=> task_title_new?val + /// event_done?event <=> event_add?event + @ $mol_mem() + Add() { + return $mol_app_todomvc_add.make({ + value : ( val? : any ) => this.task_title_new( val ) , + event_done : ( event? : any ) => this.event_add( event ) , + }) + } + + /// Head_content / + /// <= Head_complete + /// <= Add + Head_content() { + return [].concat( this.Head_complete() , this.Add() ) + } + + /// Head $mol_view + /// minimal_height 64 + /// sub <= Head_content + @ $mol_mem() + Head() { + return $mol_view.make({ + minimal_height : () => 64 , + sub : () => this.Head_content() , + }) + } + + /// task_rows / + task_rows() { + return [] as any[] + } + + /// List $mol_list rows <= task_rows + @ $mol_mem() + List() { + return $mol_list.make({ + rows : () => this.task_rows() , + }) + } + + /// pending_message @ \0 items left + pending_message() { + return $mol_locale.text( this.locale_contexts() , "pending_message" ) + } + + /// Pending $mol_view sub / <= pending_message + @ $mol_mem() + Pending() { + return $mol_view.make({ + sub : () => [].concat( this.pending_message() ) , + }) + } + + /// filter_all_label @ \All + filter_all_label() { + return $mol_locale.text( this.locale_contexts() , "filter_all_label" ) + } + + /// Filter_all $mol_link + /// sub / <= filter_all_label + /// arg * completed null + @ $mol_mem() + Filter_all() { + return $mol_link.make({ + sub : () => [].concat( this.filter_all_label() ) , + arg : () => ({ + "completed" : null , + }) , + }) + } + + /// filter_active_label @ \Active + filter_active_label() { + return $mol_locale.text( this.locale_contexts() , "filter_active_label" ) + } + + /// Filter_active $mol_link + /// sub / <= filter_active_label + /// arg * completed \false + @ $mol_mem() + Filter_active() { + return $mol_link.make({ + sub : () => [].concat( this.filter_active_label() ) , + arg : () => ({ + "completed" : "false" , + }) , + }) + } + + /// filter_completed_label @ \Completed + filter_completed_label() { + return $mol_locale.text( this.locale_contexts() , "filter_completed_label" ) + } + + /// Filter_completed $mol_link + /// sub / <= filter_completed_label + /// arg * completed \true + @ $mol_mem() + Filter_completed() { + return $mol_link.make({ + sub : () => [].concat( this.filter_completed_label() ) , + arg : () => ({ + "completed" : "true" , + }) , + }) + } + + /// filterOptions / + /// <= Filter_all + /// <= Filter_active + /// <= Filter_completed + filterOptions() { + return [].concat( this.Filter_all() , this.Filter_active() , this.Filter_completed() ) + } + + /// Filter $mol_bar sub <= filterOptions + @ $mol_mem() + Filter() { + return $mol_bar.make({ + sub : () => this.filterOptions() , + }) + } + + /// sweep_enabled true + sweep_enabled() { + return true + } + + /// event_sweep?event null + @ $mol_mem() + event_sweep( event? : any , force? : $mol_atom_force ) { + return ( event !== void 0 ) ? event : null + } + + /// sweep_label @ \Clear completed + sweep_label() { + return $mol_locale.text( this.locale_contexts() , "sweep_label" ) + } + + /// Sweep $mol_button_minor + /// enabled <= sweep_enabled + /// event_click?event <=> event_sweep?event + /// sub / <= sweep_label + @ $mol_mem() + Sweep() { + return $mol_button_minor.make({ + enabled : () => this.sweep_enabled() , + event_click : ( event? : any ) => this.event_sweep( event ) , + sub : () => [].concat( this.sweep_label() ) , + }) + } + + /// foot_content / + /// <= Pending + /// <= Filter + /// <= Sweep + foot_content() { + return [].concat( this.Pending() , this.Filter() , this.Sweep() ) + } + + /// Foot $mol_view sub <= foot_content + @ $mol_mem() + Foot() { + return $mol_view.make({ + sub : () => this.foot_content() , + }) + } + + /// panels / + /// <= Head + /// <= List + /// <= Foot + panels() { + return [].concat( this.Head() , this.List() , this.Foot() ) + } + + /// Panel $mol_list rows <= panels + @ $mol_mem() + Panel() { + return $mol_list.make({ + rows : () => this.panels() , + }) + } + + /// Page $mol_list rows / + /// <= Title + /// <= Panel + @ $mol_mem() + Page() { + return $mol_list.make({ + rows : () => [].concat( this.Title() , this.Panel() ) , + }) + } + + /// sub / <= Page + sub() { + return [].concat( this.Page() ) + } + + /// task_completed!id?val false + @ $mol_mem_key() + task_completed( id : any , val? : any , force? : $mol_atom_force ) { + return ( val !== void 0 ) ? val : false + } + + /// task_title!id?val \ + @ $mol_mem_key() + task_title( id : any , val? : any , force? : $mol_atom_force ) { + return ( val !== void 0 ) ? val : "" + } + + /// event_task_drop!id?event null + @ $mol_mem_key() + event_task_drop( id : any , event? : any , force? : $mol_atom_force ) { + return ( event !== void 0 ) ? event : null + } + + /// Task_row!id $mol_app_todomvc_task_row + /// completed?val <=> task_completed!id?val + /// title?val <=> task_title!id?val + /// event_drop?event <=> event_task_drop!id?event + @ $mol_mem_key() + Task_row( id : any ) { + return $mol_app_todomvc_task_row.make({ + completed : ( val? : any ) => this.task_completed(id , val ) , + title : ( val? : any ) => this.task_title(id , val ) , + event_drop : ( event? : any ) => this.event_task_drop(id , event ) , + }) + } + +} } + +namespace $ { export class $mol_app_todomvc_add extends $mol_string { + + /// hint @ \What needs to be done? + hint() { + return $mol_locale.text( this.locale_contexts() , "hint" ) + } + + /// event_press?event null + @ $mol_mem() + event_press( event? : any , force? : $mol_atom_force ) { + return ( event !== void 0 ) ? event : null + } + + /// event * + /// ^ + /// keyup?event <=> event_press?event + event() { + return ({ + ...super.event() , + "keyup" : ( event? : any )=> this.event_press( event ) , + }) + } + + /// event_done?event null + @ $mol_mem() + event_done( event? : any , force? : $mol_atom_force ) { + return ( event !== void 0 ) ? event : null + } + +} } + +namespace $ { export class $mol_app_todomvc_task_row extends $mol_view { + + /// minimal_height 64 + minimal_height() { + return 64 + } + + /// completed?val false + @ $mol_mem() + completed( val? : any , force? : $mol_atom_force ) { + return ( val !== void 0 ) ? val : false + } + + /// Complete $mol_check checked?val <=> completed?val + @ $mol_mem() + Complete() { + return $mol_check.make({ + checked : ( val? : any ) => this.completed( val ) , + }) + } + + /// title_hint @ \Task title + title_hint() { + return $mol_locale.text( this.locale_contexts() , "title_hint" ) + } + + /// title?val \ + @ $mol_mem() + title( val? : any , force? : $mol_atom_force ) { + return ( val !== void 0 ) ? val : "" + } + + /// Title $mol_string + /// hint <= title_hint + /// value?val <=> title?val + @ $mol_mem() + Title() { + return $mol_string.make({ + hint : () => this.title_hint() , + value : ( val? : any ) => this.title( val ) , + }) + } + + /// event_drop?event null + @ $mol_mem() + event_drop( event? : any , force? : $mol_atom_force ) { + return ( event !== void 0 ) ? event : null + } + + /// Drop $mol_button + /// sub / \✖ + /// event_click?event <=> event_drop?event + @ $mol_mem() + Drop() { + return $mol_button.make({ + sub : () => [].concat( "✖" ) , + event_click : ( event? : any ) => this.event_drop( event ) , + }) + } + + /// sub / + /// <= Complete + /// <= Title + /// <= Drop + sub() { + return [].concat( this.Complete() , this.Title() , this.Drop() ) + } + + /// attr * + /// ^ + /// mol_app_todomvc_task_row_completed <= completed?val + attr() { + return ({ + ...super.attr() , + "mol_app_todomvc_task_row_completed" : this.completed() , + }) + } + +} } + diff --git a/examples/mol/todomvc.css b/examples/mol/todomvc.css index 9c54aecc7c..5d3b3d44c8 100644 --- a/examples/mol/todomvc.css +++ b/examples/mol/todomvc.css @@ -50,6 +50,10 @@ font-size: 1.5rem; } +[mol_app_todomvc_page] { + flex: 1 1 auto; +} + [mol_app_todomvc_panel] { box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1); max-width: 38rem; @@ -75,6 +79,7 @@ text-align: center; color: rgba(175, 47, 47, 0.15); text-rendering: optimizeLegibility; + text-transform: lowercase; } [mol_app_todomvc_task_row] { @@ -87,10 +92,10 @@ [mol_app_todomvc_task_row_complete] { flex: 0 0 4rem; padding: 1rem; - background: no-repeat center center url('data:image/svg+xml;utf8,'); + background: no-repeat center center url('mol/app/todomvc/todomvc_active.svg'); } [mol_app_todomvc_task_row_complete][mol_check_checked] { - background: no-repeat center center url('data:image/svg+xml;utf8,') + background: no-repeat center center url('mol/app/todomvc/todomvc_completed.svg'); } [mol_app_todomvc_task_row_title] { diff --git a/examples/mol/todomvc.meta.tree b/examples/mol/todomvc.meta.tree new file mode 100644 index 0000000000..c005962807 --- /dev/null +++ b/examples/mol/todomvc.meta.tree @@ -0,0 +1,2 @@ +deploy \/mol/app/todomvc/todomvc_active.svg +deploy \/mol/app/todomvc/todomvc_completed.svg diff --git a/examples/mol/todomvc.view.tree b/examples/mol/todomvc.view.tree index a9bff7d484..4184e2f222 100644 --- a/examples/mol/todomvc.view.tree +++ b/examples/mol/todomvc.view.tree @@ -1,11 +1,12 @@ $mol_app_todomvc $mol_scroll + title @ \Todos sub / <= Page $mol_list rows / <= Title $mol_view minimal_height 142 sub / - <= title @ \todos + <= title - <= Panel $mol_list rows <= panels / <= Head $mol_view @@ -14,8 +15,7 @@ $mol_app_todomvc $mol_scroll <= Head_complete $mol_check enabled <= head_complete_enabled false checked?val <=> completed_all?val false - sub / - \❯ + title \❯ <= Add $mol_app_todomvc_add value?val <=> task_title_new?val \ event_done?event <=> event_add?event null @@ -37,12 +37,12 @@ $mol_app_todomvc $mol_scroll sub / <= filter_active_label @ \Active arg * - completed false + completed \false <= Filter_completed $mol_link sub / <= filter_completed_label @ \Completed arg * - completed true + completed \true <= Sweep $mol_button_minor enabled <= sweep_enabled true event_click?event <=> event_sweep?event null @@ -55,6 +55,7 @@ $mol_app_todomvc $mol_scroll $mol_app_todomvc_add $mol_string hint @ \What needs to be done? event * + ^ keyup?event <=> event_press?event null event_done?event null @@ -63,7 +64,6 @@ $mol_app_todomvc_task_row $mol_view sub / <= Complete $mol_check checked?val <=> completed?val false - sub / <= Title $mol_string hint <= title_hint @ \Task title value?val <=> title?val \ @@ -71,4 +71,5 @@ $mol_app_todomvc_task_row $mol_view sub / \✖ event_click?event <=> event_drop?event null attr * + ^ mol_app_todomvc_task_row_completed <= completed?val false diff --git a/examples/mol/todomvc.view.ts b/examples/mol/todomvc.view.ts index 1c20b31caa..213eda933e 100644 --- a/examples/mol/todomvc.view.ts +++ b/examples/mol/todomvc.view.ts @@ -67,13 +67,16 @@ namespace $.$mol { return ( count === 1 ) ? '1 item left' : `${count} items left` } - _id_seed = 0 - + @ $mol_mem() + new_id() { + return Math.max( 1 , 1 + Math.max( ... this.task_ids() ) ) + } + event_add( next : Event ) { var title = this.task_title_new() if( !title ) return - var id = ++ this._id_seed + var id = this.new_id() var task = { completed : false , title } this.task( id , task ) diff --git a/examples/mol/todomvc_active.svg b/examples/mol/todomvc_active.svg new file mode 100644 index 0000000000..417859015a --- /dev/null +++ b/examples/mol/todomvc_active.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/examples/mol/todomvc_completed.svg b/examples/mol/todomvc_completed.svg new file mode 100644 index 0000000000..4231bde0ad --- /dev/null +++ b/examples/mol/todomvc_completed.svg @@ -0,0 +1,4 @@ + + + + From f463076c2cd390733551570df56126009550e3f5 Mon Sep 17 00:00:00 2001 From: nin-jin Date: Mon, 17 Jul 2017 14:19:58 +0300 Subject: [PATCH 13/53] Added Angular2 es2015 to learn.json --- learn.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/learn.json b/learn.json index fccc5712e9..39b9718afa 100644 --- a/learn.json +++ b/learn.json @@ -20,6 +20,9 @@ }, { "name": "Angular2", "url": "examples/angular2" + }, { + "name": "Angular2 es2015", + "url": "examples/angular2_es2015" }], "link_groups": [{ "heading": "Official Resources", From 2ea9c06c60fd3158dc42e73288d3f5a9f58638f4 Mon Sep 17 00:00:00 2001 From: nin-jin Date: Mon, 17 Jul 2017 14:50:18 +0300 Subject: [PATCH 14/53] Added Angular4 example. --- .../angular4/dist/assets/css/todomvc-app.css | 370 + .../dist/assets/css/todomvc-common.css | 141 + examples/angular4/dist/favicon.ico | Bin 0 -> 5430 bytes examples/angular4/dist/index.html | 16 + examples/angular4/dist/inline.bundle.js | 153 + examples/angular4/dist/inline.bundle.js.map | 1 + examples/angular4/dist/main.bundle.js | 287 + examples/angular4/dist/main.bundle.js.map | 1 + examples/angular4/dist/polyfills.bundle.js | 5037 ++ .../angular4/dist/polyfills.bundle.js.map | 1 + examples/angular4/dist/styles.bundle.js | 390 + examples/angular4/dist/styles.bundle.js.map | 1 + examples/angular4/dist/vendor.bundle.js | 62873 ++++++++++++++++ examples/angular4/dist/vendor.bundle.js.map | 1 + examples/angular4/src/app/app.component.css | 0 examples/angular4/src/app/app.component.html | 20 + .../angular4/src/app/app.component.spec.ts | 62 + examples/angular4/src/app/app.component.ts | 35 + examples/angular4/src/app/app.module.ts | 20 + .../src/app/todo-data.service.spec.ts | 106 + .../angular4/src/app/todo-data.service.ts | 63 + examples/angular4/src/app/todo.spec.ts | 16 + examples/angular4/src/app/todo.ts | 9 + examples/angular4/src/assets/.gitkeep | 0 .../angular4/src/assets/css/todomvc-app.css | 370 + .../src/assets/css/todomvc-common.css | 141 + .../src/environments/environment.prod.ts | 3 + .../angular4/src/environments/environment.ts | 8 + examples/angular4/src/favicon.ico | Bin 0 -> 5430 bytes examples/angular4/src/index.html | 16 + examples/angular4/src/main.ts | 11 + examples/angular4/src/polyfills.ts | 68 + examples/angular4/src/styles.css | 1 + examples/angular4/src/test.ts | 32 + examples/angular4/src/tsconfig.app.json | 13 + examples/angular4/src/tsconfig.spec.json | 20 + examples/angular4/src/typings.d.ts | 5 + learn.json | 3 + 38 files changed, 70294 insertions(+) create mode 100644 examples/angular4/dist/assets/css/todomvc-app.css create mode 100644 examples/angular4/dist/assets/css/todomvc-common.css create mode 100644 examples/angular4/dist/favicon.ico create mode 100644 examples/angular4/dist/index.html create mode 100644 examples/angular4/dist/inline.bundle.js create mode 100644 examples/angular4/dist/inline.bundle.js.map create mode 100644 examples/angular4/dist/main.bundle.js create mode 100644 examples/angular4/dist/main.bundle.js.map create mode 100644 examples/angular4/dist/polyfills.bundle.js create mode 100644 examples/angular4/dist/polyfills.bundle.js.map create mode 100644 examples/angular4/dist/styles.bundle.js create mode 100644 examples/angular4/dist/styles.bundle.js.map create mode 100644 examples/angular4/dist/vendor.bundle.js create mode 100644 examples/angular4/dist/vendor.bundle.js.map create mode 100644 examples/angular4/src/app/app.component.css create mode 100644 examples/angular4/src/app/app.component.html create mode 100644 examples/angular4/src/app/app.component.spec.ts create mode 100644 examples/angular4/src/app/app.component.ts create mode 100644 examples/angular4/src/app/app.module.ts create mode 100644 examples/angular4/src/app/todo-data.service.spec.ts create mode 100644 examples/angular4/src/app/todo-data.service.ts create mode 100644 examples/angular4/src/app/todo.spec.ts create mode 100644 examples/angular4/src/app/todo.ts create mode 100644 examples/angular4/src/assets/.gitkeep create mode 100644 examples/angular4/src/assets/css/todomvc-app.css create mode 100644 examples/angular4/src/assets/css/todomvc-common.css create mode 100644 examples/angular4/src/environments/environment.prod.ts create mode 100644 examples/angular4/src/environments/environment.ts create mode 100644 examples/angular4/src/favicon.ico create mode 100644 examples/angular4/src/index.html create mode 100644 examples/angular4/src/main.ts create mode 100644 examples/angular4/src/polyfills.ts create mode 100644 examples/angular4/src/styles.css create mode 100644 examples/angular4/src/test.ts create mode 100644 examples/angular4/src/tsconfig.app.json create mode 100644 examples/angular4/src/tsconfig.spec.json create mode 100644 examples/angular4/src/typings.d.ts diff --git a/examples/angular4/dist/assets/css/todomvc-app.css b/examples/angular4/dist/assets/css/todomvc-app.css new file mode 100644 index 0000000000..b45de0d0f1 --- /dev/null +++ b/examples/angular4/dist/assets/css/todomvc-app.css @@ -0,0 +1,370 @@ +html, +body { + margin: 0; + padding: 0; +} + +button { + margin: 0; + padding: 0; + border: 0; + background: none; + font-size: 100%; + vertical-align: baseline; + font-family: inherit; + font-weight: inherit; + color: inherit; + -webkit-appearance: none; + appearance: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +body { + font: 14px 'Helvetica Neue', Helvetica, Arial, sans-serif; + line-height: 1.4em; + background: #f5f5f5; + color: #4d4d4d; + min-width: 230px; + max-width: 550px; + margin: 0 auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-weight: 300; +} + +:focus { + outline: 0; +} + +.hidden { + display: none; +} + +.todoapp { + background: #fff; + margin: 130px 0 40px 0; + position: relative; + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), + 0 25px 50px 0 rgba(0, 0, 0, 0.1); +} + +.todoapp input::-webkit-input-placeholder { + font-style: italic; + font-weight: 300; + color: #e6e6e6; +} + +.todoapp input::-moz-placeholder { + font-style: italic; + font-weight: 300; + color: #e6e6e6; +} + +.todoapp input::input-placeholder { + font-style: italic; + font-weight: 300; + color: #e6e6e6; +} + +.todoapp h1 { + position: absolute; + top: -155px; + width: 100%; + font-size: 100px; + font-weight: 100; + text-align: center; + color: rgba(175, 47, 47, 0.15); + -webkit-text-rendering: optimizeLegibility; + -moz-text-rendering: optimizeLegibility; + text-rendering: optimizeLegibility; +} + +.new-todo, +.edit { + position: relative; + margin: 0; + width: 100%; + font-size: 24px; + font-family: inherit; + font-weight: inherit; + line-height: 1.4em; + border: 0; + color: inherit; + padding: 6px; + border: 1px solid #999; + box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2); + box-sizing: border-box; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.new-todo { + padding: 16px 16px 16px 60px; + border: none; + background: rgba(0, 0, 0, 0.003); + box-shadow: inset 0 -2px 1px rgba(0,0,0,0.03); +} + +.main { + position: relative; + z-index: 2; + border-top: 1px solid #e6e6e6; +} + +label[for='toggle-all'] { + display: none; +} + +.toggle-all { + position: absolute; + top: -55px; + left: -12px; + width: 60px; + height: 34px; + text-align: center; + border: none; /* Mobile Safari */ +} + +.toggle-all:before { + content: '❯'; + font-size: 22px; + color: #e6e6e6; + padding: 10px 27px 10px 27px; +} + +.toggle-all:checked:before { + color: #737373; +} + +.todo-list { + margin: 0; + padding: 0; + list-style: none; +} + +.todo-list li { + position: relative; + font-size: 24px; + border-bottom: 1px solid #ededed; +} + +.todo-list li:last-child { + border-bottom: none; +} + +.todo-list li.editing { + border-bottom: none; + padding: 0; +} + +.todo-list li.editing .edit { + display: block; + width: 506px; + padding: 12px 16px; + margin: 0 0 0 43px; +} + +.todo-list li.editing .view { + display: none; +} + +.todo-list li .toggle { + text-align: center; + width: 40px; + /* auto, since non-WebKit browsers doesn't support input styling */ + height: auto; + position: absolute; + top: 0; + bottom: 0; + margin: auto 0; + border: none; /* Mobile Safari */ + -webkit-appearance: none; + appearance: none; +} + +.todo-list li .toggle:after { + content: url('data:image/svg+xml;utf8,'); +} + +.todo-list li .toggle:checked:after { + content: url('data:image/svg+xml;utf8,'); +} + +.todo-list li label { + word-break: break-all; + padding: 15px 60px 15px 15px; + margin-left: 45px; + display: block; + line-height: 1.2; + transition: color 0.4s; +} + +.todo-list li.completed label { + color: #d9d9d9; + text-decoration: line-through; +} + +.todo-list li .destroy { + display: none; + position: absolute; + top: 0; + right: 10px; + bottom: 0; + width: 40px; + height: 40px; + margin: auto 0; + font-size: 30px; + color: #cc9a9a; + margin-bottom: 11px; + transition: color 0.2s ease-out; +} + +.todo-list li .destroy:hover { + color: #af5b5e; +} + +.todo-list li .destroy:after { + content: '×'; +} + +.todo-list li:hover .destroy { + display: block; +} + +.todo-list li .edit { + display: none; +} + +.todo-list li.editing:last-child { + margin-bottom: -1px; +} + +.footer { + color: #777; + padding: 10px 15px; + height: 20px; + text-align: center; + border-top: 1px solid #e6e6e6; +} + +.footer:before { + content: ''; + position: absolute; + right: 0; + bottom: 0; + left: 0; + height: 50px; + overflow: hidden; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), + 0 8px 0 -3px #f6f6f6, + 0 9px 1px -3px rgba(0, 0, 0, 0.2), + 0 16px 0 -6px #f6f6f6, + 0 17px 2px -6px rgba(0, 0, 0, 0.2); +} + +.todo-count { + float: left; + text-align: left; +} + +.todo-count strong { + font-weight: 300; +} + +.filters { + margin: 0; + padding: 0; + list-style: none; + position: absolute; + right: 0; + left: 0; +} + +.filters li { + display: inline; +} + +.filters li a { + color: inherit; + margin: 3px; + padding: 3px 7px; + text-decoration: none; + border: 1px solid transparent; + border-radius: 3px; +} + +.filters li a:hover { + border-color: rgba(175, 47, 47, 0.1); +} + +.filters li a.selected { + border-color: rgba(175, 47, 47, 0.2); +} + +.clear-completed, +html .clear-completed:active { + float: right; + position: relative; + line-height: 20px; + text-decoration: none; + cursor: pointer; +} + +.clear-completed:hover { + text-decoration: underline; +} + +.info { + margin: 65px auto 0; + color: #bfbfbf; + font-size: 10px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-align: center; +} + +.info p { + line-height: 1; +} + +.info a { + color: inherit; + text-decoration: none; + font-weight: 400; +} + +.info a:hover { + text-decoration: underline; +} + +/* + Hack to remove background from Mobile Safari. + Can't use it globally since it destroys checkboxes in Firefox +*/ +@media screen and (-webkit-min-device-pixel-ratio:0) { + .toggle-all, + .todo-list li .toggle { + background: none; + } + + .todo-list li .toggle { + height: 40px; + } + + .toggle-all { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); + -webkit-appearance: none; + appearance: none; + } +} + +@media (max-width: 430px) { + .footer { + height: 50px; + } + + .filters { + bottom: 10px; + } +} diff --git a/examples/angular4/dist/assets/css/todomvc-common.css b/examples/angular4/dist/assets/css/todomvc-common.css new file mode 100644 index 0000000000..da65968a73 --- /dev/null +++ b/examples/angular4/dist/assets/css/todomvc-common.css @@ -0,0 +1,141 @@ +hr { + margin: 20px 0; + border: 0; + border-top: 1px dashed #c5c5c5; + border-bottom: 1px dashed #f7f7f7; +} + +.learn a { + font-weight: normal; + text-decoration: none; + color: #b83f45; +} + +.learn a:hover { + text-decoration: underline; + color: #787e7e; +} + +.learn h3, +.learn h4, +.learn h5 { + margin: 10px 0; + font-weight: 500; + line-height: 1.2; + color: #000; +} + +.learn h3 { + font-size: 24px; +} + +.learn h4 { + font-size: 18px; +} + +.learn h5 { + margin-bottom: 0; + font-size: 14px; +} + +.learn ul { + padding: 0; + margin: 0 0 30px 25px; +} + +.learn li { + line-height: 20px; +} + +.learn p { + font-size: 15px; + font-weight: 300; + line-height: 1.3; + margin-top: 0; + margin-bottom: 0; +} + +#issue-count { + display: none; +} + +.quote { + border: none; + margin: 20px 0 60px 0; +} + +.quote p { + font-style: italic; +} + +.quote p:before { + content: '“'; + font-size: 50px; + opacity: .15; + position: absolute; + top: -20px; + left: 3px; +} + +.quote p:after { + content: '”'; + font-size: 50px; + opacity: .15; + position: absolute; + bottom: -42px; + right: 3px; +} + +.quote footer { + position: absolute; + bottom: -40px; + right: 0; +} + +.quote footer img { + border-radius: 3px; +} + +.quote footer a { + margin-left: 5px; + vertical-align: middle; +} + +.speech-bubble { + position: relative; + padding: 10px; + background: rgba(0, 0, 0, .04); + border-radius: 5px; +} + +.speech-bubble:after { + content: ''; + position: absolute; + top: 100%; + right: 30px; + border: 13px solid transparent; + border-top-color: rgba(0, 0, 0, .04); +} + +.learn-bar > .learn { + position: absolute; + width: 272px; + top: 8px; + left: -300px; + padding: 10px; + border-radius: 5px; + background-color: rgba(255, 255, 255, .6); + transition-property: left; + transition-duration: 500ms; +} + +@media (min-width: 899px) { + .learn-bar { + width: auto; + padding-left: 300px; + } + + .learn-bar > .learn { + left: 8px; + } +} diff --git a/examples/angular4/dist/favicon.ico b/examples/angular4/dist/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8081c7ceaf2be08bf59010158c586170d9d2d517 GIT binary patch literal 5430 zcmc(je{54#6vvCoAI3i*G5%$U7!sA3wtMZ$fH6V9C`=eXGJb@R1%(I_{vnZtpD{6n z5Pl{DmxzBDbrB>}`90e12m8T*36WoeDLA&SD_hw{H^wM!cl_RWcVA!I+x87ee975; z@4kD^=bYPn&pmG@(+JZ`rqQEKxW<}RzhW}I!|ulN=fmjVi@x{p$cC`)5$a!)X&U+blKNvN5tg=uLvuLnuqRM;Yc*swiexsoh#XPNu{9F#c`G zQLe{yWA(Y6(;>y|-efAy11k<09(@Oo1B2@0`PtZSkqK&${ zgEY}`W@t{%?9u5rF?}Y7OL{338l*JY#P!%MVQY@oqnItpZ}?s z!r?*kwuR{A@jg2Chlf0^{q*>8n5Ir~YWf*wmsh7B5&EpHfd5@xVaj&gqsdui^spyL zB|kUoblGoO7G(MuKTfa9?pGH0@QP^b#!lM1yHWLh*2iq#`C1TdrnO-d#?Oh@XV2HK zKA{`eo{--^K&MW66Lgsktfvn#cCAc*(}qsfhrvOjMGLE?`dHVipu1J3Kgr%g?cNa8 z)pkmC8DGH~fG+dlrp(5^-QBeEvkOvv#q7MBVLtm2oD^$lJZx--_=K&Ttd=-krx(Bb zcEoKJda@S!%%@`P-##$>*u%T*mh+QjV@)Qa=Mk1?#zLk+M4tIt%}wagT{5J%!tXAE;r{@=bb%nNVxvI+C+$t?!VJ@0d@HIyMJTI{vEw0Ul ze(ha!e&qANbTL1ZneNl45t=#Ot??C0MHjjgY8%*mGisN|S6%g3;Hlx#fMNcL<87MW zZ>6moo1YD?P!fJ#Jb(4)_cc50X5n0KoDYfdPoL^iV`k&o{LPyaoqMqk92wVM#_O0l z09$(A-D+gVIlq4TA&{1T@BsUH`Bm=r#l$Z51J-U&F32+hfUP-iLo=jg7Xmy+WLq6_tWv&`wDlz#`&)Jp~iQf zZP)tu>}pIIJKuw+$&t}GQuqMd%Z>0?t%&BM&Wo^4P^Y z)c6h^f2R>X8*}q|bblAF?@;%?2>$y+cMQbN{X$)^R>vtNq_5AB|0N5U*d^T?X9{xQnJYeU{ zoZL#obI;~Pp95f1`%X3D$Mh*4^?O?IT~7HqlWguezmg?Ybq|7>qQ(@pPHbE9V?f|( z+0xo!#m@Np9PljsyxBY-UA*{U*la#8Wz2sO|48_-5t8%_!n?S$zlGe+NA%?vmxjS- zHE5O3ZarU=X}$7>;Okp(UWXJxI%G_J-@IH;%5#Rt$(WUX?6*Ux!IRd$dLP6+SmPn= z8zjm4jGjN772R{FGkXwcNv8GBcZI#@Y2m{RNF_w8(Z%^A*!bS*!}s6sh*NnURytky humW;*g7R+&|Ledvc- + + + + TodoApp + + + + + + + + + Loading... + + diff --git a/examples/angular4/dist/inline.bundle.js b/examples/angular4/dist/inline.bundle.js new file mode 100644 index 0000000000..1627c6fc35 --- /dev/null +++ b/examples/angular4/dist/inline.bundle.js @@ -0,0 +1,153 @@ +/******/ (function(modules) { // webpackBootstrap +/******/ // install a JSONP callback for chunk loading +/******/ var parentJsonpFunction = window["webpackJsonp"]; +/******/ window["webpackJsonp"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) { +/******/ // add "moreModules" to the modules object, +/******/ // then flag all "chunkIds" as loaded and fire callback +/******/ var moduleId, chunkId, i = 0, resolves = [], result; +/******/ for(;i < chunkIds.length; i++) { +/******/ chunkId = chunkIds[i]; +/******/ if(installedChunks[chunkId]) { +/******/ resolves.push(installedChunks[chunkId][0]); +/******/ } +/******/ installedChunks[chunkId] = 0; +/******/ } +/******/ for(moduleId in moreModules) { +/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { +/******/ modules[moduleId] = moreModules[moduleId]; +/******/ } +/******/ } +/******/ if(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules); +/******/ while(resolves.length) { +/******/ resolves.shift()(); +/******/ } +/******/ if(executeModules) { +/******/ for(i=0; i < executeModules.length; i++) { +/******/ result = __webpack_require__(__webpack_require__.s = executeModules[i]); +/******/ } +/******/ } +/******/ return result; +/******/ }; +/******/ +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // objects to store loaded and loading chunks +/******/ var installedChunks = { +/******/ 4: 0 +/******/ }; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ // This file contains only the entry chunk. +/******/ // The chunk loading function for additional chunks +/******/ __webpack_require__.e = function requireEnsure(chunkId) { +/******/ if(installedChunks[chunkId] === 0) { +/******/ return Promise.resolve(); +/******/ } +/******/ +/******/ // a Promise means "currently loading". +/******/ if(installedChunks[chunkId]) { +/******/ return installedChunks[chunkId][2]; +/******/ } +/******/ +/******/ // setup Promise in chunk cache +/******/ var promise = new Promise(function(resolve, reject) { +/******/ installedChunks[chunkId] = [resolve, reject]; +/******/ }); +/******/ installedChunks[chunkId][2] = promise; +/******/ +/******/ // start chunk loading +/******/ var head = document.getElementsByTagName('head')[0]; +/******/ var script = document.createElement('script'); +/******/ script.type = 'text/javascript'; +/******/ script.charset = 'utf-8'; +/******/ script.async = true; +/******/ script.timeout = 120000; +/******/ +/******/ if (__webpack_require__.nc) { +/******/ script.setAttribute("nonce", __webpack_require__.nc); +/******/ } +/******/ script.src = __webpack_require__.p + "" + chunkId + ".chunk.js"; +/******/ var timeout = setTimeout(onScriptComplete, 120000); +/******/ script.onerror = script.onload = onScriptComplete; +/******/ function onScriptComplete() { +/******/ // avoid mem leaks in IE. +/******/ script.onerror = script.onload = null; +/******/ clearTimeout(timeout); +/******/ var chunk = installedChunks[chunkId]; +/******/ if(chunk !== 0) { +/******/ if(chunk) { +/******/ chunk[1](new Error('Loading chunk ' + chunkId + ' failed.')); +/******/ } +/******/ installedChunks[chunkId] = undefined; +/******/ } +/******/ }; +/******/ head.appendChild(script); +/******/ +/******/ return promise; +/******/ }; +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // identity function for calling harmony imports with the correct context +/******/ __webpack_require__.i = function(value) { return value; }; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // on error function for async loading +/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; }; +/******/ }) +/************************************************************************/ +/******/ ([]); +//# sourceMappingURL=inline.bundle.js.map \ No newline at end of file diff --git a/examples/angular4/dist/inline.bundle.js.map b/examples/angular4/dist/inline.bundle.js.map new file mode 100644 index 0000000000..cda657c8a7 --- /dev/null +++ b/examples/angular4/dist/inline.bundle.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack/bootstrap 410a5ff4ab941129e826"],"names":[],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAQ,oBAAoB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAY,2BAA2B;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,mDAA2C,cAAc;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA,kDAA0C,oBAAoB,WAAW","file":"inline.bundle.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t4: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tif(installedChunks[chunkId] === 0) {\n \t\t\treturn Promise.resolve();\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunks[chunkId]) {\n \t\t\treturn installedChunks[chunkId][2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunks[chunkId][2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = 'text/javascript';\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".chunk.js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 410a5ff4ab941129e826"],"sourceRoot":"webpack:///"} \ No newline at end of file diff --git a/examples/angular4/dist/main.bundle.js b/examples/angular4/dist/main.bundle.js new file mode 100644 index 0000000000..a9a60f98a9 --- /dev/null +++ b/examples/angular4/dist/main.bundle.js @@ -0,0 +1,287 @@ +webpackJsonp([1],{ + +/***/ "../../../../../src async recursive": +/***/ (function(module, exports) { + +function webpackEmptyContext(req) { + throw new Error("Cannot find module '" + req + "'."); +} +webpackEmptyContext.keys = function() { return []; }; +webpackEmptyContext.resolve = webpackEmptyContext; +module.exports = webpackEmptyContext; +webpackEmptyContext.id = "../../../../../src async recursive"; + +/***/ }), + +/***/ "../../../../../src/app/app.component.css": +/***/ (function(module, exports, __webpack_require__) { + +exports = module.exports = __webpack_require__("../../../../css-loader/lib/css-base.js")(false); +// imports + + +// module +exports.push([module.i, "", ""]); + +// exports + + +/*** EXPORTS FROM exports-loader ***/ +module.exports = module.exports.toString(); + +/***/ }), + +/***/ "../../../../../src/app/app.component.html": +/***/ (function(module, exports) { + +module.exports = "
\n
\n

Todos

\n \n
\n
0\">\n
    \n
  • \n
    \n \n \n \n
    \n
  • \n
\n
\n
0\">\n {{todos.length}} {{todos.length == 1 ? 'item' : 'items'}} left\n
\n
" + +/***/ }), + +/***/ "../../../../../src/app/app.component.ts": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__("../../../core/@angular/core.es5.js"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__todo__ = __webpack_require__("../../../../../src/app/todo.ts"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__todo_data_service__ = __webpack_require__("../../../../../src/app/todo-data.service.ts"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AppComponent; }); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; + + + +var AppComponent = (function () { + function AppComponent(todoDataService) { + this.todoDataService = todoDataService; + this.newTodo = new __WEBPACK_IMPORTED_MODULE_1__todo__["a" /* Todo */](); + } + AppComponent.prototype.addTodo = function () { + this.todoDataService.addTodo(this.newTodo); + this.newTodo = new __WEBPACK_IMPORTED_MODULE_1__todo__["a" /* Todo */](); + }; + AppComponent.prototype.toggleTodoComplete = function (todo) { + this.todoDataService.toggleTodoComplete(todo); + }; + AppComponent.prototype.removeTodo = function (todo) { + this.todoDataService.deleteTodoById(todo.id); + }; + Object.defineProperty(AppComponent.prototype, "todos", { + get: function () { + return this.todoDataService.getAllTodos(); + }, + enumerable: true, + configurable: true + }); + return AppComponent; +}()); +AppComponent = __decorate([ + __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["_5" /* Component */])({ + selector: 'app-root', + template: __webpack_require__("../../../../../src/app/app.component.html"), + styles: [__webpack_require__("../../../../../src/app/app.component.css")], + providers: [__WEBPACK_IMPORTED_MODULE_2__todo_data_service__["a" /* TodoDataService */]] + }), + __metadata("design:paramtypes", [typeof (_a = typeof __WEBPACK_IMPORTED_MODULE_2__todo_data_service__["a" /* TodoDataService */] !== "undefined" && __WEBPACK_IMPORTED_MODULE_2__todo_data_service__["a" /* TodoDataService */]) === "function" && _a || Object]) +], AppComponent); + +var _a; +//# sourceMappingURL=app.component.js.map + +/***/ }), + +/***/ "../../../../../src/app/app.module.ts": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_platform_browser__ = __webpack_require__("../../../platform-browser/@angular/platform-browser.es5.js"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_core__ = __webpack_require__("../../../core/@angular/core.es5.js"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__angular_forms__ = __webpack_require__("../../../forms/@angular/forms.es5.js"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__angular_http__ = __webpack_require__("../../../http/@angular/http.es5.js"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__app_component__ = __webpack_require__("../../../../../src/app/app.component.ts"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AppModule; }); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; + + + + + +var AppModule = (function () { + function AppModule() { + } + return AppModule; +}()); +AppModule = __decorate([ + __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__angular_core__["b" /* NgModule */])({ + declarations: [ + __WEBPACK_IMPORTED_MODULE_4__app_component__["a" /* AppComponent */] + ], + imports: [ + __WEBPACK_IMPORTED_MODULE_0__angular_platform_browser__["a" /* BrowserModule */], + __WEBPACK_IMPORTED_MODULE_2__angular_forms__["a" /* FormsModule */], + __WEBPACK_IMPORTED_MODULE_3__angular_http__["a" /* HttpModule */] + ], + providers: [], + bootstrap: [__WEBPACK_IMPORTED_MODULE_4__app_component__["a" /* AppComponent */]] + }) +], AppModule); + +//# sourceMappingURL=app.module.js.map + +/***/ }), + +/***/ "../../../../../src/app/todo-data.service.ts": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__("../../../core/@angular/core.es5.js"); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return TodoDataService; }); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; + +var TodoDataService = (function () { + function TodoDataService() { + // Placeholder for last id so we can simulate + // automatic incrementing of id's + this.lastId = 0; + // Placeholder for todo's + this.todos = []; + } + // Simulate POST /todos + TodoDataService.prototype.addTodo = function (todo) { + if (!todo.id) { + todo.id = ++this.lastId; + } + this.todos.push(todo); + return this; + }; + // Simulate DELETE /todos/:id + TodoDataService.prototype.deleteTodoById = function (id) { + this.todos = this.todos + .filter(function (todo) { return todo.id !== id; }); + return this; + }; + // Simulate PUT /todos/:id + TodoDataService.prototype.updateTodoById = function (id, values) { + if (values === void 0) { values = {}; } + var todo = this.getTodoById(id); + if (!todo) { + return null; + } + Object.assign(todo, values); + return todo; + }; + // Simulate GET /todos + TodoDataService.prototype.getAllTodos = function () { + return this.todos; + }; + // Simulate GET /todos/:id + TodoDataService.prototype.getTodoById = function (id) { + return this.todos + .filter(function (todo) { return todo.id === id; }) + .pop(); + }; + // Toggle todo complete + TodoDataService.prototype.toggleTodoComplete = function (todo) { + var updatedTodo = this.updateTodoById(todo.id, { + complete: !todo.complete + }); + return updatedTodo; + }; + return TodoDataService; +}()); +TodoDataService = __decorate([ + __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["c" /* Injectable */])(), + __metadata("design:paramtypes", []) +], TodoDataService); + +//# sourceMappingURL=todo-data.service.js.map + +/***/ }), + +/***/ "../../../../../src/app/todo.ts": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Todo; }); +var Todo = (function () { + function Todo(values) { + if (values === void 0) { values = {}; } + this.title = ''; + this.complete = false; + Object.assign(this, values); + } + return Todo; +}()); + +//# sourceMappingURL=todo.js.map + +/***/ }), + +/***/ "../../../../../src/environments/environment.ts": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return environment; }); +// The file contents for the current environment will overwrite these during build. +// The build system defaults to the dev environment which uses `environment.ts`, but if you do +// `ng build --env=prod` then `environment.prod.ts` will be used instead. +// The list of which env maps to which file can be found in `.angular-cli.json`. +// The file contents for the current environment will overwrite these during build. +var environment = { + production: false +}; +//# sourceMappingURL=environment.js.map + +/***/ }), + +/***/ "../../../../../src/main.ts": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__("../../../core/@angular/core.es5.js"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_platform_browser_dynamic__ = __webpack_require__("../../../platform-browser-dynamic/@angular/platform-browser-dynamic.es5.js"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__app_app_module__ = __webpack_require__("../../../../../src/app/app.module.ts"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__environments_environment__ = __webpack_require__("../../../../../src/environments/environment.ts"); + + + + +if (__WEBPACK_IMPORTED_MODULE_3__environments_environment__["a" /* environment */].production) { + __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["a" /* enableProdMode */])(); +} +__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__angular_platform_browser_dynamic__["a" /* platformBrowserDynamic */])().bootstrapModule(__WEBPACK_IMPORTED_MODULE_2__app_app_module__["a" /* AppModule */]); +//# sourceMappingURL=main.js.map + +/***/ }), + +/***/ 0: +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__("../../../../../src/main.ts"); + + +/***/ }) + +},[0]); +//# sourceMappingURL=main.bundle.js.map \ No newline at end of file diff --git a/examples/angular4/dist/main.bundle.js.map b/examples/angular4/dist/main.bundle.js.map new file mode 100644 index 0000000000..d6a08f7d5b --- /dev/null +++ b/examples/angular4/dist/main.bundle.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["C:/proj/todomvc-angular-4/src async","C:/proj/todomvc-angular-4/src/app/app.component.css","C:/proj/todomvc-angular-4/src/app/app.component.html","C:/proj/todomvc-angular-4/src/app/app.component.ts","C:/proj/todomvc-angular-4/src/app/app.module.ts","C:/proj/todomvc-angular-4/src/app/todo-data.service.ts","C:/proj/todomvc-angular-4/src/app/todo.ts","C:/proj/todomvc-angular-4/src/environments/environment.ts","C:/proj/todomvc-angular-4/src/main.ts"],"names":[],"mappings":"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","file":"main.bundle.js","sourcesContent":["function webpackEmptyContext(req) {\n\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = \"../../../../../src async recursive\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/src async\n// module id = ../../../../../src async recursive\n// module chunks = 1","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n\n\n/*** EXPORTS FROM exports-loader ***/\nmodule.exports = module.exports.toString();\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/src/app/app.component.css\n// module id = ../../../../../src/app/app.component.css\n// module chunks = 1","module.exports = \"
\\n
\\n

Todos

\\n \\n
\\n
0\\\">\\n
    \\n
  • \\n
    \\n \\n \\n \\n
    \\n
  • \\n
\\n
\\n
0\\\">\\n {{todos.length}} {{todos.length == 1 ? 'item' : 'items'}} left\\n
\\n
\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/src/app/app.component.html\n// module id = ../../../../../src/app/app.component.html\n// module chunks = 1","import {Component} from '@angular/core';\nimport {Todo} from './todo';\nimport {TodoDataService} from './todo-data.service';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.css'],\n providers: [TodoDataService]\n})\nexport class AppComponent {\n\n newTodo: Todo = new Todo();\n\n constructor(private todoDataService: TodoDataService) {\n }\n\n addTodo() {\n this.todoDataService.addTodo(this.newTodo);\n this.newTodo = new Todo();\n }\n\n toggleTodoComplete(todo) {\n this.todoDataService.toggleTodoComplete(todo);\n }\n\n removeTodo(todo) {\n this.todoDataService.deleteTodoById(todo.id);\n }\n\n get todos() {\n return this.todoDataService.getAllTodos();\n }\n\n}\n\n\n// WEBPACK FOOTER //\n// C:/proj/todomvc-angular-4/src/app/app.component.ts","import { BrowserModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { HttpModule } from '@angular/http';\n\nimport { AppComponent } from './app.component';\n\n@NgModule({\n declarations: [\n AppComponent\n ],\n imports: [\n BrowserModule,\n FormsModule,\n HttpModule\n ],\n providers: [],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n\n\n\n// WEBPACK FOOTER //\n// C:/proj/todomvc-angular-4/src/app/app.module.ts","import {Injectable} from '@angular/core';\nimport {Todo} from './todo';\n\n@Injectable()\nexport class TodoDataService {\n\n // Placeholder for last id so we can simulate\n // automatic incrementing of id's\n lastId: number = 0;\n\n // Placeholder for todo's\n todos: Todo[] = [];\n\n constructor() {\n }\n\n // Simulate POST /todos\n addTodo(todo: Todo): TodoDataService {\n if (!todo.id) {\n todo.id = ++this.lastId;\n }\n this.todos.push(todo);\n return this;\n }\n\n // Simulate DELETE /todos/:id\n deleteTodoById(id: number): TodoDataService {\n this.todos = this.todos\n .filter(todo => todo.id !== id);\n return this;\n }\n\n // Simulate PUT /todos/:id\n updateTodoById(id: number, values: Object = {}): Todo {\n let todo = this.getTodoById(id);\n if (!todo) {\n return null;\n }\n Object.assign(todo, values);\n return todo;\n }\n\n // Simulate GET /todos\n getAllTodos(): Todo[] {\n return this.todos;\n }\n\n // Simulate GET /todos/:id\n getTodoById(id: number): Todo {\n return this.todos\n .filter(todo => todo.id === id)\n .pop();\n }\n\n // Toggle todo complete\n toggleTodoComplete(todo: Todo){\n let updatedTodo = this.updateTodoById(todo.id, {\n complete: !todo.complete\n });\n return updatedTodo;\n }\n\n}\n\n\n// WEBPACK FOOTER //\n// C:/proj/todomvc-angular-4/src/app/todo-data.service.ts","export class Todo {\n id: number;\n title: string = '';\n complete: boolean = false;\n\n constructor(values: Object = {}) {\n Object.assign(this, values);\n }\n}\n\n\n// WEBPACK FOOTER //\n// C:/proj/todomvc-angular-4/src/app/todo.ts","// The file contents for the current environment will overwrite these during build.\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\n// The list of which env maps to which file can be found in `.angular-cli.json`.\n\nexport const environment = {\n production: false\n};\n\n\n\n// WEBPACK FOOTER //\n// C:/proj/todomvc-angular-4/src/environments/environment.ts","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule);\n\n\n\n// WEBPACK FOOTER //\n// C:/proj/todomvc-angular-4/src/main.ts"],"sourceRoot":"webpack:///"} \ No newline at end of file diff --git a/examples/angular4/dist/polyfills.bundle.js b/examples/angular4/dist/polyfills.bundle.js new file mode 100644 index 0000000000..f1a8322aba --- /dev/null +++ b/examples/angular4/dist/polyfills.bundle.js @@ -0,0 +1,5037 @@ +webpackJsonp([0],{ + +/***/ "../../../../../src/polyfills.ts": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_core_js_es6_reflect__ = __webpack_require__("../../../../core-js/es6/reflect.js"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_core_js_es6_reflect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_core_js_es6_reflect__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_core_js_es7_reflect__ = __webpack_require__("../../../../core-js/es7/reflect.js"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_core_js_es7_reflect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_core_js_es7_reflect__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_zone_js_dist_zone__ = __webpack_require__("../../../../zone.js/dist/zone.js"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_zone_js_dist_zone___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_zone_js_dist_zone__); +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html + */ +/*************************************************************************************************** + * BROWSER POLYFILLS + */ +/** IE9, IE10 and IE11 requires all of the following polyfills. **/ +// import 'core-js/es6/symbol'; +// import 'core-js/es6/object'; +// import 'core-js/es6/function'; +// import 'core-js/es6/parse-int'; +// import 'core-js/es6/parse-float'; +// import 'core-js/es6/number'; +// import 'core-js/es6/math'; +// import 'core-js/es6/string'; +// import 'core-js/es6/date'; +// import 'core-js/es6/array'; +// import 'core-js/es6/regexp'; +// import 'core-js/es6/map'; +// import 'core-js/es6/set'; +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. +/** IE10 and IE11 requires the following to support `@angular/animation`. */ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. +/** Evergreen browsers require these. **/ + + +/** ALL Firefox browsers require the following to support `@angular/animation`. **/ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. +/*************************************************************************************************** + * Zone JS is required by Angular itself. + */ + // Included with Angular CLI. +/*************************************************************************************************** + * APPLICATION IMPORTS + */ +/** + * Date, currency, decimal and percent pipes. + * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10 + */ +// import 'intl'; // Run `npm install --save intl`. +//# sourceMappingURL=polyfills.js.map + +/***/ }), + +/***/ "../../../../core-js/es6/reflect.js": +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__("../../../../core-js/modules/es6.reflect.apply.js"); +__webpack_require__("../../../../core-js/modules/es6.reflect.construct.js"); +__webpack_require__("../../../../core-js/modules/es6.reflect.define-property.js"); +__webpack_require__("../../../../core-js/modules/es6.reflect.delete-property.js"); +__webpack_require__("../../../../core-js/modules/es6.reflect.enumerate.js"); +__webpack_require__("../../../../core-js/modules/es6.reflect.get.js"); +__webpack_require__("../../../../core-js/modules/es6.reflect.get-own-property-descriptor.js"); +__webpack_require__("../../../../core-js/modules/es6.reflect.get-prototype-of.js"); +__webpack_require__("../../../../core-js/modules/es6.reflect.has.js"); +__webpack_require__("../../../../core-js/modules/es6.reflect.is-extensible.js"); +__webpack_require__("../../../../core-js/modules/es6.reflect.own-keys.js"); +__webpack_require__("../../../../core-js/modules/es6.reflect.prevent-extensions.js"); +__webpack_require__("../../../../core-js/modules/es6.reflect.set.js"); +__webpack_require__("../../../../core-js/modules/es6.reflect.set-prototype-of.js"); +module.exports = __webpack_require__("../../../../core-js/modules/_core.js").Reflect; + +/***/ }), + +/***/ "../../../../core-js/es7/reflect.js": +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__("../../../../core-js/modules/es7.reflect.define-metadata.js"); +__webpack_require__("../../../../core-js/modules/es7.reflect.delete-metadata.js"); +__webpack_require__("../../../../core-js/modules/es7.reflect.get-metadata.js"); +__webpack_require__("../../../../core-js/modules/es7.reflect.get-metadata-keys.js"); +__webpack_require__("../../../../core-js/modules/es7.reflect.get-own-metadata.js"); +__webpack_require__("../../../../core-js/modules/es7.reflect.get-own-metadata-keys.js"); +__webpack_require__("../../../../core-js/modules/es7.reflect.has-metadata.js"); +__webpack_require__("../../../../core-js/modules/es7.reflect.has-own-metadata.js"); +__webpack_require__("../../../../core-js/modules/es7.reflect.metadata.js"); +module.exports = __webpack_require__("../../../../core-js/modules/_core.js").Reflect; + + +/***/ }), + +/***/ "../../../../core-js/modules/_a-function.js": +/***/ (function(module, exports) { + +module.exports = function(it){ + if(typeof it != 'function')throw TypeError(it + ' is not a function!'); + return it; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_an-instance.js": +/***/ (function(module, exports) { + +module.exports = function(it, Constructor, name, forbiddenField){ + if(!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)){ + throw TypeError(name + ': incorrect invocation!'); + } return it; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_an-object.js": +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__("../../../../core-js/modules/_is-object.js"); +module.exports = function(it){ + if(!isObject(it))throw TypeError(it + ' is not an object!'); + return it; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_array-from-iterable.js": +/***/ (function(module, exports, __webpack_require__) { + +var forOf = __webpack_require__("../../../../core-js/modules/_for-of.js"); + +module.exports = function(iter, ITERATOR){ + var result = []; + forOf(iter, false, result.push, result, ITERATOR); + return result; +}; + + +/***/ }), + +/***/ "../../../../core-js/modules/_array-includes.js": +/***/ (function(module, exports, __webpack_require__) { + +// false -> Array#indexOf +// true -> Array#includes +var toIObject = __webpack_require__("../../../../core-js/modules/_to-iobject.js") + , toLength = __webpack_require__("../../../../core-js/modules/_to-length.js") + , toIndex = __webpack_require__("../../../../core-js/modules/_to-index.js"); +module.exports = function(IS_INCLUDES){ + return function($this, el, fromIndex){ + var O = toIObject($this) + , length = toLength(O.length) + , index = toIndex(fromIndex, length) + , value; + // Array#includes uses SameValueZero equality algorithm + if(IS_INCLUDES && el != el)while(length > index){ + value = O[index++]; + if(value != value)return true; + // Array#toIndex ignores holes, Array#includes - not + } else for(;length > index; index++)if(IS_INCLUDES || index in O){ + if(O[index] === el)return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_array-methods.js": +/***/ (function(module, exports, __webpack_require__) { + +// 0 -> Array#forEach +// 1 -> Array#map +// 2 -> Array#filter +// 3 -> Array#some +// 4 -> Array#every +// 5 -> Array#find +// 6 -> Array#findIndex +var ctx = __webpack_require__("../../../../core-js/modules/_ctx.js") + , IObject = __webpack_require__("../../../../core-js/modules/_iobject.js") + , toObject = __webpack_require__("../../../../core-js/modules/_to-object.js") + , toLength = __webpack_require__("../../../../core-js/modules/_to-length.js") + , asc = __webpack_require__("../../../../core-js/modules/_array-species-create.js"); +module.exports = function(TYPE, $create){ + var IS_MAP = TYPE == 1 + , IS_FILTER = TYPE == 2 + , IS_SOME = TYPE == 3 + , IS_EVERY = TYPE == 4 + , IS_FIND_INDEX = TYPE == 6 + , NO_HOLES = TYPE == 5 || IS_FIND_INDEX + , create = $create || asc; + return function($this, callbackfn, that){ + var O = toObject($this) + , self = IObject(O) + , f = ctx(callbackfn, that, 3) + , length = toLength(self.length) + , index = 0 + , result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined + , val, res; + for(;length > index; index++)if(NO_HOLES || index in self){ + val = self[index]; + res = f(val, index, O); + if(TYPE){ + if(IS_MAP)result[index] = res; // map + else if(res)switch(TYPE){ + case 3: return true; // some + case 5: return val; // find + case 6: return index; // findIndex + case 2: result.push(val); // filter + } else if(IS_EVERY)return false; // every + } + } + return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result; + }; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_array-species-constructor.js": +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__("../../../../core-js/modules/_is-object.js") + , isArray = __webpack_require__("../../../../core-js/modules/_is-array.js") + , SPECIES = __webpack_require__("../../../../core-js/modules/_wks.js")('species'); + +module.exports = function(original){ + var C; + if(isArray(original)){ + C = original.constructor; + // cross-realm fallback + if(typeof C == 'function' && (C === Array || isArray(C.prototype)))C = undefined; + if(isObject(C)){ + C = C[SPECIES]; + if(C === null)C = undefined; + } + } return C === undefined ? Array : C; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_array-species-create.js": +/***/ (function(module, exports, __webpack_require__) { + +// 9.4.2.3 ArraySpeciesCreate(originalArray, length) +var speciesConstructor = __webpack_require__("../../../../core-js/modules/_array-species-constructor.js"); + +module.exports = function(original, length){ + return new (speciesConstructor(original))(length); +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_bind.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var aFunction = __webpack_require__("../../../../core-js/modules/_a-function.js") + , isObject = __webpack_require__("../../../../core-js/modules/_is-object.js") + , invoke = __webpack_require__("../../../../core-js/modules/_invoke.js") + , arraySlice = [].slice + , factories = {}; + +var construct = function(F, len, args){ + if(!(len in factories)){ + for(var n = [], i = 0; i < len; i++)n[i] = 'a[' + i + ']'; + factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')'); + } return factories[len](F, args); +}; + +module.exports = Function.bind || function bind(that /*, args... */){ + var fn = aFunction(this) + , partArgs = arraySlice.call(arguments, 1); + var bound = function(/* args... */){ + var args = partArgs.concat(arraySlice.call(arguments)); + return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that); + }; + if(isObject(fn.prototype))bound.prototype = fn.prototype; + return bound; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_classof.js": +/***/ (function(module, exports, __webpack_require__) { + +// getting tag from 19.1.3.6 Object.prototype.toString() +var cof = __webpack_require__("../../../../core-js/modules/_cof.js") + , TAG = __webpack_require__("../../../../core-js/modules/_wks.js")('toStringTag') + // ES3 wrong here + , ARG = cof(function(){ return arguments; }()) == 'Arguments'; + +// fallback for IE11 Script Access Denied error +var tryGet = function(it, key){ + try { + return it[key]; + } catch(e){ /* empty */ } +}; + +module.exports = function(it){ + var O, T, B; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T + // builtinTag case + : ARG ? cof(O) + // ES3 arguments fallback + : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_cof.js": +/***/ (function(module, exports) { + +var toString = {}.toString; + +module.exports = function(it){ + return toString.call(it).slice(8, -1); +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_collection-strong.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var dP = __webpack_require__("../../../../core-js/modules/_object-dp.js").f + , create = __webpack_require__("../../../../core-js/modules/_object-create.js") + , redefineAll = __webpack_require__("../../../../core-js/modules/_redefine-all.js") + , ctx = __webpack_require__("../../../../core-js/modules/_ctx.js") + , anInstance = __webpack_require__("../../../../core-js/modules/_an-instance.js") + , defined = __webpack_require__("../../../../core-js/modules/_defined.js") + , forOf = __webpack_require__("../../../../core-js/modules/_for-of.js") + , $iterDefine = __webpack_require__("../../../../core-js/modules/_iter-define.js") + , step = __webpack_require__("../../../../core-js/modules/_iter-step.js") + , setSpecies = __webpack_require__("../../../../core-js/modules/_set-species.js") + , DESCRIPTORS = __webpack_require__("../../../../core-js/modules/_descriptors.js") + , fastKey = __webpack_require__("../../../../core-js/modules/_meta.js").fastKey + , SIZE = DESCRIPTORS ? '_s' : 'size'; + +var getEntry = function(that, key){ + // fast case + var index = fastKey(key), entry; + if(index !== 'F')return that._i[index]; + // frozen object case + for(entry = that._f; entry; entry = entry.n){ + if(entry.k == key)return entry; + } +}; + +module.exports = { + getConstructor: function(wrapper, NAME, IS_MAP, ADDER){ + var C = wrapper(function(that, iterable){ + anInstance(that, C, NAME, '_i'); + that._i = create(null); // index + that._f = undefined; // first entry + that._l = undefined; // last entry + that[SIZE] = 0; // size + if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that); + }); + redefineAll(C.prototype, { + // 23.1.3.1 Map.prototype.clear() + // 23.2.3.2 Set.prototype.clear() + clear: function clear(){ + for(var that = this, data = that._i, entry = that._f; entry; entry = entry.n){ + entry.r = true; + if(entry.p)entry.p = entry.p.n = undefined; + delete data[entry.i]; + } + that._f = that._l = undefined; + that[SIZE] = 0; + }, + // 23.1.3.3 Map.prototype.delete(key) + // 23.2.3.4 Set.prototype.delete(value) + 'delete': function(key){ + var that = this + , entry = getEntry(that, key); + if(entry){ + var next = entry.n + , prev = entry.p; + delete that._i[entry.i]; + entry.r = true; + if(prev)prev.n = next; + if(next)next.p = prev; + if(that._f == entry)that._f = next; + if(that._l == entry)that._l = prev; + that[SIZE]--; + } return !!entry; + }, + // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined) + // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined) + forEach: function forEach(callbackfn /*, that = undefined */){ + anInstance(this, C, 'forEach'); + var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3) + , entry; + while(entry = entry ? entry.n : this._f){ + f(entry.v, entry.k, this); + // revert to the last existing entry + while(entry && entry.r)entry = entry.p; + } + }, + // 23.1.3.7 Map.prototype.has(key) + // 23.2.3.7 Set.prototype.has(value) + has: function has(key){ + return !!getEntry(this, key); + } + }); + if(DESCRIPTORS)dP(C.prototype, 'size', { + get: function(){ + return defined(this[SIZE]); + } + }); + return C; + }, + def: function(that, key, value){ + var entry = getEntry(that, key) + , prev, index; + // change existing entry + if(entry){ + entry.v = value; + // create new entry + } else { + that._l = entry = { + i: index = fastKey(key, true), // <- index + k: key, // <- key + v: value, // <- value + p: prev = that._l, // <- previous entry + n: undefined, // <- next entry + r: false // <- removed + }; + if(!that._f)that._f = entry; + if(prev)prev.n = entry; + that[SIZE]++; + // add to index + if(index !== 'F')that._i[index] = entry; + } return that; + }, + getEntry: getEntry, + setStrong: function(C, NAME, IS_MAP){ + // add .keys, .values, .entries, [@@iterator] + // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11 + $iterDefine(C, NAME, function(iterated, kind){ + this._t = iterated; // target + this._k = kind; // kind + this._l = undefined; // previous + }, function(){ + var that = this + , kind = that._k + , entry = that._l; + // revert to the last existing entry + while(entry && entry.r)entry = entry.p; + // get next entry + if(!that._t || !(that._l = entry = entry ? entry.n : that._t._f)){ + // or finish the iteration + that._t = undefined; + return step(1); + } + // return step by kind + if(kind == 'keys' )return step(0, entry.k); + if(kind == 'values')return step(0, entry.v); + return step(0, [entry.k, entry.v]); + }, IS_MAP ? 'entries' : 'values' , !IS_MAP, true); + + // add [@@species], 23.1.2.2, 23.2.2.2 + setSpecies(NAME); + } +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_collection-weak.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var redefineAll = __webpack_require__("../../../../core-js/modules/_redefine-all.js") + , getWeak = __webpack_require__("../../../../core-js/modules/_meta.js").getWeak + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js") + , isObject = __webpack_require__("../../../../core-js/modules/_is-object.js") + , anInstance = __webpack_require__("../../../../core-js/modules/_an-instance.js") + , forOf = __webpack_require__("../../../../core-js/modules/_for-of.js") + , createArrayMethod = __webpack_require__("../../../../core-js/modules/_array-methods.js") + , $has = __webpack_require__("../../../../core-js/modules/_has.js") + , arrayFind = createArrayMethod(5) + , arrayFindIndex = createArrayMethod(6) + , id = 0; + +// fallback for uncaught frozen keys +var uncaughtFrozenStore = function(that){ + return that._l || (that._l = new UncaughtFrozenStore); +}; +var UncaughtFrozenStore = function(){ + this.a = []; +}; +var findUncaughtFrozen = function(store, key){ + return arrayFind(store.a, function(it){ + return it[0] === key; + }); +}; +UncaughtFrozenStore.prototype = { + get: function(key){ + var entry = findUncaughtFrozen(this, key); + if(entry)return entry[1]; + }, + has: function(key){ + return !!findUncaughtFrozen(this, key); + }, + set: function(key, value){ + var entry = findUncaughtFrozen(this, key); + if(entry)entry[1] = value; + else this.a.push([key, value]); + }, + 'delete': function(key){ + var index = arrayFindIndex(this.a, function(it){ + return it[0] === key; + }); + if(~index)this.a.splice(index, 1); + return !!~index; + } +}; + +module.exports = { + getConstructor: function(wrapper, NAME, IS_MAP, ADDER){ + var C = wrapper(function(that, iterable){ + anInstance(that, C, NAME, '_i'); + that._i = id++; // collection id + that._l = undefined; // leak store for uncaught frozen objects + if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that); + }); + redefineAll(C.prototype, { + // 23.3.3.2 WeakMap.prototype.delete(key) + // 23.4.3.3 WeakSet.prototype.delete(value) + 'delete': function(key){ + if(!isObject(key))return false; + var data = getWeak(key); + if(data === true)return uncaughtFrozenStore(this)['delete'](key); + return data && $has(data, this._i) && delete data[this._i]; + }, + // 23.3.3.4 WeakMap.prototype.has(key) + // 23.4.3.4 WeakSet.prototype.has(value) + has: function has(key){ + if(!isObject(key))return false; + var data = getWeak(key); + if(data === true)return uncaughtFrozenStore(this).has(key); + return data && $has(data, this._i); + } + }); + return C; + }, + def: function(that, key, value){ + var data = getWeak(anObject(key), true); + if(data === true)uncaughtFrozenStore(that).set(key, value); + else data[that._i] = value; + return that; + }, + ufstore: uncaughtFrozenStore +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_collection.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var global = __webpack_require__("../../../../core-js/modules/_global.js") + , $export = __webpack_require__("../../../../core-js/modules/_export.js") + , redefine = __webpack_require__("../../../../core-js/modules/_redefine.js") + , redefineAll = __webpack_require__("../../../../core-js/modules/_redefine-all.js") + , meta = __webpack_require__("../../../../core-js/modules/_meta.js") + , forOf = __webpack_require__("../../../../core-js/modules/_for-of.js") + , anInstance = __webpack_require__("../../../../core-js/modules/_an-instance.js") + , isObject = __webpack_require__("../../../../core-js/modules/_is-object.js") + , fails = __webpack_require__("../../../../core-js/modules/_fails.js") + , $iterDetect = __webpack_require__("../../../../core-js/modules/_iter-detect.js") + , setToStringTag = __webpack_require__("../../../../core-js/modules/_set-to-string-tag.js") + , inheritIfRequired = __webpack_require__("../../../../core-js/modules/_inherit-if-required.js"); + +module.exports = function(NAME, wrapper, methods, common, IS_MAP, IS_WEAK){ + var Base = global[NAME] + , C = Base + , ADDER = IS_MAP ? 'set' : 'add' + , proto = C && C.prototype + , O = {}; + var fixMethod = function(KEY){ + var fn = proto[KEY]; + redefine(proto, KEY, + KEY == 'delete' ? function(a){ + return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); + } : KEY == 'has' ? function has(a){ + return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); + } : KEY == 'get' ? function get(a){ + return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a); + } : KEY == 'add' ? function add(a){ fn.call(this, a === 0 ? 0 : a); return this; } + : function set(a, b){ fn.call(this, a === 0 ? 0 : a, b); return this; } + ); + }; + if(typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function(){ + new C().entries().next(); + }))){ + // create collection constructor + C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER); + redefineAll(C.prototype, methods); + meta.NEED = true; + } else { + var instance = new C + // early implementations not supports chaining + , HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance + // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false + , THROWS_ON_PRIMITIVES = fails(function(){ instance.has(1); }) + // most early implementations doesn't supports iterables, most modern - not close it correctly + , ACCEPT_ITERABLES = $iterDetect(function(iter){ new C(iter); }) // eslint-disable-line no-new + // for early implementations -0 and +0 not the same + , BUGGY_ZERO = !IS_WEAK && fails(function(){ + // V8 ~ Chromium 42- fails only with 5+ elements + var $instance = new C() + , index = 5; + while(index--)$instance[ADDER](index, index); + return !$instance.has(-0); + }); + if(!ACCEPT_ITERABLES){ + C = wrapper(function(target, iterable){ + anInstance(target, C, NAME); + var that = inheritIfRequired(new Base, target, C); + if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that); + return that; + }); + C.prototype = proto; + proto.constructor = C; + } + if(THROWS_ON_PRIMITIVES || BUGGY_ZERO){ + fixMethod('delete'); + fixMethod('has'); + IS_MAP && fixMethod('get'); + } + if(BUGGY_ZERO || HASNT_CHAINING)fixMethod(ADDER); + // weak collections should not contains .clear method + if(IS_WEAK && proto.clear)delete proto.clear; + } + + setToStringTag(C, NAME); + + O[NAME] = C; + $export($export.G + $export.W + $export.F * (C != Base), O); + + if(!IS_WEAK)common.setStrong(C, NAME, IS_MAP); + + return C; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_core.js": +/***/ (function(module, exports) { + +var core = module.exports = {version: '2.4.0'}; +if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef + +/***/ }), + +/***/ "../../../../core-js/modules/_ctx.js": +/***/ (function(module, exports, __webpack_require__) { + +// optional / simple context binding +var aFunction = __webpack_require__("../../../../core-js/modules/_a-function.js"); +module.exports = function(fn, that, length){ + aFunction(fn); + if(that === undefined)return fn; + switch(length){ + case 1: return function(a){ + return fn.call(that, a); + }; + case 2: return function(a, b){ + return fn.call(that, a, b); + }; + case 3: return function(a, b, c){ + return fn.call(that, a, b, c); + }; + } + return function(/* ...args */){ + return fn.apply(that, arguments); + }; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_defined.js": +/***/ (function(module, exports) { + +// 7.2.1 RequireObjectCoercible(argument) +module.exports = function(it){ + if(it == undefined)throw TypeError("Can't call method on " + it); + return it; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_descriptors.js": +/***/ (function(module, exports, __webpack_require__) { + +// Thank's IE8 for his funny defineProperty +module.exports = !__webpack_require__("../../../../core-js/modules/_fails.js")(function(){ + return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7; +}); + +/***/ }), + +/***/ "../../../../core-js/modules/_dom-create.js": +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__("../../../../core-js/modules/_is-object.js") + , document = __webpack_require__("../../../../core-js/modules/_global.js").document + // in old IE typeof document.createElement is 'object' + , is = isObject(document) && isObject(document.createElement); +module.exports = function(it){ + return is ? document.createElement(it) : {}; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_enum-bug-keys.js": +/***/ (function(module, exports) { + +// IE 8- don't enum bug keys +module.exports = ( + 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' +).split(','); + +/***/ }), + +/***/ "../../../../core-js/modules/_export.js": +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__("../../../../core-js/modules/_global.js") + , core = __webpack_require__("../../../../core-js/modules/_core.js") + , hide = __webpack_require__("../../../../core-js/modules/_hide.js") + , redefine = __webpack_require__("../../../../core-js/modules/_redefine.js") + , ctx = __webpack_require__("../../../../core-js/modules/_ctx.js") + , PROTOTYPE = 'prototype'; + +var $export = function(type, name, source){ + var IS_FORCED = type & $export.F + , IS_GLOBAL = type & $export.G + , IS_STATIC = type & $export.S + , IS_PROTO = type & $export.P + , IS_BIND = type & $export.B + , target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE] + , exports = IS_GLOBAL ? core : core[name] || (core[name] = {}) + , expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}) + , key, own, out, exp; + if(IS_GLOBAL)source = name; + for(key in source){ + // contains in native + own = !IS_FORCED && target && target[key] !== undefined; + // export native or passed + out = (own ? target : source)[key]; + // bind timers to global for call from export context + exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; + // extend global + if(target)redefine(target, key, out, type & $export.U); + // export + if(exports[key] != out)hide(exports, key, exp); + if(IS_PROTO && expProto[key] != out)expProto[key] = out; + } +}; +global.core = core; +// type bitmap +$export.F = 1; // forced +$export.G = 2; // global +$export.S = 4; // static +$export.P = 8; // proto +$export.B = 16; // bind +$export.W = 32; // wrap +$export.U = 64; // safe +$export.R = 128; // real proto method for `library` +module.exports = $export; + +/***/ }), + +/***/ "../../../../core-js/modules/_fails.js": +/***/ (function(module, exports) { + +module.exports = function(exec){ + try { + return !!exec(); + } catch(e){ + return true; + } +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_for-of.js": +/***/ (function(module, exports, __webpack_require__) { + +var ctx = __webpack_require__("../../../../core-js/modules/_ctx.js") + , call = __webpack_require__("../../../../core-js/modules/_iter-call.js") + , isArrayIter = __webpack_require__("../../../../core-js/modules/_is-array-iter.js") + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js") + , toLength = __webpack_require__("../../../../core-js/modules/_to-length.js") + , getIterFn = __webpack_require__("../../../../core-js/modules/core.get-iterator-method.js") + , BREAK = {} + , RETURN = {}; +var exports = module.exports = function(iterable, entries, fn, that, ITERATOR){ + var iterFn = ITERATOR ? function(){ return iterable; } : getIterFn(iterable) + , f = ctx(fn, that, entries ? 2 : 1) + , index = 0 + , length, step, iterator, result; + if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!'); + // fast case for arrays with default iterator + if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){ + result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]); + if(result === BREAK || result === RETURN)return result; + } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){ + result = call(iterator, f, step.value, entries); + if(result === BREAK || result === RETURN)return result; + } +}; +exports.BREAK = BREAK; +exports.RETURN = RETURN; + +/***/ }), + +/***/ "../../../../core-js/modules/_global.js": +/***/ (function(module, exports) { + +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +var global = module.exports = typeof window != 'undefined' && window.Math == Math + ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')(); +if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef + +/***/ }), + +/***/ "../../../../core-js/modules/_has.js": +/***/ (function(module, exports) { + +var hasOwnProperty = {}.hasOwnProperty; +module.exports = function(it, key){ + return hasOwnProperty.call(it, key); +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_hide.js": +/***/ (function(module, exports, __webpack_require__) { + +var dP = __webpack_require__("../../../../core-js/modules/_object-dp.js") + , createDesc = __webpack_require__("../../../../core-js/modules/_property-desc.js"); +module.exports = __webpack_require__("../../../../core-js/modules/_descriptors.js") ? function(object, key, value){ + return dP.f(object, key, createDesc(1, value)); +} : function(object, key, value){ + object[key] = value; + return object; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_html.js": +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__("../../../../core-js/modules/_global.js").document && document.documentElement; + +/***/ }), + +/***/ "../../../../core-js/modules/_ie8-dom-define.js": +/***/ (function(module, exports, __webpack_require__) { + +module.exports = !__webpack_require__("../../../../core-js/modules/_descriptors.js") && !__webpack_require__("../../../../core-js/modules/_fails.js")(function(){ + return Object.defineProperty(__webpack_require__("../../../../core-js/modules/_dom-create.js")('div'), 'a', {get: function(){ return 7; }}).a != 7; +}); + +/***/ }), + +/***/ "../../../../core-js/modules/_inherit-if-required.js": +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__("../../../../core-js/modules/_is-object.js") + , setPrototypeOf = __webpack_require__("../../../../core-js/modules/_set-proto.js").set; +module.exports = function(that, target, C){ + var P, S = target.constructor; + if(S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf){ + setPrototypeOf(that, P); + } return that; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_invoke.js": +/***/ (function(module, exports) { + +// fast apply, http://jsperf.lnkit.com/fast-apply/5 +module.exports = function(fn, args, that){ + var un = that === undefined; + switch(args.length){ + case 0: return un ? fn() + : fn.call(that); + case 1: return un ? fn(args[0]) + : fn.call(that, args[0]); + case 2: return un ? fn(args[0], args[1]) + : fn.call(that, args[0], args[1]); + case 3: return un ? fn(args[0], args[1], args[2]) + : fn.call(that, args[0], args[1], args[2]); + case 4: return un ? fn(args[0], args[1], args[2], args[3]) + : fn.call(that, args[0], args[1], args[2], args[3]); + } return fn.apply(that, args); +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_iobject.js": +/***/ (function(module, exports, __webpack_require__) { + +// fallback for non-array-like ES3 and non-enumerable old V8 strings +var cof = __webpack_require__("../../../../core-js/modules/_cof.js"); +module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){ + return cof(it) == 'String' ? it.split('') : Object(it); +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_is-array-iter.js": +/***/ (function(module, exports, __webpack_require__) { + +// check on default Array iterator +var Iterators = __webpack_require__("../../../../core-js/modules/_iterators.js") + , ITERATOR = __webpack_require__("../../../../core-js/modules/_wks.js")('iterator') + , ArrayProto = Array.prototype; + +module.exports = function(it){ + return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_is-array.js": +/***/ (function(module, exports, __webpack_require__) { + +// 7.2.2 IsArray(argument) +var cof = __webpack_require__("../../../../core-js/modules/_cof.js"); +module.exports = Array.isArray || function isArray(arg){ + return cof(arg) == 'Array'; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_is-object.js": +/***/ (function(module, exports) { + +module.exports = function(it){ + return typeof it === 'object' ? it !== null : typeof it === 'function'; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_iter-call.js": +/***/ (function(module, exports, __webpack_require__) { + +// call something on iterator step with safe closing on error +var anObject = __webpack_require__("../../../../core-js/modules/_an-object.js"); +module.exports = function(iterator, fn, value, entries){ + try { + return entries ? fn(anObject(value)[0], value[1]) : fn(value); + // 7.4.6 IteratorClose(iterator, completion) + } catch(e){ + var ret = iterator['return']; + if(ret !== undefined)anObject(ret.call(iterator)); + throw e; + } +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_iter-create.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var create = __webpack_require__("../../../../core-js/modules/_object-create.js") + , descriptor = __webpack_require__("../../../../core-js/modules/_property-desc.js") + , setToStringTag = __webpack_require__("../../../../core-js/modules/_set-to-string-tag.js") + , IteratorPrototype = {}; + +// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() +__webpack_require__("../../../../core-js/modules/_hide.js")(IteratorPrototype, __webpack_require__("../../../../core-js/modules/_wks.js")('iterator'), function(){ return this; }); + +module.exports = function(Constructor, NAME, next){ + Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)}); + setToStringTag(Constructor, NAME + ' Iterator'); +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_iter-define.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var LIBRARY = __webpack_require__("../../../../core-js/modules/_library.js") + , $export = __webpack_require__("../../../../core-js/modules/_export.js") + , redefine = __webpack_require__("../../../../core-js/modules/_redefine.js") + , hide = __webpack_require__("../../../../core-js/modules/_hide.js") + , has = __webpack_require__("../../../../core-js/modules/_has.js") + , Iterators = __webpack_require__("../../../../core-js/modules/_iterators.js") + , $iterCreate = __webpack_require__("../../../../core-js/modules/_iter-create.js") + , setToStringTag = __webpack_require__("../../../../core-js/modules/_set-to-string-tag.js") + , getPrototypeOf = __webpack_require__("../../../../core-js/modules/_object-gpo.js") + , ITERATOR = __webpack_require__("../../../../core-js/modules/_wks.js")('iterator') + , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next` + , FF_ITERATOR = '@@iterator' + , KEYS = 'keys' + , VALUES = 'values'; + +var returnThis = function(){ return this; }; + +module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){ + $iterCreate(Constructor, NAME, next); + var getMethod = function(kind){ + if(!BUGGY && kind in proto)return proto[kind]; + switch(kind){ + case KEYS: return function keys(){ return new Constructor(this, kind); }; + case VALUES: return function values(){ return new Constructor(this, kind); }; + } return function entries(){ return new Constructor(this, kind); }; + }; + var TAG = NAME + ' Iterator' + , DEF_VALUES = DEFAULT == VALUES + , VALUES_BUG = false + , proto = Base.prototype + , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT] + , $default = $native || getMethod(DEFAULT) + , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined + , $anyNative = NAME == 'Array' ? proto.entries || $native : $native + , methods, key, IteratorPrototype; + // Fix native + if($anyNative){ + IteratorPrototype = getPrototypeOf($anyNative.call(new Base)); + if(IteratorPrototype !== Object.prototype){ + // Set @@toStringTag to native iterators + setToStringTag(IteratorPrototype, TAG, true); + // fix for some old engines + if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis); + } + } + // fix Array#{values, @@iterator}.name in V8 / FF + if(DEF_VALUES && $native && $native.name !== VALUES){ + VALUES_BUG = true; + $default = function values(){ return $native.call(this); }; + } + // Define iterator + if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){ + hide(proto, ITERATOR, $default); + } + // Plug for library + Iterators[NAME] = $default; + Iterators[TAG] = returnThis; + if(DEFAULT){ + methods = { + values: DEF_VALUES ? $default : getMethod(VALUES), + keys: IS_SET ? $default : getMethod(KEYS), + entries: $entries + }; + if(FORCED)for(key in methods){ + if(!(key in proto))redefine(proto, key, methods[key]); + } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); + } + return methods; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_iter-detect.js": +/***/ (function(module, exports, __webpack_require__) { + +var ITERATOR = __webpack_require__("../../../../core-js/modules/_wks.js")('iterator') + , SAFE_CLOSING = false; + +try { + var riter = [7][ITERATOR](); + riter['return'] = function(){ SAFE_CLOSING = true; }; + Array.from(riter, function(){ throw 2; }); +} catch(e){ /* empty */ } + +module.exports = function(exec, skipClosing){ + if(!skipClosing && !SAFE_CLOSING)return false; + var safe = false; + try { + var arr = [7] + , iter = arr[ITERATOR](); + iter.next = function(){ return {done: safe = true}; }; + arr[ITERATOR] = function(){ return iter; }; + exec(arr); + } catch(e){ /* empty */ } + return safe; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_iter-step.js": +/***/ (function(module, exports) { + +module.exports = function(done, value){ + return {value: value, done: !!done}; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_iterators.js": +/***/ (function(module, exports) { + +module.exports = {}; + +/***/ }), + +/***/ "../../../../core-js/modules/_library.js": +/***/ (function(module, exports) { + +module.exports = false; + +/***/ }), + +/***/ "../../../../core-js/modules/_meta.js": +/***/ (function(module, exports, __webpack_require__) { + +var META = __webpack_require__("../../../../core-js/modules/_uid.js")('meta') + , isObject = __webpack_require__("../../../../core-js/modules/_is-object.js") + , has = __webpack_require__("../../../../core-js/modules/_has.js") + , setDesc = __webpack_require__("../../../../core-js/modules/_object-dp.js").f + , id = 0; +var isExtensible = Object.isExtensible || function(){ + return true; +}; +var FREEZE = !__webpack_require__("../../../../core-js/modules/_fails.js")(function(){ + return isExtensible(Object.preventExtensions({})); +}); +var setMeta = function(it){ + setDesc(it, META, {value: { + i: 'O' + ++id, // object ID + w: {} // weak collections IDs + }}); +}; +var fastKey = function(it, create){ + // return primitive with prefix + if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if(!has(it, META)){ + // can't set metadata to uncaught frozen object + if(!isExtensible(it))return 'F'; + // not necessary to add metadata + if(!create)return 'E'; + // add missing metadata + setMeta(it); + // return object ID + } return it[META].i; +}; +var getWeak = function(it, create){ + if(!has(it, META)){ + // can't set metadata to uncaught frozen object + if(!isExtensible(it))return true; + // not necessary to add metadata + if(!create)return false; + // add missing metadata + setMeta(it); + // return hash weak collections IDs + } return it[META].w; +}; +// add metadata on freeze-family methods calling +var onFreeze = function(it){ + if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it); + return it; +}; +var meta = module.exports = { + KEY: META, + NEED: false, + fastKey: fastKey, + getWeak: getWeak, + onFreeze: onFreeze +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_metadata.js": +/***/ (function(module, exports, __webpack_require__) { + +var Map = __webpack_require__("../../../../core-js/modules/es6.map.js") + , $export = __webpack_require__("../../../../core-js/modules/_export.js") + , shared = __webpack_require__("../../../../core-js/modules/_shared.js")('metadata') + , store = shared.store || (shared.store = new (__webpack_require__("../../../../core-js/modules/es6.weak-map.js"))); + +var getOrCreateMetadataMap = function(target, targetKey, create){ + var targetMetadata = store.get(target); + if(!targetMetadata){ + if(!create)return undefined; + store.set(target, targetMetadata = new Map); + } + var keyMetadata = targetMetadata.get(targetKey); + if(!keyMetadata){ + if(!create)return undefined; + targetMetadata.set(targetKey, keyMetadata = new Map); + } return keyMetadata; +}; +var ordinaryHasOwnMetadata = function(MetadataKey, O, P){ + var metadataMap = getOrCreateMetadataMap(O, P, false); + return metadataMap === undefined ? false : metadataMap.has(MetadataKey); +}; +var ordinaryGetOwnMetadata = function(MetadataKey, O, P){ + var metadataMap = getOrCreateMetadataMap(O, P, false); + return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey); +}; +var ordinaryDefineOwnMetadata = function(MetadataKey, MetadataValue, O, P){ + getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue); +}; +var ordinaryOwnMetadataKeys = function(target, targetKey){ + var metadataMap = getOrCreateMetadataMap(target, targetKey, false) + , keys = []; + if(metadataMap)metadataMap.forEach(function(_, key){ keys.push(key); }); + return keys; +}; +var toMetaKey = function(it){ + return it === undefined || typeof it == 'symbol' ? it : String(it); +}; +var exp = function(O){ + $export($export.S, 'Reflect', O); +}; + +module.exports = { + store: store, + map: getOrCreateMetadataMap, + has: ordinaryHasOwnMetadata, + get: ordinaryGetOwnMetadata, + set: ordinaryDefineOwnMetadata, + keys: ordinaryOwnMetadataKeys, + key: toMetaKey, + exp: exp +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_object-assign.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// 19.1.2.1 Object.assign(target, source, ...) +var getKeys = __webpack_require__("../../../../core-js/modules/_object-keys.js") + , gOPS = __webpack_require__("../../../../core-js/modules/_object-gops.js") + , pIE = __webpack_require__("../../../../core-js/modules/_object-pie.js") + , toObject = __webpack_require__("../../../../core-js/modules/_to-object.js") + , IObject = __webpack_require__("../../../../core-js/modules/_iobject.js") + , $assign = Object.assign; + +// should work with symbols and should have deterministic property order (V8 bug) +module.exports = !$assign || __webpack_require__("../../../../core-js/modules/_fails.js")(function(){ + var A = {} + , B = {} + , S = Symbol() + , K = 'abcdefghijklmnopqrst'; + A[S] = 7; + K.split('').forEach(function(k){ B[k] = k; }); + return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K; +}) ? function assign(target, source){ // eslint-disable-line no-unused-vars + var T = toObject(target) + , aLen = arguments.length + , index = 1 + , getSymbols = gOPS.f + , isEnum = pIE.f; + while(aLen > index){ + var S = IObject(arguments[index++]) + , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S) + , length = keys.length + , j = 0 + , key; + while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key]; + } return T; +} : $assign; + +/***/ }), + +/***/ "../../../../core-js/modules/_object-create.js": +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) +var anObject = __webpack_require__("../../../../core-js/modules/_an-object.js") + , dPs = __webpack_require__("../../../../core-js/modules/_object-dps.js") + , enumBugKeys = __webpack_require__("../../../../core-js/modules/_enum-bug-keys.js") + , IE_PROTO = __webpack_require__("../../../../core-js/modules/_shared-key.js")('IE_PROTO') + , Empty = function(){ /* empty */ } + , PROTOTYPE = 'prototype'; + +// Create object with fake `null` prototype: use iframe Object with cleared prototype +var createDict = function(){ + // Thrash, waste and sodomy: IE GC bug + var iframe = __webpack_require__("../../../../core-js/modules/_dom-create.js")('iframe') + , i = enumBugKeys.length + , lt = '<' + , gt = '>' + , iframeDocument; + iframe.style.display = 'none'; + __webpack_require__("../../../../core-js/modules/_html.js").appendChild(iframe); + iframe.src = 'javascript:'; // eslint-disable-line no-script-url + // createDict = iframe.contentWindow.Object; + // html.removeChild(iframe); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); + iframeDocument.close(); + createDict = iframeDocument.F; + while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]]; + return createDict(); +}; + +module.exports = Object.create || function create(O, Properties){ + var result; + if(O !== null){ + Empty[PROTOTYPE] = anObject(O); + result = new Empty; + Empty[PROTOTYPE] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else result = createDict(); + return Properties === undefined ? result : dPs(result, Properties); +}; + + +/***/ }), + +/***/ "../../../../core-js/modules/_object-dp.js": +/***/ (function(module, exports, __webpack_require__) { + +var anObject = __webpack_require__("../../../../core-js/modules/_an-object.js") + , IE8_DOM_DEFINE = __webpack_require__("../../../../core-js/modules/_ie8-dom-define.js") + , toPrimitive = __webpack_require__("../../../../core-js/modules/_to-primitive.js") + , dP = Object.defineProperty; + +exports.f = __webpack_require__("../../../../core-js/modules/_descriptors.js") ? Object.defineProperty : function defineProperty(O, P, Attributes){ + anObject(O); + P = toPrimitive(P, true); + anObject(Attributes); + if(IE8_DOM_DEFINE)try { + return dP(O, P, Attributes); + } catch(e){ /* empty */ } + if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!'); + if('value' in Attributes)O[P] = Attributes.value; + return O; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_object-dps.js": +/***/ (function(module, exports, __webpack_require__) { + +var dP = __webpack_require__("../../../../core-js/modules/_object-dp.js") + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js") + , getKeys = __webpack_require__("../../../../core-js/modules/_object-keys.js"); + +module.exports = __webpack_require__("../../../../core-js/modules/_descriptors.js") ? Object.defineProperties : function defineProperties(O, Properties){ + anObject(O); + var keys = getKeys(Properties) + , length = keys.length + , i = 0 + , P; + while(length > i)dP.f(O, P = keys[i++], Properties[P]); + return O; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_object-gopd.js": +/***/ (function(module, exports, __webpack_require__) { + +var pIE = __webpack_require__("../../../../core-js/modules/_object-pie.js") + , createDesc = __webpack_require__("../../../../core-js/modules/_property-desc.js") + , toIObject = __webpack_require__("../../../../core-js/modules/_to-iobject.js") + , toPrimitive = __webpack_require__("../../../../core-js/modules/_to-primitive.js") + , has = __webpack_require__("../../../../core-js/modules/_has.js") + , IE8_DOM_DEFINE = __webpack_require__("../../../../core-js/modules/_ie8-dom-define.js") + , gOPD = Object.getOwnPropertyDescriptor; + +exports.f = __webpack_require__("../../../../core-js/modules/_descriptors.js") ? gOPD : function getOwnPropertyDescriptor(O, P){ + O = toIObject(O); + P = toPrimitive(P, true); + if(IE8_DOM_DEFINE)try { + return gOPD(O, P); + } catch(e){ /* empty */ } + if(has(O, P))return createDesc(!pIE.f.call(O, P), O[P]); +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_object-gopn.js": +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) +var $keys = __webpack_require__("../../../../core-js/modules/_object-keys-internal.js") + , hiddenKeys = __webpack_require__("../../../../core-js/modules/_enum-bug-keys.js").concat('length', 'prototype'); + +exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){ + return $keys(O, hiddenKeys); +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_object-gops.js": +/***/ (function(module, exports) { + +exports.f = Object.getOwnPropertySymbols; + +/***/ }), + +/***/ "../../../../core-js/modules/_object-gpo.js": +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) +var has = __webpack_require__("../../../../core-js/modules/_has.js") + , toObject = __webpack_require__("../../../../core-js/modules/_to-object.js") + , IE_PROTO = __webpack_require__("../../../../core-js/modules/_shared-key.js")('IE_PROTO') + , ObjectProto = Object.prototype; + +module.exports = Object.getPrototypeOf || function(O){ + O = toObject(O); + if(has(O, IE_PROTO))return O[IE_PROTO]; + if(typeof O.constructor == 'function' && O instanceof O.constructor){ + return O.constructor.prototype; + } return O instanceof Object ? ObjectProto : null; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_object-keys-internal.js": +/***/ (function(module, exports, __webpack_require__) { + +var has = __webpack_require__("../../../../core-js/modules/_has.js") + , toIObject = __webpack_require__("../../../../core-js/modules/_to-iobject.js") + , arrayIndexOf = __webpack_require__("../../../../core-js/modules/_array-includes.js")(false) + , IE_PROTO = __webpack_require__("../../../../core-js/modules/_shared-key.js")('IE_PROTO'); + +module.exports = function(object, names){ + var O = toIObject(object) + , i = 0 + , result = [] + , key; + for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key); + // Don't enum bug & hidden keys + while(names.length > i)if(has(O, key = names[i++])){ + ~arrayIndexOf(result, key) || result.push(key); + } + return result; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_object-keys.js": +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.14 / 15.2.3.14 Object.keys(O) +var $keys = __webpack_require__("../../../../core-js/modules/_object-keys-internal.js") + , enumBugKeys = __webpack_require__("../../../../core-js/modules/_enum-bug-keys.js"); + +module.exports = Object.keys || function keys(O){ + return $keys(O, enumBugKeys); +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_object-pie.js": +/***/ (function(module, exports) { + +exports.f = {}.propertyIsEnumerable; + +/***/ }), + +/***/ "../../../../core-js/modules/_own-keys.js": +/***/ (function(module, exports, __webpack_require__) { + +// all object keys, includes non-enumerable and symbols +var gOPN = __webpack_require__("../../../../core-js/modules/_object-gopn.js") + , gOPS = __webpack_require__("../../../../core-js/modules/_object-gops.js") + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js") + , Reflect = __webpack_require__("../../../../core-js/modules/_global.js").Reflect; +module.exports = Reflect && Reflect.ownKeys || function ownKeys(it){ + var keys = gOPN.f(anObject(it)) + , getSymbols = gOPS.f; + return getSymbols ? keys.concat(getSymbols(it)) : keys; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_property-desc.js": +/***/ (function(module, exports) { + +module.exports = function(bitmap, value){ + return { + enumerable : !(bitmap & 1), + configurable: !(bitmap & 2), + writable : !(bitmap & 4), + value : value + }; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_redefine-all.js": +/***/ (function(module, exports, __webpack_require__) { + +var redefine = __webpack_require__("../../../../core-js/modules/_redefine.js"); +module.exports = function(target, src, safe){ + for(var key in src)redefine(target, key, src[key], safe); + return target; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_redefine.js": +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__("../../../../core-js/modules/_global.js") + , hide = __webpack_require__("../../../../core-js/modules/_hide.js") + , has = __webpack_require__("../../../../core-js/modules/_has.js") + , SRC = __webpack_require__("../../../../core-js/modules/_uid.js")('src') + , TO_STRING = 'toString' + , $toString = Function[TO_STRING] + , TPL = ('' + $toString).split(TO_STRING); + +__webpack_require__("../../../../core-js/modules/_core.js").inspectSource = function(it){ + return $toString.call(it); +}; + +(module.exports = function(O, key, val, safe){ + var isFunction = typeof val == 'function'; + if(isFunction)has(val, 'name') || hide(val, 'name', key); + if(O[key] === val)return; + if(isFunction)has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); + if(O === global){ + O[key] = val; + } else { + if(!safe){ + delete O[key]; + hide(O, key, val); + } else { + if(O[key])O[key] = val; + else hide(O, key, val); + } + } +// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative +})(Function.prototype, TO_STRING, function toString(){ + return typeof this == 'function' && this[SRC] || $toString.call(this); +}); + +/***/ }), + +/***/ "../../../../core-js/modules/_set-proto.js": +/***/ (function(module, exports, __webpack_require__) { + +// Works with __proto__ only. Old v8 can't work with null proto objects. +/* eslint-disable no-proto */ +var isObject = __webpack_require__("../../../../core-js/modules/_is-object.js") + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js"); +var check = function(O, proto){ + anObject(O); + if(!isObject(proto) && proto !== null)throw TypeError(proto + ": can't set as prototype!"); +}; +module.exports = { + set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line + function(test, buggy, set){ + try { + set = __webpack_require__("../../../../core-js/modules/_ctx.js")(Function.call, __webpack_require__("../../../../core-js/modules/_object-gopd.js").f(Object.prototype, '__proto__').set, 2); + set(test, []); + buggy = !(test instanceof Array); + } catch(e){ buggy = true; } + return function setPrototypeOf(O, proto){ + check(O, proto); + if(buggy)O.__proto__ = proto; + else set(O, proto); + return O; + }; + }({}, false) : undefined), + check: check +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_set-species.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var global = __webpack_require__("../../../../core-js/modules/_global.js") + , dP = __webpack_require__("../../../../core-js/modules/_object-dp.js") + , DESCRIPTORS = __webpack_require__("../../../../core-js/modules/_descriptors.js") + , SPECIES = __webpack_require__("../../../../core-js/modules/_wks.js")('species'); + +module.exports = function(KEY){ + var C = global[KEY]; + if(DESCRIPTORS && C && !C[SPECIES])dP.f(C, SPECIES, { + configurable: true, + get: function(){ return this; } + }); +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_set-to-string-tag.js": +/***/ (function(module, exports, __webpack_require__) { + +var def = __webpack_require__("../../../../core-js/modules/_object-dp.js").f + , has = __webpack_require__("../../../../core-js/modules/_has.js") + , TAG = __webpack_require__("../../../../core-js/modules/_wks.js")('toStringTag'); + +module.exports = function(it, tag, stat){ + if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag}); +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_shared-key.js": +/***/ (function(module, exports, __webpack_require__) { + +var shared = __webpack_require__("../../../../core-js/modules/_shared.js")('keys') + , uid = __webpack_require__("../../../../core-js/modules/_uid.js"); +module.exports = function(key){ + return shared[key] || (shared[key] = uid(key)); +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_shared.js": +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__("../../../../core-js/modules/_global.js") + , SHARED = '__core-js_shared__' + , store = global[SHARED] || (global[SHARED] = {}); +module.exports = function(key){ + return store[key] || (store[key] = {}); +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_to-index.js": +/***/ (function(module, exports, __webpack_require__) { + +var toInteger = __webpack_require__("../../../../core-js/modules/_to-integer.js") + , max = Math.max + , min = Math.min; +module.exports = function(index, length){ + index = toInteger(index); + return index < 0 ? max(index + length, 0) : min(index, length); +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_to-integer.js": +/***/ (function(module, exports) { + +// 7.1.4 ToInteger +var ceil = Math.ceil + , floor = Math.floor; +module.exports = function(it){ + return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_to-iobject.js": +/***/ (function(module, exports, __webpack_require__) { + +// to indexed object, toObject with fallback for non-array-like ES3 strings +var IObject = __webpack_require__("../../../../core-js/modules/_iobject.js") + , defined = __webpack_require__("../../../../core-js/modules/_defined.js"); +module.exports = function(it){ + return IObject(defined(it)); +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_to-length.js": +/***/ (function(module, exports, __webpack_require__) { + +// 7.1.15 ToLength +var toInteger = __webpack_require__("../../../../core-js/modules/_to-integer.js") + , min = Math.min; +module.exports = function(it){ + return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_to-object.js": +/***/ (function(module, exports, __webpack_require__) { + +// 7.1.13 ToObject(argument) +var defined = __webpack_require__("../../../../core-js/modules/_defined.js"); +module.exports = function(it){ + return Object(defined(it)); +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_to-primitive.js": +/***/ (function(module, exports, __webpack_require__) { + +// 7.1.1 ToPrimitive(input [, PreferredType]) +var isObject = __webpack_require__("../../../../core-js/modules/_is-object.js"); +// instead of the ES6 spec version, we didn't implement @@toPrimitive case +// and the second argument - flag - preferred type is a string +module.exports = function(it, S){ + if(!isObject(it))return it; + var fn, val; + if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; + if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val; + if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; + throw TypeError("Can't convert object to primitive value"); +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_uid.js": +/***/ (function(module, exports) { + +var id = 0 + , px = Math.random(); +module.exports = function(key){ + return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); +}; + +/***/ }), + +/***/ "../../../../core-js/modules/_wks.js": +/***/ (function(module, exports, __webpack_require__) { + +var store = __webpack_require__("../../../../core-js/modules/_shared.js")('wks') + , uid = __webpack_require__("../../../../core-js/modules/_uid.js") + , Symbol = __webpack_require__("../../../../core-js/modules/_global.js").Symbol + , USE_SYMBOL = typeof Symbol == 'function'; + +var $exports = module.exports = function(name){ + return store[name] || (store[name] = + USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); +}; + +$exports.store = store; + +/***/ }), + +/***/ "../../../../core-js/modules/core.get-iterator-method.js": +/***/ (function(module, exports, __webpack_require__) { + +var classof = __webpack_require__("../../../../core-js/modules/_classof.js") + , ITERATOR = __webpack_require__("../../../../core-js/modules/_wks.js")('iterator') + , Iterators = __webpack_require__("../../../../core-js/modules/_iterators.js"); +module.exports = __webpack_require__("../../../../core-js/modules/_core.js").getIteratorMethod = function(it){ + if(it != undefined)return it[ITERATOR] + || it['@@iterator'] + || Iterators[classof(it)]; +}; + +/***/ }), + +/***/ "../../../../core-js/modules/es6.map.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var strong = __webpack_require__("../../../../core-js/modules/_collection-strong.js"); + +// 23.1 Map Objects +module.exports = __webpack_require__("../../../../core-js/modules/_collection.js")('Map', function(get){ + return function Map(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); }; +}, { + // 23.1.3.6 Map.prototype.get(key) + get: function get(key){ + var entry = strong.getEntry(this, key); + return entry && entry.v; + }, + // 23.1.3.9 Map.prototype.set(key, value) + set: function set(key, value){ + return strong.def(this, key === 0 ? 0 : key, value); + } +}, strong, true); + +/***/ }), + +/***/ "../../../../core-js/modules/es6.reflect.apply.js": +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.1 Reflect.apply(target, thisArgument, argumentsList) +var $export = __webpack_require__("../../../../core-js/modules/_export.js") + , aFunction = __webpack_require__("../../../../core-js/modules/_a-function.js") + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js") + , rApply = (__webpack_require__("../../../../core-js/modules/_global.js").Reflect || {}).apply + , fApply = Function.apply; +// MS Edge argumentsList argument is optional +$export($export.S + $export.F * !__webpack_require__("../../../../core-js/modules/_fails.js")(function(){ + rApply(function(){}); +}), 'Reflect', { + apply: function apply(target, thisArgument, argumentsList){ + var T = aFunction(target) + , L = anObject(argumentsList); + return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L); + } +}); + +/***/ }), + +/***/ "../../../../core-js/modules/es6.reflect.construct.js": +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.2 Reflect.construct(target, argumentsList [, newTarget]) +var $export = __webpack_require__("../../../../core-js/modules/_export.js") + , create = __webpack_require__("../../../../core-js/modules/_object-create.js") + , aFunction = __webpack_require__("../../../../core-js/modules/_a-function.js") + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js") + , isObject = __webpack_require__("../../../../core-js/modules/_is-object.js") + , fails = __webpack_require__("../../../../core-js/modules/_fails.js") + , bind = __webpack_require__("../../../../core-js/modules/_bind.js") + , rConstruct = (__webpack_require__("../../../../core-js/modules/_global.js").Reflect || {}).construct; + +// MS Edge supports only 2 arguments and argumentsList argument is optional +// FF Nightly sets third argument as `new.target`, but does not create `this` from it +var NEW_TARGET_BUG = fails(function(){ + function F(){} + return !(rConstruct(function(){}, [], F) instanceof F); +}); +var ARGS_BUG = !fails(function(){ + rConstruct(function(){}); +}); + +$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', { + construct: function construct(Target, args /*, newTarget*/){ + aFunction(Target); + anObject(args); + var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]); + if(ARGS_BUG && !NEW_TARGET_BUG)return rConstruct(Target, args, newTarget); + if(Target == newTarget){ + // w/o altered newTarget, optimization for 0-4 arguments + switch(args.length){ + case 0: return new Target; + case 1: return new Target(args[0]); + case 2: return new Target(args[0], args[1]); + case 3: return new Target(args[0], args[1], args[2]); + case 4: return new Target(args[0], args[1], args[2], args[3]); + } + // w/o altered newTarget, lot of arguments case + var $args = [null]; + $args.push.apply($args, args); + return new (bind.apply(Target, $args)); + } + // with altered newTarget, not support built-in constructors + var proto = newTarget.prototype + , instance = create(isObject(proto) ? proto : Object.prototype) + , result = Function.apply.call(Target, instance, args); + return isObject(result) ? result : instance; + } +}); + +/***/ }), + +/***/ "../../../../core-js/modules/es6.reflect.define-property.js": +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes) +var dP = __webpack_require__("../../../../core-js/modules/_object-dp.js") + , $export = __webpack_require__("../../../../core-js/modules/_export.js") + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js") + , toPrimitive = __webpack_require__("../../../../core-js/modules/_to-primitive.js"); + +// MS Edge has broken Reflect.defineProperty - throwing instead of returning false +$export($export.S + $export.F * __webpack_require__("../../../../core-js/modules/_fails.js")(function(){ + Reflect.defineProperty(dP.f({}, 1, {value: 1}), 1, {value: 2}); +}), 'Reflect', { + defineProperty: function defineProperty(target, propertyKey, attributes){ + anObject(target); + propertyKey = toPrimitive(propertyKey, true); + anObject(attributes); + try { + dP.f(target, propertyKey, attributes); + return true; + } catch(e){ + return false; + } + } +}); + +/***/ }), + +/***/ "../../../../core-js/modules/es6.reflect.delete-property.js": +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.4 Reflect.deleteProperty(target, propertyKey) +var $export = __webpack_require__("../../../../core-js/modules/_export.js") + , gOPD = __webpack_require__("../../../../core-js/modules/_object-gopd.js").f + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js"); + +$export($export.S, 'Reflect', { + deleteProperty: function deleteProperty(target, propertyKey){ + var desc = gOPD(anObject(target), propertyKey); + return desc && !desc.configurable ? false : delete target[propertyKey]; + } +}); + +/***/ }), + +/***/ "../../../../core-js/modules/es6.reflect.enumerate.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// 26.1.5 Reflect.enumerate(target) +var $export = __webpack_require__("../../../../core-js/modules/_export.js") + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js"); +var Enumerate = function(iterated){ + this._t = anObject(iterated); // target + this._i = 0; // next index + var keys = this._k = [] // keys + , key; + for(key in iterated)keys.push(key); +}; +__webpack_require__("../../../../core-js/modules/_iter-create.js")(Enumerate, 'Object', function(){ + var that = this + , keys = that._k + , key; + do { + if(that._i >= keys.length)return {value: undefined, done: true}; + } while(!((key = keys[that._i++]) in that._t)); + return {value: key, done: false}; +}); + +$export($export.S, 'Reflect', { + enumerate: function enumerate(target){ + return new Enumerate(target); + } +}); + +/***/ }), + +/***/ "../../../../core-js/modules/es6.reflect.get-own-property-descriptor.js": +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey) +var gOPD = __webpack_require__("../../../../core-js/modules/_object-gopd.js") + , $export = __webpack_require__("../../../../core-js/modules/_export.js") + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js"); + +$export($export.S, 'Reflect', { + getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey){ + return gOPD.f(anObject(target), propertyKey); + } +}); + +/***/ }), + +/***/ "../../../../core-js/modules/es6.reflect.get-prototype-of.js": +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.8 Reflect.getPrototypeOf(target) +var $export = __webpack_require__("../../../../core-js/modules/_export.js") + , getProto = __webpack_require__("../../../../core-js/modules/_object-gpo.js") + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js"); + +$export($export.S, 'Reflect', { + getPrototypeOf: function getPrototypeOf(target){ + return getProto(anObject(target)); + } +}); + +/***/ }), + +/***/ "../../../../core-js/modules/es6.reflect.get.js": +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.6 Reflect.get(target, propertyKey [, receiver]) +var gOPD = __webpack_require__("../../../../core-js/modules/_object-gopd.js") + , getPrototypeOf = __webpack_require__("../../../../core-js/modules/_object-gpo.js") + , has = __webpack_require__("../../../../core-js/modules/_has.js") + , $export = __webpack_require__("../../../../core-js/modules/_export.js") + , isObject = __webpack_require__("../../../../core-js/modules/_is-object.js") + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js"); + +function get(target, propertyKey/*, receiver*/){ + var receiver = arguments.length < 3 ? target : arguments[2] + , desc, proto; + if(anObject(target) === receiver)return target[propertyKey]; + if(desc = gOPD.f(target, propertyKey))return has(desc, 'value') + ? desc.value + : desc.get !== undefined + ? desc.get.call(receiver) + : undefined; + if(isObject(proto = getPrototypeOf(target)))return get(proto, propertyKey, receiver); +} + +$export($export.S, 'Reflect', {get: get}); + +/***/ }), + +/***/ "../../../../core-js/modules/es6.reflect.has.js": +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.9 Reflect.has(target, propertyKey) +var $export = __webpack_require__("../../../../core-js/modules/_export.js"); + +$export($export.S, 'Reflect', { + has: function has(target, propertyKey){ + return propertyKey in target; + } +}); + +/***/ }), + +/***/ "../../../../core-js/modules/es6.reflect.is-extensible.js": +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.10 Reflect.isExtensible(target) +var $export = __webpack_require__("../../../../core-js/modules/_export.js") + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js") + , $isExtensible = Object.isExtensible; + +$export($export.S, 'Reflect', { + isExtensible: function isExtensible(target){ + anObject(target); + return $isExtensible ? $isExtensible(target) : true; + } +}); + +/***/ }), + +/***/ "../../../../core-js/modules/es6.reflect.own-keys.js": +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.11 Reflect.ownKeys(target) +var $export = __webpack_require__("../../../../core-js/modules/_export.js"); + +$export($export.S, 'Reflect', {ownKeys: __webpack_require__("../../../../core-js/modules/_own-keys.js")}); + +/***/ }), + +/***/ "../../../../core-js/modules/es6.reflect.prevent-extensions.js": +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.12 Reflect.preventExtensions(target) +var $export = __webpack_require__("../../../../core-js/modules/_export.js") + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js") + , $preventExtensions = Object.preventExtensions; + +$export($export.S, 'Reflect', { + preventExtensions: function preventExtensions(target){ + anObject(target); + try { + if($preventExtensions)$preventExtensions(target); + return true; + } catch(e){ + return false; + } + } +}); + +/***/ }), + +/***/ "../../../../core-js/modules/es6.reflect.set-prototype-of.js": +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.14 Reflect.setPrototypeOf(target, proto) +var $export = __webpack_require__("../../../../core-js/modules/_export.js") + , setProto = __webpack_require__("../../../../core-js/modules/_set-proto.js"); + +if(setProto)$export($export.S, 'Reflect', { + setPrototypeOf: function setPrototypeOf(target, proto){ + setProto.check(target, proto); + try { + setProto.set(target, proto); + return true; + } catch(e){ + return false; + } + } +}); + +/***/ }), + +/***/ "../../../../core-js/modules/es6.reflect.set.js": +/***/ (function(module, exports, __webpack_require__) { + +// 26.1.13 Reflect.set(target, propertyKey, V [, receiver]) +var dP = __webpack_require__("../../../../core-js/modules/_object-dp.js") + , gOPD = __webpack_require__("../../../../core-js/modules/_object-gopd.js") + , getPrototypeOf = __webpack_require__("../../../../core-js/modules/_object-gpo.js") + , has = __webpack_require__("../../../../core-js/modules/_has.js") + , $export = __webpack_require__("../../../../core-js/modules/_export.js") + , createDesc = __webpack_require__("../../../../core-js/modules/_property-desc.js") + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js") + , isObject = __webpack_require__("../../../../core-js/modules/_is-object.js"); + +function set(target, propertyKey, V/*, receiver*/){ + var receiver = arguments.length < 4 ? target : arguments[3] + , ownDesc = gOPD.f(anObject(target), propertyKey) + , existingDescriptor, proto; + if(!ownDesc){ + if(isObject(proto = getPrototypeOf(target))){ + return set(proto, propertyKey, V, receiver); + } + ownDesc = createDesc(0); + } + if(has(ownDesc, 'value')){ + if(ownDesc.writable === false || !isObject(receiver))return false; + existingDescriptor = gOPD.f(receiver, propertyKey) || createDesc(0); + existingDescriptor.value = V; + dP.f(receiver, propertyKey, existingDescriptor); + return true; + } + return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true); +} + +$export($export.S, 'Reflect', {set: set}); + +/***/ }), + +/***/ "../../../../core-js/modules/es6.set.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var strong = __webpack_require__("../../../../core-js/modules/_collection-strong.js"); + +// 23.2 Set Objects +module.exports = __webpack_require__("../../../../core-js/modules/_collection.js")('Set', function(get){ + return function Set(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); }; +}, { + // 23.2.3.1 Set.prototype.add(value) + add: function add(value){ + return strong.def(this, value = value === 0 ? 0 : value, value); + } +}, strong); + +/***/ }), + +/***/ "../../../../core-js/modules/es6.weak-map.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var each = __webpack_require__("../../../../core-js/modules/_array-methods.js")(0) + , redefine = __webpack_require__("../../../../core-js/modules/_redefine.js") + , meta = __webpack_require__("../../../../core-js/modules/_meta.js") + , assign = __webpack_require__("../../../../core-js/modules/_object-assign.js") + , weak = __webpack_require__("../../../../core-js/modules/_collection-weak.js") + , isObject = __webpack_require__("../../../../core-js/modules/_is-object.js") + , getWeak = meta.getWeak + , isExtensible = Object.isExtensible + , uncaughtFrozenStore = weak.ufstore + , tmp = {} + , InternalMap; + +var wrapper = function(get){ + return function WeakMap(){ + return get(this, arguments.length > 0 ? arguments[0] : undefined); + }; +}; + +var methods = { + // 23.3.3.3 WeakMap.prototype.get(key) + get: function get(key){ + if(isObject(key)){ + var data = getWeak(key); + if(data === true)return uncaughtFrozenStore(this).get(key); + return data ? data[this._i] : undefined; + } + }, + // 23.3.3.5 WeakMap.prototype.set(key, value) + set: function set(key, value){ + return weak.def(this, key, value); + } +}; + +// 23.3 WeakMap Objects +var $WeakMap = module.exports = __webpack_require__("../../../../core-js/modules/_collection.js")('WeakMap', wrapper, methods, weak, true, true); + +// IE11 WeakMap frozen keys fix +if(new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7){ + InternalMap = weak.getConstructor(wrapper); + assign(InternalMap.prototype, methods); + meta.NEED = true; + each(['delete', 'has', 'get', 'set'], function(key){ + var proto = $WeakMap.prototype + , method = proto[key]; + redefine(proto, key, function(a, b){ + // store frozen objects on internal weakmap shim + if(isObject(a) && !isExtensible(a)){ + if(!this._f)this._f = new InternalMap; + var result = this._f[key](a, b); + return key == 'set' ? this : result; + // store all the rest on native weakmap + } return method.call(this, a, b); + }); + }); +} + +/***/ }), + +/***/ "../../../../core-js/modules/es7.reflect.define-metadata.js": +/***/ (function(module, exports, __webpack_require__) { + +var metadata = __webpack_require__("../../../../core-js/modules/_metadata.js") + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js") + , toMetaKey = metadata.key + , ordinaryDefineOwnMetadata = metadata.set; + +metadata.exp({defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey){ + ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey)); +}}); + +/***/ }), + +/***/ "../../../../core-js/modules/es7.reflect.delete-metadata.js": +/***/ (function(module, exports, __webpack_require__) { + +var metadata = __webpack_require__("../../../../core-js/modules/_metadata.js") + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js") + , toMetaKey = metadata.key + , getOrCreateMetadataMap = metadata.map + , store = metadata.store; + +metadata.exp({deleteMetadata: function deleteMetadata(metadataKey, target /*, targetKey */){ + var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2]) + , metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false); + if(metadataMap === undefined || !metadataMap['delete'](metadataKey))return false; + if(metadataMap.size)return true; + var targetMetadata = store.get(target); + targetMetadata['delete'](targetKey); + return !!targetMetadata.size || store['delete'](target); +}}); + +/***/ }), + +/***/ "../../../../core-js/modules/es7.reflect.get-metadata-keys.js": +/***/ (function(module, exports, __webpack_require__) { + +var Set = __webpack_require__("../../../../core-js/modules/es6.set.js") + , from = __webpack_require__("../../../../core-js/modules/_array-from-iterable.js") + , metadata = __webpack_require__("../../../../core-js/modules/_metadata.js") + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js") + , getPrototypeOf = __webpack_require__("../../../../core-js/modules/_object-gpo.js") + , ordinaryOwnMetadataKeys = metadata.keys + , toMetaKey = metadata.key; + +var ordinaryMetadataKeys = function(O, P){ + var oKeys = ordinaryOwnMetadataKeys(O, P) + , parent = getPrototypeOf(O); + if(parent === null)return oKeys; + var pKeys = ordinaryMetadataKeys(parent, P); + return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys; +}; + +metadata.exp({getMetadataKeys: function getMetadataKeys(target /*, targetKey */){ + return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1])); +}}); + +/***/ }), + +/***/ "../../../../core-js/modules/es7.reflect.get-metadata.js": +/***/ (function(module, exports, __webpack_require__) { + +var metadata = __webpack_require__("../../../../core-js/modules/_metadata.js") + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js") + , getPrototypeOf = __webpack_require__("../../../../core-js/modules/_object-gpo.js") + , ordinaryHasOwnMetadata = metadata.has + , ordinaryGetOwnMetadata = metadata.get + , toMetaKey = metadata.key; + +var ordinaryGetMetadata = function(MetadataKey, O, P){ + var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P); + if(hasOwn)return ordinaryGetOwnMetadata(MetadataKey, O, P); + var parent = getPrototypeOf(O); + return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined; +}; + +metadata.exp({getMetadata: function getMetadata(metadataKey, target /*, targetKey */){ + return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2])); +}}); + +/***/ }), + +/***/ "../../../../core-js/modules/es7.reflect.get-own-metadata-keys.js": +/***/ (function(module, exports, __webpack_require__) { + +var metadata = __webpack_require__("../../../../core-js/modules/_metadata.js") + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js") + , ordinaryOwnMetadataKeys = metadata.keys + , toMetaKey = metadata.key; + +metadata.exp({getOwnMetadataKeys: function getOwnMetadataKeys(target /*, targetKey */){ + return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1])); +}}); + +/***/ }), + +/***/ "../../../../core-js/modules/es7.reflect.get-own-metadata.js": +/***/ (function(module, exports, __webpack_require__) { + +var metadata = __webpack_require__("../../../../core-js/modules/_metadata.js") + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js") + , ordinaryGetOwnMetadata = metadata.get + , toMetaKey = metadata.key; + +metadata.exp({getOwnMetadata: function getOwnMetadata(metadataKey, target /*, targetKey */){ + return ordinaryGetOwnMetadata(metadataKey, anObject(target) + , arguments.length < 3 ? undefined : toMetaKey(arguments[2])); +}}); + +/***/ }), + +/***/ "../../../../core-js/modules/es7.reflect.has-metadata.js": +/***/ (function(module, exports, __webpack_require__) { + +var metadata = __webpack_require__("../../../../core-js/modules/_metadata.js") + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js") + , getPrototypeOf = __webpack_require__("../../../../core-js/modules/_object-gpo.js") + , ordinaryHasOwnMetadata = metadata.has + , toMetaKey = metadata.key; + +var ordinaryHasMetadata = function(MetadataKey, O, P){ + var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P); + if(hasOwn)return true; + var parent = getPrototypeOf(O); + return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false; +}; + +metadata.exp({hasMetadata: function hasMetadata(metadataKey, target /*, targetKey */){ + return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2])); +}}); + +/***/ }), + +/***/ "../../../../core-js/modules/es7.reflect.has-own-metadata.js": +/***/ (function(module, exports, __webpack_require__) { + +var metadata = __webpack_require__("../../../../core-js/modules/_metadata.js") + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js") + , ordinaryHasOwnMetadata = metadata.has + , toMetaKey = metadata.key; + +metadata.exp({hasOwnMetadata: function hasOwnMetadata(metadataKey, target /*, targetKey */){ + return ordinaryHasOwnMetadata(metadataKey, anObject(target) + , arguments.length < 3 ? undefined : toMetaKey(arguments[2])); +}}); + +/***/ }), + +/***/ "../../../../core-js/modules/es7.reflect.metadata.js": +/***/ (function(module, exports, __webpack_require__) { + +var metadata = __webpack_require__("../../../../core-js/modules/_metadata.js") + , anObject = __webpack_require__("../../../../core-js/modules/_an-object.js") + , aFunction = __webpack_require__("../../../../core-js/modules/_a-function.js") + , toMetaKey = metadata.key + , ordinaryDefineOwnMetadata = metadata.set; + +metadata.exp({metadata: function metadata(metadataKey, metadataValue){ + return function decorator(target, targetKey){ + ordinaryDefineOwnMetadata( + metadataKey, metadataValue, + (targetKey !== undefined ? anObject : aFunction)(target), + toMetaKey(targetKey) + ); + }; +}}); + +/***/ }), + +/***/ "../../../../webpack/buildin/global.js": +/***/ (function(module, exports) { + +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || Function("return this")() || (1,eval)("this"); +} catch(e) { + // This works if the window reference is available + if(typeof window === "object") + g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + + +/***/ }), + +/***/ "../../../../zone.js/dist/zone.js": +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) {/** +* @license +* Copyright Google Inc. All Rights Reserved. +* +* Use of this source code is governed by an MIT-style license that can be +* found in the LICENSE file at https://angular.io/license +*/ +(function (global, factory) { + true ? factory() : + typeof define === 'function' && define.amd ? define(factory) : + (factory()); +}(this, (function () { 'use strict'; + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +var Zone$1 = (function (global) { + var performance = global['performance']; + function mark(name) { + performance && performance['mark'] && performance['mark'](name); + } + function performanceMeasure(name, label) { + performance && performance['measure'] && performance['measure'](name, label); + } + mark('Zone'); + if (global['Zone']) { + throw new Error('Zone already loaded.'); + } + var Zone = (function () { + function Zone(parent, zoneSpec) { + this._properties = null; + this._parent = parent; + this._name = zoneSpec ? zoneSpec.name || 'unnamed' : ''; + this._properties = zoneSpec && zoneSpec.properties || {}; + this._zoneDelegate = + new ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec); + } + Zone.assertZonePatched = function () { + if (global['Promise'] !== patches['ZoneAwarePromise']) { + throw new Error('Zone.js has detected that ZoneAwarePromise `(window|global).Promise` ' + + 'has been overwritten.\n' + + 'Most likely cause is that a Promise polyfill has been loaded ' + + 'after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. ' + + 'If you must load one, do so before loading zone.js.)'); + } + }; + Object.defineProperty(Zone, "root", { + get: function () { + var zone = Zone.current; + while (zone.parent) { + zone = zone.parent; + } + return zone; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Zone, "current", { + get: function () { + return _currentZoneFrame.zone; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(Zone, "currentTask", { + get: function () { + return _currentTask; + }, + enumerable: true, + configurable: true + }); + + Zone.__load_patch = function (name, fn) { + if (patches.hasOwnProperty(name)) { + throw Error('Already loaded patch: ' + name); + } + else if (!global['__Zone_disable_' + name]) { + var perfName = 'Zone:' + name; + mark(perfName); + patches[name] = fn(global, Zone, _api); + performanceMeasure(perfName, perfName); + } + }; + Object.defineProperty(Zone.prototype, "parent", { + get: function () { + return this._parent; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(Zone.prototype, "name", { + get: function () { + return this._name; + }, + enumerable: true, + configurable: true + }); + + Zone.prototype.get = function (key) { + var zone = this.getZoneWith(key); + if (zone) + return zone._properties[key]; + }; + Zone.prototype.getZoneWith = function (key) { + var current = this; + while (current) { + if (current._properties.hasOwnProperty(key)) { + return current; + } + current = current._parent; + } + return null; + }; + Zone.prototype.fork = function (zoneSpec) { + if (!zoneSpec) + throw new Error('ZoneSpec required!'); + return this._zoneDelegate.fork(this, zoneSpec); + }; + Zone.prototype.wrap = function (callback, source) { + if (typeof callback !== 'function') { + throw new Error('Expecting function got: ' + callback); + } + var _callback = this._zoneDelegate.intercept(this, callback, source); + var zone = this; + return function () { + return zone.runGuarded(_callback, this, arguments, source); + }; + }; + Zone.prototype.run = function (callback, applyThis, applyArgs, source) { + if (applyThis === void 0) { applyThis = undefined; } + if (applyArgs === void 0) { applyArgs = null; } + if (source === void 0) { source = null; } + _currentZoneFrame = { parent: _currentZoneFrame, zone: this }; + try { + return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); + } + finally { + _currentZoneFrame = _currentZoneFrame.parent; + } + }; + Zone.prototype.runGuarded = function (callback, applyThis, applyArgs, source) { + if (applyThis === void 0) { applyThis = null; } + if (applyArgs === void 0) { applyArgs = null; } + if (source === void 0) { source = null; } + _currentZoneFrame = { parent: _currentZoneFrame, zone: this }; + try { + try { + return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); + } + catch (error) { + if (this._zoneDelegate.handleError(this, error)) { + throw error; + } + } + } + finally { + _currentZoneFrame = _currentZoneFrame.parent; + } + }; + Zone.prototype.runTask = function (task, applyThis, applyArgs) { + if (task.zone != this) { + throw new Error('A task can only be run in the zone of creation! (Creation: ' + + (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')'); + } + // https://github.com/angular/zone.js/issues/778, sometimes eventTask + // will run in notScheduled(canceled) state, we should not try to + // run such kind of task but just return + // we have to define an variable here, if not + // typescript compiler will complain below + var isNotScheduled = task.state === notScheduled; + if (isNotScheduled && task.type === eventTask) { + return; + } + var reEntryGuard = task.state != running; + reEntryGuard && task._transitionTo(running, scheduled); + task.runCount++; + var previousTask = _currentTask; + _currentTask = task; + _currentZoneFrame = { parent: _currentZoneFrame, zone: this }; + try { + if (task.type == macroTask && task.data && !task.data.isPeriodic) { + task.cancelFn = null; + } + try { + return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs); + } + catch (error) { + if (this._zoneDelegate.handleError(this, error)) { + throw error; + } + } + } + finally { + // if the task's state is notScheduled or unknown, then it has already been cancelled + // we should not reset the state to scheduled + if (task.state !== notScheduled && task.state !== unknown) { + if (task.type == eventTask || (task.data && task.data.isPeriodic)) { + reEntryGuard && task._transitionTo(scheduled, running); + } + else { + task.runCount = 0; + this._updateTaskCount(task, -1); + reEntryGuard && + task._transitionTo(notScheduled, running, notScheduled); + } + } + _currentZoneFrame = _currentZoneFrame.parent; + _currentTask = previousTask; + } + }; + Zone.prototype.scheduleTask = function (task) { + if (task.zone && task.zone !== this) { + // check if the task was rescheduled, the newZone + // should not be the children of the original zone + var newZone = this; + while (newZone) { + if (newZone === task.zone) { + throw Error("can not reschedule task to " + this + .name + " which is descendants of the original zone " + task.zone.name); + } + newZone = newZone.parent; + } + } + task._transitionTo(scheduling, notScheduled); + var zoneDelegates = []; + task._zoneDelegates = zoneDelegates; + task._zone = this; + try { + task = this._zoneDelegate.scheduleTask(this, task); + } + catch (err) { + // should set task's state to unknown when scheduleTask throw error + // because the err may from reschedule, so the fromState maybe notScheduled + task._transitionTo(unknown, scheduling, notScheduled); + // TODO: @JiaLiPassion, should we check the result from handleError? + this._zoneDelegate.handleError(this, err); + throw err; + } + if (task._zoneDelegates === zoneDelegates) { + // we have to check because internally the delegate can reschedule the task. + this._updateTaskCount(task, 1); + } + if (task.state == scheduling) { + task._transitionTo(scheduled, scheduling); + } + return task; + }; + Zone.prototype.scheduleMicroTask = function (source, callback, data, customSchedule) { + return this.scheduleTask(new ZoneTask(microTask, source, callback, data, customSchedule, null)); + }; + Zone.prototype.scheduleMacroTask = function (source, callback, data, customSchedule, customCancel) { + return this.scheduleTask(new ZoneTask(macroTask, source, callback, data, customSchedule, customCancel)); + }; + Zone.prototype.scheduleEventTask = function (source, callback, data, customSchedule, customCancel) { + return this.scheduleTask(new ZoneTask(eventTask, source, callback, data, customSchedule, customCancel)); + }; + Zone.prototype.cancelTask = function (task) { + if (task.zone != this) + throw new Error('A task can only be cancelled in the zone of creation! (Creation: ' + + (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')'); + task._transitionTo(canceling, scheduled, running); + try { + this._zoneDelegate.cancelTask(this, task); + } + catch (err) { + // if error occurs when cancelTask, transit the state to unknown + task._transitionTo(unknown, canceling); + this._zoneDelegate.handleError(this, err); + throw err; + } + this._updateTaskCount(task, -1); + task._transitionTo(notScheduled, canceling); + task.runCount = 0; + return task; + }; + Zone.prototype._updateTaskCount = function (task, count) { + var zoneDelegates = task._zoneDelegates; + if (count == -1) { + task._zoneDelegates = null; + } + for (var i = 0; i < zoneDelegates.length; i++) { + zoneDelegates[i]._updateTaskCount(task.type, count); + } + }; + return Zone; + }()); + Zone.__symbol__ = __symbol__; + var DELEGATE_ZS = { + name: '', + onHasTask: function (delegate, _, target, hasTaskState) { + return delegate.hasTask(target, hasTaskState); + }, + onScheduleTask: function (delegate, _, target, task) { + return delegate.scheduleTask(target, task); + }, + onInvokeTask: function (delegate, _, target, task, applyThis, applyArgs) { return delegate.invokeTask(target, task, applyThis, applyArgs); }, + onCancelTask: function (delegate, _, target, task) { + return delegate.cancelTask(target, task); + } + }; + var ZoneDelegate = (function () { + function ZoneDelegate(zone, parentDelegate, zoneSpec) { + this._taskCounts = { 'microTask': 0, 'macroTask': 0, 'eventTask': 0 }; + this.zone = zone; + this._parentDelegate = parentDelegate; + this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS); + this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt); + this._forkCurrZone = zoneSpec && (zoneSpec.onFork ? this.zone : parentDelegate.zone); + this._interceptZS = + zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS); + this._interceptDlgt = + zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt); + this._interceptCurrZone = + zoneSpec && (zoneSpec.onIntercept ? this.zone : parentDelegate.zone); + this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS); + this._invokeDlgt = + zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt); + this._invokeCurrZone = zoneSpec && (zoneSpec.onInvoke ? this.zone : parentDelegate.zone); + this._handleErrorZS = + zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS); + this._handleErrorDlgt = + zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt); + this._handleErrorCurrZone = + zoneSpec && (zoneSpec.onHandleError ? this.zone : parentDelegate.zone); + this._scheduleTaskZS = + zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS); + this._scheduleTaskDlgt = + zoneSpec && (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt); + this._scheduleTaskCurrZone = + zoneSpec && (zoneSpec.onScheduleTask ? this.zone : parentDelegate.zone); + this._invokeTaskZS = + zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS); + this._invokeTaskDlgt = + zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt); + this._invokeTaskCurrZone = + zoneSpec && (zoneSpec.onInvokeTask ? this.zone : parentDelegate.zone); + this._cancelTaskZS = + zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS); + this._cancelTaskDlgt = + zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt); + this._cancelTaskCurrZone = + zoneSpec && (zoneSpec.onCancelTask ? this.zone : parentDelegate.zone); + this._hasTaskZS = null; + this._hasTaskDlgt = null; + this._hasTaskDlgtOwner = null; + this._hasTaskCurrZone = null; + var zoneSpecHasTask = zoneSpec && zoneSpec.onHasTask; + var parentHasTask = parentDelegate && parentDelegate._hasTaskZS; + if (zoneSpecHasTask || parentHasTask) { + // If we need to report hasTask, than this ZS needs to do ref counting on tasks. In such + // a case all task related interceptors must go through this ZD. We can't short circuit it. + this._hasTaskZS = zoneSpecHasTask ? zoneSpec : DELEGATE_ZS; + this._hasTaskDlgt = parentDelegate; + this._hasTaskDlgtOwner = this; + this._hasTaskCurrZone = zone; + if (!zoneSpec.onScheduleTask) { + this._scheduleTaskZS = DELEGATE_ZS; + this._scheduleTaskDlgt = parentDelegate; + this._scheduleTaskCurrZone = this.zone; + } + if (!zoneSpec.onInvokeTask) { + this._invokeTaskZS = DELEGATE_ZS; + this._invokeTaskDlgt = parentDelegate; + this._invokeTaskCurrZone = this.zone; + } + if (!zoneSpec.onCancelTask) { + this._cancelTaskZS = DELEGATE_ZS; + this._cancelTaskDlgt = parentDelegate; + this._cancelTaskCurrZone = this.zone; + } + } + } + ZoneDelegate.prototype.fork = function (targetZone, zoneSpec) { + return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec) : + new Zone(targetZone, zoneSpec); + }; + ZoneDelegate.prototype.intercept = function (targetZone, callback, source) { + return this._interceptZS ? + this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, targetZone, callback, source) : + callback; + }; + ZoneDelegate.prototype.invoke = function (targetZone, callback, applyThis, applyArgs, source) { + return this._invokeZS ? + this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source) : + callback.apply(applyThis, applyArgs); + }; + ZoneDelegate.prototype.handleError = function (targetZone, error) { + return this._handleErrorZS ? + this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, targetZone, error) : + true; + }; + ZoneDelegate.prototype.scheduleTask = function (targetZone, task) { + var returnTask = task; + if (this._scheduleTaskZS) { + if (this._hasTaskZS) { + returnTask._zoneDelegates.push(this._hasTaskDlgtOwner); + } + returnTask = this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task); + if (!returnTask) + returnTask = task; + } + else { + if (task.scheduleFn) { + task.scheduleFn(task); + } + else if (task.type == microTask) { + scheduleMicroTask(task); + } + else { + throw new Error('Task is missing scheduleFn.'); + } + } + return returnTask; + }; + ZoneDelegate.prototype.invokeTask = function (targetZone, task, applyThis, applyArgs) { + return this._invokeTaskZS ? + this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) : + task.callback.apply(applyThis, applyArgs); + }; + ZoneDelegate.prototype.cancelTask = function (targetZone, task) { + var value; + if (this._cancelTaskZS) { + value = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, targetZone, task); + } + else { + if (!task.cancelFn) { + throw Error('Task is not cancelable'); + } + value = task.cancelFn(task); + } + return value; + }; + ZoneDelegate.prototype.hasTask = function (targetZone, isEmpty) { + // hasTask should not throw error so other ZoneDelegate + // can still trigger hasTask callback + try { + return this._hasTaskZS && + this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty); + } + catch (err) { + this.handleError(targetZone, err); + } + }; + ZoneDelegate.prototype._updateTaskCount = function (type, count) { + var counts = this._taskCounts; + var prev = counts[type]; + var next = counts[type] = prev + count; + if (next < 0) { + throw new Error('More tasks executed then were scheduled.'); + } + if (prev == 0 || next == 0) { + var isEmpty = { + microTask: counts.microTask > 0, + macroTask: counts.macroTask > 0, + eventTask: counts.eventTask > 0, + change: type + }; + this.hasTask(this.zone, isEmpty); + } + }; + return ZoneDelegate; + }()); + var OPTIMIZED_ZONE_EVENT_TASK = Zone.__symbol__('optimizedZoneEventTask'); + var ZoneTask = (function () { + function ZoneTask(type, source, callback, options, scheduleFn, cancelFn) { + this._zone = null; + this.runCount = 0; + this._zoneDelegates = null; + this._state = 'notScheduled'; + this.type = type; + this.source = source; + this.data = options; + this.scheduleFn = scheduleFn; + this.cancelFn = cancelFn; + this.callback = callback; + var self = this; + if (type === eventTask && options === OPTIMIZED_ZONE_EVENT_TASK) { + this.invoke = ZoneTask.invokeTask; + } + else { + this.invoke = function () { + return ZoneTask.invokeTask.apply(global, [self, this, arguments]); + }; + } + } + ZoneTask.invokeTask = function (task, target, args) { + if (!task) { + task = this; + } + _numberOfNestedTaskFrames++; + try { + task.runCount++; + return task.zone.runTask(task, target, args); + } + finally { + if (_numberOfNestedTaskFrames == 1) { + drainMicroTaskQueue(); + } + _numberOfNestedTaskFrames--; + } + }; + Object.defineProperty(ZoneTask.prototype, "zone", { + get: function () { + return this._zone; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ZoneTask.prototype, "state", { + get: function () { + return this._state; + }, + enumerable: true, + configurable: true + }); + ZoneTask.prototype.cancelScheduleRequest = function () { + this._transitionTo(notScheduled, scheduling); + }; + ZoneTask.prototype._transitionTo = function (toState, fromState1, fromState2) { + if (this._state === fromState1 || this._state === fromState2) { + this._state = toState; + if (toState == notScheduled) { + this._zoneDelegates = null; + } + } + else { + throw new Error(this.type + " '" + this.source + "': can not transition to '" + toState + "', expecting state '" + fromState1 + "'" + (fromState2 ? + ' or \'' + fromState2 + '\'' : + '') + ", was '" + this._state + "'."); + } + }; + ZoneTask.prototype.toString = function () { + if (this.data && typeof this.data.handleId !== 'undefined') { + return this.data.handleId; + } + else { + return Object.prototype.toString.call(this); + } + }; + // add toJSON method to prevent cyclic error when + // call JSON.stringify(zoneTask) + ZoneTask.prototype.toJSON = function () { + return { + type: this.type, + state: this.state, + source: this.source, + zone: this.zone.name, + invoke: this.invoke, + scheduleFn: this.scheduleFn, + cancelFn: this.cancelFn, + runCount: this.runCount, + callback: this.callback + }; + }; + return ZoneTask; + }()); + ////////////////////////////////////////////////////// + ////////////////////////////////////////////////////// + /// MICROTASK QUEUE + ////////////////////////////////////////////////////// + ////////////////////////////////////////////////////// + var symbolSetTimeout = __symbol__('setTimeout'); + var symbolPromise = __symbol__('Promise'); + var symbolThen = __symbol__('then'); + var _microTaskQueue = []; + var _isDrainingMicrotaskQueue = false; + function scheduleMicroTask(task) { + // if we are not running in any task, and there has not been anything scheduled + // we must bootstrap the initial task creation by manually scheduling the drain + if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) { + // We are not running in Task, so we need to kickstart the microtask queue. + if (global[symbolPromise]) { + global[symbolPromise].resolve(0)[symbolThen](drainMicroTaskQueue); + } + else { + global[symbolSetTimeout](drainMicroTaskQueue, 0); + } + } + task && _microTaskQueue.push(task); + } + function drainMicroTaskQueue() { + if (!_isDrainingMicrotaskQueue) { + _isDrainingMicrotaskQueue = true; + while (_microTaskQueue.length) { + var queue = _microTaskQueue; + _microTaskQueue = []; + for (var i = 0; i < queue.length; i++) { + var task = queue[i]; + try { + task.zone.runTask(task, null, null); + } + catch (error) { + _api.onUnhandledError(error); + } + } + } + var showError = !Zone[__symbol__('ignoreConsoleErrorUncaughtError')]; + _api.microtaskDrainDone(); + _isDrainingMicrotaskQueue = false; + } + } + ////////////////////////////////////////////////////// + ////////////////////////////////////////////////////// + /// BOOTSTRAP + ////////////////////////////////////////////////////// + ////////////////////////////////////////////////////// + var NO_ZONE = { name: 'NO ZONE' }; + var notScheduled = 'notScheduled', scheduling = 'scheduling', scheduled = 'scheduled', running = 'running', canceling = 'canceling', unknown = 'unknown'; + var microTask = 'microTask', macroTask = 'macroTask', eventTask = 'eventTask'; + var patches = {}; + var _api = { + symbol: __symbol__, + currentZoneFrame: function () { return _currentZoneFrame; }, + onUnhandledError: noop, + microtaskDrainDone: noop, + scheduleMicroTask: scheduleMicroTask, + showUncaughtError: function () { return !Zone[__symbol__('ignoreConsoleErrorUncaughtError')]; }, + patchEventTargetMethods: function () { return false; }, + patchOnProperties: noop, + patchMethod: function () { return noop; }, + }; + var _currentZoneFrame = { parent: null, zone: new Zone(null, null) }; + var _currentTask = null; + var _numberOfNestedTaskFrames = 0; + function noop() { } + function __symbol__(name) { + return '__zone_symbol__' + name; + } + performanceMeasure('Zone', 'Zone'); + return global['Zone'] = Zone; +})(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global); + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +Zone.__load_patch('ZoneAwarePromise', function (global, Zone, api) { + var __symbol__ = api.symbol; + var _uncaughtPromiseErrors = []; + var symbolPromise = __symbol__('Promise'); + var symbolThen = __symbol__('then'); + api.onUnhandledError = function (e) { + if (api.showUncaughtError()) { + var rejection = e && e.rejection; + if (rejection) { + console.error('Unhandled Promise rejection:', rejection instanceof Error ? rejection.message : rejection, '; Zone:', e.zone.name, '; Task:', e.task && e.task.source, '; Value:', rejection, rejection instanceof Error ? rejection.stack : undefined); + } + else { + console.error(e); + } + } + }; + api.microtaskDrainDone = function () { + while (_uncaughtPromiseErrors.length) { + var _loop_1 = function () { + var uncaughtPromiseError = _uncaughtPromiseErrors.shift(); + try { + uncaughtPromiseError.zone.runGuarded(function () { + throw uncaughtPromiseError; + }); + } + catch (error) { + handleUnhandledRejection(error); + } + }; + while (_uncaughtPromiseErrors.length) { + _loop_1(); + } + } + }; + function handleUnhandledRejection(e) { + api.onUnhandledError(e); + try { + var handler = Zone[__symbol__('unhandledPromiseRejectionHandler')]; + if (handler && typeof handler === 'function') { + handler.apply(this, [e]); + } + } + catch (err) { + } + } + function isThenable(value) { + return value && value.then; + } + function forwardResolution(value) { + return value; + } + function forwardRejection(rejection) { + return ZoneAwarePromise.reject(rejection); + } + var symbolState = __symbol__('state'); + var symbolValue = __symbol__('value'); + var source = 'Promise.then'; + var UNRESOLVED = null; + var RESOLVED = true; + var REJECTED = false; + var REJECTED_NO_CATCH = 0; + function makeResolver(promise, state) { + return function (v) { + try { + resolvePromise(promise, state, v); + } + catch (err) { + resolvePromise(promise, false, err); + } + // Do not return value or you will break the Promise spec. + }; + } + var once = function () { + var wasCalled = false; + return function wrapper(wrappedFunction) { + return function () { + if (wasCalled) { + return; + } + wasCalled = true; + wrappedFunction.apply(null, arguments); + }; + }; + }; + // Promise Resolution + function resolvePromise(promise, state, value) { + var onceWrapper = once(); + if (promise === value) { + throw new TypeError('Promise resolved with itself'); + } + if (promise[symbolState] === UNRESOLVED) { + // should only get value.then once based on promise spec. + var then = null; + try { + if (typeof value === 'object' || typeof value === 'function') { + then = value && value.then; + } + } + catch (err) { + onceWrapper(function () { + resolvePromise(promise, false, err); + })(); + return promise; + } + // if (value instanceof ZoneAwarePromise) { + if (state !== REJECTED && value instanceof ZoneAwarePromise && + value.hasOwnProperty(symbolState) && value.hasOwnProperty(symbolValue) && + value[symbolState] !== UNRESOLVED) { + clearRejectedNoCatch(value); + resolvePromise(promise, value[symbolState], value[symbolValue]); + } + else if (state !== REJECTED && typeof then === 'function') { + try { + then.apply(value, [ + onceWrapper(makeResolver(promise, state)), onceWrapper(makeResolver(promise, false)) + ]); + } + catch (err) { + onceWrapper(function () { + resolvePromise(promise, false, err); + })(); + } + } + else { + promise[symbolState] = state; + var queue = promise[symbolValue]; + promise[symbolValue] = value; + // record task information in value when error occurs, so we can + // do some additional work such as render longStackTrace + if (state === REJECTED && value instanceof Error) { + value[__symbol__('currentTask')] = Zone.currentTask; + } + for (var i = 0; i < queue.length;) { + scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]); + } + if (queue.length == 0 && state == REJECTED) { + promise[symbolState] = REJECTED_NO_CATCH; + try { + throw new Error('Uncaught (in promise): ' + value + + (value && value.stack ? '\n' + value.stack : '')); + } + catch (err) { + var error_1 = err; + error_1.rejection = value; + error_1.promise = promise; + error_1.zone = Zone.current; + error_1.task = Zone.currentTask; + _uncaughtPromiseErrors.push(error_1); + api.scheduleMicroTask(); // to make sure that it is running + } + } + } + } + // Resolving an already resolved promise is a noop. + return promise; + } + function clearRejectedNoCatch(promise) { + if (promise[symbolState] === REJECTED_NO_CATCH) { + // if the promise is rejected no catch status + // and queue.length > 0, means there is a error handler + // here to handle the rejected promise, we should trigger + // windows.rejectionhandled eventHandler or nodejs rejectionHandled + // eventHandler + try { + var handler = Zone[__symbol__('rejectionHandledHandler')]; + if (handler && typeof handler === 'function') { + handler.apply(this, [{ rejection: promise[symbolValue], promise: promise }]); + } + } + catch (err) { + } + promise[symbolState] = REJECTED; + for (var i = 0; i < _uncaughtPromiseErrors.length; i++) { + if (promise === _uncaughtPromiseErrors[i].promise) { + _uncaughtPromiseErrors.splice(i, 1); + } + } + } + } + function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) { + clearRejectedNoCatch(promise); + var delegate = promise[symbolState] ? + (typeof onFulfilled === 'function') ? onFulfilled : forwardResolution : + (typeof onRejected === 'function') ? onRejected : forwardRejection; + zone.scheduleMicroTask(source, function () { + try { + resolvePromise(chainPromise, true, zone.run(delegate, undefined, [promise[symbolValue]])); + } + catch (error) { + resolvePromise(chainPromise, false, error); + } + }); + } + var ZoneAwarePromise = (function () { + function ZoneAwarePromise(executor) { + var promise = this; + if (!(promise instanceof ZoneAwarePromise)) { + throw new Error('Must be an instanceof Promise.'); + } + promise[symbolState] = UNRESOLVED; + promise[symbolValue] = []; // queue; + try { + executor && executor(makeResolver(promise, RESOLVED), makeResolver(promise, REJECTED)); + } + catch (error) { + resolvePromise(promise, false, error); + } + } + ZoneAwarePromise.toString = function () { + return 'function ZoneAwarePromise() { [native code] }'; + }; + ZoneAwarePromise.resolve = function (value) { + return resolvePromise(new this(null), RESOLVED, value); + }; + ZoneAwarePromise.reject = function (error) { + return resolvePromise(new this(null), REJECTED, error); + }; + ZoneAwarePromise.race = function (values) { + var resolve; + var reject; + var promise = new this(function (res, rej) { + _a = [res, rej], resolve = _a[0], reject = _a[1]; + var _a; + }); + function onResolve(value) { + promise && (promise = null || resolve(value)); + } + function onReject(error) { + promise && (promise = null || reject(error)); + } + for (var _i = 0, values_1 = values; _i < values_1.length; _i++) { + var value = values_1[_i]; + if (!isThenable(value)) { + value = this.resolve(value); + } + value.then(onResolve, onReject); + } + return promise; + }; + ZoneAwarePromise.all = function (values) { + var resolve; + var reject; + var promise = new this(function (res, rej) { + resolve = res; + reject = rej; + }); + var count = 0; + var resolvedValues = []; + for (var _i = 0, values_2 = values; _i < values_2.length; _i++) { + var value = values_2[_i]; + if (!isThenable(value)) { + value = this.resolve(value); + } + value.then((function (index) { return function (value) { + resolvedValues[index] = value; + count--; + if (!count) { + resolve(resolvedValues); + } + }; })(count), reject); + count++; + } + if (!count) + resolve(resolvedValues); + return promise; + }; + ZoneAwarePromise.prototype.then = function (onFulfilled, onRejected) { + var chainPromise = new this.constructor(null); + var zone = Zone.current; + if (this[symbolState] == UNRESOLVED) { + this[symbolValue].push(zone, chainPromise, onFulfilled, onRejected); + } + else { + scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected); + } + return chainPromise; + }; + ZoneAwarePromise.prototype.catch = function (onRejected) { + return this.then(null, onRejected); + }; + return ZoneAwarePromise; + }()); + // Protect against aggressive optimizers dropping seemingly unused properties. + // E.g. Closure Compiler in advanced mode. + ZoneAwarePromise['resolve'] = ZoneAwarePromise.resolve; + ZoneAwarePromise['reject'] = ZoneAwarePromise.reject; + ZoneAwarePromise['race'] = ZoneAwarePromise.race; + ZoneAwarePromise['all'] = ZoneAwarePromise.all; + var NativePromise = global[symbolPromise] = global['Promise']; + global['Promise'] = ZoneAwarePromise; + var symbolThenPatched = __symbol__('thenPatched'); + function patchThen(Ctor) { + var proto = Ctor.prototype; + var originalThen = proto.then; + // Keep a reference to the original method. + proto[symbolThen] = originalThen; + Ctor.prototype.then = function (onResolve, onReject) { + var _this = this; + var wrapped = new ZoneAwarePromise(function (resolve, reject) { + originalThen.call(_this, resolve, reject); + }); + return wrapped.then(onResolve, onReject); + }; + Ctor[symbolThenPatched] = true; + } + function zoneify(fn) { + return function () { + var resultPromise = fn.apply(this, arguments); + if (resultPromise instanceof ZoneAwarePromise) { + return resultPromise; + } + var ctor = resultPromise.constructor; + if (!ctor[symbolThenPatched]) { + patchThen(ctor); + } + return resultPromise; + }; + } + if (NativePromise) { + patchThen(NativePromise); + var fetch_1 = global['fetch']; + if (typeof fetch_1 == 'function') { + global['fetch'] = zoneify(fetch_1); + } + } + // This is not part of public API, but it is useful for tests, so we expose it. + Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors; + return ZoneAwarePromise; +}); + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/** + * Suppress closure compiler errors about unknown 'Zone' variable + * @fileoverview + * @suppress {undefinedVars,globalThis} + */ +var zoneSymbol = Zone.__symbol__; +var _global$1 = typeof window === 'object' && window || typeof self === 'object' && self || global; +function bindArguments(args, source) { + for (var i = args.length - 1; i >= 0; i--) { + if (typeof args[i] === 'function') { + args[i] = Zone.current.wrap(args[i], source + '_' + i); + } + } + return args; +} +function patchPrototype(prototype, fnNames) { + var source = prototype.constructor['name']; + var _loop_1 = function (i) { + var name_1 = fnNames[i]; + var delegate = prototype[name_1]; + if (delegate) { + prototype[name_1] = (function (delegate) { + var patched = function () { + return delegate.apply(this, bindArguments(arguments, source + '.' + name_1)); + }; + attachOriginToPatched(patched, delegate); + return patched; + })(delegate); + } + }; + for (var i = 0; i < fnNames.length; i++) { + _loop_1(i); + } +} +var isWebWorker = (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope); +// Make sure to access `process` through `_global` so that WebPack does not accidently browserify +// this code. +var isNode = (!('nw' in _global$1) && typeof _global$1.process !== 'undefined' && + {}.toString.call(_global$1.process) === '[object process]'); +var isBrowser = !isNode && !isWebWorker && !!(typeof window !== 'undefined' && window['HTMLElement']); +// we are in electron of nw, so we are both browser and nodejs +// Make sure to access `process` through `_global` so that WebPack does not accidently browserify +// this code. +var isMix = typeof _global$1.process !== 'undefined' && + {}.toString.call(_global$1.process) === '[object process]' && !isWebWorker && + !!(typeof window !== 'undefined' && window['HTMLElement']); +function patchProperty(obj, prop, prototype) { + var desc = Object.getOwnPropertyDescriptor(obj, prop); + if (!desc && prototype) { + // when patch window object, use prototype to check prop exist or not + var prototypeDesc = Object.getOwnPropertyDescriptor(prototype, prop); + if (prototypeDesc) { + desc = { enumerable: true, configurable: true }; + } + } + // if the descriptor not exists or is not configurable + // just return + if (!desc || !desc.configurable) { + return; + } + // A property descriptor cannot have getter/setter and be writable + // deleting the writable and value properties avoids this error: + // + // TypeError: property descriptors must not specify a value or be writable when a + // getter or setter has been specified + delete desc.writable; + delete desc.value; + var originalDescGet = desc.get; + // substr(2) cuz 'onclick' -> 'click', etc + var eventName = prop.substr(2); + var _prop = zoneSymbol('_' + prop); + desc.set = function (newValue) { + // in some of windows's onproperty callback, this is undefined + // so we need to check it + var target = this; + if (!target && obj === _global$1) { + target = _global$1; + } + if (!target) { + return; + } + var previousValue = target[_prop]; + if (previousValue) { + target.removeEventListener(eventName, previousValue); + } + if (typeof newValue === 'function') { + var wrapFn = function (event) { + var result = newValue.apply(this, arguments); + if (result != undefined && !result) { + event.preventDefault(); + } + return result; + }; + target[_prop] = wrapFn; + target.addEventListener(eventName, wrapFn, false); + } + else { + target[_prop] = null; + } + }; + // The getter would return undefined for unassigned properties but the default value of an + // unassigned property is null + desc.get = function () { + // in some of windows's onproperty callback, this is undefined + // so we need to check it + var target = this; + if (!target && obj === _global$1) { + target = _global$1; + } + if (!target) { + return null; + } + if (target.hasOwnProperty(_prop)) { + return target[_prop]; + } + else if (originalDescGet) { + // result will be null when use inline event attribute, + // such as + // because the onclick function is internal raw uncompiled handler + // the onclick will be evaluated when first time event was triggered or + // the property is accessed, https://github.com/angular/zone.js/issues/525 + // so we should use original native get to retrieve the handler + var value = originalDescGet && originalDescGet.apply(this); + if (value) { + desc.set.apply(this, [value]); + if (typeof target['removeAttribute'] === 'function') { + target.removeAttribute(prop); + } + return value; + } + } + return null; + }; + Object.defineProperty(obj, prop, desc); +} +function patchOnProperties(obj, properties, prototype) { + if (properties) { + for (var i = 0; i < properties.length; i++) { + patchProperty(obj, 'on' + properties[i], prototype); + } + } + else { + var onProperties = []; + for (var prop in obj) { + if (prop.substr(0, 2) == 'on') { + onProperties.push(prop); + } + } + for (var j = 0; j < onProperties.length; j++) { + patchProperty(obj, onProperties[j], prototype); + } + } +} +var originalInstanceKey = zoneSymbol('originalInstance'); +// wrap some native API on `window` +function patchClass(className) { + var OriginalClass = _global$1[className]; + if (!OriginalClass) + return; + // keep original class in global + _global$1[zoneSymbol(className)] = OriginalClass; + _global$1[className] = function () { + var a = bindArguments(arguments, className); + switch (a.length) { + case 0: + this[originalInstanceKey] = new OriginalClass(); + break; + case 1: + this[originalInstanceKey] = new OriginalClass(a[0]); + break; + case 2: + this[originalInstanceKey] = new OriginalClass(a[0], a[1]); + break; + case 3: + this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2]); + break; + case 4: + this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2], a[3]); + break; + default: + throw new Error('Arg list too long.'); + } + }; + // attach original delegate to patched function + attachOriginToPatched(_global$1[className], OriginalClass); + var instance = new OriginalClass(function () { }); + var prop; + for (prop in instance) { + // https://bugs.webkit.org/show_bug.cgi?id=44721 + if (className === 'XMLHttpRequest' && prop === 'responseBlob') + continue; + (function (prop) { + if (typeof instance[prop] === 'function') { + _global$1[className].prototype[prop] = function () { + return this[originalInstanceKey][prop].apply(this[originalInstanceKey], arguments); + }; + } + else { + Object.defineProperty(_global$1[className].prototype, prop, { + set: function (fn) { + if (typeof fn === 'function') { + this[originalInstanceKey][prop] = Zone.current.wrap(fn, className + '.' + prop); + // keep callback in wrapped function so we can + // use it in Function.prototype.toString to return + // the native one. + attachOriginToPatched(this[originalInstanceKey][prop], fn); + } + else { + this[originalInstanceKey][prop] = fn; + } + }, + get: function () { + return this[originalInstanceKey][prop]; + } + }); + } + }(prop)); + } + for (prop in OriginalClass) { + if (prop !== 'prototype' && OriginalClass.hasOwnProperty(prop)) { + _global$1[className][prop] = OriginalClass[prop]; + } + } +} +function patchMethod(target, name, patchFn) { + var proto = target; + while (proto && !proto.hasOwnProperty(name)) { + proto = Object.getPrototypeOf(proto); + } + if (!proto && target[name]) { + // somehow we did not find it, but we can see it. This happens on IE for Window properties. + proto = target; + } + var delegateName = zoneSymbol(name); + var delegate; + if (proto && !(delegate = proto[delegateName])) { + delegate = proto[delegateName] = proto[name]; + var patchDelegate_1 = patchFn(delegate, delegateName, name); + proto[name] = function () { + return patchDelegate_1(this, arguments); + }; + attachOriginToPatched(proto[name], delegate); + } + return delegate; +} +// TODO: @JiaLiPassion, support cancel task later if necessary +function patchMacroTask(obj, funcName, metaCreator) { + var setNative = null; + function scheduleTask(task) { + var data = task.data; + data.args[data.callbackIndex] = function () { + task.invoke.apply(this, arguments); + }; + setNative.apply(data.target, data.args); + return task; + } + setNative = patchMethod(obj, funcName, function (delegate) { return function (self, args) { + var meta = metaCreator(self, args); + if (meta.callbackIndex >= 0 && typeof args[meta.callbackIndex] === 'function') { + var task = Zone.current.scheduleMacroTask(meta.name, args[meta.callbackIndex], meta, scheduleTask, null); + return task; + } + else { + // cause an error by calling it directly. + return delegate.apply(self, args); + } + }; }); +} + +function attachOriginToPatched(patched, original) { + patched[zoneSymbol('OriginalDelegate')] = original; +} +var isDetectedIEOrEdge = false; +var ieOrEdge = false; +function isIEOrEdge() { + if (isDetectedIEOrEdge) { + return ieOrEdge; + } + isDetectedIEOrEdge = true; + try { + var ua = window.navigator.userAgent; + var msie = ua.indexOf('MSIE '); + if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1 || ua.indexOf('Edge/') !== -1) { + ieOrEdge = true; + } + return ieOrEdge; + } + catch (error) { + } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +// override Function.prototype.toString to make zone.js patched function +// look like native function +Zone.__load_patch('toString', function (global, Zone, api) { + // patch Func.prototype.toString to let them look like native + var originalFunctionToString = Zone['__zone_symbol__originalToString'] = + Function.prototype.toString; + Function.prototype.toString = function () { + if (typeof this === 'function') { + var originalDelegate = this[zoneSymbol('OriginalDelegate')]; + if (originalDelegate) { + if (typeof originalDelegate === 'function') { + return originalFunctionToString.apply(this[zoneSymbol('OriginalDelegate')], arguments); + } + else { + return Object.prototype.toString.call(originalDelegate); + } + } + if (this === Promise) { + var nativePromise = global[zoneSymbol('Promise')]; + if (nativePromise) { + return originalFunctionToString.apply(nativePromise, arguments); + } + } + if (this === Error) { + var nativeError = global[zoneSymbol('Error')]; + if (nativeError) { + return originalFunctionToString.apply(nativeError, arguments); + } + } + } + return originalFunctionToString.apply(this, arguments); + }; + // patch Object.prototype.toString to let them look like native + var originalObjectToString = Object.prototype.toString; + Object.prototype.toString = function () { + if (this instanceof Promise) { + return '[object Promise]'; + } + return originalObjectToString.apply(this, arguments); + }; +}); + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +var TRUE_STR = 'true'; +var FALSE_STR = 'false'; +// an identifier to tell ZoneTask do not create a new invoke closure +var OPTIMIZED_ZONE_EVENT_TASK = zoneSymbol('optimizedZoneEventTask'); +var zoneSymbolEventNames = {}; +var globalSources = {}; +var CONSTRUCTOR_NAME = 'name'; +var FUNCTION_TYPE = 'function'; +var OBJECT_TYPE = 'object'; +var ZONE_SYMBOL_PREFIX = '__zone_symbol__'; +var EVENT_NAME_SYMBOL_REGX = /^__zone_symbol__(\w+)(true|false)$/; +var invokeTask = function (task, target, event) { + var delegate = task.callback; + if (typeof delegate === OBJECT_TYPE && delegate.handleEvent) { + // create the bind version of handleEvnet when invoke + task.callback = function (event) { return delegate.handleEvent(event); }; + task.originalDelegate = delegate; + } + // invoke static task.invoke + task.invoke(task, target, [event]); +}; +// global shared zoneAwareCallback to handle all event callback with capture = false +var globalZoneAwareCallback = function (event) { + var target = this || _global; + var tasks = target[zoneSymbolEventNames[event.type][FALSE_STR]]; + if (tasks) { + // invoke all tasks which attached to current target with given event.type and capture = false + for (var i = 0; i < tasks.length; i++) { + invokeTask(tasks[i], target, event); + } + } +}; +// global shared zoneAwareCallback to handle all event callback with capture = true +var globalZoneAwareCaptureCallback = function (event) { + var target = this || _global; + var tasks = target[zoneSymbolEventNames[event.type][TRUE_STR]]; + if (tasks) { + for (var i = 0; i < tasks.length; i++) { + invokeTask(tasks[i], target, event); + } + } +}; +function patchEventTargetMethods(obj, patchOptions) { + if (!obj) { + return false; + } + var ADD_EVENT_LISTENER = (patchOptions && patchOptions.addEventListenerFnName) || 'addEventListener'; + var REMOVE_EVENT_LISTENER = (patchOptions && patchOptions.removeEventListenerFnName) || 'removeEventListener'; + var LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.listenersFnName) || 'eventListeners'; + var REMOVE_ALL_LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.removeAllFnName) || 'removeAllListeners'; + var zoneSymbolAddEventListener = zoneSymbol(ADD_EVENT_LISTENER); + var ADD_EVENT_LISTENER_SOURCE = '.' + ADD_EVENT_LISTENER + ':'; + var PREPEND_EVENT_LISTENER = 'prependListener'; + var PREPEND_EVENT_LISTENER_SOURCE = '.' + PREPEND_EVENT_LISTENER + ':'; + var useGlobalCallback = true; + if (patchOptions && patchOptions.useGlobalCallback !== undefined) { + useGlobalCallback = patchOptions.useGlobalCallback; + } + var validateHandler = patchOptions && patchOptions.validateHandler; + var checkDuplicate = true; + if (patchOptions && patchOptions.checkDuplicate !== undefined) { + checkDuplicate = patchOptions.checkDuplicate; + } + var returnTarget = false; + if (patchOptions && patchOptions.returnTarget !== undefined) { + returnTarget = patchOptions.returnTarget; + } + var proto = obj; + while (proto && !proto.hasOwnProperty(ADD_EVENT_LISTENER)) { + proto = Object.getPrototypeOf(proto); + } + if (!proto && obj[ADD_EVENT_LISTENER]) { + // somehow we did not find it, but we can see it. This happens on IE for Window properties. + proto = obj; + } + if (!proto) { + return false; + } + if (proto[zoneSymbolAddEventListener]) { + return false; + } + // a shared global taskData to pass data for scheduleEventTask + // so we do not need to create a new object just for pass some data + var taskData = {}; + var nativeAddEventListener = proto[zoneSymbolAddEventListener] = proto[ADD_EVENT_LISTENER]; + var nativeRemoveEventListener = proto[zoneSymbol(REMOVE_EVENT_LISTENER)] = + proto[REMOVE_EVENT_LISTENER]; + var nativeListeners = proto[zoneSymbol(LISTENERS_EVENT_LISTENER)] = + proto[LISTENERS_EVENT_LISTENER]; + var nativeRemoveAllListeners = proto[zoneSymbol(REMOVE_ALL_LISTENERS_EVENT_LISTENER)] = + proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER]; + var nativePrependEventListener; + if (patchOptions && patchOptions.prependEventListenerFnName) { + nativePrependEventListener = proto[zoneSymbol(patchOptions.prependEventListenerFnName)] = + proto[patchOptions.prependEventListenerFnName]; + } + var customScheduleGlobal = function (task) { + // if there is already a task for the eventName + capture, + // just return, because we use the shared globalZoneAwareCallback here. + if (taskData.isExisting) { + return; + } + return nativeAddEventListener.apply(taskData.target, [ + taskData.eventName, + taskData.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, taskData.options + ]); + }; + var customCancelGlobal = function (task) { + // if all tasks for the eventName + capture have gone, + // we will really remove the global event callback, + // if not, return + if (!task.remove) { + return; + } + return nativeRemoveEventListener.apply(task.target, [ + task.eventName, task.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, + task.options + ]); + }; + var customScheduleNonGlobal = function (task) { + return nativeAddEventListener.apply(taskData.target, [taskData.eventName, task.invoke, taskData.options]); + }; + var customSchedulePrepend = function (task) { + return nativePrependEventListener.apply(taskData.target, [taskData.eventName, task.invoke, taskData.options]); + }; + var customCancelNonGlobal = function (task) { + return nativeRemoveEventListener.apply(task.target, [task.eventName, task.invoke, task.options]); + }; + var customSchedule = useGlobalCallback ? customScheduleGlobal : customScheduleNonGlobal; + var customCancel = useGlobalCallback ? customCancelGlobal : customCancelNonGlobal; + var compareTaskCallbackVsDelegate = function (task, delegate) { + var typeOfDelegate = typeof delegate; + if ((typeOfDelegate === FUNCTION_TYPE && task.callback === delegate) || + (typeOfDelegate === OBJECT_TYPE && task.originalDelegate === delegate)) { + // same callback, same capture, same event name, just return + return true; + } + return false; + }; + var compare = (patchOptions && patchOptions.compareTaskCallbackVsDelegate) ? + patchOptions.compareTaskCallbackVsDelegate : + compareTaskCallbackVsDelegate; + var makeAddListener = function (nativeListener, addSource, customScheduleFn, customCancelFn, returnTarget, prepend) { + if (returnTarget === void 0) { returnTarget = false; } + if (prepend === void 0) { prepend = false; } + return function () { + var target = this || _global; + var targetZone = Zone.current; + var delegate = arguments[1]; + if (!delegate) { + return nativeListener.apply(this, arguments); + } + // don't create the bind delegate function for handleEvent + // case here to improve addEventListener performance + // we will create the bind delegate when invoke + var isHandleEvent = false; + if (typeof delegate !== FUNCTION_TYPE) { + if (!delegate.handleEvent) { + return nativeListener.apply(this, arguments); + } + isHandleEvent = true; + } + if (validateHandler && !validateHandler(nativeListener, delegate, target, arguments)) { + return; + } + var eventName = arguments[0]; + var options = arguments[2]; + var capture; + if (options === undefined) { + capture = false; + } + else if (options === true) { + capture = true; + } + else if (options === false) { + capture = false; + } + else { + capture = options ? !!options.capture : false; + } + var zone = Zone.current; + var symbolEventNames = zoneSymbolEventNames[eventName]; + var symbolEventName; + if (!symbolEventNames) { + // the code is duplicate, but I just want to get some better performance + var falseEventName = eventName + FALSE_STR; + var trueEventName = eventName + TRUE_STR; + var symbol = ZONE_SYMBOL_PREFIX + falseEventName; + var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName; + zoneSymbolEventNames[eventName] = {}; + zoneSymbolEventNames[eventName][FALSE_STR] = symbol; + zoneSymbolEventNames[eventName][TRUE_STR] = symbolCapture; + symbolEventName = capture ? symbolCapture : symbol; + } + else { + symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR]; + } + var existingTasks = target[symbolEventName]; + var isExisting = false; + if (existingTasks) { + // already have task registered + isExisting = true; + if (checkDuplicate) { + for (var i = 0; i < existingTasks.length; i++) { + if (compare(existingTasks[i], delegate)) { + // same callback, same capture, same event name, just return + return; + } + } + } + } + else { + existingTasks = target[symbolEventName] = []; + } + var source; + var constructorName = target.constructor[CONSTRUCTOR_NAME]; + var targetSource = globalSources[constructorName]; + if (targetSource) { + source = targetSource[eventName]; + } + if (!source) { + source = constructorName + addSource + eventName; + } + // do not create a new object as task.data to pass those things + // just use the global shared one + taskData.options = options; + taskData.target = target; + taskData.capture = capture; + taskData.eventName = eventName; + taskData.isExisting = isExisting; + var data = useGlobalCallback ? OPTIMIZED_ZONE_EVENT_TASK : null; + var task = zone.scheduleEventTask(source, delegate, data, customScheduleFn, customCancelFn); + // have to save those information to task in case + // application may call task.zone.cancelTask() directly + task.options = options; + task.target = target; + task.capture = capture; + task.eventName = eventName; + if (isHandleEvent) { + // save original delegate for compare to check duplicate + task.originalDelegate = delegate; + } + if (!prepend) { + existingTasks.push(task); + } + else { + existingTasks.unshift(task); + } + if (returnTarget) { + return target; + } + }; + }; + proto[ADD_EVENT_LISTENER] = makeAddListener(nativeAddEventListener, ADD_EVENT_LISTENER_SOURCE, customSchedule, customCancel, returnTarget); + if (nativePrependEventListener) { + proto[PREPEND_EVENT_LISTENER] = makeAddListener(nativePrependEventListener, PREPEND_EVENT_LISTENER_SOURCE, customSchedulePrepend, customCancel, returnTarget, true); + } + proto[REMOVE_EVENT_LISTENER] = function () { + var target = this || _global; + var eventName = arguments[0]; + var options = arguments[2]; + var capture; + if (options === undefined) { + capture = false; + } + else if (options === true) { + capture = true; + } + else if (options === false) { + capture = false; + } + else { + capture = options ? !!options.capture : false; + } + var delegate = arguments[1]; + if (!delegate) { + return nativeRemoveEventListener.apply(this, arguments); + } + if (validateHandler && + !validateHandler(nativeRemoveEventListener, delegate, target, arguments)) { + return; + } + var symbolEventNames = zoneSymbolEventNames[eventName]; + var symbolEventName; + if (symbolEventNames) { + symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR]; + } + var existingTasks = symbolEventName && target[symbolEventName]; + if (existingTasks) { + for (var i = 0; i < existingTasks.length; i++) { + var existingTask = existingTasks[i]; + var typeOfDelegate = typeof delegate; + if (compare(existingTask, delegate)) { + existingTasks.splice(i, 1); + if (existingTasks.length === 0) { + // all tasks for the eventName + capture have gone, + // remove globalZoneAwareCallback and remove the task cache from target + existingTask.remove = true; + target[symbolEventName] = null; + } + existingTask.zone.cancelTask(existingTask); + return; + } + } + } + }; + proto[LISTENERS_EVENT_LISTENER] = function () { + var target = this || _global; + var eventName = arguments[0]; + var listeners = []; + var tasks = findEventTasks(target, eventName); + for (var i = 0; i < tasks.length; i++) { + var task = tasks[i]; + var delegate = task.originalDelegate ? task.originalDelegate : task.callback; + listeners.push(delegate); + } + return listeners; + }; + proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER] = function () { + var target = this || _global; + var eventName = arguments[0]; + if (!eventName) { + var keys = Object.keys(target); + for (var i = 0; i < keys.length; i++) { + var prop = keys[i]; + var match = EVENT_NAME_SYMBOL_REGX.exec(prop); + var evtName = match && match[1]; + if (evtName && evtName !== 'removeListener') { + this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].apply(this, [evtName]); + } + } + this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].apply(this, ['removeListener']); + } + else { + var symbolEventNames = zoneSymbolEventNames[eventName]; + if (symbolEventNames) { + var symbolEventName = symbolEventNames[FALSE_STR]; + var symbolCaptureEventName = symbolEventNames[TRUE_STR]; + var tasks = target[symbolEventName]; + var captureTasks = target[symbolCaptureEventName]; + if (tasks) { + var removeTasks = tasks.slice(); + for (var i = 0; i < removeTasks.length; i++) { + var task = removeTasks[i]; + var delegate = task.originalDelegate ? task.originalDelegate : task.callback; + this[REMOVE_EVENT_LISTENER].apply(this, [eventName, delegate, task.options]); + } + } + if (captureTasks) { + var removeTasks = captureTasks.slice(); + for (var i = 0; i < removeTasks.length; i++) { + var task = removeTasks[i]; + var delegate = task.originalDelegate ? task.originalDelegate : task.callback; + this[REMOVE_EVENT_LISTENER].apply(this, [eventName, delegate, task.options]); + } + } + } + } + }; + // for native toString patch + attachOriginToPatched(proto[ADD_EVENT_LISTENER], nativeAddEventListener); + attachOriginToPatched(proto[REMOVE_EVENT_LISTENER], nativeRemoveEventListener); + if (nativeRemoveAllListeners) { + attachOriginToPatched(proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER], nativeRemoveAllListeners); + } + if (nativeListeners) { + attachOriginToPatched(proto[LISTENERS_EVENT_LISTENER], nativeListeners); + } + return true; +} +function findEventTasks(target, eventName) { + var foundTasks = []; + for (var prop in target) { + var match = EVENT_NAME_SYMBOL_REGX.exec(prop); + var evtName = match && match[1]; + if (evtName && (!eventName || evtName === eventName)) { + var tasks = target[prop]; + if (tasks) { + for (var i = 0; i < tasks.length; i++) { + foundTasks.push(tasks[i]); + } + } + } + } + return foundTasks; +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +function patchTimer(window, setName, cancelName, nameSuffix) { + var setNative = null; + var clearNative = null; + setName += nameSuffix; + cancelName += nameSuffix; + var tasksByHandleId = {}; + function scheduleTask(task) { + var data = task.data; + function timer() { + try { + task.invoke.apply(this, arguments); + } + finally { + if (typeof data.handleId === 'number') { + // Node returns complex objects as handleIds + delete tasksByHandleId[data.handleId]; + } + } + } + data.args[0] = timer; + data.handleId = setNative.apply(window, data.args); + if (typeof data.handleId === 'number') { + // Node returns complex objects as handleIds -> no need to keep them around. Additionally, + // this throws an + // exception in older node versions and has no effect there, because of the stringified key. + tasksByHandleId[data.handleId] = task; + } + return task; + } + function clearTask(task) { + if (typeof task.data.handleId === 'number') { + // Node returns complex objects as handleIds + delete tasksByHandleId[task.data.handleId]; + } + return clearNative(task.data.handleId); + } + setNative = + patchMethod(window, setName, function (delegate) { return function (self, args) { + if (typeof args[0] === 'function') { + var zone = Zone.current; + var options = { + handleId: null, + isPeriodic: nameSuffix === 'Interval', + delay: (nameSuffix === 'Timeout' || nameSuffix === 'Interval') ? args[1] || 0 : null, + args: args + }; + var task = zone.scheduleMacroTask(setName, args[0], options, scheduleTask, clearTask); + if (!task) { + return task; + } + // Node.js must additionally support the ref and unref functions. + var handle = task.data.handleId; + // check whether handle is null, because some polyfill or browser + // may return undefined from setTimeout/setInterval/setImmediate/requestAnimationFrame + if (handle && handle.ref && handle.unref && typeof handle.ref === 'function' && + typeof handle.unref === 'function') { + task.ref = handle.ref.bind(handle); + task.unref = handle.unref.bind(handle); + } + return task; + } + else { + // cause an error by calling it directly. + return delegate.apply(window, args); + } + }; }); + clearNative = + patchMethod(window, cancelName, function (delegate) { return function (self, args) { + var task = typeof args[0] === 'number' ? tasksByHandleId[args[0]] : args[0]; + if (task && typeof task.type === 'string') { + if (task.state !== 'notScheduled' && + (task.cancelFn && task.data.isPeriodic || task.runCount === 0)) { + // Do not cancel already canceled functions + task.zone.cancelTask(task); + } + } + else { + // cause an error by calling it directly. + delegate.apply(window, args); + } + }; }); +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/* + * This is necessary for Chrome and Chrome mobile, to enable + * things like redefining `createdCallback` on an element. + */ +var _defineProperty = Object[zoneSymbol('defineProperty')] = Object.defineProperty; +var _getOwnPropertyDescriptor = Object[zoneSymbol('getOwnPropertyDescriptor')] = + Object.getOwnPropertyDescriptor; +var _create = Object.create; +var unconfigurablesKey = zoneSymbol('unconfigurables'); +function propertyPatch() { + Object.defineProperty = function (obj, prop, desc) { + if (isUnconfigurable(obj, prop)) { + throw new TypeError('Cannot assign to read only property \'' + prop + '\' of ' + obj); + } + var originalConfigurableFlag = desc.configurable; + if (prop !== 'prototype') { + desc = rewriteDescriptor(obj, prop, desc); + } + return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag); + }; + Object.defineProperties = function (obj, props) { + Object.keys(props).forEach(function (prop) { + Object.defineProperty(obj, prop, props[prop]); + }); + return obj; + }; + Object.create = function (obj, proto) { + if (typeof proto === 'object' && !Object.isFrozen(proto)) { + Object.keys(proto).forEach(function (prop) { + proto[prop] = rewriteDescriptor(obj, prop, proto[prop]); + }); + } + return _create(obj, proto); + }; + Object.getOwnPropertyDescriptor = function (obj, prop) { + var desc = _getOwnPropertyDescriptor(obj, prop); + if (isUnconfigurable(obj, prop)) { + desc.configurable = false; + } + return desc; + }; +} +function _redefineProperty(obj, prop, desc) { + var originalConfigurableFlag = desc.configurable; + desc = rewriteDescriptor(obj, prop, desc); + return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag); +} +function isUnconfigurable(obj, prop) { + return obj && obj[unconfigurablesKey] && obj[unconfigurablesKey][prop]; +} +function rewriteDescriptor(obj, prop, desc) { + desc.configurable = true; + if (!desc.configurable) { + if (!obj[unconfigurablesKey]) { + _defineProperty(obj, unconfigurablesKey, { writable: true, value: {} }); + } + obj[unconfigurablesKey][prop] = true; + } + return desc; +} +function _tryDefineProperty(obj, prop, desc, originalConfigurableFlag) { + try { + return _defineProperty(obj, prop, desc); + } + catch (error) { + if (desc.configurable) { + // In case of errors, when the configurable flag was likely set by rewriteDescriptor(), let's + // retry with the original flag value + if (typeof originalConfigurableFlag == 'undefined') { + delete desc.configurable; + } + else { + desc.configurable = originalConfigurableFlag; + } + try { + return _defineProperty(obj, prop, desc); + } + catch (error) { + var descJson = null; + try { + descJson = JSON.stringify(desc); + } + catch (error) { + descJson = descJson.toString(); + } + console.log("Attempting to configure '" + prop + "' with descriptor '" + descJson + "' on object '" + obj + "' and got error, giving up: " + error); + } + } + else { + throw error; + } + } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +// we have to patch the instance since the proto is non-configurable +function apply(_global) { + var WS = _global.WebSocket; + // On Safari window.EventTarget doesn't exist so need to patch WS add/removeEventListener + // On older Chrome, no need since EventTarget was already patched + if (!_global.EventTarget) { + patchEventTargetMethods(WS.prototype); + } + _global.WebSocket = function (a, b) { + var socket = arguments.length > 1 ? new WS(a, b) : new WS(a); + var proxySocket; + var proxySocketProto; + // Safari 7.0 has non-configurable own 'onmessage' and friends properties on the socket instance + var onmessageDesc = Object.getOwnPropertyDescriptor(socket, 'onmessage'); + if (onmessageDesc && onmessageDesc.configurable === false) { + proxySocket = Object.create(socket); + // socket have own property descriptor 'onopen', 'onmessage', 'onclose', 'onerror' + // but proxySocket not, so we will keep socket as prototype and pass it to + // patchOnProperties method + proxySocketProto = socket; + ['addEventListener', 'removeEventListener', 'send', 'close'].forEach(function (propName) { + proxySocket[propName] = function () { + return socket[propName].apply(socket, arguments); + }; + }); + } + else { + // we can patch the real socket + proxySocket = socket; + } + patchOnProperties(proxySocket, ['close', 'error', 'message', 'open'], proxySocketProto); + return proxySocket; + }; + for (var prop in WS) { + _global['WebSocket'][prop] = WS[prop]; + } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +var globalEventHandlersEventNames = [ + 'abort', + 'animationcancel', + 'animationend', + 'animationiteration', + 'auxclick', + 'beforeinput', + 'blur', + 'cancel', + 'canplay', + 'canplaythrough', + 'change', + 'compositionstart', + 'compositionupdate', + 'compositionend', + 'cuechange', + 'click', + 'close', + 'contextmenu', + 'curechange', + 'dblclick', + 'drag', + 'dragend', + 'dragenter', + 'dragexit', + 'dragleave', + 'dragover', + 'drop', + 'durationchange', + 'emptied', + 'ended', + 'error', + 'focus', + 'focusin', + 'focusout', + 'gotpointercapture', + 'input', + 'invalid', + 'keydown', + 'keypress', + 'keyup', + 'load', + 'loadstart', + 'loadeddata', + 'loadedmetadata', + 'lostpointercapture', + 'mousedown', + 'mouseenter', + 'mouseleave', + 'mousemove', + 'mouseout', + 'mouseover', + 'mouseup', + 'mousewheel', + 'pause', + 'play', + 'playing', + 'pointercancel', + 'pointerdown', + 'pointerenter', + 'pointerleave', + 'pointerlockchange', + 'mozpointerlockchange', + 'webkitpointerlockerchange', + 'pointerlockerror', + 'mozpointerlockerror', + 'webkitpointerlockerror', + 'pointermove', + 'pointout', + 'pointerover', + 'pointerup', + 'progress', + 'ratechange', + 'reset', + 'resize', + 'scroll', + 'seeked', + 'seeking', + 'select', + 'selectionchange', + 'selectstart', + 'show', + 'sort', + 'stalled', + 'submit', + 'suspend', + 'timeupdate', + 'volumechange', + 'touchcancel', + 'touchmove', + 'touchstart', + 'transitioncancel', + 'transitionend', + 'waiting', + 'wheel' +]; +var documentEventNames = [ + 'afterscriptexecute', 'beforescriptexecute', 'DOMContentLoaded', 'fullscreenchange', + 'mozfullscreenchange', 'webkitfullscreenchange', 'msfullscreenchange', 'fullscreenerror', + 'mozfullscreenerror', 'webkitfullscreenerror', 'msfullscreenerror', 'readystatechange' +]; +var windowEventNames = [ + 'absolutedeviceorientation', + 'afterinput', + 'afterprint', + 'appinstalled', + 'beforeinstallprompt', + 'beforeprint', + 'beforeunload', + 'devicelight', + 'devicemotion', + 'deviceorientation', + 'deviceorientationabsolute', + 'deviceproximity', + 'hashchange', + 'languagechange', + 'message', + 'mozbeforepaint', + 'offline', + 'online', + 'paint', + 'pageshow', + 'pagehide', + 'popstate', + 'rejectionhandled', + 'storage', + 'unhandledrejection', + 'unload', + 'userproximity', + 'vrdisplyconnected', + 'vrdisplaydisconnected', + 'vrdisplaypresentchange' +]; +var htmlElementEventNames = [ + 'beforecopy', 'beforecut', 'beforepaste', 'copy', 'cut', 'paste', 'dragstart', 'loadend', + 'animationstart', 'search', 'transitionrun', 'transitionstart', 'webkitanimationend', + 'webkitanimationiteration', 'webkitanimationstart', 'webkittransitionend' +]; +var mediaElementEventNames = ['encrypted', 'waitingforkey', 'msneedkey', 'mozinterruptbegin', 'mozinterruptend']; +var ieElementEventNames = [ + 'activate', + 'afterupdate', + 'ariarequest', + 'beforeactivate', + 'beforedeactivate', + 'beforeeditfocus', + 'beforeupdate', + 'cellchange', + 'controlselect', + 'dataavailable', + 'datasetchanged', + 'datasetcomplete', + 'errorupdate', + 'filterchange', + 'layoutcomplete', + 'losecapture', + 'move', + 'moveend', + 'movestart', + 'propertychange', + 'resizeend', + 'resizestart', + 'rowenter', + 'rowexit', + 'rowsdelete', + 'rowsinserted', + 'command', + 'compassneedscalibration', + 'deactivate', + 'help', + 'mscontentzoom', + 'msmanipulationstatechanged', + 'msgesturechange', + 'msgesturedoubletap', + 'msgestureend', + 'msgesturehold', + 'msgesturestart', + 'msgesturetap', + 'msgotpointercapture', + 'msinertiastart', + 'mslostpointercapture', + 'mspointercancel', + 'mspointerdown', + 'mspointerenter', + 'mspointerhover', + 'mspointerleave', + 'mspointermove', + 'mspointerout', + 'mspointerover', + 'mspointerup', + 'pointerout', + 'mssitemodejumplistitemremoved', + 'msthumbnailclick', + 'stop', + 'storagecommit' +]; +var webglEventNames = ['webglcontextrestored', 'webglcontextlost', 'webglcontextcreationerror']; +var formEventNames = ['autocomplete', 'autocompleteerror']; +var detailEventNames = ['toggle']; +var frameEventNames = ['load']; +var frameSetEventNames = ['blur', 'error', 'focus', 'load', 'resize', 'scroll']; +var marqueeEventNames = ['bounce', 'finish', 'start']; +var XMLHttpRequestEventNames = [ + 'loadstart', 'progress', 'abort', 'error', 'load', 'progress', 'timeout', 'loadend', + 'readystatechange' +]; +var IDBIndexEventNames = ['upgradeneeded', 'complete', 'abort', 'success', 'error', 'blocked', 'versionchange', 'close']; +var websocketEventNames = ['close', 'error', 'open', 'message']; +var eventNames = globalEventHandlersEventNames.concat(webglEventNames, formEventNames, detailEventNames, documentEventNames, windowEventNames, htmlElementEventNames, ieElementEventNames); +function propertyDescriptorPatch(_global) { + if (isNode && !isMix) { + return; + } + var supportsWebSocket = typeof WebSocket !== 'undefined'; + if (canPatchViaPropertyDescriptor()) { + // for browsers that we can patch the descriptor: Chrome & Firefox + if (isBrowser) { + // in IE/Edge, onProp not exist in window object, but in WindowPrototype + // so we need to pass WindowPrototype to check onProp exist or not + patchOnProperties(window, eventNames, Object.getPrototypeOf(window)); + patchOnProperties(Document.prototype, eventNames); + if (typeof window['SVGElement'] !== 'undefined') { + patchOnProperties(window['SVGElement'].prototype, eventNames); + } + patchOnProperties(Element.prototype, eventNames); + patchOnProperties(HTMLElement.prototype, eventNames); + patchOnProperties(HTMLMediaElement.prototype, mediaElementEventNames); + patchOnProperties(HTMLFrameSetElement.prototype, windowEventNames.concat(frameSetEventNames)); + patchOnProperties(HTMLBodyElement.prototype, windowEventNames.concat(frameSetEventNames)); + patchOnProperties(HTMLFrameElement.prototype, frameEventNames); + patchOnProperties(HTMLIFrameElement.prototype, frameEventNames); + var HTMLMarqueeElement_1 = window['HTMLMarqueeElement']; + if (HTMLMarqueeElement_1) { + patchOnProperties(HTMLMarqueeElement_1.prototype, marqueeEventNames); + } + } + patchOnProperties(XMLHttpRequest.prototype, XMLHttpRequestEventNames); + var XMLHttpRequestEventTarget = _global['XMLHttpRequestEventTarget']; + if (XMLHttpRequestEventTarget) { + patchOnProperties(XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype, XMLHttpRequestEventNames); + } + if (typeof IDBIndex !== 'undefined') { + patchOnProperties(IDBIndex.prototype, IDBIndexEventNames); + patchOnProperties(IDBRequest.prototype, IDBIndexEventNames); + patchOnProperties(IDBOpenDBRequest.prototype, IDBIndexEventNames); + patchOnProperties(IDBDatabase.prototype, IDBIndexEventNames); + patchOnProperties(IDBTransaction.prototype, IDBIndexEventNames); + patchOnProperties(IDBCursor.prototype, IDBIndexEventNames); + } + if (supportsWebSocket) { + patchOnProperties(WebSocket.prototype, websocketEventNames); + } + } + else { + // Safari, Android browsers (Jelly Bean) + patchViaCapturingAllTheEvents(); + patchClass('XMLHttpRequest'); + if (supportsWebSocket) { + apply(_global); + } + } +} +function canPatchViaPropertyDescriptor() { + if ((isBrowser || isMix) && !Object.getOwnPropertyDescriptor(HTMLElement.prototype, 'onclick') && + typeof Element !== 'undefined') { + // WebKit https://bugs.webkit.org/show_bug.cgi?id=134364 + // IDL interface attributes are not configurable + var desc = Object.getOwnPropertyDescriptor(Element.prototype, 'onclick'); + if (desc && !desc.configurable) + return false; + } + var xhrDesc = Object.getOwnPropertyDescriptor(XMLHttpRequest.prototype, 'onreadystatechange'); + // add enumerable and configurable here because in opera + // by default XMLHttpRequest.prototype.onreadystatechange is undefined + // without adding enumerable and configurable will cause onreadystatechange + // non-configurable + // and if XMLHttpRequest.prototype.onreadystatechange is undefined, + // we should set a real desc instead a fake one + if (xhrDesc) { + Object.defineProperty(XMLHttpRequest.prototype, 'onreadystatechange', { + enumerable: true, + configurable: true, + get: function () { + return true; + } + }); + var req = new XMLHttpRequest(); + var result = !!req.onreadystatechange; + // restore original desc + Object.defineProperty(XMLHttpRequest.prototype, 'onreadystatechange', xhrDesc || {}); + return result; + } + else { + Object.defineProperty(XMLHttpRequest.prototype, 'onreadystatechange', { + enumerable: true, + configurable: true, + get: function () { + return this[zoneSymbol('fakeonreadystatechange')]; + }, + set: function (value) { + this[zoneSymbol('fakeonreadystatechange')] = value; + } + }); + var req = new XMLHttpRequest(); + var detectFunc = function () { }; + req.onreadystatechange = detectFunc; + var result = req[zoneSymbol('fakeonreadystatechange')] === detectFunc; + req.onreadystatechange = null; + return result; + } +} + +var unboundKey = zoneSymbol('unbound'); +// Whenever any eventListener fires, we check the eventListener target and all parents +// for `onwhatever` properties and replace them with zone-bound functions +// - Chrome (for now) +function patchViaCapturingAllTheEvents() { + var _loop_1 = function (i) { + var property = eventNames[i]; + var onproperty = 'on' + property; + self.addEventListener(property, function (event) { + var elt = event.target, bound, source; + if (elt) { + source = elt.constructor['name'] + '.' + onproperty; + } + else { + source = 'unknown.' + onproperty; + } + while (elt) { + if (elt[onproperty] && !elt[onproperty][unboundKey]) { + bound = Zone.current.wrap(elt[onproperty], source); + bound[unboundKey] = elt[onproperty]; + elt[onproperty] = bound; + } + elt = elt.parentElement; + } + }, true); + }; + for (var i = 0; i < eventNames.length; i++) { + _loop_1(i); + } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +function eventTargetPatch(_global, api) { + var WTF_ISSUE_555 = 'Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Canvas,Content,DList,Directory,Div,Embed,FieldSet,Font,Form,Frame,FrameSet,HR,Head,Heading,Html,IFrame,Image,Input,Keygen,LI,Label,Legend,Link,Map,Marquee,Media,Menu,Meta,Meter,Mod,OList,Object,OptGroup,Option,Output,Paragraph,Pre,Progress,Quote,Script,Select,Source,Span,Style,TableCaption,TableCell,TableCol,Table,TableRow,TableSection,TextArea,Title,Track,UList,Unknown,Video'; + var NO_EVENT_TARGET = 'ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Window,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex,WebSocket' + .split(','); + var EVENT_TARGET = 'EventTarget'; + var apis = []; + var isWtf = _global['wtf']; + var WTF_ISSUE_555_ARRAY = WTF_ISSUE_555.split(','); + if (isWtf) { + // Workaround for: https://github.com/google/tracing-framework/issues/555 + apis = WTF_ISSUE_555_ARRAY.map(function (v) { return 'HTML' + v + 'Element'; }).concat(NO_EVENT_TARGET); + } + else if (_global[EVENT_TARGET]) { + apis.push(EVENT_TARGET); + } + else { + // Note: EventTarget is not available in all browsers, + // if it's not available, we instead patch the APIs in the IDL that inherit from EventTarget + apis = NO_EVENT_TARGET; + } + var isDisableIECheck = _global['__Zone_disable_IE_check'] || false; + var isEnableCrossContextCheck = _global['__Zone_enable_cross_context_check'] || false; + var ieOrEdge = isIEOrEdge(); + var ADD_EVENT_LISTENER_SOURCE = '.addEventListener:'; + var FUNCTION_WRAPPER = '[object FunctionWrapper]'; + var BROWSER_TOOLS = 'function __BROWSERTOOLS_CONSOLE_SAFEFUNC() { [native code] }'; + // predefine all __zone_symbol__ + eventName + true/false string + for (var i = 0; i < eventNames.length; i++) { + var eventName = eventNames[i]; + var falseEventName = eventName + FALSE_STR; + var trueEventName = eventName + TRUE_STR; + var symbol = ZONE_SYMBOL_PREFIX + falseEventName; + var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName; + zoneSymbolEventNames[eventName] = {}; + zoneSymbolEventNames[eventName][FALSE_STR] = symbol; + zoneSymbolEventNames[eventName][TRUE_STR] = symbolCapture; + } + // predefine all task.source string + for (var i = 0; i < WTF_ISSUE_555.length; i++) { + var target = WTF_ISSUE_555_ARRAY[i]; + var targets = globalSources[target] = {}; + for (var j = 0; j < eventNames.length; j++) { + var eventName = eventNames[j]; + targets[eventName] = target + ADD_EVENT_LISTENER_SOURCE + eventName; + } + } + var checkIEAndCrossContext = function (nativeDelegate, delegate, target, args) { + if (!isDisableIECheck && ieOrEdge) { + if (isEnableCrossContextCheck) { + try { + var testString = delegate.toString(); + if ((testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS)) { + nativeDelegate.apply(target, args); + return false; + } + } + catch (error) { + nativeDelegate.apply(target, args); + return false; + } + } + else { + var testString = delegate.toString(); + if ((testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS)) { + nativeDelegate.apply(target, args); + return false; + } + } + } + else if (isEnableCrossContextCheck) { + try { + delegate.toString(); + } + catch (error) { + nativeDelegate.apply(target, args); + return false; + } + } + return true; + }; + for (var i = 0; i < apis.length; i++) { + var type = _global[apis[i]]; + patchEventTargetMethods(type && type.prototype, { validateHandler: checkIEAndCrossContext }); + } + api.patchEventTargetMethods = patchEventTargetMethods; + return true; +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +function registerElementPatch(_global) { + if ((!isBrowser && !isMix) || !('registerElement' in _global.document)) { + return; + } + var _registerElement = document.registerElement; + var callbacks = ['createdCallback', 'attachedCallback', 'detachedCallback', 'attributeChangedCallback']; + document.registerElement = function (name, opts) { + if (opts && opts.prototype) { + callbacks.forEach(function (callback) { + var source = 'Document.registerElement::' + callback; + if (opts.prototype.hasOwnProperty(callback)) { + var descriptor = Object.getOwnPropertyDescriptor(opts.prototype, callback); + if (descriptor && descriptor.value) { + descriptor.value = Zone.current.wrap(descriptor.value, source); + _redefineProperty(opts.prototype, callback, descriptor); + } + else { + opts.prototype[callback] = Zone.current.wrap(opts.prototype[callback], source); + } + } + else if (opts.prototype[callback]) { + opts.prototype[callback] = Zone.current.wrap(opts.prototype[callback], source); + } + }); + } + return _registerElement.apply(document, [name, opts]); + }; + attachOriginToPatched(document.registerElement, _registerElement); +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +Zone.__load_patch('timers', function (global, Zone, api) { + var set = 'set'; + var clear = 'clear'; + patchTimer(global, set, clear, 'Timeout'); + patchTimer(global, set, clear, 'Interval'); + patchTimer(global, set, clear, 'Immediate'); + patchTimer(global, 'request', 'cancel', 'AnimationFrame'); + patchTimer(global, 'mozRequest', 'mozCancel', 'AnimationFrame'); + patchTimer(global, 'webkitRequest', 'webkitCancel', 'AnimationFrame'); +}); +Zone.__load_patch('blocking', function (global, Zone, api) { + var blockingMethods = ['alert', 'prompt', 'confirm']; + for (var i = 0; i < blockingMethods.length; i++) { + var name_1 = blockingMethods[i]; + patchMethod(global, name_1, function (delegate, symbol, name) { + return function (s, args) { + return Zone.current.run(delegate, global, args, name); + }; + }); + } +}); +Zone.__load_patch('EventTarget', function (global, Zone, api) { + eventTargetPatch(global, api); + // patch XMLHttpRequestEventTarget's addEventListener/removeEventListener + var XMLHttpRequestEventTarget = global['XMLHttpRequestEventTarget']; + if (XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype) { + // TODO: @JiaLiPassion, add this back later. + api.patchEventTargetMethods(XMLHttpRequestEventTarget.prototype); + } + patchClass('MutationObserver'); + patchClass('WebKitMutationObserver'); + patchClass('FileReader'); +}); +Zone.__load_patch('on_property', function (global, Zone, api) { + propertyDescriptorPatch(global); + propertyPatch(); + registerElementPatch(global); +}); +Zone.__load_patch('canvas', function (global, Zone, api) { + var HTMLCanvasElement = global['HTMLCanvasElement']; + if (typeof HTMLCanvasElement !== 'undefined' && HTMLCanvasElement.prototype && + HTMLCanvasElement.prototype.toBlob) { + patchMacroTask(HTMLCanvasElement.prototype, 'toBlob', function (self, args) { + return { name: 'HTMLCanvasElement.toBlob', target: self, callbackIndex: 0, args: args }; + }); + } +}); +Zone.__load_patch('XHR', function (global, Zone, api) { + // Treat XMLHTTPRequest as a macrotask. + patchXHR(global); + var XHR_TASK = zoneSymbol('xhrTask'); + var XHR_SYNC = zoneSymbol('xhrSync'); + var XHR_LISTENER = zoneSymbol('xhrListener'); + var XHR_SCHEDULED = zoneSymbol('xhrScheduled'); + function patchXHR(window) { + function findPendingTask(target) { + var pendingTask = target[XHR_TASK]; + return pendingTask; + } + function scheduleTask(task) { + XMLHttpRequest[XHR_SCHEDULED] = false; + var data = task.data; + // remove existing event listener + var listener = data.target[XHR_LISTENER]; + var oriAddListener = data.target[zoneSymbol('addEventListener')]; + var oriRemoveListener = data.target[zoneSymbol('removeEventListener')]; + if (listener) { + oriRemoveListener.apply(data.target, ['readystatechange', listener]); + } + var newListener = data.target[XHR_LISTENER] = function () { + if (data.target.readyState === data.target.DONE) { + // sometimes on some browsers XMLHttpRequest will fire onreadystatechange with + // readyState=4 multiple times, so we need to check task state here + if (!data.aborted && XMLHttpRequest[XHR_SCHEDULED] && + task.state === 'scheduled') { + task.invoke(); + } + } + }; + oriAddListener.apply(data.target, ['readystatechange', newListener]); + var storedTask = data.target[XHR_TASK]; + if (!storedTask) { + data.target[XHR_TASK] = task; + } + sendNative.apply(data.target, data.args); + XMLHttpRequest[XHR_SCHEDULED] = true; + return task; + } + function placeholderCallback() { } + function clearTask(task) { + var data = task.data; + // Note - ideally, we would call data.target.removeEventListener here, but it's too late + // to prevent it from firing. So instead, we store info for the event listener. + data.aborted = true; + return abortNative.apply(data.target, data.args); + } + var openNative = patchMethod(window.XMLHttpRequest.prototype, 'open', function () { return function (self, args) { + self[XHR_SYNC] = args[2] == false; + return openNative.apply(self, args); + }; }); + var sendNative = patchMethod(window.XMLHttpRequest.prototype, 'send', function () { return function (self, args) { + var zone = Zone.current; + if (self[XHR_SYNC]) { + // if the XHR is sync there is no task to schedule, just execute the code. + return sendNative.apply(self, args); + } + else { + var options = { target: self, isPeriodic: false, delay: null, args: args, aborted: false }; + return zone.scheduleMacroTask('XMLHttpRequest.send', placeholderCallback, options, scheduleTask, clearTask); + } + }; }); + var abortNative = patchMethod(window.XMLHttpRequest.prototype, 'abort', function (delegate) { return function (self, args) { + var task = findPendingTask(self); + if (task && typeof task.type == 'string') { + // If the XHR has already completed, do nothing. + // If the XHR has already been aborted, do nothing. + // Fix #569, call abort multiple times before done will cause + // macroTask task count be negative number + if (task.cancelFn == null || (task.data && task.data.aborted)) { + return; + } + task.zone.cancelTask(task); + } + // Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no + // task + // to cancel. Do nothing. + }; }); + } +}); +Zone.__load_patch('geolocation', function (global, Zone, api) { + /// GEO_LOCATION + if (global['navigator'] && global['navigator'].geolocation) { + patchPrototype(global['navigator'].geolocation, ['getCurrentPosition', 'watchPosition']); + } +}); +Zone.__load_patch('PromiseRejectionEvent', function (global, Zone, api) { + // handle unhandled promise rejection + function findPromiseRejectionHandler(evtName) { + return function (e) { + var eventTasks = findEventTasks(global, evtName); + eventTasks.forEach(function (eventTask) { + // windows has added unhandledrejection event listener + // trigger the event listener + var PromiseRejectionEvent = global['PromiseRejectionEvent']; + if (PromiseRejectionEvent) { + var evt = new PromiseRejectionEvent(evtName, { promise: e.promise, reason: e.rejection }); + eventTask.invoke(evt); + } + }); + }; + } + if (global['PromiseRejectionEvent']) { + Zone[zoneSymbol('unhandledPromiseRejectionHandler')] = + findPromiseRejectionHandler('unhandledrejection'); + Zone[zoneSymbol('rejectionHandledHandler')] = + findPromiseRejectionHandler('rejectionhandled'); + } +}); +Zone.__load_patch('util', function (global, Zone, api) { + api.patchOnProperties = patchOnProperties; + api.patchMethod = patchMethod; +}); + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +}))); + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("../../../../webpack/buildin/global.js"))) + +/***/ }), + +/***/ 1: +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__("../../../../../src/polyfills.ts"); + + +/***/ }) + +},[1]); +//# sourceMappingURL=polyfills.bundle.js.map \ No newline at end of file diff --git a/examples/angular4/dist/polyfills.bundle.js.map b/examples/angular4/dist/polyfills.bundle.js.map new file mode 100644 index 0000000000..904176003d --- /dev/null +++ b/examples/angular4/dist/polyfills.bundle.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["C:/proj/todomvc-angular-4/src/polyfills.ts","C:/proj/todomvc-angular-4/~/core-js/es6/reflect.js","C:/proj/todomvc-angular-4/~/core-js/es7/reflect.js","C:/proj/todomvc-angular-4/~/core-js/modules/_a-function.js","C:/proj/todomvc-angular-4/~/core-js/modules/_an-instance.js","C:/proj/todomvc-angular-4/~/core-js/modules/_an-object.js","C:/proj/todomvc-angular-4/~/core-js/modules/_array-from-iterable.js","C:/proj/todomvc-angular-4/~/core-js/modules/_array-includes.js","C:/proj/todomvc-angular-4/~/core-js/modules/_array-methods.js","C:/proj/todomvc-angular-4/~/core-js/modules/_array-species-constructor.js","C:/proj/todomvc-angular-4/~/core-js/modules/_array-species-create.js","C:/proj/todomvc-angular-4/~/core-js/modules/_bind.js","C:/proj/todomvc-angular-4/~/core-js/modules/_classof.js","C:/proj/todomvc-angular-4/~/core-js/modules/_cof.js","C:/proj/todomvc-angular-4/~/core-js/modules/_collection-strong.js","C:/proj/todomvc-angular-4/~/core-js/modules/_collection-weak.js","C:/proj/todomvc-angular-4/~/core-js/modules/_collection.js","C:/proj/todomvc-angular-4/~/core-js/modules/_core.js","C:/proj/todomvc-angular-4/~/core-js/modules/_ctx.js","C:/proj/todomvc-angular-4/~/core-js/modules/_defined.js","C:/proj/todomvc-angular-4/~/core-js/modules/_descriptors.js","C:/proj/todomvc-angular-4/~/core-js/modules/_dom-create.js","C:/proj/todomvc-angular-4/~/core-js/modules/_enum-bug-keys.js","C:/proj/todomvc-angular-4/~/core-js/modules/_export.js","C:/proj/todomvc-angular-4/~/core-js/modules/_fails.js","C:/proj/todomvc-angular-4/~/core-js/modules/_for-of.js","C:/proj/todomvc-angular-4/~/core-js/modules/_global.js","C:/proj/todomvc-angular-4/~/core-js/modules/_has.js","C:/proj/todomvc-angular-4/~/core-js/modules/_hide.js","C:/proj/todomvc-angular-4/~/core-js/modules/_html.js","C:/proj/todomvc-angular-4/~/core-js/modules/_ie8-dom-define.js","C:/proj/todomvc-angular-4/~/core-js/modules/_inherit-if-required.js","C:/proj/todomvc-angular-4/~/core-js/modules/_invoke.js","C:/proj/todomvc-angular-4/~/core-js/modules/_iobject.js","C:/proj/todomvc-angular-4/~/core-js/modules/_is-array-iter.js","C:/proj/todomvc-angular-4/~/core-js/modules/_is-array.js","C:/proj/todomvc-angular-4/~/core-js/modules/_is-object.js","C:/proj/todomvc-angular-4/~/core-js/modules/_iter-call.js","C:/proj/todomvc-angular-4/~/core-js/modules/_iter-create.js","C:/proj/todomvc-angular-4/~/core-js/modules/_iter-define.js","C:/proj/todomvc-angular-4/~/core-js/modules/_iter-detect.js","C:/proj/todomvc-angular-4/~/core-js/modules/_iter-step.js","C:/proj/todomvc-angular-4/~/core-js/modules/_iterators.js","C:/proj/todomvc-angular-4/~/core-js/modules/_library.js","C:/proj/todomvc-angular-4/~/core-js/modules/_meta.js","C:/proj/todomvc-angular-4/~/core-js/modules/_metadata.js","C:/proj/todomvc-angular-4/~/core-js/modules/_object-assign.js","C:/proj/todomvc-angular-4/~/core-js/modules/_object-create.js","C:/proj/todomvc-angular-4/~/core-js/modules/_object-dp.js","C:/proj/todomvc-angular-4/~/core-js/modules/_object-dps.js","C:/proj/todomvc-angular-4/~/core-js/modules/_object-gopd.js","C:/proj/todomvc-angular-4/~/core-js/modules/_object-gopn.js","C:/proj/todomvc-angular-4/~/core-js/modules/_object-gops.js","C:/proj/todomvc-angular-4/~/core-js/modules/_object-gpo.js","C:/proj/todomvc-angular-4/~/core-js/modules/_object-keys-internal.js","C:/proj/todomvc-angular-4/~/core-js/modules/_object-keys.js","C:/proj/todomvc-angular-4/~/core-js/modules/_object-pie.js","C:/proj/todomvc-angular-4/~/core-js/modules/_own-keys.js","C:/proj/todomvc-angular-4/~/core-js/modules/_property-desc.js","C:/proj/todomvc-angular-4/~/core-js/modules/_redefine-all.js","C:/proj/todomvc-angular-4/~/core-js/modules/_redefine.js","C:/proj/todomvc-angular-4/~/core-js/modules/_set-proto.js","C:/proj/todomvc-angular-4/~/core-js/modules/_set-species.js","C:/proj/todomvc-angular-4/~/core-js/modules/_set-to-string-tag.js","C:/proj/todomvc-angular-4/~/core-js/modules/_shared-key.js","C:/proj/todomvc-angular-4/~/core-js/modules/_shared.js","C:/proj/todomvc-angular-4/~/core-js/modules/_to-index.js","C:/proj/todomvc-angular-4/~/core-js/modules/_to-integer.js","C:/proj/todomvc-angular-4/~/core-js/modules/_to-iobject.js","C:/proj/todomvc-angular-4/~/core-js/modules/_to-length.js","C:/proj/todomvc-angular-4/~/core-js/modules/_to-object.js","C:/proj/todomvc-angular-4/~/core-js/modules/_to-primitive.js","C:/proj/todomvc-angular-4/~/core-js/modules/_uid.js","C:/proj/todomvc-angular-4/~/core-js/modules/_wks.js","C:/proj/todomvc-angular-4/~/core-js/modules/core.get-iterator-method.js","C:/proj/todomvc-angular-4/~/core-js/modules/es6.map.js","C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.apply.js","C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.construct.js","C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.define-property.js","C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.delete-property.js","C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.enumerate.js","C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.get-own-property-descriptor.js","C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.get-prototype-of.js","C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.get.js","C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.has.js","C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.is-extensible.js","C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.own-keys.js","C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.prevent-extensions.js","C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.set-prototype-of.js","C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.set.js","C:/proj/todomvc-angular-4/~/core-js/modules/es6.set.js","C:/proj/todomvc-angular-4/~/core-js/modules/es6.weak-map.js","C:/proj/todomvc-angular-4/~/core-js/modules/es7.reflect.define-metadata.js","C:/proj/todomvc-angular-4/~/core-js/modules/es7.reflect.delete-metadata.js","C:/proj/todomvc-angular-4/~/core-js/modules/es7.reflect.get-metadata-keys.js","C:/proj/todomvc-angular-4/~/core-js/modules/es7.reflect.get-metadata.js","C:/proj/todomvc-angular-4/~/core-js/modules/es7.reflect.get-own-metadata-keys.js","C:/proj/todomvc-angular-4/~/core-js/modules/es7.reflect.get-own-metadata.js","C:/proj/todomvc-angular-4/~/core-js/modules/es7.reflect.has-metadata.js","C:/proj/todomvc-angular-4/~/core-js/modules/es7.reflect.has-own-metadata.js","C:/proj/todomvc-angular-4/~/core-js/modules/es7.reflect.metadata.js","(webpack)/buildin/global.js","C:/proj/todomvc-angular-4/~/zone.js/dist/zone.js"],"names":[],"mappings":";;;;;;;;;;;AAAA;AAAA;AAAA;;;;;;;;;;;;;;GAcG;AAEH;;GAEG;AAEH,mEAAmE;AACnE,+BAA+B;AAC/B,+BAA+B;AAC/B,iCAAiC;AACjC,kCAAkC;AAClC,oCAAoC;AACpC,+BAA+B;AAC/B,6BAA6B;AAC7B,+BAA+B;AAC/B,6BAA6B;AAC7B,8BAA8B;AAC9B,+BAA+B;AAC/B,4BAA4B;AAC5B,4BAA4B;AAE5B,+EAA+E;AAC/E,oEAAoE;AAEpE,4EAA4E;AAC5E,8EAA8E;AAG9E,yCAAyC;AACZ;AACA;AAG7B,mFAAmF;AACnF,8EAA8E;AAI9E;;GAEG;AACwB,CAAE,6BAA6B;AAI1D;;GAEG;AAEH;;;GAGG;AACH,oDAAoD;;;;;;;;ACnEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qF;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACTA;AACA;AACA;AACA,E;;;;;;;ACHA;AACA;AACA;AACA,GAAG;AACH,E;;;;;;;ACJA;AACA;AACA;AACA;AACA,E;;;;;;;ACJA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,WAAW,eAAe;AAC/B;AACA,KAAK;AACL;AACA,E;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,eAAe;AACxB;AACA;AACA;AACA,sCAAsC;AACtC;AACA,8BAA8B;AAC9B,6BAA6B;AAC7B,+BAA+B;AAC/B,mCAAmC;AACnC,SAAS,+BAA+B;AACxC;AACA;AACA;AACA;AACA,E;;;;;;;AC3CA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,E;;;;;;;ACfA;AACA;;AAEA;AACA;AACA,E;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B,SAAS;AACnC;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;ACvBA;AACA;AACA;AACA;AACA,yBAAyB,kBAAkB,EAAE;;AAE7C;AACA;AACA;AACA;AACA,GAAG,UAAU;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;ACtBA,iBAAiB;;AAEjB;AACA;AACA,E;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB,OAAO;AAC7B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,0BAA0B;AAC1B,0BAA0B;AAC1B,qBAAqB;AACrB;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,6DAA6D,OAAO;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB,0BAA0B;AAC1B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,E;;;;;;;;AC7IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,0BAA0B;AAC1B;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,E;;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO,kCAAkC,gCAAgC,aAAa;AACtF,6BAA6B,mCAAmC,aAAa;AAC7E;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,2DAA2D;AAC3D;AACA,gDAAgD,iBAAiB,EAAE;AACnE;AACA,0DAA0D,aAAa,EAAE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,0B;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA,E;;;;;;;ACpFA,6BAA6B;AAC7B,qCAAqC,gC;;;;;;;ACDrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;ACnBA;AACA;AACA;AACA;AACA,E;;;;;;;ACJA;AACA;AACA,iCAAiC,QAAQ,gBAAgB,UAAU,GAAG;AACtE,CAAC,E;;;;;;;ACHD;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;ACNA;AACA;AACA;AACA,a;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qFAAqF,uBAAuB;AAC5G,mEAAmE;AACnE,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,eAAe;AACf,eAAe;AACf,eAAe;AACf,gBAAgB;AAChB,yB;;;;;;;AC1CA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,E;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,iBAAiB,EAAE;AACxD;AACA;AACA;AACA;AACA;AACA,gEAAgE,gBAAgB;AAChF;AACA;AACA,GAAG,2CAA2C,gCAAgC;AAC9E;AACA;AACA;AACA;AACA;AACA,wB;;;;;;;ACxBA;AACA;AACA;AACA,uCAAuC,gC;;;;;;;ACHvC,uBAAuB;AACvB;AACA;AACA,E;;;;;;;ACHA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,E;;;;;;;ACPA,oH;;;;;;;ACAA;AACA,+GAAsE,gBAAgB,UAAU,GAAG;AACnG,CAAC,E;;;;;;;ACFD;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,E;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,E;;;;;;;ACfA;AACA;AACA;AACA;AACA,E;;;;;;;ACJA;AACA;AACA;AACA;;AAEA;AACA;AACA,E;;;;;;;ACPA;AACA;AACA;AACA;AACA,E;;;;;;;ACJA;AACA;AACA,E;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,E;;;;;;;;ACXA;AACA;AACA;AACA;AACA;;AAEA;AACA,kKAAgF,aAAa,EAAE;;AAE/F;AACA,qDAAqD,0BAA0B;AAC/E;AACA,E;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,aAAa;;AAEzC;AACA;AACA;AACA;AACA;AACA,wCAAwC,oCAAoC;AAC5E,4CAA4C,oCAAoC;AAChF,KAAK,2BAA2B,oCAAoC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAmB;AACnC;AACA;AACA,iCAAiC,2BAA2B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,E;;;;;;;ACrEA;AACA;;AAEA;AACA;AACA,+BAA+B,qBAAqB;AACpD,+BAA+B,SAAS,EAAE;AAC1C,CAAC,UAAU;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS,mBAAmB;AACvD,+BAA+B,aAAa;AAC5C;AACA,GAAG,UAAU;AACb;AACA,E;;;;;;;ACpBA;AACA,UAAU;AACV,E;;;;;;;ACFA,oB;;;;;;;ACAA,uB;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,CAAC;AACD;AACA,qBAAqB;AACrB;AACA,SAAS;AACT,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;ACpDA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,gBAAgB,EAAE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,UAAU,EAAE;AAC9C,mBAAmB,sCAAsC;AACzD,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC,W;;;;;;;AChCD;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;ACxCA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,UAAU;AACb;AACA;AACA;AACA,E;;;;;;;ACfA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG,UAAU;AACb;AACA,E;;;;;;;ACfA;AACA;AACA;;AAEA;AACA;AACA,E;;;;;;;ACNA,yC;;;;;;;ACAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,E;;;;;;;ACZA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;AChBA;AACA;AACA;;AAEA;AACA;AACA,E;;;;;;;ACNA,cAAc,sB;;;;;;;ACAd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;ACPA;AACA;AACA;AACA;AACA,E;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC,E;;;;;;;AC/BD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA,OAAO,UAAU,cAAc;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG;AACR;AACA,E;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,aAAa;AACjC,GAAG;AACH,E;;;;;;;ACZA;AACA;AACA;;AAEA;AACA,kEAAkE,+BAA+B;AACjG,E;;;;;;;ACNA;AACA;AACA;AACA;AACA,E;;;;;;;ACJA;AACA;AACA,mDAAmD;AACnD;AACA,uCAAuC;AACvC,E;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;ACLA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D,E;;;;;;;ACLA;AACA;AACA;AACA;AACA,E;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;ACXA;AACA;AACA;AACA;AACA,E;;;;;;;ACJA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,uB;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;;ACPA;AACA;;AAEA;AACA;AACA,wBAAwB,mEAAmE;AAC3F,CAAC;AACD;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,CAAC,gB;;;;;;;AChBD;AACA;AACA;AACA;AACA,4FAAmD;AACnD;AACA;AACA;AACA,qBAAqB;AACrB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC,E;;;;;;;ACfD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6FAAoD;;AAEpD;AACA;AACA;AACA;AACA,kCAAkC;AAClC,CAAC;AACD;AACA,yBAAyB;AACzB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,E;;;;;;;AC9CD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,MAAM,SAAS,OAAO,SAAS;AAC/D,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,CAAC,E;;;;;;;ACrBD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC,E;;;;;;;;ACVD;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,GAAG;AACH,UAAU;AACV,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC,E;;;;;;;ACzBD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC,E;;;;;;;ACTD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC,E;;;;;;;ACTD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,SAAS,E;;;;;;;ACpBxC;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC,E;;;;;;;ACPD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC,E;;;;;;;ACVD;AACA;;AAEA,+BAA+B,yEAAgC,E;;;;;;;ACH/D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,CAAC,E;;;;;;;ACfD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,CAAC,E;;;;;;;ACdD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,SAAS,E;;;;;;;;AC9BxC;AACA;;AAEA;AACA;AACA,wBAAwB,mEAAmE;AAC3F,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC,U;;;;;;;;ACXD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH,C;;;;;;;ACvDA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA,EAAE,E;;;;;;;ACPF;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,E;;;;;;;ACdF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA,EAAE,E;;;;;;;AClBF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA,EAAE,E;;;;;;;AChBF;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA,EAAE,E;;;;;;;ACPF;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA,EAAE,E;;;;;;;ACRF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA,EAAE,E;;;;;;;ACfF;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA,EAAE,E;;;;;;;ACRF;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,E;;;;;;;ACdF;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,qBAAqB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,uBAAuB;AAC9D,uCAAuC,kBAAkB;AACzD,oCAAoC,eAAe;AACnD,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,kBAAkB;AACzD,uCAAuC,kBAAkB;AACzD,oCAAoC,eAAe;AACnD,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,0BAA0B;AACrD;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,kFAAkF,gEAAgE,EAAE;AACpJ;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,uCAAuC,0BAA0B,EAAE;AACnE;AACA;AACA;AACA,wCAAwC,6DAA6D,EAAE;AACvG,8CAA8C,cAAc,EAAE;AAC9D;AACA,kCAAkC,aAAa,EAAE;AACjD;AACA,6BAA6B;AAC7B;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4HAA4H,wBAAwB,oCAAoC;AACxL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,oDAAoD;AAC9F;AACA;AACA;AACA;AACA;AACA,2BAA2B,mCAAmC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,gBAAgB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAsB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,+CAA+C,sBAAsB;AACrE;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,EAAE;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,EAAE;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,oCAAoC;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,sBAAsB;AAC5D,iCAAiC,iBAAiB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,0BAA0B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,wBAAwB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,wBAAwB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,0BAA0B,EAAE;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,2FAA2F;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,+BAA+B,EAAE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,gBAAgB;AACrF;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0BAA0B;AAC7C;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA,yDAAyD,0CAA0C;AACnG;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,mBAAmB,4BAA4B;AAC/C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,SAAS;AACT;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2FAA2F;AAC3F;AACA;AACA,UAAU,EAAE;AACZ,2FAA2F;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA,UAAU,EAAE;AACZ,qGAAqG;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,0CAA0C;AAC5G;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC","file":"polyfills.bundle.js","sourcesContent":["/**\n * This file includes polyfills needed by Angular and is loaded before the app.\n * You can add your own extra polyfills to this file.\n *\n * This file is divided into 2 sections:\n * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\n * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\n * file.\n *\n * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\n * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\n * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\n *\n * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html\n */\n\n/***************************************************************************************************\n * BROWSER POLYFILLS\n */\n\n/** IE9, IE10 and IE11 requires all of the following polyfills. **/\n// import 'core-js/es6/symbol';\n// import 'core-js/es6/object';\n// import 'core-js/es6/function';\n// import 'core-js/es6/parse-int';\n// import 'core-js/es6/parse-float';\n// import 'core-js/es6/number';\n// import 'core-js/es6/math';\n// import 'core-js/es6/string';\n// import 'core-js/es6/date';\n// import 'core-js/es6/array';\n// import 'core-js/es6/regexp';\n// import 'core-js/es6/map';\n// import 'core-js/es6/set';\n\n/** IE10 and IE11 requires the following for NgClass support on SVG elements */\n// import 'classlist.js'; // Run `npm install --save classlist.js`.\n\n/** IE10 and IE11 requires the following to support `@angular/animation`. */\n// import 'web-animations-js'; // Run `npm install --save web-animations-js`.\n\n\n/** Evergreen browsers require these. **/\nimport 'core-js/es6/reflect';\nimport 'core-js/es7/reflect';\n\n\n/** ALL Firefox browsers require the following to support `@angular/animation`. **/\n// import 'web-animations-js'; // Run `npm install --save web-animations-js`.\n\n\n\n/***************************************************************************************************\n * Zone JS is required by Angular itself.\n */\nimport 'zone.js/dist/zone'; // Included with Angular CLI.\n\n\n\n/***************************************************************************************************\n * APPLICATION IMPORTS\n */\n\n/**\n * Date, currency, decimal and percent pipes.\n * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10\n */\n// import 'intl'; // Run `npm install --save intl`.\n\n\n\n// WEBPACK FOOTER //\n// C:/proj/todomvc-angular-4/src/polyfills.ts","require('../modules/es6.reflect.apply');\nrequire('../modules/es6.reflect.construct');\nrequire('../modules/es6.reflect.define-property');\nrequire('../modules/es6.reflect.delete-property');\nrequire('../modules/es6.reflect.enumerate');\nrequire('../modules/es6.reflect.get');\nrequire('../modules/es6.reflect.get-own-property-descriptor');\nrequire('../modules/es6.reflect.get-prototype-of');\nrequire('../modules/es6.reflect.has');\nrequire('../modules/es6.reflect.is-extensible');\nrequire('../modules/es6.reflect.own-keys');\nrequire('../modules/es6.reflect.prevent-extensions');\nrequire('../modules/es6.reflect.set');\nrequire('../modules/es6.reflect.set-prototype-of');\nmodule.exports = require('../modules/_core').Reflect;\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/es6/reflect.js\n// module id = ../../../../core-js/es6/reflect.js\n// module chunks = 0","require('../modules/es7.reflect.define-metadata');\nrequire('../modules/es7.reflect.delete-metadata');\nrequire('../modules/es7.reflect.get-metadata');\nrequire('../modules/es7.reflect.get-metadata-keys');\nrequire('../modules/es7.reflect.get-own-metadata');\nrequire('../modules/es7.reflect.get-own-metadata-keys');\nrequire('../modules/es7.reflect.has-metadata');\nrequire('../modules/es7.reflect.has-own-metadata');\nrequire('../modules/es7.reflect.metadata');\nmodule.exports = require('../modules/_core').Reflect;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/es7/reflect.js\n// module id = ../../../../core-js/es7/reflect.js\n// module chunks = 0","module.exports = function(it){\n if(typeof it != 'function')throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_a-function.js\n// module id = ../../../../core-js/modules/_a-function.js\n// module chunks = 0","module.exports = function(it, Constructor, name, forbiddenField){\n if(!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)){\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_an-instance.js\n// module id = ../../../../core-js/modules/_an-instance.js\n// module chunks = 0","var isObject = require('./_is-object');\nmodule.exports = function(it){\n if(!isObject(it))throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_an-object.js\n// module id = ../../../../core-js/modules/_an-object.js\n// module chunks = 0","var forOf = require('./_for-of');\n\nmodule.exports = function(iter, ITERATOR){\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_array-from-iterable.js\n// module id = ../../../../core-js/modules/_array-from-iterable.js\n// module chunks = 0","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject')\n , toLength = require('./_to-length')\n , toIndex = require('./_to-index');\nmodule.exports = function(IS_INCLUDES){\n return function($this, el, fromIndex){\n var O = toIObject($this)\n , length = toLength(O.length)\n , index = toIndex(fromIndex, length)\n , value;\n // Array#includes uses SameValueZero equality algorithm\n if(IS_INCLUDES && el != el)while(length > index){\n value = O[index++];\n if(value != value)return true;\n // Array#toIndex ignores holes, Array#includes - not\n } else for(;length > index; index++)if(IS_INCLUDES || index in O){\n if(O[index] === el)return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_array-includes.js\n// module id = ../../../../core-js/modules/_array-includes.js\n// module chunks = 0","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx')\n , IObject = require('./_iobject')\n , toObject = require('./_to-object')\n , toLength = require('./_to-length')\n , asc = require('./_array-species-create');\nmodule.exports = function(TYPE, $create){\n var IS_MAP = TYPE == 1\n , IS_FILTER = TYPE == 2\n , IS_SOME = TYPE == 3\n , IS_EVERY = TYPE == 4\n , IS_FIND_INDEX = TYPE == 6\n , NO_HOLES = TYPE == 5 || IS_FIND_INDEX\n , create = $create || asc;\n return function($this, callbackfn, that){\n var O = toObject($this)\n , self = IObject(O)\n , f = ctx(callbackfn, that, 3)\n , length = toLength(self.length)\n , index = 0\n , result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined\n , val, res;\n for(;length > index; index++)if(NO_HOLES || index in self){\n val = self[index];\n res = f(val, index, O);\n if(TYPE){\n if(IS_MAP)result[index] = res; // map\n else if(res)switch(TYPE){\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if(IS_EVERY)return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_array-methods.js\n// module id = ../../../../core-js/modules/_array-methods.js\n// module chunks = 0","var isObject = require('./_is-object')\n , isArray = require('./_is-array')\n , SPECIES = require('./_wks')('species');\n\nmodule.exports = function(original){\n var C;\n if(isArray(original)){\n C = original.constructor;\n // cross-realm fallback\n if(typeof C == 'function' && (C === Array || isArray(C.prototype)))C = undefined;\n if(isObject(C)){\n C = C[SPECIES];\n if(C === null)C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_array-species-constructor.js\n// module id = ../../../../core-js/modules/_array-species-constructor.js\n// module chunks = 0","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function(original, length){\n return new (speciesConstructor(original))(length);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_array-species-create.js\n// module id = ../../../../core-js/modules/_array-species-create.js\n// module chunks = 0","'use strict';\nvar aFunction = require('./_a-function')\n , isObject = require('./_is-object')\n , invoke = require('./_invoke')\n , arraySlice = [].slice\n , factories = {};\n\nvar construct = function(F, len, args){\n if(!(len in factories)){\n for(var n = [], i = 0; i < len; i++)n[i] = 'a[' + i + ']';\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /*, args... */){\n var fn = aFunction(this)\n , partArgs = arraySlice.call(arguments, 1);\n var bound = function(/* args... */){\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if(isObject(fn.prototype))bound.prototype = fn.prototype;\n return bound;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_bind.js\n// module id = ../../../../core-js/modules/_bind.js\n// module chunks = 0","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof')\n , TAG = require('./_wks')('toStringTag')\n // ES3 wrong here\n , ARG = cof(function(){ return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function(it, key){\n try {\n return it[key];\n } catch(e){ /* empty */ }\n};\n\nmodule.exports = function(it){\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_classof.js\n// module id = ../../../../core-js/modules/_classof.js\n// module chunks = 0","var toString = {}.toString;\n\nmodule.exports = function(it){\n return toString.call(it).slice(8, -1);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_cof.js\n// module id = ../../../../core-js/modules/_cof.js\n// module chunks = 0","'use strict';\nvar dP = require('./_object-dp').f\n , create = require('./_object-create')\n , redefineAll = require('./_redefine-all')\n , ctx = require('./_ctx')\n , anInstance = require('./_an-instance')\n , defined = require('./_defined')\n , forOf = require('./_for-of')\n , $iterDefine = require('./_iter-define')\n , step = require('./_iter-step')\n , setSpecies = require('./_set-species')\n , DESCRIPTORS = require('./_descriptors')\n , fastKey = require('./_meta').fastKey\n , SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function(that, key){\n // fast case\n var index = fastKey(key), entry;\n if(index !== 'F')return that._i[index];\n // frozen object case\n for(entry = that._f; entry; entry = entry.n){\n if(entry.k == key)return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function(wrapper, NAME, IS_MAP, ADDER){\n var C = wrapper(function(that, iterable){\n anInstance(that, C, NAME, '_i');\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear(){\n for(var that = this, data = that._i, entry = that._f; entry; entry = entry.n){\n entry.r = true;\n if(entry.p)entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function(key){\n var that = this\n , entry = getEntry(that, key);\n if(entry){\n var next = entry.n\n , prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if(prev)prev.n = next;\n if(next)next.p = prev;\n if(that._f == entry)that._f = next;\n if(that._l == entry)that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /*, that = undefined */){\n anInstance(this, C, 'forEach');\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3)\n , entry;\n while(entry = entry ? entry.n : this._f){\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while(entry && entry.r)entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key){\n return !!getEntry(this, key);\n }\n });\n if(DESCRIPTORS)dP(C.prototype, 'size', {\n get: function(){\n return defined(this[SIZE]);\n }\n });\n return C;\n },\n def: function(that, key, value){\n var entry = getEntry(that, key)\n , prev, index;\n // change existing entry\n if(entry){\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if(!that._f)that._f = entry;\n if(prev)prev.n = entry;\n that[SIZE]++;\n // add to index\n if(index !== 'F')that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function(C, NAME, IS_MAP){\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function(iterated, kind){\n this._t = iterated; // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function(){\n var that = this\n , kind = that._k\n , entry = that._l;\n // revert to the last existing entry\n while(entry && entry.r)entry = entry.p;\n // get next entry\n if(!that._t || !(that._l = entry = entry ? entry.n : that._t._f)){\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if(kind == 'keys' )return step(0, entry.k);\n if(kind == 'values')return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values' , !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_collection-strong.js\n// module id = ../../../../core-js/modules/_collection-strong.js\n// module chunks = 0","'use strict';\nvar redefineAll = require('./_redefine-all')\n , getWeak = require('./_meta').getWeak\n , anObject = require('./_an-object')\n , isObject = require('./_is-object')\n , anInstance = require('./_an-instance')\n , forOf = require('./_for-of')\n , createArrayMethod = require('./_array-methods')\n , $has = require('./_has')\n , arrayFind = createArrayMethod(5)\n , arrayFindIndex = createArrayMethod(6)\n , id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function(that){\n return that._l || (that._l = new UncaughtFrozenStore);\n};\nvar UncaughtFrozenStore = function(){\n this.a = [];\n};\nvar findUncaughtFrozen = function(store, key){\n return arrayFind(store.a, function(it){\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function(key){\n var entry = findUncaughtFrozen(this, key);\n if(entry)return entry[1];\n },\n has: function(key){\n return !!findUncaughtFrozen(this, key);\n },\n set: function(key, value){\n var entry = findUncaughtFrozen(this, key);\n if(entry)entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function(key){\n var index = arrayFindIndex(this.a, function(it){\n return it[0] === key;\n });\n if(~index)this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function(wrapper, NAME, IS_MAP, ADDER){\n var C = wrapper(function(that, iterable){\n anInstance(that, C, NAME, '_i');\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function(key){\n if(!isObject(key))return false;\n var data = getWeak(key);\n if(data === true)return uncaughtFrozenStore(this)['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key){\n if(!isObject(key))return false;\n var data = getWeak(key);\n if(data === true)return uncaughtFrozenStore(this).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function(that, key, value){\n var data = getWeak(anObject(key), true);\n if(data === true)uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_collection-weak.js\n// module id = ../../../../core-js/modules/_collection-weak.js\n// module chunks = 0","'use strict';\nvar global = require('./_global')\n , $export = require('./_export')\n , redefine = require('./_redefine')\n , redefineAll = require('./_redefine-all')\n , meta = require('./_meta')\n , forOf = require('./_for-of')\n , anInstance = require('./_an-instance')\n , isObject = require('./_is-object')\n , fails = require('./_fails')\n , $iterDetect = require('./_iter-detect')\n , setToStringTag = require('./_set-to-string-tag')\n , inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function(NAME, wrapper, methods, common, IS_MAP, IS_WEAK){\n var Base = global[NAME]\n , C = Base\n , ADDER = IS_MAP ? 'set' : 'add'\n , proto = C && C.prototype\n , O = {};\n var fixMethod = function(KEY){\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function(a){\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a){\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a){\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a){ fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b){ fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if(typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function(){\n new C().entries().next();\n }))){\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C\n // early implementations not supports chaining\n , HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n , THROWS_ON_PRIMITIVES = fails(function(){ instance.has(1); })\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n , ACCEPT_ITERABLES = $iterDetect(function(iter){ new C(iter); }) // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n , BUGGY_ZERO = !IS_WEAK && fails(function(){\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C()\n , index = 5;\n while(index--)$instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if(!ACCEPT_ITERABLES){ \n C = wrapper(function(target, iterable){\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base, target, C);\n if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if(THROWS_ON_PRIMITIVES || BUGGY_ZERO){\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if(BUGGY_ZERO || HASNT_CHAINING)fixMethod(ADDER);\n // weak collections should not contains .clear method\n if(IS_WEAK && proto.clear)delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if(!IS_WEAK)common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_collection.js\n// module id = ../../../../core-js/modules/_collection.js\n// module chunks = 0","var core = module.exports = {version: '2.4.0'};\nif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_core.js\n// module id = ../../../../core-js/modules/_core.js\n// module chunks = 0","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function(fn, that, length){\n aFunction(fn);\n if(that === undefined)return fn;\n switch(length){\n case 1: return function(a){\n return fn.call(that, a);\n };\n case 2: return function(a, b){\n return fn.call(that, a, b);\n };\n case 3: return function(a, b, c){\n return fn.call(that, a, b, c);\n };\n }\n return function(/* ...args */){\n return fn.apply(that, arguments);\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_ctx.js\n// module id = ../../../../core-js/modules/_ctx.js\n// module chunks = 0","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function(it){\n if(it == undefined)throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_defined.js\n// module id = ../../../../core-js/modules/_defined.js\n// module chunks = 0","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function(){\n return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_descriptors.js\n// module id = ../../../../core-js/modules/_descriptors.js\n// module chunks = 0","var isObject = require('./_is-object')\n , document = require('./_global').document\n // in old IE typeof document.createElement is 'object'\n , is = isObject(document) && isObject(document.createElement);\nmodule.exports = function(it){\n return is ? document.createElement(it) : {};\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_dom-create.js\n// module id = ../../../../core-js/modules/_dom-create.js\n// module chunks = 0","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_enum-bug-keys.js\n// module id = ../../../../core-js/modules/_enum-bug-keys.js\n// module chunks = 0","var global = require('./_global')\n , core = require('./_core')\n , hide = require('./_hide')\n , redefine = require('./_redefine')\n , ctx = require('./_ctx')\n , PROTOTYPE = 'prototype';\n\nvar $export = function(type, name, source){\n var IS_FORCED = type & $export.F\n , IS_GLOBAL = type & $export.G\n , IS_STATIC = type & $export.S\n , IS_PROTO = type & $export.P\n , IS_BIND = type & $export.B\n , target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]\n , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})\n , expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {})\n , key, own, out, exp;\n if(IS_GLOBAL)source = name;\n for(key in source){\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if(target)redefine(target, key, out, type & $export.U);\n // export\n if(exports[key] != out)hide(exports, key, exp);\n if(IS_PROTO && expProto[key] != out)expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library` \nmodule.exports = $export;\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_export.js\n// module id = ../../../../core-js/modules/_export.js\n// module chunks = 0","module.exports = function(exec){\n try {\n return !!exec();\n } catch(e){\n return true;\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_fails.js\n// module id = ../../../../core-js/modules/_fails.js\n// module chunks = 0","var ctx = require('./_ctx')\n , call = require('./_iter-call')\n , isArrayIter = require('./_is-array-iter')\n , anObject = require('./_an-object')\n , toLength = require('./_to-length')\n , getIterFn = require('./core.get-iterator-method')\n , BREAK = {}\n , RETURN = {};\nvar exports = module.exports = function(iterable, entries, fn, that, ITERATOR){\n var iterFn = ITERATOR ? function(){ return iterable; } : getIterFn(iterable)\n , f = ctx(fn, that, entries ? 2 : 1)\n , index = 0\n , length, step, iterator, result;\n if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if(result === BREAK || result === RETURN)return result;\n } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){\n result = call(iterator, f, step.value, entries);\n if(result === BREAK || result === RETURN)return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_for-of.js\n// module id = ../../../../core-js/modules/_for-of.js\n// module chunks = 0","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\nif(typeof __g == 'number')__g = global; // eslint-disable-line no-undef\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_global.js\n// module id = ../../../../core-js/modules/_global.js\n// module chunks = 0","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function(it, key){\n return hasOwnProperty.call(it, key);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_has.js\n// module id = ../../../../core-js/modules/_has.js\n// module chunks = 0","var dP = require('./_object-dp')\n , createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function(object, key, value){\n return dP.f(object, key, createDesc(1, value));\n} : function(object, key, value){\n object[key] = value;\n return object;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_hide.js\n// module id = ../../../../core-js/modules/_hide.js\n// module chunks = 0","module.exports = require('./_global').document && document.documentElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_html.js\n// module id = ../../../../core-js/modules/_html.js\n// module chunks = 0","module.exports = !require('./_descriptors') && !require('./_fails')(function(){\n return Object.defineProperty(require('./_dom-create')('div'), 'a', {get: function(){ return 7; }}).a != 7;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_ie8-dom-define.js\n// module id = ../../../../core-js/modules/_ie8-dom-define.js\n// module chunks = 0","var isObject = require('./_is-object')\n , setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function(that, target, C){\n var P, S = target.constructor;\n if(S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf){\n setPrototypeOf(that, P);\n } return that;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_inherit-if-required.js\n// module id = ../../../../core-js/modules/_inherit-if-required.js\n// module chunks = 0","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function(fn, args, that){\n var un = that === undefined;\n switch(args.length){\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_invoke.js\n// module id = ../../../../core-js/modules/_invoke.js\n// module chunks = 0","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_iobject.js\n// module id = ../../../../core-js/modules/_iobject.js\n// module chunks = 0","// check on default Array iterator\nvar Iterators = require('./_iterators')\n , ITERATOR = require('./_wks')('iterator')\n , ArrayProto = Array.prototype;\n\nmodule.exports = function(it){\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_is-array-iter.js\n// module id = ../../../../core-js/modules/_is-array-iter.js\n// module chunks = 0","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg){\n return cof(arg) == 'Array';\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_is-array.js\n// module id = ../../../../core-js/modules/_is-array.js\n// module chunks = 0","module.exports = function(it){\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_is-object.js\n// module id = ../../../../core-js/modules/_is-object.js\n// module chunks = 0","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function(iterator, fn, value, entries){\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch(e){\n var ret = iterator['return'];\n if(ret !== undefined)anObject(ret.call(iterator));\n throw e;\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_iter-call.js\n// module id = ../../../../core-js/modules/_iter-call.js\n// module chunks = 0","'use strict';\nvar create = require('./_object-create')\n , descriptor = require('./_property-desc')\n , setToStringTag = require('./_set-to-string-tag')\n , IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function(){ return this; });\n\nmodule.exports = function(Constructor, NAME, next){\n Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)});\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_iter-create.js\n// module id = ../../../../core-js/modules/_iter-create.js\n// module chunks = 0","'use strict';\nvar LIBRARY = require('./_library')\n , $export = require('./_export')\n , redefine = require('./_redefine')\n , hide = require('./_hide')\n , has = require('./_has')\n , Iterators = require('./_iterators')\n , $iterCreate = require('./_iter-create')\n , setToStringTag = require('./_set-to-string-tag')\n , getPrototypeOf = require('./_object-gpo')\n , ITERATOR = require('./_wks')('iterator')\n , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`\n , FF_ITERATOR = '@@iterator'\n , KEYS = 'keys'\n , VALUES = 'values';\n\nvar returnThis = function(){ return this; };\n\nmodule.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){\n $iterCreate(Constructor, NAME, next);\n var getMethod = function(kind){\n if(!BUGGY && kind in proto)return proto[kind];\n switch(kind){\n case KEYS: return function keys(){ return new Constructor(this, kind); };\n case VALUES: return function values(){ return new Constructor(this, kind); };\n } return function entries(){ return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator'\n , DEF_VALUES = DEFAULT == VALUES\n , VALUES_BUG = false\n , proto = Base.prototype\n , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]\n , $default = $native || getMethod(DEFAULT)\n , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined\n , $anyNative = NAME == 'Array' ? proto.entries || $native : $native\n , methods, key, IteratorPrototype;\n // Fix native\n if($anyNative){\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base));\n if(IteratorPrototype !== Object.prototype){\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if(DEF_VALUES && $native && $native.name !== VALUES){\n VALUES_BUG = true;\n $default = function values(){ return $native.call(this); };\n }\n // Define iterator\n if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if(DEFAULT){\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if(FORCED)for(key in methods){\n if(!(key in proto))redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_iter-define.js\n// module id = ../../../../core-js/modules/_iter-define.js\n// module chunks = 0","var ITERATOR = require('./_wks')('iterator')\n , SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function(){ SAFE_CLOSING = true; };\n Array.from(riter, function(){ throw 2; });\n} catch(e){ /* empty */ }\n\nmodule.exports = function(exec, skipClosing){\n if(!skipClosing && !SAFE_CLOSING)return false;\n var safe = false;\n try {\n var arr = [7]\n , iter = arr[ITERATOR]();\n iter.next = function(){ return {done: safe = true}; };\n arr[ITERATOR] = function(){ return iter; };\n exec(arr);\n } catch(e){ /* empty */ }\n return safe;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_iter-detect.js\n// module id = ../../../../core-js/modules/_iter-detect.js\n// module chunks = 0","module.exports = function(done, value){\n return {value: value, done: !!done};\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_iter-step.js\n// module id = ../../../../core-js/modules/_iter-step.js\n// module chunks = 0","module.exports = {};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_iterators.js\n// module id = ../../../../core-js/modules/_iterators.js\n// module chunks = 0","module.exports = false;\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_library.js\n// module id = ../../../../core-js/modules/_library.js\n// module chunks = 0","var META = require('./_uid')('meta')\n , isObject = require('./_is-object')\n , has = require('./_has')\n , setDesc = require('./_object-dp').f\n , id = 0;\nvar isExtensible = Object.isExtensible || function(){\n return true;\n};\nvar FREEZE = !require('./_fails')(function(){\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function(it){\n setDesc(it, META, {value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n }});\n};\nvar fastKey = function(it, create){\n // return primitive with prefix\n if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if(!has(it, META)){\n // can't set metadata to uncaught frozen object\n if(!isExtensible(it))return 'F';\n // not necessary to add metadata\n if(!create)return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function(it, create){\n if(!has(it, META)){\n // can't set metadata to uncaught frozen object\n if(!isExtensible(it))return true;\n // not necessary to add metadata\n if(!create)return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function(it){\n if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_meta.js\n// module id = ../../../../core-js/modules/_meta.js\n// module chunks = 0","var Map = require('./es6.map')\n , $export = require('./_export')\n , shared = require('./_shared')('metadata')\n , store = shared.store || (shared.store = new (require('./es6.weak-map')));\n\nvar getOrCreateMetadataMap = function(target, targetKey, create){\n var targetMetadata = store.get(target);\n if(!targetMetadata){\n if(!create)return undefined;\n store.set(target, targetMetadata = new Map);\n }\n var keyMetadata = targetMetadata.get(targetKey);\n if(!keyMetadata){\n if(!create)return undefined;\n targetMetadata.set(targetKey, keyMetadata = new Map);\n } return keyMetadata;\n};\nvar ordinaryHasOwnMetadata = function(MetadataKey, O, P){\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? false : metadataMap.has(MetadataKey);\n};\nvar ordinaryGetOwnMetadata = function(MetadataKey, O, P){\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);\n};\nvar ordinaryDefineOwnMetadata = function(MetadataKey, MetadataValue, O, P){\n getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);\n};\nvar ordinaryOwnMetadataKeys = function(target, targetKey){\n var metadataMap = getOrCreateMetadataMap(target, targetKey, false)\n , keys = [];\n if(metadataMap)metadataMap.forEach(function(_, key){ keys.push(key); });\n return keys;\n};\nvar toMetaKey = function(it){\n return it === undefined || typeof it == 'symbol' ? it : String(it);\n};\nvar exp = function(O){\n $export($export.S, 'Reflect', O);\n};\n\nmodule.exports = {\n store: store,\n map: getOrCreateMetadataMap,\n has: ordinaryHasOwnMetadata,\n get: ordinaryGetOwnMetadata,\n set: ordinaryDefineOwnMetadata,\n keys: ordinaryOwnMetadataKeys,\n key: toMetaKey,\n exp: exp\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_metadata.js\n// module id = ../../../../core-js/modules/_metadata.js\n// module chunks = 0","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys')\n , gOPS = require('./_object-gops')\n , pIE = require('./_object-pie')\n , toObject = require('./_to-object')\n , IObject = require('./_iobject')\n , $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function(){\n var A = {}\n , B = {}\n , S = Symbol()\n , K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function(k){ B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source){ // eslint-disable-line no-unused-vars\n var T = toObject(target)\n , aLen = arguments.length\n , index = 1\n , getSymbols = gOPS.f\n , isEnum = pIE.f;\n while(aLen > index){\n var S = IObject(arguments[index++])\n , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)\n , length = keys.length\n , j = 0\n , key;\n while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];\n } return T;\n} : $assign;\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_object-assign.js\n// module id = ../../../../core-js/modules/_object-assign.js\n// module chunks = 0","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object')\n , dPs = require('./_object-dps')\n , enumBugKeys = require('./_enum-bug-keys')\n , IE_PROTO = require('./_shared-key')('IE_PROTO')\n , Empty = function(){ /* empty */ }\n , PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function(){\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe')\n , i = enumBugKeys.length\n , lt = '<'\n , gt = '>'\n , iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties){\n var result;\n if(O !== null){\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty;\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_object-create.js\n// module id = ../../../../core-js/modules/_object-create.js\n// module chunks = 0","var anObject = require('./_an-object')\n , IE8_DOM_DEFINE = require('./_ie8-dom-define')\n , toPrimitive = require('./_to-primitive')\n , dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes){\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if(IE8_DOM_DEFINE)try {\n return dP(O, P, Attributes);\n } catch(e){ /* empty */ }\n if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');\n if('value' in Attributes)O[P] = Attributes.value;\n return O;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_object-dp.js\n// module id = ../../../../core-js/modules/_object-dp.js\n// module chunks = 0","var dP = require('./_object-dp')\n , anObject = require('./_an-object')\n , getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties){\n anObject(O);\n var keys = getKeys(Properties)\n , length = keys.length\n , i = 0\n , P;\n while(length > i)dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_object-dps.js\n// module id = ../../../../core-js/modules/_object-dps.js\n// module chunks = 0","var pIE = require('./_object-pie')\n , createDesc = require('./_property-desc')\n , toIObject = require('./_to-iobject')\n , toPrimitive = require('./_to-primitive')\n , has = require('./_has')\n , IE8_DOM_DEFINE = require('./_ie8-dom-define')\n , gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P){\n O = toIObject(O);\n P = toPrimitive(P, true);\n if(IE8_DOM_DEFINE)try {\n return gOPD(O, P);\n } catch(e){ /* empty */ }\n if(has(O, P))return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_object-gopd.js\n// module id = ../../../../core-js/modules/_object-gopd.js\n// module chunks = 0","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal')\n , hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){\n return $keys(O, hiddenKeys);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_object-gopn.js\n// module id = ../../../../core-js/modules/_object-gopn.js\n// module chunks = 0","exports.f = Object.getOwnPropertySymbols;\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_object-gops.js\n// module id = ../../../../core-js/modules/_object-gops.js\n// module chunks = 0","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has')\n , toObject = require('./_to-object')\n , IE_PROTO = require('./_shared-key')('IE_PROTO')\n , ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function(O){\n O = toObject(O);\n if(has(O, IE_PROTO))return O[IE_PROTO];\n if(typeof O.constructor == 'function' && O instanceof O.constructor){\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_object-gpo.js\n// module id = ../../../../core-js/modules/_object-gpo.js\n// module chunks = 0","var has = require('./_has')\n , toIObject = require('./_to-iobject')\n , arrayIndexOf = require('./_array-includes')(false)\n , IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function(object, names){\n var O = toIObject(object)\n , i = 0\n , result = []\n , key;\n for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while(names.length > i)if(has(O, key = names[i++])){\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_object-keys-internal.js\n// module id = ../../../../core-js/modules/_object-keys-internal.js\n// module chunks = 0","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal')\n , enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O){\n return $keys(O, enumBugKeys);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_object-keys.js\n// module id = ../../../../core-js/modules/_object-keys.js\n// module chunks = 0","exports.f = {}.propertyIsEnumerable;\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_object-pie.js\n// module id = ../../../../core-js/modules/_object-pie.js\n// module chunks = 0","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn')\n , gOPS = require('./_object-gops')\n , anObject = require('./_an-object')\n , Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it){\n var keys = gOPN.f(anObject(it))\n , getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_own-keys.js\n// module id = ../../../../core-js/modules/_own-keys.js\n// module chunks = 0","module.exports = function(bitmap, value){\n return {\n enumerable : !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable : !(bitmap & 4),\n value : value\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_property-desc.js\n// module id = ../../../../core-js/modules/_property-desc.js\n// module chunks = 0","var redefine = require('./_redefine');\nmodule.exports = function(target, src, safe){\n for(var key in src)redefine(target, key, src[key], safe);\n return target;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_redefine-all.js\n// module id = ../../../../core-js/modules/_redefine-all.js\n// module chunks = 0","var global = require('./_global')\n , hide = require('./_hide')\n , has = require('./_has')\n , SRC = require('./_uid')('src')\n , TO_STRING = 'toString'\n , $toString = Function[TO_STRING]\n , TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function(it){\n return $toString.call(it);\n};\n\n(module.exports = function(O, key, val, safe){\n var isFunction = typeof val == 'function';\n if(isFunction)has(val, 'name') || hide(val, 'name', key);\n if(O[key] === val)return;\n if(isFunction)has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if(O === global){\n O[key] = val;\n } else {\n if(!safe){\n delete O[key];\n hide(O, key, val);\n } else {\n if(O[key])O[key] = val;\n else hide(O, key, val);\n }\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString(){\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_redefine.js\n// module id = ../../../../core-js/modules/_redefine.js\n// module chunks = 0","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object')\n , anObject = require('./_an-object');\nvar check = function(O, proto){\n anObject(O);\n if(!isObject(proto) && proto !== null)throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function(test, buggy, set){\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch(e){ buggy = true; }\n return function setPrototypeOf(O, proto){\n check(O, proto);\n if(buggy)O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_set-proto.js\n// module id = ../../../../core-js/modules/_set-proto.js\n// module chunks = 0","'use strict';\nvar global = require('./_global')\n , dP = require('./_object-dp')\n , DESCRIPTORS = require('./_descriptors')\n , SPECIES = require('./_wks')('species');\n\nmodule.exports = function(KEY){\n var C = global[KEY];\n if(DESCRIPTORS && C && !C[SPECIES])dP.f(C, SPECIES, {\n configurable: true,\n get: function(){ return this; }\n });\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_set-species.js\n// module id = ../../../../core-js/modules/_set-species.js\n// module chunks = 0","var def = require('./_object-dp').f\n , has = require('./_has')\n , TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function(it, tag, stat){\n if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_set-to-string-tag.js\n// module id = ../../../../core-js/modules/_set-to-string-tag.js\n// module chunks = 0","var shared = require('./_shared')('keys')\n , uid = require('./_uid');\nmodule.exports = function(key){\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_shared-key.js\n// module id = ../../../../core-js/modules/_shared-key.js\n// module chunks = 0","var global = require('./_global')\n , SHARED = '__core-js_shared__'\n , store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function(key){\n return store[key] || (store[key] = {});\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_shared.js\n// module id = ../../../../core-js/modules/_shared.js\n// module chunks = 0","var toInteger = require('./_to-integer')\n , max = Math.max\n , min = Math.min;\nmodule.exports = function(index, length){\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_to-index.js\n// module id = ../../../../core-js/modules/_to-index.js\n// module chunks = 0","// 7.1.4 ToInteger\nvar ceil = Math.ceil\n , floor = Math.floor;\nmodule.exports = function(it){\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_to-integer.js\n// module id = ../../../../core-js/modules/_to-integer.js\n// module chunks = 0","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject')\n , defined = require('./_defined');\nmodule.exports = function(it){\n return IObject(defined(it));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_to-iobject.js\n// module id = ../../../../core-js/modules/_to-iobject.js\n// module chunks = 0","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer')\n , min = Math.min;\nmodule.exports = function(it){\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_to-length.js\n// module id = ../../../../core-js/modules/_to-length.js\n// module chunks = 0","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function(it){\n return Object(defined(it));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_to-object.js\n// module id = ../../../../core-js/modules/_to-object.js\n// module chunks = 0","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function(it, S){\n if(!isObject(it))return it;\n var fn, val;\n if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;\n if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_to-primitive.js\n// module id = ../../../../core-js/modules/_to-primitive.js\n// module chunks = 0","var id = 0\n , px = Math.random();\nmodule.exports = function(key){\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_uid.js\n// module id = ../../../../core-js/modules/_uid.js\n// module chunks = 0","var store = require('./_shared')('wks')\n , uid = require('./_uid')\n , Symbol = require('./_global').Symbol\n , USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function(name){\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/_wks.js\n// module id = ../../../../core-js/modules/_wks.js\n// module chunks = 0","var classof = require('./_classof')\n , ITERATOR = require('./_wks')('iterator')\n , Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function(it){\n if(it != undefined)return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/core.get-iterator-method.js\n// module id = ../../../../core-js/modules/core.get-iterator-method.js\n// module chunks = 0","'use strict';\nvar strong = require('./_collection-strong');\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')('Map', function(get){\n return function Map(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key){\n var entry = strong.getEntry(this, key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value){\n return strong.def(this, key === 0 ? 0 : key, value);\n }\n}, strong, true);\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es6.map.js\n// module id = ../../../../core-js/modules/es6.map.js\n// module chunks = 0","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export')\n , aFunction = require('./_a-function')\n , anObject = require('./_an-object')\n , rApply = (require('./_global').Reflect || {}).apply\n , fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function(){\n rApply(function(){});\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList){\n var T = aFunction(target)\n , L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.apply.js\n// module id = ../../../../core-js/modules/es6.reflect.apply.js\n// module chunks = 0","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export')\n , create = require('./_object-create')\n , aFunction = require('./_a-function')\n , anObject = require('./_an-object')\n , isObject = require('./_is-object')\n , fails = require('./_fails')\n , bind = require('./_bind')\n , rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function(){\n function F(){}\n return !(rConstruct(function(){}, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function(){\n rConstruct(function(){});\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /*, newTarget*/){\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if(ARGS_BUG && !NEW_TARGET_BUG)return rConstruct(Target, args, newTarget);\n if(Target == newTarget){\n // w/o altered newTarget, optimization for 0-4 arguments\n switch(args.length){\n case 0: return new Target;\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args));\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype\n , instance = create(isObject(proto) ? proto : Object.prototype)\n , result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.construct.js\n// module id = ../../../../core-js/modules/es6.reflect.construct.js\n// module chunks = 0","// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = require('./_object-dp')\n , $export = require('./_export')\n , anObject = require('./_an-object')\n , toPrimitive = require('./_to-primitive');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * require('./_fails')(function(){\n Reflect.defineProperty(dP.f({}, 1, {value: 1}), 1, {value: 2});\n}), 'Reflect', {\n defineProperty: function defineProperty(target, propertyKey, attributes){\n anObject(target);\n propertyKey = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n dP.f(target, propertyKey, attributes);\n return true;\n } catch(e){\n return false;\n }\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.define-property.js\n// module id = ../../../../core-js/modules/es6.reflect.define-property.js\n// module chunks = 0","// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = require('./_export')\n , gOPD = require('./_object-gopd').f\n , anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey){\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.delete-property.js\n// module id = ../../../../core-js/modules/es6.reflect.delete-property.js\n// module chunks = 0","'use strict';\n// 26.1.5 Reflect.enumerate(target)\nvar $export = require('./_export')\n , anObject = require('./_an-object');\nvar Enumerate = function(iterated){\n this._t = anObject(iterated); // target\n this._i = 0; // next index\n var keys = this._k = [] // keys\n , key;\n for(key in iterated)keys.push(key);\n};\nrequire('./_iter-create')(Enumerate, 'Object', function(){\n var that = this\n , keys = that._k\n , key;\n do {\n if(that._i >= keys.length)return {value: undefined, done: true};\n } while(!((key = keys[that._i++]) in that._t));\n return {value: key, done: false};\n});\n\n$export($export.S, 'Reflect', {\n enumerate: function enumerate(target){\n return new Enumerate(target);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.enumerate.js\n// module id = ../../../../core-js/modules/es6.reflect.enumerate.js\n// module chunks = 0","// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = require('./_object-gopd')\n , $export = require('./_export')\n , anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey){\n return gOPD.f(anObject(target), propertyKey);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.get-own-property-descriptor.js\n// module id = ../../../../core-js/modules/es6.reflect.get-own-property-descriptor.js\n// module chunks = 0","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export')\n , getProto = require('./_object-gpo')\n , anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target){\n return getProto(anObject(target));\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.get-prototype-of.js\n// module id = ../../../../core-js/modules/es6.reflect.get-prototype-of.js\n// module chunks = 0","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd')\n , getPrototypeOf = require('./_object-gpo')\n , has = require('./_has')\n , $export = require('./_export')\n , isObject = require('./_is-object')\n , anObject = require('./_an-object');\n\nfunction get(target, propertyKey/*, receiver*/){\n var receiver = arguments.length < 3 ? target : arguments[2]\n , desc, proto;\n if(anObject(target) === receiver)return target[propertyKey];\n if(desc = gOPD.f(target, propertyKey))return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if(isObject(proto = getPrototypeOf(target)))return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', {get: get});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.get.js\n// module id = ../../../../core-js/modules/es6.reflect.get.js\n// module chunks = 0","// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', {\n has: function has(target, propertyKey){\n return propertyKey in target;\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.has.js\n// module id = ../../../../core-js/modules/es6.reflect.has.js\n// module chunks = 0","// 26.1.10 Reflect.isExtensible(target)\nvar $export = require('./_export')\n , anObject = require('./_an-object')\n , $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n isExtensible: function isExtensible(target){\n anObject(target);\n return $isExtensible ? $isExtensible(target) : true;\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.is-extensible.js\n// module id = ../../../../core-js/modules/es6.reflect.is-extensible.js\n// module chunks = 0","// 26.1.11 Reflect.ownKeys(target)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', {ownKeys: require('./_own-keys')});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.own-keys.js\n// module id = ../../../../core-js/modules/es6.reflect.own-keys.js\n// module chunks = 0","// 26.1.12 Reflect.preventExtensions(target)\nvar $export = require('./_export')\n , anObject = require('./_an-object')\n , $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n preventExtensions: function preventExtensions(target){\n anObject(target);\n try {\n if($preventExtensions)$preventExtensions(target);\n return true;\n } catch(e){\n return false;\n }\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.prevent-extensions.js\n// module id = ../../../../core-js/modules/es6.reflect.prevent-extensions.js\n// module chunks = 0","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export')\n , setProto = require('./_set-proto');\n\nif(setProto)$export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto){\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch(e){\n return false;\n }\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.set-prototype-of.js\n// module id = ../../../../core-js/modules/es6.reflect.set-prototype-of.js\n// module chunks = 0","// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = require('./_object-dp')\n , gOPD = require('./_object-gopd')\n , getPrototypeOf = require('./_object-gpo')\n , has = require('./_has')\n , $export = require('./_export')\n , createDesc = require('./_property-desc')\n , anObject = require('./_an-object')\n , isObject = require('./_is-object');\n\nfunction set(target, propertyKey, V/*, receiver*/){\n var receiver = arguments.length < 4 ? target : arguments[3]\n , ownDesc = gOPD.f(anObject(target), propertyKey)\n , existingDescriptor, proto;\n if(!ownDesc){\n if(isObject(proto = getPrototypeOf(target))){\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if(has(ownDesc, 'value')){\n if(ownDesc.writable === false || !isObject(receiver))return false;\n existingDescriptor = gOPD.f(receiver, propertyKey) || createDesc(0);\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', {set: set});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es6.reflect.set.js\n// module id = ../../../../core-js/modules/es6.reflect.set.js\n// module chunks = 0","'use strict';\nvar strong = require('./_collection-strong');\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')('Set', function(get){\n return function Set(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value){\n return strong.def(this, value = value === 0 ? 0 : value, value);\n }\n}, strong);\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es6.set.js\n// module id = ../../../../core-js/modules/es6.set.js\n// module chunks = 0","'use strict';\nvar each = require('./_array-methods')(0)\n , redefine = require('./_redefine')\n , meta = require('./_meta')\n , assign = require('./_object-assign')\n , weak = require('./_collection-weak')\n , isObject = require('./_is-object')\n , getWeak = meta.getWeak\n , isExtensible = Object.isExtensible\n , uncaughtFrozenStore = weak.ufstore\n , tmp = {}\n , InternalMap;\n\nvar wrapper = function(get){\n return function WeakMap(){\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key){\n if(isObject(key)){\n var data = getWeak(key);\n if(data === true)return uncaughtFrozenStore(this).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value){\n return weak.def(this, key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')('WeakMap', wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif(new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7){\n InternalMap = weak.getConstructor(wrapper);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function(key){\n var proto = $WeakMap.prototype\n , method = proto[key];\n redefine(proto, key, function(a, b){\n // store frozen objects on internal weakmap shim\n if(isObject(a) && !isExtensible(a)){\n if(!this._f)this._f = new InternalMap;\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es6.weak-map.js\n// module id = ../../../../core-js/modules/es6.weak-map.js\n// module chunks = 0","var metadata = require('./_metadata')\n , anObject = require('./_an-object')\n , toMetaKey = metadata.key\n , ordinaryDefineOwnMetadata = metadata.set;\n\nmetadata.exp({defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey){\n ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));\n}});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es7.reflect.define-metadata.js\n// module id = ../../../../core-js/modules/es7.reflect.define-metadata.js\n// module chunks = 0","var metadata = require('./_metadata')\n , anObject = require('./_an-object')\n , toMetaKey = metadata.key\n , getOrCreateMetadataMap = metadata.map\n , store = metadata.store;\n\nmetadata.exp({deleteMetadata: function deleteMetadata(metadataKey, target /*, targetKey */){\n var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2])\n , metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);\n if(metadataMap === undefined || !metadataMap['delete'](metadataKey))return false;\n if(metadataMap.size)return true;\n var targetMetadata = store.get(target);\n targetMetadata['delete'](targetKey);\n return !!targetMetadata.size || store['delete'](target);\n}});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es7.reflect.delete-metadata.js\n// module id = ../../../../core-js/modules/es7.reflect.delete-metadata.js\n// module chunks = 0","var Set = require('./es6.set')\n , from = require('./_array-from-iterable')\n , metadata = require('./_metadata')\n , anObject = require('./_an-object')\n , getPrototypeOf = require('./_object-gpo')\n , ordinaryOwnMetadataKeys = metadata.keys\n , toMetaKey = metadata.key;\n\nvar ordinaryMetadataKeys = function(O, P){\n var oKeys = ordinaryOwnMetadataKeys(O, P)\n , parent = getPrototypeOf(O);\n if(parent === null)return oKeys;\n var pKeys = ordinaryMetadataKeys(parent, P);\n return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;\n};\n\nmetadata.exp({getMetadataKeys: function getMetadataKeys(target /*, targetKey */){\n return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n}});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es7.reflect.get-metadata-keys.js\n// module id = ../../../../core-js/modules/es7.reflect.get-metadata-keys.js\n// module chunks = 0","var metadata = require('./_metadata')\n , anObject = require('./_an-object')\n , getPrototypeOf = require('./_object-gpo')\n , ordinaryHasOwnMetadata = metadata.has\n , ordinaryGetOwnMetadata = metadata.get\n , toMetaKey = metadata.key;\n\nvar ordinaryGetMetadata = function(MetadataKey, O, P){\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if(hasOwn)return ordinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;\n};\n\nmetadata.exp({getMetadata: function getMetadata(metadataKey, target /*, targetKey */){\n return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n}});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es7.reflect.get-metadata.js\n// module id = ../../../../core-js/modules/es7.reflect.get-metadata.js\n// module chunks = 0","var metadata = require('./_metadata')\n , anObject = require('./_an-object')\n , ordinaryOwnMetadataKeys = metadata.keys\n , toMetaKey = metadata.key;\n\nmetadata.exp({getOwnMetadataKeys: function getOwnMetadataKeys(target /*, targetKey */){\n return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n}});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es7.reflect.get-own-metadata-keys.js\n// module id = ../../../../core-js/modules/es7.reflect.get-own-metadata-keys.js\n// module chunks = 0","var metadata = require('./_metadata')\n , anObject = require('./_an-object')\n , ordinaryGetOwnMetadata = metadata.get\n , toMetaKey = metadata.key;\n\nmetadata.exp({getOwnMetadata: function getOwnMetadata(metadataKey, target /*, targetKey */){\n return ordinaryGetOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n}});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es7.reflect.get-own-metadata.js\n// module id = ../../../../core-js/modules/es7.reflect.get-own-metadata.js\n// module chunks = 0","var metadata = require('./_metadata')\n , anObject = require('./_an-object')\n , getPrototypeOf = require('./_object-gpo')\n , ordinaryHasOwnMetadata = metadata.has\n , toMetaKey = metadata.key;\n\nvar ordinaryHasMetadata = function(MetadataKey, O, P){\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if(hasOwn)return true;\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;\n};\n\nmetadata.exp({hasMetadata: function hasMetadata(metadataKey, target /*, targetKey */){\n return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n}});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es7.reflect.has-metadata.js\n// module id = ../../../../core-js/modules/es7.reflect.has-metadata.js\n// module chunks = 0","var metadata = require('./_metadata')\n , anObject = require('./_an-object')\n , ordinaryHasOwnMetadata = metadata.has\n , toMetaKey = metadata.key;\n\nmetadata.exp({hasOwnMetadata: function hasOwnMetadata(metadataKey, target /*, targetKey */){\n return ordinaryHasOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n}});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es7.reflect.has-own-metadata.js\n// module id = ../../../../core-js/modules/es7.reflect.has-own-metadata.js\n// module chunks = 0","var metadata = require('./_metadata')\n , anObject = require('./_an-object')\n , aFunction = require('./_a-function')\n , toMetaKey = metadata.key\n , ordinaryDefineOwnMetadata = metadata.set;\n\nmetadata.exp({metadata: function metadata(metadataKey, metadataValue){\n return function decorator(target, targetKey){\n ordinaryDefineOwnMetadata(\n metadataKey, metadataValue,\n (targetKey !== undefined ? anObject : aFunction)(target),\n toMetaKey(targetKey)\n );\n };\n}});\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/core-js/modules/es7.reflect.metadata.js\n// module id = ../../../../core-js/modules/es7.reflect.metadata.js\n// module chunks = 0","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = ../../../../webpack/buildin/global.js\n// module chunks = 0 3","/**\n* @license\n* Copyright Google Inc. All Rights Reserved.\n*\n* Use of this source code is governed by an MIT-style license that can be\n* found in the LICENSE file at https://angular.io/license\n*/\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(factory());\n}(this, (function () { 'use strict';\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar Zone$1 = (function (global) {\n var performance = global['performance'];\n function mark(name) {\n performance && performance['mark'] && performance['mark'](name);\n }\n function performanceMeasure(name, label) {\n performance && performance['measure'] && performance['measure'](name, label);\n }\n mark('Zone');\n if (global['Zone']) {\n throw new Error('Zone already loaded.');\n }\n var Zone = (function () {\n function Zone(parent, zoneSpec) {\n this._properties = null;\n this._parent = parent;\n this._name = zoneSpec ? zoneSpec.name || 'unnamed' : '';\n this._properties = zoneSpec && zoneSpec.properties || {};\n this._zoneDelegate =\n new ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec);\n }\n Zone.assertZonePatched = function () {\n if (global['Promise'] !== patches['ZoneAwarePromise']) {\n throw new Error('Zone.js has detected that ZoneAwarePromise `(window|global).Promise` ' +\n 'has been overwritten.\\n' +\n 'Most likely cause is that a Promise polyfill has been loaded ' +\n 'after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. ' +\n 'If you must load one, do so before loading zone.js.)');\n }\n };\n Object.defineProperty(Zone, \"root\", {\n get: function () {\n var zone = Zone.current;\n while (zone.parent) {\n zone = zone.parent;\n }\n return zone;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Zone, \"current\", {\n get: function () {\n return _currentZoneFrame.zone;\n },\n enumerable: true,\n configurable: true\n });\n \n Object.defineProperty(Zone, \"currentTask\", {\n get: function () {\n return _currentTask;\n },\n enumerable: true,\n configurable: true\n });\n \n Zone.__load_patch = function (name, fn) {\n if (patches.hasOwnProperty(name)) {\n throw Error('Already loaded patch: ' + name);\n }\n else if (!global['__Zone_disable_' + name]) {\n var perfName = 'Zone:' + name;\n mark(perfName);\n patches[name] = fn(global, Zone, _api);\n performanceMeasure(perfName, perfName);\n }\n };\n Object.defineProperty(Zone.prototype, \"parent\", {\n get: function () {\n return this._parent;\n },\n enumerable: true,\n configurable: true\n });\n \n Object.defineProperty(Zone.prototype, \"name\", {\n get: function () {\n return this._name;\n },\n enumerable: true,\n configurable: true\n });\n \n Zone.prototype.get = function (key) {\n var zone = this.getZoneWith(key);\n if (zone)\n return zone._properties[key];\n };\n Zone.prototype.getZoneWith = function (key) {\n var current = this;\n while (current) {\n if (current._properties.hasOwnProperty(key)) {\n return current;\n }\n current = current._parent;\n }\n return null;\n };\n Zone.prototype.fork = function (zoneSpec) {\n if (!zoneSpec)\n throw new Error('ZoneSpec required!');\n return this._zoneDelegate.fork(this, zoneSpec);\n };\n Zone.prototype.wrap = function (callback, source) {\n if (typeof callback !== 'function') {\n throw new Error('Expecting function got: ' + callback);\n }\n var _callback = this._zoneDelegate.intercept(this, callback, source);\n var zone = this;\n return function () {\n return zone.runGuarded(_callback, this, arguments, source);\n };\n };\n Zone.prototype.run = function (callback, applyThis, applyArgs, source) {\n if (applyThis === void 0) { applyThis = undefined; }\n if (applyArgs === void 0) { applyArgs = null; }\n if (source === void 0) { source = null; }\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);\n }\n finally {\n _currentZoneFrame = _currentZoneFrame.parent;\n }\n };\n Zone.prototype.runGuarded = function (callback, applyThis, applyArgs, source) {\n if (applyThis === void 0) { applyThis = null; }\n if (applyArgs === void 0) { applyArgs = null; }\n if (source === void 0) { source = null; }\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n try {\n return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);\n }\n catch (error) {\n if (this._zoneDelegate.handleError(this, error)) {\n throw error;\n }\n }\n }\n finally {\n _currentZoneFrame = _currentZoneFrame.parent;\n }\n };\n Zone.prototype.runTask = function (task, applyThis, applyArgs) {\n if (task.zone != this) {\n throw new Error('A task can only be run in the zone of creation! (Creation: ' +\n (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')');\n }\n // https://github.com/angular/zone.js/issues/778, sometimes eventTask\n // will run in notScheduled(canceled) state, we should not try to\n // run such kind of task but just return\n // we have to define an variable here, if not\n // typescript compiler will complain below\n var isNotScheduled = task.state === notScheduled;\n if (isNotScheduled && task.type === eventTask) {\n return;\n }\n var reEntryGuard = task.state != running;\n reEntryGuard && task._transitionTo(running, scheduled);\n task.runCount++;\n var previousTask = _currentTask;\n _currentTask = task;\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n if (task.type == macroTask && task.data && !task.data.isPeriodic) {\n task.cancelFn = null;\n }\n try {\n return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs);\n }\n catch (error) {\n if (this._zoneDelegate.handleError(this, error)) {\n throw error;\n }\n }\n }\n finally {\n // if the task's state is notScheduled or unknown, then it has already been cancelled\n // we should not reset the state to scheduled\n if (task.state !== notScheduled && task.state !== unknown) {\n if (task.type == eventTask || (task.data && task.data.isPeriodic)) {\n reEntryGuard && task._transitionTo(scheduled, running);\n }\n else {\n task.runCount = 0;\n this._updateTaskCount(task, -1);\n reEntryGuard &&\n task._transitionTo(notScheduled, running, notScheduled);\n }\n }\n _currentZoneFrame = _currentZoneFrame.parent;\n _currentTask = previousTask;\n }\n };\n Zone.prototype.scheduleTask = function (task) {\n if (task.zone && task.zone !== this) {\n // check if the task was rescheduled, the newZone\n // should not be the children of the original zone\n var newZone = this;\n while (newZone) {\n if (newZone === task.zone) {\n throw Error(\"can not reschedule task to \" + this\n .name + \" which is descendants of the original zone \" + task.zone.name);\n }\n newZone = newZone.parent;\n }\n }\n task._transitionTo(scheduling, notScheduled);\n var zoneDelegates = [];\n task._zoneDelegates = zoneDelegates;\n task._zone = this;\n try {\n task = this._zoneDelegate.scheduleTask(this, task);\n }\n catch (err) {\n // should set task's state to unknown when scheduleTask throw error\n // because the err may from reschedule, so the fromState maybe notScheduled\n task._transitionTo(unknown, scheduling, notScheduled);\n // TODO: @JiaLiPassion, should we check the result from handleError?\n this._zoneDelegate.handleError(this, err);\n throw err;\n }\n if (task._zoneDelegates === zoneDelegates) {\n // we have to check because internally the delegate can reschedule the task.\n this._updateTaskCount(task, 1);\n }\n if (task.state == scheduling) {\n task._transitionTo(scheduled, scheduling);\n }\n return task;\n };\n Zone.prototype.scheduleMicroTask = function (source, callback, data, customSchedule) {\n return this.scheduleTask(new ZoneTask(microTask, source, callback, data, customSchedule, null));\n };\n Zone.prototype.scheduleMacroTask = function (source, callback, data, customSchedule, customCancel) {\n return this.scheduleTask(new ZoneTask(macroTask, source, callback, data, customSchedule, customCancel));\n };\n Zone.prototype.scheduleEventTask = function (source, callback, data, customSchedule, customCancel) {\n return this.scheduleTask(new ZoneTask(eventTask, source, callback, data, customSchedule, customCancel));\n };\n Zone.prototype.cancelTask = function (task) {\n if (task.zone != this)\n throw new Error('A task can only be cancelled in the zone of creation! (Creation: ' +\n (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')');\n task._transitionTo(canceling, scheduled, running);\n try {\n this._zoneDelegate.cancelTask(this, task);\n }\n catch (err) {\n // if error occurs when cancelTask, transit the state to unknown\n task._transitionTo(unknown, canceling);\n this._zoneDelegate.handleError(this, err);\n throw err;\n }\n this._updateTaskCount(task, -1);\n task._transitionTo(notScheduled, canceling);\n task.runCount = 0;\n return task;\n };\n Zone.prototype._updateTaskCount = function (task, count) {\n var zoneDelegates = task._zoneDelegates;\n if (count == -1) {\n task._zoneDelegates = null;\n }\n for (var i = 0; i < zoneDelegates.length; i++) {\n zoneDelegates[i]._updateTaskCount(task.type, count);\n }\n };\n return Zone;\n }());\n Zone.__symbol__ = __symbol__;\n var DELEGATE_ZS = {\n name: '',\n onHasTask: function (delegate, _, target, hasTaskState) {\n return delegate.hasTask(target, hasTaskState);\n },\n onScheduleTask: function (delegate, _, target, task) {\n return delegate.scheduleTask(target, task);\n },\n onInvokeTask: function (delegate, _, target, task, applyThis, applyArgs) { return delegate.invokeTask(target, task, applyThis, applyArgs); },\n onCancelTask: function (delegate, _, target, task) {\n return delegate.cancelTask(target, task);\n }\n };\n var ZoneDelegate = (function () {\n function ZoneDelegate(zone, parentDelegate, zoneSpec) {\n this._taskCounts = { 'microTask': 0, 'macroTask': 0, 'eventTask': 0 };\n this.zone = zone;\n this._parentDelegate = parentDelegate;\n this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS);\n this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt);\n this._forkCurrZone = zoneSpec && (zoneSpec.onFork ? this.zone : parentDelegate.zone);\n this._interceptZS =\n zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS);\n this._interceptDlgt =\n zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt);\n this._interceptCurrZone =\n zoneSpec && (zoneSpec.onIntercept ? this.zone : parentDelegate.zone);\n this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS);\n this._invokeDlgt =\n zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt);\n this._invokeCurrZone = zoneSpec && (zoneSpec.onInvoke ? this.zone : parentDelegate.zone);\n this._handleErrorZS =\n zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS);\n this._handleErrorDlgt =\n zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt);\n this._handleErrorCurrZone =\n zoneSpec && (zoneSpec.onHandleError ? this.zone : parentDelegate.zone);\n this._scheduleTaskZS =\n zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS);\n this._scheduleTaskDlgt =\n zoneSpec && (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt);\n this._scheduleTaskCurrZone =\n zoneSpec && (zoneSpec.onScheduleTask ? this.zone : parentDelegate.zone);\n this._invokeTaskZS =\n zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS);\n this._invokeTaskDlgt =\n zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt);\n this._invokeTaskCurrZone =\n zoneSpec && (zoneSpec.onInvokeTask ? this.zone : parentDelegate.zone);\n this._cancelTaskZS =\n zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS);\n this._cancelTaskDlgt =\n zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt);\n this._cancelTaskCurrZone =\n zoneSpec && (zoneSpec.onCancelTask ? this.zone : parentDelegate.zone);\n this._hasTaskZS = null;\n this._hasTaskDlgt = null;\n this._hasTaskDlgtOwner = null;\n this._hasTaskCurrZone = null;\n var zoneSpecHasTask = zoneSpec && zoneSpec.onHasTask;\n var parentHasTask = parentDelegate && parentDelegate._hasTaskZS;\n if (zoneSpecHasTask || parentHasTask) {\n // If we need to report hasTask, than this ZS needs to do ref counting on tasks. In such\n // a case all task related interceptors must go through this ZD. We can't short circuit it.\n this._hasTaskZS = zoneSpecHasTask ? zoneSpec : DELEGATE_ZS;\n this._hasTaskDlgt = parentDelegate;\n this._hasTaskDlgtOwner = this;\n this._hasTaskCurrZone = zone;\n if (!zoneSpec.onScheduleTask) {\n this._scheduleTaskZS = DELEGATE_ZS;\n this._scheduleTaskDlgt = parentDelegate;\n this._scheduleTaskCurrZone = this.zone;\n }\n if (!zoneSpec.onInvokeTask) {\n this._invokeTaskZS = DELEGATE_ZS;\n this._invokeTaskDlgt = parentDelegate;\n this._invokeTaskCurrZone = this.zone;\n }\n if (!zoneSpec.onCancelTask) {\n this._cancelTaskZS = DELEGATE_ZS;\n this._cancelTaskDlgt = parentDelegate;\n this._cancelTaskCurrZone = this.zone;\n }\n }\n }\n ZoneDelegate.prototype.fork = function (targetZone, zoneSpec) {\n return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec) :\n new Zone(targetZone, zoneSpec);\n };\n ZoneDelegate.prototype.intercept = function (targetZone, callback, source) {\n return this._interceptZS ?\n this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, targetZone, callback, source) :\n callback;\n };\n ZoneDelegate.prototype.invoke = function (targetZone, callback, applyThis, applyArgs, source) {\n return this._invokeZS ?\n this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source) :\n callback.apply(applyThis, applyArgs);\n };\n ZoneDelegate.prototype.handleError = function (targetZone, error) {\n return this._handleErrorZS ?\n this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, targetZone, error) :\n true;\n };\n ZoneDelegate.prototype.scheduleTask = function (targetZone, task) {\n var returnTask = task;\n if (this._scheduleTaskZS) {\n if (this._hasTaskZS) {\n returnTask._zoneDelegates.push(this._hasTaskDlgtOwner);\n }\n returnTask = this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task);\n if (!returnTask)\n returnTask = task;\n }\n else {\n if (task.scheduleFn) {\n task.scheduleFn(task);\n }\n else if (task.type == microTask) {\n scheduleMicroTask(task);\n }\n else {\n throw new Error('Task is missing scheduleFn.');\n }\n }\n return returnTask;\n };\n ZoneDelegate.prototype.invokeTask = function (targetZone, task, applyThis, applyArgs) {\n return this._invokeTaskZS ?\n this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) :\n task.callback.apply(applyThis, applyArgs);\n };\n ZoneDelegate.prototype.cancelTask = function (targetZone, task) {\n var value;\n if (this._cancelTaskZS) {\n value = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, targetZone, task);\n }\n else {\n if (!task.cancelFn) {\n throw Error('Task is not cancelable');\n }\n value = task.cancelFn(task);\n }\n return value;\n };\n ZoneDelegate.prototype.hasTask = function (targetZone, isEmpty) {\n // hasTask should not throw error so other ZoneDelegate\n // can still trigger hasTask callback\n try {\n return this._hasTaskZS &&\n this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty);\n }\n catch (err) {\n this.handleError(targetZone, err);\n }\n };\n ZoneDelegate.prototype._updateTaskCount = function (type, count) {\n var counts = this._taskCounts;\n var prev = counts[type];\n var next = counts[type] = prev + count;\n if (next < 0) {\n throw new Error('More tasks executed then were scheduled.');\n }\n if (prev == 0 || next == 0) {\n var isEmpty = {\n microTask: counts.microTask > 0,\n macroTask: counts.macroTask > 0,\n eventTask: counts.eventTask > 0,\n change: type\n };\n this.hasTask(this.zone, isEmpty);\n }\n };\n return ZoneDelegate;\n }());\n var OPTIMIZED_ZONE_EVENT_TASK = Zone.__symbol__('optimizedZoneEventTask');\n var ZoneTask = (function () {\n function ZoneTask(type, source, callback, options, scheduleFn, cancelFn) {\n this._zone = null;\n this.runCount = 0;\n this._zoneDelegates = null;\n this._state = 'notScheduled';\n this.type = type;\n this.source = source;\n this.data = options;\n this.scheduleFn = scheduleFn;\n this.cancelFn = cancelFn;\n this.callback = callback;\n var self = this;\n if (type === eventTask && options === OPTIMIZED_ZONE_EVENT_TASK) {\n this.invoke = ZoneTask.invokeTask;\n }\n else {\n this.invoke = function () {\n return ZoneTask.invokeTask.apply(global, [self, this, arguments]);\n };\n }\n }\n ZoneTask.invokeTask = function (task, target, args) {\n if (!task) {\n task = this;\n }\n _numberOfNestedTaskFrames++;\n try {\n task.runCount++;\n return task.zone.runTask(task, target, args);\n }\n finally {\n if (_numberOfNestedTaskFrames == 1) {\n drainMicroTaskQueue();\n }\n _numberOfNestedTaskFrames--;\n }\n };\n Object.defineProperty(ZoneTask.prototype, \"zone\", {\n get: function () {\n return this._zone;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZoneTask.prototype, \"state\", {\n get: function () {\n return this._state;\n },\n enumerable: true,\n configurable: true\n });\n ZoneTask.prototype.cancelScheduleRequest = function () {\n this._transitionTo(notScheduled, scheduling);\n };\n ZoneTask.prototype._transitionTo = function (toState, fromState1, fromState2) {\n if (this._state === fromState1 || this._state === fromState2) {\n this._state = toState;\n if (toState == notScheduled) {\n this._zoneDelegates = null;\n }\n }\n else {\n throw new Error(this.type + \" '\" + this.source + \"': can not transition to '\" + toState + \"', expecting state '\" + fromState1 + \"'\" + (fromState2 ?\n ' or \\'' + fromState2 + '\\'' :\n '') + \", was '\" + this._state + \"'.\");\n }\n };\n ZoneTask.prototype.toString = function () {\n if (this.data && typeof this.data.handleId !== 'undefined') {\n return this.data.handleId;\n }\n else {\n return Object.prototype.toString.call(this);\n }\n };\n // add toJSON method to prevent cyclic error when\n // call JSON.stringify(zoneTask)\n ZoneTask.prototype.toJSON = function () {\n return {\n type: this.type,\n state: this.state,\n source: this.source,\n zone: this.zone.name,\n invoke: this.invoke,\n scheduleFn: this.scheduleFn,\n cancelFn: this.cancelFn,\n runCount: this.runCount,\n callback: this.callback\n };\n };\n return ZoneTask;\n }());\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n /// MICROTASK QUEUE\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n var symbolSetTimeout = __symbol__('setTimeout');\n var symbolPromise = __symbol__('Promise');\n var symbolThen = __symbol__('then');\n var _microTaskQueue = [];\n var _isDrainingMicrotaskQueue = false;\n function scheduleMicroTask(task) {\n // if we are not running in any task, and there has not been anything scheduled\n // we must bootstrap the initial task creation by manually scheduling the drain\n if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) {\n // We are not running in Task, so we need to kickstart the microtask queue.\n if (global[symbolPromise]) {\n global[symbolPromise].resolve(0)[symbolThen](drainMicroTaskQueue);\n }\n else {\n global[symbolSetTimeout](drainMicroTaskQueue, 0);\n }\n }\n task && _microTaskQueue.push(task);\n }\n function drainMicroTaskQueue() {\n if (!_isDrainingMicrotaskQueue) {\n _isDrainingMicrotaskQueue = true;\n while (_microTaskQueue.length) {\n var queue = _microTaskQueue;\n _microTaskQueue = [];\n for (var i = 0; i < queue.length; i++) {\n var task = queue[i];\n try {\n task.zone.runTask(task, null, null);\n }\n catch (error) {\n _api.onUnhandledError(error);\n }\n }\n }\n var showError = !Zone[__symbol__('ignoreConsoleErrorUncaughtError')];\n _api.microtaskDrainDone();\n _isDrainingMicrotaskQueue = false;\n }\n }\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n /// BOOTSTRAP\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n var NO_ZONE = { name: 'NO ZONE' };\n var notScheduled = 'notScheduled', scheduling = 'scheduling', scheduled = 'scheduled', running = 'running', canceling = 'canceling', unknown = 'unknown';\n var microTask = 'microTask', macroTask = 'macroTask', eventTask = 'eventTask';\n var patches = {};\n var _api = {\n symbol: __symbol__,\n currentZoneFrame: function () { return _currentZoneFrame; },\n onUnhandledError: noop,\n microtaskDrainDone: noop,\n scheduleMicroTask: scheduleMicroTask,\n showUncaughtError: function () { return !Zone[__symbol__('ignoreConsoleErrorUncaughtError')]; },\n patchEventTargetMethods: function () { return false; },\n patchOnProperties: noop,\n patchMethod: function () { return noop; },\n };\n var _currentZoneFrame = { parent: null, zone: new Zone(null, null) };\n var _currentTask = null;\n var _numberOfNestedTaskFrames = 0;\n function noop() { }\n function __symbol__(name) {\n return '__zone_symbol__' + name;\n }\n performanceMeasure('Zone', 'Zone');\n return global['Zone'] = Zone;\n})(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global);\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nZone.__load_patch('ZoneAwarePromise', function (global, Zone, api) {\n var __symbol__ = api.symbol;\n var _uncaughtPromiseErrors = [];\n var symbolPromise = __symbol__('Promise');\n var symbolThen = __symbol__('then');\n api.onUnhandledError = function (e) {\n if (api.showUncaughtError()) {\n var rejection = e && e.rejection;\n if (rejection) {\n console.error('Unhandled Promise rejection:', rejection instanceof Error ? rejection.message : rejection, '; Zone:', e.zone.name, '; Task:', e.task && e.task.source, '; Value:', rejection, rejection instanceof Error ? rejection.stack : undefined);\n }\n else {\n console.error(e);\n }\n }\n };\n api.microtaskDrainDone = function () {\n while (_uncaughtPromiseErrors.length) {\n var _loop_1 = function () {\n var uncaughtPromiseError = _uncaughtPromiseErrors.shift();\n try {\n uncaughtPromiseError.zone.runGuarded(function () {\n throw uncaughtPromiseError;\n });\n }\n catch (error) {\n handleUnhandledRejection(error);\n }\n };\n while (_uncaughtPromiseErrors.length) {\n _loop_1();\n }\n }\n };\n function handleUnhandledRejection(e) {\n api.onUnhandledError(e);\n try {\n var handler = Zone[__symbol__('unhandledPromiseRejectionHandler')];\n if (handler && typeof handler === 'function') {\n handler.apply(this, [e]);\n }\n }\n catch (err) {\n }\n }\n function isThenable(value) {\n return value && value.then;\n }\n function forwardResolution(value) {\n return value;\n }\n function forwardRejection(rejection) {\n return ZoneAwarePromise.reject(rejection);\n }\n var symbolState = __symbol__('state');\n var symbolValue = __symbol__('value');\n var source = 'Promise.then';\n var UNRESOLVED = null;\n var RESOLVED = true;\n var REJECTED = false;\n var REJECTED_NO_CATCH = 0;\n function makeResolver(promise, state) {\n return function (v) {\n try {\n resolvePromise(promise, state, v);\n }\n catch (err) {\n resolvePromise(promise, false, err);\n }\n // Do not return value or you will break the Promise spec.\n };\n }\n var once = function () {\n var wasCalled = false;\n return function wrapper(wrappedFunction) {\n return function () {\n if (wasCalled) {\n return;\n }\n wasCalled = true;\n wrappedFunction.apply(null, arguments);\n };\n };\n };\n // Promise Resolution\n function resolvePromise(promise, state, value) {\n var onceWrapper = once();\n if (promise === value) {\n throw new TypeError('Promise resolved with itself');\n }\n if (promise[symbolState] === UNRESOLVED) {\n // should only get value.then once based on promise spec.\n var then = null;\n try {\n if (typeof value === 'object' || typeof value === 'function') {\n then = value && value.then;\n }\n }\n catch (err) {\n onceWrapper(function () {\n resolvePromise(promise, false, err);\n })();\n return promise;\n }\n // if (value instanceof ZoneAwarePromise) {\n if (state !== REJECTED && value instanceof ZoneAwarePromise &&\n value.hasOwnProperty(symbolState) && value.hasOwnProperty(symbolValue) &&\n value[symbolState] !== UNRESOLVED) {\n clearRejectedNoCatch(value);\n resolvePromise(promise, value[symbolState], value[symbolValue]);\n }\n else if (state !== REJECTED && typeof then === 'function') {\n try {\n then.apply(value, [\n onceWrapper(makeResolver(promise, state)), onceWrapper(makeResolver(promise, false))\n ]);\n }\n catch (err) {\n onceWrapper(function () {\n resolvePromise(promise, false, err);\n })();\n }\n }\n else {\n promise[symbolState] = state;\n var queue = promise[symbolValue];\n promise[symbolValue] = value;\n // record task information in value when error occurs, so we can\n // do some additional work such as render longStackTrace\n if (state === REJECTED && value instanceof Error) {\n value[__symbol__('currentTask')] = Zone.currentTask;\n }\n for (var i = 0; i < queue.length;) {\n scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]);\n }\n if (queue.length == 0 && state == REJECTED) {\n promise[symbolState] = REJECTED_NO_CATCH;\n try {\n throw new Error('Uncaught (in promise): ' + value +\n (value && value.stack ? '\\n' + value.stack : ''));\n }\n catch (err) {\n var error_1 = err;\n error_1.rejection = value;\n error_1.promise = promise;\n error_1.zone = Zone.current;\n error_1.task = Zone.currentTask;\n _uncaughtPromiseErrors.push(error_1);\n api.scheduleMicroTask(); // to make sure that it is running\n }\n }\n }\n }\n // Resolving an already resolved promise is a noop.\n return promise;\n }\n function clearRejectedNoCatch(promise) {\n if (promise[symbolState] === REJECTED_NO_CATCH) {\n // if the promise is rejected no catch status\n // and queue.length > 0, means there is a error handler\n // here to handle the rejected promise, we should trigger\n // windows.rejectionhandled eventHandler or nodejs rejectionHandled\n // eventHandler\n try {\n var handler = Zone[__symbol__('rejectionHandledHandler')];\n if (handler && typeof handler === 'function') {\n handler.apply(this, [{ rejection: promise[symbolValue], promise: promise }]);\n }\n }\n catch (err) {\n }\n promise[symbolState] = REJECTED;\n for (var i = 0; i < _uncaughtPromiseErrors.length; i++) {\n if (promise === _uncaughtPromiseErrors[i].promise) {\n _uncaughtPromiseErrors.splice(i, 1);\n }\n }\n }\n }\n function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) {\n clearRejectedNoCatch(promise);\n var delegate = promise[symbolState] ?\n (typeof onFulfilled === 'function') ? onFulfilled : forwardResolution :\n (typeof onRejected === 'function') ? onRejected : forwardRejection;\n zone.scheduleMicroTask(source, function () {\n try {\n resolvePromise(chainPromise, true, zone.run(delegate, undefined, [promise[symbolValue]]));\n }\n catch (error) {\n resolvePromise(chainPromise, false, error);\n }\n });\n }\n var ZoneAwarePromise = (function () {\n function ZoneAwarePromise(executor) {\n var promise = this;\n if (!(promise instanceof ZoneAwarePromise)) {\n throw new Error('Must be an instanceof Promise.');\n }\n promise[symbolState] = UNRESOLVED;\n promise[symbolValue] = []; // queue;\n try {\n executor && executor(makeResolver(promise, RESOLVED), makeResolver(promise, REJECTED));\n }\n catch (error) {\n resolvePromise(promise, false, error);\n }\n }\n ZoneAwarePromise.toString = function () {\n return 'function ZoneAwarePromise() { [native code] }';\n };\n ZoneAwarePromise.resolve = function (value) {\n return resolvePromise(new this(null), RESOLVED, value);\n };\n ZoneAwarePromise.reject = function (error) {\n return resolvePromise(new this(null), REJECTED, error);\n };\n ZoneAwarePromise.race = function (values) {\n var resolve;\n var reject;\n var promise = new this(function (res, rej) {\n _a = [res, rej], resolve = _a[0], reject = _a[1];\n var _a;\n });\n function onResolve(value) {\n promise && (promise = null || resolve(value));\n }\n function onReject(error) {\n promise && (promise = null || reject(error));\n }\n for (var _i = 0, values_1 = values; _i < values_1.length; _i++) {\n var value = values_1[_i];\n if (!isThenable(value)) {\n value = this.resolve(value);\n }\n value.then(onResolve, onReject);\n }\n return promise;\n };\n ZoneAwarePromise.all = function (values) {\n var resolve;\n var reject;\n var promise = new this(function (res, rej) {\n resolve = res;\n reject = rej;\n });\n var count = 0;\n var resolvedValues = [];\n for (var _i = 0, values_2 = values; _i < values_2.length; _i++) {\n var value = values_2[_i];\n if (!isThenable(value)) {\n value = this.resolve(value);\n }\n value.then((function (index) { return function (value) {\n resolvedValues[index] = value;\n count--;\n if (!count) {\n resolve(resolvedValues);\n }\n }; })(count), reject);\n count++;\n }\n if (!count)\n resolve(resolvedValues);\n return promise;\n };\n ZoneAwarePromise.prototype.then = function (onFulfilled, onRejected) {\n var chainPromise = new this.constructor(null);\n var zone = Zone.current;\n if (this[symbolState] == UNRESOLVED) {\n this[symbolValue].push(zone, chainPromise, onFulfilled, onRejected);\n }\n else {\n scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected);\n }\n return chainPromise;\n };\n ZoneAwarePromise.prototype.catch = function (onRejected) {\n return this.then(null, onRejected);\n };\n return ZoneAwarePromise;\n }());\n // Protect against aggressive optimizers dropping seemingly unused properties.\n // E.g. Closure Compiler in advanced mode.\n ZoneAwarePromise['resolve'] = ZoneAwarePromise.resolve;\n ZoneAwarePromise['reject'] = ZoneAwarePromise.reject;\n ZoneAwarePromise['race'] = ZoneAwarePromise.race;\n ZoneAwarePromise['all'] = ZoneAwarePromise.all;\n var NativePromise = global[symbolPromise] = global['Promise'];\n global['Promise'] = ZoneAwarePromise;\n var symbolThenPatched = __symbol__('thenPatched');\n function patchThen(Ctor) {\n var proto = Ctor.prototype;\n var originalThen = proto.then;\n // Keep a reference to the original method.\n proto[symbolThen] = originalThen;\n Ctor.prototype.then = function (onResolve, onReject) {\n var _this = this;\n var wrapped = new ZoneAwarePromise(function (resolve, reject) {\n originalThen.call(_this, resolve, reject);\n });\n return wrapped.then(onResolve, onReject);\n };\n Ctor[symbolThenPatched] = true;\n }\n function zoneify(fn) {\n return function () {\n var resultPromise = fn.apply(this, arguments);\n if (resultPromise instanceof ZoneAwarePromise) {\n return resultPromise;\n }\n var ctor = resultPromise.constructor;\n if (!ctor[symbolThenPatched]) {\n patchThen(ctor);\n }\n return resultPromise;\n };\n }\n if (NativePromise) {\n patchThen(NativePromise);\n var fetch_1 = global['fetch'];\n if (typeof fetch_1 == 'function') {\n global['fetch'] = zoneify(fetch_1);\n }\n }\n // This is not part of public API, but it is useful for tests, so we expose it.\n Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors;\n return ZoneAwarePromise;\n});\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Suppress closure compiler errors about unknown 'Zone' variable\n * @fileoverview\n * @suppress {undefinedVars,globalThis}\n */\nvar zoneSymbol = Zone.__symbol__;\nvar _global$1 = typeof window === 'object' && window || typeof self === 'object' && self || global;\nfunction bindArguments(args, source) {\n for (var i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'function') {\n args[i] = Zone.current.wrap(args[i], source + '_' + i);\n }\n }\n return args;\n}\nfunction patchPrototype(prototype, fnNames) {\n var source = prototype.constructor['name'];\n var _loop_1 = function (i) {\n var name_1 = fnNames[i];\n var delegate = prototype[name_1];\n if (delegate) {\n prototype[name_1] = (function (delegate) {\n var patched = function () {\n return delegate.apply(this, bindArguments(arguments, source + '.' + name_1));\n };\n attachOriginToPatched(patched, delegate);\n return patched;\n })(delegate);\n }\n };\n for (var i = 0; i < fnNames.length; i++) {\n _loop_1(i);\n }\n}\nvar isWebWorker = (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope);\n// Make sure to access `process` through `_global` so that WebPack does not accidently browserify\n// this code.\nvar isNode = (!('nw' in _global$1) && typeof _global$1.process !== 'undefined' &&\n {}.toString.call(_global$1.process) === '[object process]');\nvar isBrowser = !isNode && !isWebWorker && !!(typeof window !== 'undefined' && window['HTMLElement']);\n// we are in electron of nw, so we are both browser and nodejs\n// Make sure to access `process` through `_global` so that WebPack does not accidently browserify\n// this code.\nvar isMix = typeof _global$1.process !== 'undefined' &&\n {}.toString.call(_global$1.process) === '[object process]' && !isWebWorker &&\n !!(typeof window !== 'undefined' && window['HTMLElement']);\nfunction patchProperty(obj, prop, prototype) {\n var desc = Object.getOwnPropertyDescriptor(obj, prop);\n if (!desc && prototype) {\n // when patch window object, use prototype to check prop exist or not\n var prototypeDesc = Object.getOwnPropertyDescriptor(prototype, prop);\n if (prototypeDesc) {\n desc = { enumerable: true, configurable: true };\n }\n }\n // if the descriptor not exists or is not configurable\n // just return\n if (!desc || !desc.configurable) {\n return;\n }\n // A property descriptor cannot have getter/setter and be writable\n // deleting the writable and value properties avoids this error:\n //\n // TypeError: property descriptors must not specify a value or be writable when a\n // getter or setter has been specified\n delete desc.writable;\n delete desc.value;\n var originalDescGet = desc.get;\n // substr(2) cuz 'onclick' -> 'click', etc\n var eventName = prop.substr(2);\n var _prop = zoneSymbol('_' + prop);\n desc.set = function (newValue) {\n // in some of windows's onproperty callback, this is undefined\n // so we need to check it\n var target = this;\n if (!target && obj === _global$1) {\n target = _global$1;\n }\n if (!target) {\n return;\n }\n var previousValue = target[_prop];\n if (previousValue) {\n target.removeEventListener(eventName, previousValue);\n }\n if (typeof newValue === 'function') {\n var wrapFn = function (event) {\n var result = newValue.apply(this, arguments);\n if (result != undefined && !result) {\n event.preventDefault();\n }\n return result;\n };\n target[_prop] = wrapFn;\n target.addEventListener(eventName, wrapFn, false);\n }\n else {\n target[_prop] = null;\n }\n };\n // The getter would return undefined for unassigned properties but the default value of an\n // unassigned property is null\n desc.get = function () {\n // in some of windows's onproperty callback, this is undefined\n // so we need to check it\n var target = this;\n if (!target && obj === _global$1) {\n target = _global$1;\n }\n if (!target) {\n return null;\n }\n if (target.hasOwnProperty(_prop)) {\n return target[_prop];\n }\n else if (originalDescGet) {\n // result will be null when use inline event attribute,\n // such as \n // because the onclick function is internal raw uncompiled handler\n // the onclick will be evaluated when first time event was triggered or\n // the property is accessed, https://github.com/angular/zone.js/issues/525\n // so we should use original native get to retrieve the handler\n var value = originalDescGet && originalDescGet.apply(this);\n if (value) {\n desc.set.apply(this, [value]);\n if (typeof target['removeAttribute'] === 'function') {\n target.removeAttribute(prop);\n }\n return value;\n }\n }\n return null;\n };\n Object.defineProperty(obj, prop, desc);\n}\nfunction patchOnProperties(obj, properties, prototype) {\n if (properties) {\n for (var i = 0; i < properties.length; i++) {\n patchProperty(obj, 'on' + properties[i], prototype);\n }\n }\n else {\n var onProperties = [];\n for (var prop in obj) {\n if (prop.substr(0, 2) == 'on') {\n onProperties.push(prop);\n }\n }\n for (var j = 0; j < onProperties.length; j++) {\n patchProperty(obj, onProperties[j], prototype);\n }\n }\n}\nvar originalInstanceKey = zoneSymbol('originalInstance');\n// wrap some native API on `window`\nfunction patchClass(className) {\n var OriginalClass = _global$1[className];\n if (!OriginalClass)\n return;\n // keep original class in global\n _global$1[zoneSymbol(className)] = OriginalClass;\n _global$1[className] = function () {\n var a = bindArguments(arguments, className);\n switch (a.length) {\n case 0:\n this[originalInstanceKey] = new OriginalClass();\n break;\n case 1:\n this[originalInstanceKey] = new OriginalClass(a[0]);\n break;\n case 2:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1]);\n break;\n case 3:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2]);\n break;\n case 4:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2], a[3]);\n break;\n default:\n throw new Error('Arg list too long.');\n }\n };\n // attach original delegate to patched function\n attachOriginToPatched(_global$1[className], OriginalClass);\n var instance = new OriginalClass(function () { });\n var prop;\n for (prop in instance) {\n // https://bugs.webkit.org/show_bug.cgi?id=44721\n if (className === 'XMLHttpRequest' && prop === 'responseBlob')\n continue;\n (function (prop) {\n if (typeof instance[prop] === 'function') {\n _global$1[className].prototype[prop] = function () {\n return this[originalInstanceKey][prop].apply(this[originalInstanceKey], arguments);\n };\n }\n else {\n Object.defineProperty(_global$1[className].prototype, prop, {\n set: function (fn) {\n if (typeof fn === 'function') {\n this[originalInstanceKey][prop] = Zone.current.wrap(fn, className + '.' + prop);\n // keep callback in wrapped function so we can\n // use it in Function.prototype.toString to return\n // the native one.\n attachOriginToPatched(this[originalInstanceKey][prop], fn);\n }\n else {\n this[originalInstanceKey][prop] = fn;\n }\n },\n get: function () {\n return this[originalInstanceKey][prop];\n }\n });\n }\n }(prop));\n }\n for (prop in OriginalClass) {\n if (prop !== 'prototype' && OriginalClass.hasOwnProperty(prop)) {\n _global$1[className][prop] = OriginalClass[prop];\n }\n }\n}\nfunction patchMethod(target, name, patchFn) {\n var proto = target;\n while (proto && !proto.hasOwnProperty(name)) {\n proto = Object.getPrototypeOf(proto);\n }\n if (!proto && target[name]) {\n // somehow we did not find it, but we can see it. This happens on IE for Window properties.\n proto = target;\n }\n var delegateName = zoneSymbol(name);\n var delegate;\n if (proto && !(delegate = proto[delegateName])) {\n delegate = proto[delegateName] = proto[name];\n var patchDelegate_1 = patchFn(delegate, delegateName, name);\n proto[name] = function () {\n return patchDelegate_1(this, arguments);\n };\n attachOriginToPatched(proto[name], delegate);\n }\n return delegate;\n}\n// TODO: @JiaLiPassion, support cancel task later if necessary\nfunction patchMacroTask(obj, funcName, metaCreator) {\n var setNative = null;\n function scheduleTask(task) {\n var data = task.data;\n data.args[data.callbackIndex] = function () {\n task.invoke.apply(this, arguments);\n };\n setNative.apply(data.target, data.args);\n return task;\n }\n setNative = patchMethod(obj, funcName, function (delegate) { return function (self, args) {\n var meta = metaCreator(self, args);\n if (meta.callbackIndex >= 0 && typeof args[meta.callbackIndex] === 'function') {\n var task = Zone.current.scheduleMacroTask(meta.name, args[meta.callbackIndex], meta, scheduleTask, null);\n return task;\n }\n else {\n // cause an error by calling it directly.\n return delegate.apply(self, args);\n }\n }; });\n}\n\nfunction attachOriginToPatched(patched, original) {\n patched[zoneSymbol('OriginalDelegate')] = original;\n}\nvar isDetectedIEOrEdge = false;\nvar ieOrEdge = false;\nfunction isIEOrEdge() {\n if (isDetectedIEOrEdge) {\n return ieOrEdge;\n }\n isDetectedIEOrEdge = true;\n try {\n var ua = window.navigator.userAgent;\n var msie = ua.indexOf('MSIE ');\n if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1 || ua.indexOf('Edge/') !== -1) {\n ieOrEdge = true;\n }\n return ieOrEdge;\n }\n catch (error) {\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// override Function.prototype.toString to make zone.js patched function\n// look like native function\nZone.__load_patch('toString', function (global, Zone, api) {\n // patch Func.prototype.toString to let them look like native\n var originalFunctionToString = Zone['__zone_symbol__originalToString'] =\n Function.prototype.toString;\n Function.prototype.toString = function () {\n if (typeof this === 'function') {\n var originalDelegate = this[zoneSymbol('OriginalDelegate')];\n if (originalDelegate) {\n if (typeof originalDelegate === 'function') {\n return originalFunctionToString.apply(this[zoneSymbol('OriginalDelegate')], arguments);\n }\n else {\n return Object.prototype.toString.call(originalDelegate);\n }\n }\n if (this === Promise) {\n var nativePromise = global[zoneSymbol('Promise')];\n if (nativePromise) {\n return originalFunctionToString.apply(nativePromise, arguments);\n }\n }\n if (this === Error) {\n var nativeError = global[zoneSymbol('Error')];\n if (nativeError) {\n return originalFunctionToString.apply(nativeError, arguments);\n }\n }\n }\n return originalFunctionToString.apply(this, arguments);\n };\n // patch Object.prototype.toString to let them look like native\n var originalObjectToString = Object.prototype.toString;\n Object.prototype.toString = function () {\n if (this instanceof Promise) {\n return '[object Promise]';\n }\n return originalObjectToString.apply(this, arguments);\n };\n});\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar TRUE_STR = 'true';\nvar FALSE_STR = 'false';\n// an identifier to tell ZoneTask do not create a new invoke closure\nvar OPTIMIZED_ZONE_EVENT_TASK = zoneSymbol('optimizedZoneEventTask');\nvar zoneSymbolEventNames = {};\nvar globalSources = {};\nvar CONSTRUCTOR_NAME = 'name';\nvar FUNCTION_TYPE = 'function';\nvar OBJECT_TYPE = 'object';\nvar ZONE_SYMBOL_PREFIX = '__zone_symbol__';\nvar EVENT_NAME_SYMBOL_REGX = /^__zone_symbol__(\\w+)(true|false)$/;\nvar invokeTask = function (task, target, event) {\n var delegate = task.callback;\n if (typeof delegate === OBJECT_TYPE && delegate.handleEvent) {\n // create the bind version of handleEvnet when invoke\n task.callback = function (event) { return delegate.handleEvent(event); };\n task.originalDelegate = delegate;\n }\n // invoke static task.invoke\n task.invoke(task, target, [event]);\n};\n// global shared zoneAwareCallback to handle all event callback with capture = false\nvar globalZoneAwareCallback = function (event) {\n var target = this || _global;\n var tasks = target[zoneSymbolEventNames[event.type][FALSE_STR]];\n if (tasks) {\n // invoke all tasks which attached to current target with given event.type and capture = false\n for (var i = 0; i < tasks.length; i++) {\n invokeTask(tasks[i], target, event);\n }\n }\n};\n// global shared zoneAwareCallback to handle all event callback with capture = true\nvar globalZoneAwareCaptureCallback = function (event) {\n var target = this || _global;\n var tasks = target[zoneSymbolEventNames[event.type][TRUE_STR]];\n if (tasks) {\n for (var i = 0; i < tasks.length; i++) {\n invokeTask(tasks[i], target, event);\n }\n }\n};\nfunction patchEventTargetMethods(obj, patchOptions) {\n if (!obj) {\n return false;\n }\n var ADD_EVENT_LISTENER = (patchOptions && patchOptions.addEventListenerFnName) || 'addEventListener';\n var REMOVE_EVENT_LISTENER = (patchOptions && patchOptions.removeEventListenerFnName) || 'removeEventListener';\n var LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.listenersFnName) || 'eventListeners';\n var REMOVE_ALL_LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.removeAllFnName) || 'removeAllListeners';\n var zoneSymbolAddEventListener = zoneSymbol(ADD_EVENT_LISTENER);\n var ADD_EVENT_LISTENER_SOURCE = '.' + ADD_EVENT_LISTENER + ':';\n var PREPEND_EVENT_LISTENER = 'prependListener';\n var PREPEND_EVENT_LISTENER_SOURCE = '.' + PREPEND_EVENT_LISTENER + ':';\n var useGlobalCallback = true;\n if (patchOptions && patchOptions.useGlobalCallback !== undefined) {\n useGlobalCallback = patchOptions.useGlobalCallback;\n }\n var validateHandler = patchOptions && patchOptions.validateHandler;\n var checkDuplicate = true;\n if (patchOptions && patchOptions.checkDuplicate !== undefined) {\n checkDuplicate = patchOptions.checkDuplicate;\n }\n var returnTarget = false;\n if (patchOptions && patchOptions.returnTarget !== undefined) {\n returnTarget = patchOptions.returnTarget;\n }\n var proto = obj;\n while (proto && !proto.hasOwnProperty(ADD_EVENT_LISTENER)) {\n proto = Object.getPrototypeOf(proto);\n }\n if (!proto && obj[ADD_EVENT_LISTENER]) {\n // somehow we did not find it, but we can see it. This happens on IE for Window properties.\n proto = obj;\n }\n if (!proto) {\n return false;\n }\n if (proto[zoneSymbolAddEventListener]) {\n return false;\n }\n // a shared global taskData to pass data for scheduleEventTask\n // so we do not need to create a new object just for pass some data\n var taskData = {};\n var nativeAddEventListener = proto[zoneSymbolAddEventListener] = proto[ADD_EVENT_LISTENER];\n var nativeRemoveEventListener = proto[zoneSymbol(REMOVE_EVENT_LISTENER)] =\n proto[REMOVE_EVENT_LISTENER];\n var nativeListeners = proto[zoneSymbol(LISTENERS_EVENT_LISTENER)] =\n proto[LISTENERS_EVENT_LISTENER];\n var nativeRemoveAllListeners = proto[zoneSymbol(REMOVE_ALL_LISTENERS_EVENT_LISTENER)] =\n proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER];\n var nativePrependEventListener;\n if (patchOptions && patchOptions.prependEventListenerFnName) {\n nativePrependEventListener = proto[zoneSymbol(patchOptions.prependEventListenerFnName)] =\n proto[patchOptions.prependEventListenerFnName];\n }\n var customScheduleGlobal = function (task) {\n // if there is already a task for the eventName + capture,\n // just return, because we use the shared globalZoneAwareCallback here.\n if (taskData.isExisting) {\n return;\n }\n return nativeAddEventListener.apply(taskData.target, [\n taskData.eventName,\n taskData.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, taskData.options\n ]);\n };\n var customCancelGlobal = function (task) {\n // if all tasks for the eventName + capture have gone,\n // we will really remove the global event callback,\n // if not, return\n if (!task.remove) {\n return;\n }\n return nativeRemoveEventListener.apply(task.target, [\n task.eventName, task.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback,\n task.options\n ]);\n };\n var customScheduleNonGlobal = function (task) {\n return nativeAddEventListener.apply(taskData.target, [taskData.eventName, task.invoke, taskData.options]);\n };\n var customSchedulePrepend = function (task) {\n return nativePrependEventListener.apply(taskData.target, [taskData.eventName, task.invoke, taskData.options]);\n };\n var customCancelNonGlobal = function (task) {\n return nativeRemoveEventListener.apply(task.target, [task.eventName, task.invoke, task.options]);\n };\n var customSchedule = useGlobalCallback ? customScheduleGlobal : customScheduleNonGlobal;\n var customCancel = useGlobalCallback ? customCancelGlobal : customCancelNonGlobal;\n var compareTaskCallbackVsDelegate = function (task, delegate) {\n var typeOfDelegate = typeof delegate;\n if ((typeOfDelegate === FUNCTION_TYPE && task.callback === delegate) ||\n (typeOfDelegate === OBJECT_TYPE && task.originalDelegate === delegate)) {\n // same callback, same capture, same event name, just return\n return true;\n }\n return false;\n };\n var compare = (patchOptions && patchOptions.compareTaskCallbackVsDelegate) ?\n patchOptions.compareTaskCallbackVsDelegate :\n compareTaskCallbackVsDelegate;\n var makeAddListener = function (nativeListener, addSource, customScheduleFn, customCancelFn, returnTarget, prepend) {\n if (returnTarget === void 0) { returnTarget = false; }\n if (prepend === void 0) { prepend = false; }\n return function () {\n var target = this || _global;\n var targetZone = Zone.current;\n var delegate = arguments[1];\n if (!delegate) {\n return nativeListener.apply(this, arguments);\n }\n // don't create the bind delegate function for handleEvent\n // case here to improve addEventListener performance\n // we will create the bind delegate when invoke\n var isHandleEvent = false;\n if (typeof delegate !== FUNCTION_TYPE) {\n if (!delegate.handleEvent) {\n return nativeListener.apply(this, arguments);\n }\n isHandleEvent = true;\n }\n if (validateHandler && !validateHandler(nativeListener, delegate, target, arguments)) {\n return;\n }\n var eventName = arguments[0];\n var options = arguments[2];\n var capture;\n if (options === undefined) {\n capture = false;\n }\n else if (options === true) {\n capture = true;\n }\n else if (options === false) {\n capture = false;\n }\n else {\n capture = options ? !!options.capture : false;\n }\n var zone = Zone.current;\n var symbolEventNames = zoneSymbolEventNames[eventName];\n var symbolEventName;\n if (!symbolEventNames) {\n // the code is duplicate, but I just want to get some better performance\n var falseEventName = eventName + FALSE_STR;\n var trueEventName = eventName + TRUE_STR;\n var symbol = ZONE_SYMBOL_PREFIX + falseEventName;\n var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;\n zoneSymbolEventNames[eventName] = {};\n zoneSymbolEventNames[eventName][FALSE_STR] = symbol;\n zoneSymbolEventNames[eventName][TRUE_STR] = symbolCapture;\n symbolEventName = capture ? symbolCapture : symbol;\n }\n else {\n symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR];\n }\n var existingTasks = target[symbolEventName];\n var isExisting = false;\n if (existingTasks) {\n // already have task registered\n isExisting = true;\n if (checkDuplicate) {\n for (var i = 0; i < existingTasks.length; i++) {\n if (compare(existingTasks[i], delegate)) {\n // same callback, same capture, same event name, just return\n return;\n }\n }\n }\n }\n else {\n existingTasks = target[symbolEventName] = [];\n }\n var source;\n var constructorName = target.constructor[CONSTRUCTOR_NAME];\n var targetSource = globalSources[constructorName];\n if (targetSource) {\n source = targetSource[eventName];\n }\n if (!source) {\n source = constructorName + addSource + eventName;\n }\n // do not create a new object as task.data to pass those things\n // just use the global shared one\n taskData.options = options;\n taskData.target = target;\n taskData.capture = capture;\n taskData.eventName = eventName;\n taskData.isExisting = isExisting;\n var data = useGlobalCallback ? OPTIMIZED_ZONE_EVENT_TASK : null;\n var task = zone.scheduleEventTask(source, delegate, data, customScheduleFn, customCancelFn);\n // have to save those information to task in case\n // application may call task.zone.cancelTask() directly\n task.options = options;\n task.target = target;\n task.capture = capture;\n task.eventName = eventName;\n if (isHandleEvent) {\n // save original delegate for compare to check duplicate\n task.originalDelegate = delegate;\n }\n if (!prepend) {\n existingTasks.push(task);\n }\n else {\n existingTasks.unshift(task);\n }\n if (returnTarget) {\n return target;\n }\n };\n };\n proto[ADD_EVENT_LISTENER] = makeAddListener(nativeAddEventListener, ADD_EVENT_LISTENER_SOURCE, customSchedule, customCancel, returnTarget);\n if (nativePrependEventListener) {\n proto[PREPEND_EVENT_LISTENER] = makeAddListener(nativePrependEventListener, PREPEND_EVENT_LISTENER_SOURCE, customSchedulePrepend, customCancel, returnTarget, true);\n }\n proto[REMOVE_EVENT_LISTENER] = function () {\n var target = this || _global;\n var eventName = arguments[0];\n var options = arguments[2];\n var capture;\n if (options === undefined) {\n capture = false;\n }\n else if (options === true) {\n capture = true;\n }\n else if (options === false) {\n capture = false;\n }\n else {\n capture = options ? !!options.capture : false;\n }\n var delegate = arguments[1];\n if (!delegate) {\n return nativeRemoveEventListener.apply(this, arguments);\n }\n if (validateHandler &&\n !validateHandler(nativeRemoveEventListener, delegate, target, arguments)) {\n return;\n }\n var symbolEventNames = zoneSymbolEventNames[eventName];\n var symbolEventName;\n if (symbolEventNames) {\n symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR];\n }\n var existingTasks = symbolEventName && target[symbolEventName];\n if (existingTasks) {\n for (var i = 0; i < existingTasks.length; i++) {\n var existingTask = existingTasks[i];\n var typeOfDelegate = typeof delegate;\n if (compare(existingTask, delegate)) {\n existingTasks.splice(i, 1);\n if (existingTasks.length === 0) {\n // all tasks for the eventName + capture have gone,\n // remove globalZoneAwareCallback and remove the task cache from target\n existingTask.remove = true;\n target[symbolEventName] = null;\n }\n existingTask.zone.cancelTask(existingTask);\n return;\n }\n }\n }\n };\n proto[LISTENERS_EVENT_LISTENER] = function () {\n var target = this || _global;\n var eventName = arguments[0];\n var listeners = [];\n var tasks = findEventTasks(target, eventName);\n for (var i = 0; i < tasks.length; i++) {\n var task = tasks[i];\n var delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n listeners.push(delegate);\n }\n return listeners;\n };\n proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER] = function () {\n var target = this || _global;\n var eventName = arguments[0];\n if (!eventName) {\n var keys = Object.keys(target);\n for (var i = 0; i < keys.length; i++) {\n var prop = keys[i];\n var match = EVENT_NAME_SYMBOL_REGX.exec(prop);\n var evtName = match && match[1];\n if (evtName && evtName !== 'removeListener') {\n this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].apply(this, [evtName]);\n }\n }\n this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].apply(this, ['removeListener']);\n }\n else {\n var symbolEventNames = zoneSymbolEventNames[eventName];\n if (symbolEventNames) {\n var symbolEventName = symbolEventNames[FALSE_STR];\n var symbolCaptureEventName = symbolEventNames[TRUE_STR];\n var tasks = target[symbolEventName];\n var captureTasks = target[symbolCaptureEventName];\n if (tasks) {\n var removeTasks = tasks.slice();\n for (var i = 0; i < removeTasks.length; i++) {\n var task = removeTasks[i];\n var delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n this[REMOVE_EVENT_LISTENER].apply(this, [eventName, delegate, task.options]);\n }\n }\n if (captureTasks) {\n var removeTasks = captureTasks.slice();\n for (var i = 0; i < removeTasks.length; i++) {\n var task = removeTasks[i];\n var delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n this[REMOVE_EVENT_LISTENER].apply(this, [eventName, delegate, task.options]);\n }\n }\n }\n }\n };\n // for native toString patch\n attachOriginToPatched(proto[ADD_EVENT_LISTENER], nativeAddEventListener);\n attachOriginToPatched(proto[REMOVE_EVENT_LISTENER], nativeRemoveEventListener);\n if (nativeRemoveAllListeners) {\n attachOriginToPatched(proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER], nativeRemoveAllListeners);\n }\n if (nativeListeners) {\n attachOriginToPatched(proto[LISTENERS_EVENT_LISTENER], nativeListeners);\n }\n return true;\n}\nfunction findEventTasks(target, eventName) {\n var foundTasks = [];\n for (var prop in target) {\n var match = EVENT_NAME_SYMBOL_REGX.exec(prop);\n var evtName = match && match[1];\n if (evtName && (!eventName || evtName === eventName)) {\n var tasks = target[prop];\n if (tasks) {\n for (var i = 0; i < tasks.length; i++) {\n foundTasks.push(tasks[i]);\n }\n }\n }\n }\n return foundTasks;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction patchTimer(window, setName, cancelName, nameSuffix) {\n var setNative = null;\n var clearNative = null;\n setName += nameSuffix;\n cancelName += nameSuffix;\n var tasksByHandleId = {};\n function scheduleTask(task) {\n var data = task.data;\n function timer() {\n try {\n task.invoke.apply(this, arguments);\n }\n finally {\n if (typeof data.handleId === 'number') {\n // Node returns complex objects as handleIds\n delete tasksByHandleId[data.handleId];\n }\n }\n }\n data.args[0] = timer;\n data.handleId = setNative.apply(window, data.args);\n if (typeof data.handleId === 'number') {\n // Node returns complex objects as handleIds -> no need to keep them around. Additionally,\n // this throws an\n // exception in older node versions and has no effect there, because of the stringified key.\n tasksByHandleId[data.handleId] = task;\n }\n return task;\n }\n function clearTask(task) {\n if (typeof task.data.handleId === 'number') {\n // Node returns complex objects as handleIds\n delete tasksByHandleId[task.data.handleId];\n }\n return clearNative(task.data.handleId);\n }\n setNative =\n patchMethod(window, setName, function (delegate) { return function (self, args) {\n if (typeof args[0] === 'function') {\n var zone = Zone.current;\n var options = {\n handleId: null,\n isPeriodic: nameSuffix === 'Interval',\n delay: (nameSuffix === 'Timeout' || nameSuffix === 'Interval') ? args[1] || 0 : null,\n args: args\n };\n var task = zone.scheduleMacroTask(setName, args[0], options, scheduleTask, clearTask);\n if (!task) {\n return task;\n }\n // Node.js must additionally support the ref and unref functions.\n var handle = task.data.handleId;\n // check whether handle is null, because some polyfill or browser\n // may return undefined from setTimeout/setInterval/setImmediate/requestAnimationFrame\n if (handle && handle.ref && handle.unref && typeof handle.ref === 'function' &&\n typeof handle.unref === 'function') {\n task.ref = handle.ref.bind(handle);\n task.unref = handle.unref.bind(handle);\n }\n return task;\n }\n else {\n // cause an error by calling it directly.\n return delegate.apply(window, args);\n }\n }; });\n clearNative =\n patchMethod(window, cancelName, function (delegate) { return function (self, args) {\n var task = typeof args[0] === 'number' ? tasksByHandleId[args[0]] : args[0];\n if (task && typeof task.type === 'string') {\n if (task.state !== 'notScheduled' &&\n (task.cancelFn && task.data.isPeriodic || task.runCount === 0)) {\n // Do not cancel already canceled functions\n task.zone.cancelTask(task);\n }\n }\n else {\n // cause an error by calling it directly.\n delegate.apply(window, args);\n }\n }; });\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/*\n * This is necessary for Chrome and Chrome mobile, to enable\n * things like redefining `createdCallback` on an element.\n */\nvar _defineProperty = Object[zoneSymbol('defineProperty')] = Object.defineProperty;\nvar _getOwnPropertyDescriptor = Object[zoneSymbol('getOwnPropertyDescriptor')] =\n Object.getOwnPropertyDescriptor;\nvar _create = Object.create;\nvar unconfigurablesKey = zoneSymbol('unconfigurables');\nfunction propertyPatch() {\n Object.defineProperty = function (obj, prop, desc) {\n if (isUnconfigurable(obj, prop)) {\n throw new TypeError('Cannot assign to read only property \\'' + prop + '\\' of ' + obj);\n }\n var originalConfigurableFlag = desc.configurable;\n if (prop !== 'prototype') {\n desc = rewriteDescriptor(obj, prop, desc);\n }\n return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag);\n };\n Object.defineProperties = function (obj, props) {\n Object.keys(props).forEach(function (prop) {\n Object.defineProperty(obj, prop, props[prop]);\n });\n return obj;\n };\n Object.create = function (obj, proto) {\n if (typeof proto === 'object' && !Object.isFrozen(proto)) {\n Object.keys(proto).forEach(function (prop) {\n proto[prop] = rewriteDescriptor(obj, prop, proto[prop]);\n });\n }\n return _create(obj, proto);\n };\n Object.getOwnPropertyDescriptor = function (obj, prop) {\n var desc = _getOwnPropertyDescriptor(obj, prop);\n if (isUnconfigurable(obj, prop)) {\n desc.configurable = false;\n }\n return desc;\n };\n}\nfunction _redefineProperty(obj, prop, desc) {\n var originalConfigurableFlag = desc.configurable;\n desc = rewriteDescriptor(obj, prop, desc);\n return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag);\n}\nfunction isUnconfigurable(obj, prop) {\n return obj && obj[unconfigurablesKey] && obj[unconfigurablesKey][prop];\n}\nfunction rewriteDescriptor(obj, prop, desc) {\n desc.configurable = true;\n if (!desc.configurable) {\n if (!obj[unconfigurablesKey]) {\n _defineProperty(obj, unconfigurablesKey, { writable: true, value: {} });\n }\n obj[unconfigurablesKey][prop] = true;\n }\n return desc;\n}\nfunction _tryDefineProperty(obj, prop, desc, originalConfigurableFlag) {\n try {\n return _defineProperty(obj, prop, desc);\n }\n catch (error) {\n if (desc.configurable) {\n // In case of errors, when the configurable flag was likely set by rewriteDescriptor(), let's\n // retry with the original flag value\n if (typeof originalConfigurableFlag == 'undefined') {\n delete desc.configurable;\n }\n else {\n desc.configurable = originalConfigurableFlag;\n }\n try {\n return _defineProperty(obj, prop, desc);\n }\n catch (error) {\n var descJson = null;\n try {\n descJson = JSON.stringify(desc);\n }\n catch (error) {\n descJson = descJson.toString();\n }\n console.log(\"Attempting to configure '\" + prop + \"' with descriptor '\" + descJson + \"' on object '\" + obj + \"' and got error, giving up: \" + error);\n }\n }\n else {\n throw error;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// we have to patch the instance since the proto is non-configurable\nfunction apply(_global) {\n var WS = _global.WebSocket;\n // On Safari window.EventTarget doesn't exist so need to patch WS add/removeEventListener\n // On older Chrome, no need since EventTarget was already patched\n if (!_global.EventTarget) {\n patchEventTargetMethods(WS.prototype);\n }\n _global.WebSocket = function (a, b) {\n var socket = arguments.length > 1 ? new WS(a, b) : new WS(a);\n var proxySocket;\n var proxySocketProto;\n // Safari 7.0 has non-configurable own 'onmessage' and friends properties on the socket instance\n var onmessageDesc = Object.getOwnPropertyDescriptor(socket, 'onmessage');\n if (onmessageDesc && onmessageDesc.configurable === false) {\n proxySocket = Object.create(socket);\n // socket have own property descriptor 'onopen', 'onmessage', 'onclose', 'onerror'\n // but proxySocket not, so we will keep socket as prototype and pass it to\n // patchOnProperties method\n proxySocketProto = socket;\n ['addEventListener', 'removeEventListener', 'send', 'close'].forEach(function (propName) {\n proxySocket[propName] = function () {\n return socket[propName].apply(socket, arguments);\n };\n });\n }\n else {\n // we can patch the real socket\n proxySocket = socket;\n }\n patchOnProperties(proxySocket, ['close', 'error', 'message', 'open'], proxySocketProto);\n return proxySocket;\n };\n for (var prop in WS) {\n _global['WebSocket'][prop] = WS[prop];\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar globalEventHandlersEventNames = [\n 'abort',\n 'animationcancel',\n 'animationend',\n 'animationiteration',\n 'auxclick',\n 'beforeinput',\n 'blur',\n 'cancel',\n 'canplay',\n 'canplaythrough',\n 'change',\n 'compositionstart',\n 'compositionupdate',\n 'compositionend',\n 'cuechange',\n 'click',\n 'close',\n 'contextmenu',\n 'curechange',\n 'dblclick',\n 'drag',\n 'dragend',\n 'dragenter',\n 'dragexit',\n 'dragleave',\n 'dragover',\n 'drop',\n 'durationchange',\n 'emptied',\n 'ended',\n 'error',\n 'focus',\n 'focusin',\n 'focusout',\n 'gotpointercapture',\n 'input',\n 'invalid',\n 'keydown',\n 'keypress',\n 'keyup',\n 'load',\n 'loadstart',\n 'loadeddata',\n 'loadedmetadata',\n 'lostpointercapture',\n 'mousedown',\n 'mouseenter',\n 'mouseleave',\n 'mousemove',\n 'mouseout',\n 'mouseover',\n 'mouseup',\n 'mousewheel',\n 'pause',\n 'play',\n 'playing',\n 'pointercancel',\n 'pointerdown',\n 'pointerenter',\n 'pointerleave',\n 'pointerlockchange',\n 'mozpointerlockchange',\n 'webkitpointerlockerchange',\n 'pointerlockerror',\n 'mozpointerlockerror',\n 'webkitpointerlockerror',\n 'pointermove',\n 'pointout',\n 'pointerover',\n 'pointerup',\n 'progress',\n 'ratechange',\n 'reset',\n 'resize',\n 'scroll',\n 'seeked',\n 'seeking',\n 'select',\n 'selectionchange',\n 'selectstart',\n 'show',\n 'sort',\n 'stalled',\n 'submit',\n 'suspend',\n 'timeupdate',\n 'volumechange',\n 'touchcancel',\n 'touchmove',\n 'touchstart',\n 'transitioncancel',\n 'transitionend',\n 'waiting',\n 'wheel'\n];\nvar documentEventNames = [\n 'afterscriptexecute', 'beforescriptexecute', 'DOMContentLoaded', 'fullscreenchange',\n 'mozfullscreenchange', 'webkitfullscreenchange', 'msfullscreenchange', 'fullscreenerror',\n 'mozfullscreenerror', 'webkitfullscreenerror', 'msfullscreenerror', 'readystatechange'\n];\nvar windowEventNames = [\n 'absolutedeviceorientation',\n 'afterinput',\n 'afterprint',\n 'appinstalled',\n 'beforeinstallprompt',\n 'beforeprint',\n 'beforeunload',\n 'devicelight',\n 'devicemotion',\n 'deviceorientation',\n 'deviceorientationabsolute',\n 'deviceproximity',\n 'hashchange',\n 'languagechange',\n 'message',\n 'mozbeforepaint',\n 'offline',\n 'online',\n 'paint',\n 'pageshow',\n 'pagehide',\n 'popstate',\n 'rejectionhandled',\n 'storage',\n 'unhandledrejection',\n 'unload',\n 'userproximity',\n 'vrdisplyconnected',\n 'vrdisplaydisconnected',\n 'vrdisplaypresentchange'\n];\nvar htmlElementEventNames = [\n 'beforecopy', 'beforecut', 'beforepaste', 'copy', 'cut', 'paste', 'dragstart', 'loadend',\n 'animationstart', 'search', 'transitionrun', 'transitionstart', 'webkitanimationend',\n 'webkitanimationiteration', 'webkitanimationstart', 'webkittransitionend'\n];\nvar mediaElementEventNames = ['encrypted', 'waitingforkey', 'msneedkey', 'mozinterruptbegin', 'mozinterruptend'];\nvar ieElementEventNames = [\n 'activate',\n 'afterupdate',\n 'ariarequest',\n 'beforeactivate',\n 'beforedeactivate',\n 'beforeeditfocus',\n 'beforeupdate',\n 'cellchange',\n 'controlselect',\n 'dataavailable',\n 'datasetchanged',\n 'datasetcomplete',\n 'errorupdate',\n 'filterchange',\n 'layoutcomplete',\n 'losecapture',\n 'move',\n 'moveend',\n 'movestart',\n 'propertychange',\n 'resizeend',\n 'resizestart',\n 'rowenter',\n 'rowexit',\n 'rowsdelete',\n 'rowsinserted',\n 'command',\n 'compassneedscalibration',\n 'deactivate',\n 'help',\n 'mscontentzoom',\n 'msmanipulationstatechanged',\n 'msgesturechange',\n 'msgesturedoubletap',\n 'msgestureend',\n 'msgesturehold',\n 'msgesturestart',\n 'msgesturetap',\n 'msgotpointercapture',\n 'msinertiastart',\n 'mslostpointercapture',\n 'mspointercancel',\n 'mspointerdown',\n 'mspointerenter',\n 'mspointerhover',\n 'mspointerleave',\n 'mspointermove',\n 'mspointerout',\n 'mspointerover',\n 'mspointerup',\n 'pointerout',\n 'mssitemodejumplistitemremoved',\n 'msthumbnailclick',\n 'stop',\n 'storagecommit'\n];\nvar webglEventNames = ['webglcontextrestored', 'webglcontextlost', 'webglcontextcreationerror'];\nvar formEventNames = ['autocomplete', 'autocompleteerror'];\nvar detailEventNames = ['toggle'];\nvar frameEventNames = ['load'];\nvar frameSetEventNames = ['blur', 'error', 'focus', 'load', 'resize', 'scroll'];\nvar marqueeEventNames = ['bounce', 'finish', 'start'];\nvar XMLHttpRequestEventNames = [\n 'loadstart', 'progress', 'abort', 'error', 'load', 'progress', 'timeout', 'loadend',\n 'readystatechange'\n];\nvar IDBIndexEventNames = ['upgradeneeded', 'complete', 'abort', 'success', 'error', 'blocked', 'versionchange', 'close'];\nvar websocketEventNames = ['close', 'error', 'open', 'message'];\nvar eventNames = globalEventHandlersEventNames.concat(webglEventNames, formEventNames, detailEventNames, documentEventNames, windowEventNames, htmlElementEventNames, ieElementEventNames);\nfunction propertyDescriptorPatch(_global) {\n if (isNode && !isMix) {\n return;\n }\n var supportsWebSocket = typeof WebSocket !== 'undefined';\n if (canPatchViaPropertyDescriptor()) {\n // for browsers that we can patch the descriptor: Chrome & Firefox\n if (isBrowser) {\n // in IE/Edge, onProp not exist in window object, but in WindowPrototype\n // so we need to pass WindowPrototype to check onProp exist or not\n patchOnProperties(window, eventNames, Object.getPrototypeOf(window));\n patchOnProperties(Document.prototype, eventNames);\n if (typeof window['SVGElement'] !== 'undefined') {\n patchOnProperties(window['SVGElement'].prototype, eventNames);\n }\n patchOnProperties(Element.prototype, eventNames);\n patchOnProperties(HTMLElement.prototype, eventNames);\n patchOnProperties(HTMLMediaElement.prototype, mediaElementEventNames);\n patchOnProperties(HTMLFrameSetElement.prototype, windowEventNames.concat(frameSetEventNames));\n patchOnProperties(HTMLBodyElement.prototype, windowEventNames.concat(frameSetEventNames));\n patchOnProperties(HTMLFrameElement.prototype, frameEventNames);\n patchOnProperties(HTMLIFrameElement.prototype, frameEventNames);\n var HTMLMarqueeElement_1 = window['HTMLMarqueeElement'];\n if (HTMLMarqueeElement_1) {\n patchOnProperties(HTMLMarqueeElement_1.prototype, marqueeEventNames);\n }\n }\n patchOnProperties(XMLHttpRequest.prototype, XMLHttpRequestEventNames);\n var XMLHttpRequestEventTarget = _global['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget) {\n patchOnProperties(XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype, XMLHttpRequestEventNames);\n }\n if (typeof IDBIndex !== 'undefined') {\n patchOnProperties(IDBIndex.prototype, IDBIndexEventNames);\n patchOnProperties(IDBRequest.prototype, IDBIndexEventNames);\n patchOnProperties(IDBOpenDBRequest.prototype, IDBIndexEventNames);\n patchOnProperties(IDBDatabase.prototype, IDBIndexEventNames);\n patchOnProperties(IDBTransaction.prototype, IDBIndexEventNames);\n patchOnProperties(IDBCursor.prototype, IDBIndexEventNames);\n }\n if (supportsWebSocket) {\n patchOnProperties(WebSocket.prototype, websocketEventNames);\n }\n }\n else {\n // Safari, Android browsers (Jelly Bean)\n patchViaCapturingAllTheEvents();\n patchClass('XMLHttpRequest');\n if (supportsWebSocket) {\n apply(_global);\n }\n }\n}\nfunction canPatchViaPropertyDescriptor() {\n if ((isBrowser || isMix) && !Object.getOwnPropertyDescriptor(HTMLElement.prototype, 'onclick') &&\n typeof Element !== 'undefined') {\n // WebKit https://bugs.webkit.org/show_bug.cgi?id=134364\n // IDL interface attributes are not configurable\n var desc = Object.getOwnPropertyDescriptor(Element.prototype, 'onclick');\n if (desc && !desc.configurable)\n return false;\n }\n var xhrDesc = Object.getOwnPropertyDescriptor(XMLHttpRequest.prototype, 'onreadystatechange');\n // add enumerable and configurable here because in opera\n // by default XMLHttpRequest.prototype.onreadystatechange is undefined\n // without adding enumerable and configurable will cause onreadystatechange\n // non-configurable\n // and if XMLHttpRequest.prototype.onreadystatechange is undefined,\n // we should set a real desc instead a fake one\n if (xhrDesc) {\n Object.defineProperty(XMLHttpRequest.prototype, 'onreadystatechange', {\n enumerable: true,\n configurable: true,\n get: function () {\n return true;\n }\n });\n var req = new XMLHttpRequest();\n var result = !!req.onreadystatechange;\n // restore original desc\n Object.defineProperty(XMLHttpRequest.prototype, 'onreadystatechange', xhrDesc || {});\n return result;\n }\n else {\n Object.defineProperty(XMLHttpRequest.prototype, 'onreadystatechange', {\n enumerable: true,\n configurable: true,\n get: function () {\n return this[zoneSymbol('fakeonreadystatechange')];\n },\n set: function (value) {\n this[zoneSymbol('fakeonreadystatechange')] = value;\n }\n });\n var req = new XMLHttpRequest();\n var detectFunc = function () { };\n req.onreadystatechange = detectFunc;\n var result = req[zoneSymbol('fakeonreadystatechange')] === detectFunc;\n req.onreadystatechange = null;\n return result;\n }\n}\n\nvar unboundKey = zoneSymbol('unbound');\n// Whenever any eventListener fires, we check the eventListener target and all parents\n// for `onwhatever` properties and replace them with zone-bound functions\n// - Chrome (for now)\nfunction patchViaCapturingAllTheEvents() {\n var _loop_1 = function (i) {\n var property = eventNames[i];\n var onproperty = 'on' + property;\n self.addEventListener(property, function (event) {\n var elt = event.target, bound, source;\n if (elt) {\n source = elt.constructor['name'] + '.' + onproperty;\n }\n else {\n source = 'unknown.' + onproperty;\n }\n while (elt) {\n if (elt[onproperty] && !elt[onproperty][unboundKey]) {\n bound = Zone.current.wrap(elt[onproperty], source);\n bound[unboundKey] = elt[onproperty];\n elt[onproperty] = bound;\n }\n elt = elt.parentElement;\n }\n }, true);\n };\n for (var i = 0; i < eventNames.length; i++) {\n _loop_1(i);\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction eventTargetPatch(_global, api) {\n var WTF_ISSUE_555 = 'Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Canvas,Content,DList,Directory,Div,Embed,FieldSet,Font,Form,Frame,FrameSet,HR,Head,Heading,Html,IFrame,Image,Input,Keygen,LI,Label,Legend,Link,Map,Marquee,Media,Menu,Meta,Meter,Mod,OList,Object,OptGroup,Option,Output,Paragraph,Pre,Progress,Quote,Script,Select,Source,Span,Style,TableCaption,TableCell,TableCol,Table,TableRow,TableSection,TextArea,Title,Track,UList,Unknown,Video';\n var NO_EVENT_TARGET = 'ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Window,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex,WebSocket'\n .split(',');\n var EVENT_TARGET = 'EventTarget';\n var apis = [];\n var isWtf = _global['wtf'];\n var WTF_ISSUE_555_ARRAY = WTF_ISSUE_555.split(',');\n if (isWtf) {\n // Workaround for: https://github.com/google/tracing-framework/issues/555\n apis = WTF_ISSUE_555_ARRAY.map(function (v) { return 'HTML' + v + 'Element'; }).concat(NO_EVENT_TARGET);\n }\n else if (_global[EVENT_TARGET]) {\n apis.push(EVENT_TARGET);\n }\n else {\n // Note: EventTarget is not available in all browsers,\n // if it's not available, we instead patch the APIs in the IDL that inherit from EventTarget\n apis = NO_EVENT_TARGET;\n }\n var isDisableIECheck = _global['__Zone_disable_IE_check'] || false;\n var isEnableCrossContextCheck = _global['__Zone_enable_cross_context_check'] || false;\n var ieOrEdge = isIEOrEdge();\n var ADD_EVENT_LISTENER_SOURCE = '.addEventListener:';\n var FUNCTION_WRAPPER = '[object FunctionWrapper]';\n var BROWSER_TOOLS = 'function __BROWSERTOOLS_CONSOLE_SAFEFUNC() { [native code] }';\n // predefine all __zone_symbol__ + eventName + true/false string\n for (var i = 0; i < eventNames.length; i++) {\n var eventName = eventNames[i];\n var falseEventName = eventName + FALSE_STR;\n var trueEventName = eventName + TRUE_STR;\n var symbol = ZONE_SYMBOL_PREFIX + falseEventName;\n var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;\n zoneSymbolEventNames[eventName] = {};\n zoneSymbolEventNames[eventName][FALSE_STR] = symbol;\n zoneSymbolEventNames[eventName][TRUE_STR] = symbolCapture;\n }\n // predefine all task.source string\n for (var i = 0; i < WTF_ISSUE_555.length; i++) {\n var target = WTF_ISSUE_555_ARRAY[i];\n var targets = globalSources[target] = {};\n for (var j = 0; j < eventNames.length; j++) {\n var eventName = eventNames[j];\n targets[eventName] = target + ADD_EVENT_LISTENER_SOURCE + eventName;\n }\n }\n var checkIEAndCrossContext = function (nativeDelegate, delegate, target, args) {\n if (!isDisableIECheck && ieOrEdge) {\n if (isEnableCrossContextCheck) {\n try {\n var testString = delegate.toString();\n if ((testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS)) {\n nativeDelegate.apply(target, args);\n return false;\n }\n }\n catch (error) {\n nativeDelegate.apply(target, args);\n return false;\n }\n }\n else {\n var testString = delegate.toString();\n if ((testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS)) {\n nativeDelegate.apply(target, args);\n return false;\n }\n }\n }\n else if (isEnableCrossContextCheck) {\n try {\n delegate.toString();\n }\n catch (error) {\n nativeDelegate.apply(target, args);\n return false;\n }\n }\n return true;\n };\n for (var i = 0; i < apis.length; i++) {\n var type = _global[apis[i]];\n patchEventTargetMethods(type && type.prototype, { validateHandler: checkIEAndCrossContext });\n }\n api.patchEventTargetMethods = patchEventTargetMethods;\n return true;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction registerElementPatch(_global) {\n if ((!isBrowser && !isMix) || !('registerElement' in _global.document)) {\n return;\n }\n var _registerElement = document.registerElement;\n var callbacks = ['createdCallback', 'attachedCallback', 'detachedCallback', 'attributeChangedCallback'];\n document.registerElement = function (name, opts) {\n if (opts && opts.prototype) {\n callbacks.forEach(function (callback) {\n var source = 'Document.registerElement::' + callback;\n if (opts.prototype.hasOwnProperty(callback)) {\n var descriptor = Object.getOwnPropertyDescriptor(opts.prototype, callback);\n if (descriptor && descriptor.value) {\n descriptor.value = Zone.current.wrap(descriptor.value, source);\n _redefineProperty(opts.prototype, callback, descriptor);\n }\n else {\n opts.prototype[callback] = Zone.current.wrap(opts.prototype[callback], source);\n }\n }\n else if (opts.prototype[callback]) {\n opts.prototype[callback] = Zone.current.wrap(opts.prototype[callback], source);\n }\n });\n }\n return _registerElement.apply(document, [name, opts]);\n };\n attachOriginToPatched(document.registerElement, _registerElement);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nZone.__load_patch('timers', function (global, Zone, api) {\n var set = 'set';\n var clear = 'clear';\n patchTimer(global, set, clear, 'Timeout');\n patchTimer(global, set, clear, 'Interval');\n patchTimer(global, set, clear, 'Immediate');\n patchTimer(global, 'request', 'cancel', 'AnimationFrame');\n patchTimer(global, 'mozRequest', 'mozCancel', 'AnimationFrame');\n patchTimer(global, 'webkitRequest', 'webkitCancel', 'AnimationFrame');\n});\nZone.__load_patch('blocking', function (global, Zone, api) {\n var blockingMethods = ['alert', 'prompt', 'confirm'];\n for (var i = 0; i < blockingMethods.length; i++) {\n var name_1 = blockingMethods[i];\n patchMethod(global, name_1, function (delegate, symbol, name) {\n return function (s, args) {\n return Zone.current.run(delegate, global, args, name);\n };\n });\n }\n});\nZone.__load_patch('EventTarget', function (global, Zone, api) {\n eventTargetPatch(global, api);\n // patch XMLHttpRequestEventTarget's addEventListener/removeEventListener\n var XMLHttpRequestEventTarget = global['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype) {\n // TODO: @JiaLiPassion, add this back later.\n api.patchEventTargetMethods(XMLHttpRequestEventTarget.prototype);\n }\n patchClass('MutationObserver');\n patchClass('WebKitMutationObserver');\n patchClass('FileReader');\n});\nZone.__load_patch('on_property', function (global, Zone, api) {\n propertyDescriptorPatch(global);\n propertyPatch();\n registerElementPatch(global);\n});\nZone.__load_patch('canvas', function (global, Zone, api) {\n var HTMLCanvasElement = global['HTMLCanvasElement'];\n if (typeof HTMLCanvasElement !== 'undefined' && HTMLCanvasElement.prototype &&\n HTMLCanvasElement.prototype.toBlob) {\n patchMacroTask(HTMLCanvasElement.prototype, 'toBlob', function (self, args) {\n return { name: 'HTMLCanvasElement.toBlob', target: self, callbackIndex: 0, args: args };\n });\n }\n});\nZone.__load_patch('XHR', function (global, Zone, api) {\n // Treat XMLHTTPRequest as a macrotask.\n patchXHR(global);\n var XHR_TASK = zoneSymbol('xhrTask');\n var XHR_SYNC = zoneSymbol('xhrSync');\n var XHR_LISTENER = zoneSymbol('xhrListener');\n var XHR_SCHEDULED = zoneSymbol('xhrScheduled');\n function patchXHR(window) {\n function findPendingTask(target) {\n var pendingTask = target[XHR_TASK];\n return pendingTask;\n }\n function scheduleTask(task) {\n XMLHttpRequest[XHR_SCHEDULED] = false;\n var data = task.data;\n // remove existing event listener\n var listener = data.target[XHR_LISTENER];\n var oriAddListener = data.target[zoneSymbol('addEventListener')];\n var oriRemoveListener = data.target[zoneSymbol('removeEventListener')];\n if (listener) {\n oriRemoveListener.apply(data.target, ['readystatechange', listener]);\n }\n var newListener = data.target[XHR_LISTENER] = function () {\n if (data.target.readyState === data.target.DONE) {\n // sometimes on some browsers XMLHttpRequest will fire onreadystatechange with\n // readyState=4 multiple times, so we need to check task state here\n if (!data.aborted && XMLHttpRequest[XHR_SCHEDULED] &&\n task.state === 'scheduled') {\n task.invoke();\n }\n }\n };\n oriAddListener.apply(data.target, ['readystatechange', newListener]);\n var storedTask = data.target[XHR_TASK];\n if (!storedTask) {\n data.target[XHR_TASK] = task;\n }\n sendNative.apply(data.target, data.args);\n XMLHttpRequest[XHR_SCHEDULED] = true;\n return task;\n }\n function placeholderCallback() { }\n function clearTask(task) {\n var data = task.data;\n // Note - ideally, we would call data.target.removeEventListener here, but it's too late\n // to prevent it from firing. So instead, we store info for the event listener.\n data.aborted = true;\n return abortNative.apply(data.target, data.args);\n }\n var openNative = patchMethod(window.XMLHttpRequest.prototype, 'open', function () { return function (self, args) {\n self[XHR_SYNC] = args[2] == false;\n return openNative.apply(self, args);\n }; });\n var sendNative = patchMethod(window.XMLHttpRequest.prototype, 'send', function () { return function (self, args) {\n var zone = Zone.current;\n if (self[XHR_SYNC]) {\n // if the XHR is sync there is no task to schedule, just execute the code.\n return sendNative.apply(self, args);\n }\n else {\n var options = { target: self, isPeriodic: false, delay: null, args: args, aborted: false };\n return zone.scheduleMacroTask('XMLHttpRequest.send', placeholderCallback, options, scheduleTask, clearTask);\n }\n }; });\n var abortNative = patchMethod(window.XMLHttpRequest.prototype, 'abort', function (delegate) { return function (self, args) {\n var task = findPendingTask(self);\n if (task && typeof task.type == 'string') {\n // If the XHR has already completed, do nothing.\n // If the XHR has already been aborted, do nothing.\n // Fix #569, call abort multiple times before done will cause\n // macroTask task count be negative number\n if (task.cancelFn == null || (task.data && task.data.aborted)) {\n return;\n }\n task.zone.cancelTask(task);\n }\n // Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no\n // task\n // to cancel. Do nothing.\n }; });\n }\n});\nZone.__load_patch('geolocation', function (global, Zone, api) {\n /// GEO_LOCATION\n if (global['navigator'] && global['navigator'].geolocation) {\n patchPrototype(global['navigator'].geolocation, ['getCurrentPosition', 'watchPosition']);\n }\n});\nZone.__load_patch('PromiseRejectionEvent', function (global, Zone, api) {\n // handle unhandled promise rejection\n function findPromiseRejectionHandler(evtName) {\n return function (e) {\n var eventTasks = findEventTasks(global, evtName);\n eventTasks.forEach(function (eventTask) {\n // windows has added unhandledrejection event listener\n // trigger the event listener\n var PromiseRejectionEvent = global['PromiseRejectionEvent'];\n if (PromiseRejectionEvent) {\n var evt = new PromiseRejectionEvent(evtName, { promise: e.promise, reason: e.rejection });\n eventTask.invoke(evt);\n }\n });\n };\n }\n if (global['PromiseRejectionEvent']) {\n Zone[zoneSymbol('unhandledPromiseRejectionHandler')] =\n findPromiseRejectionHandler('unhandledrejection');\n Zone[zoneSymbol('rejectionHandledHandler')] =\n findPromiseRejectionHandler('rejectionhandled');\n }\n});\nZone.__load_patch('util', function (global, Zone, api) {\n api.patchOnProperties = patchOnProperties;\n api.patchMethod = patchMethod;\n});\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/proj/todomvc-angular-4/~/zone.js/dist/zone.js\n// module id = ../../../../zone.js/dist/zone.js\n// module chunks = 0"],"sourceRoot":"webpack:///"} \ No newline at end of file diff --git a/examples/angular4/dist/styles.bundle.js b/examples/angular4/dist/styles.bundle.js new file mode 100644 index 0000000000..6d2a814cf2 --- /dev/null +++ b/examples/angular4/dist/styles.bundle.js @@ -0,0 +1,390 @@ +webpackJsonp([2],{ + +/***/ "../../../../../src/styles.css": +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a + + + + +
+ + +
+
+

Double-click to edit a todo

+

Part of TodoMVC

+
+ + + \ No newline at end of file diff --git a/examples/flavour/index_files/base.css b/examples/flavour/index_files/base.css new file mode 100644 index 0000000000..da65968a73 --- /dev/null +++ b/examples/flavour/index_files/base.css @@ -0,0 +1,141 @@ +hr { + margin: 20px 0; + border: 0; + border-top: 1px dashed #c5c5c5; + border-bottom: 1px dashed #f7f7f7; +} + +.learn a { + font-weight: normal; + text-decoration: none; + color: #b83f45; +} + +.learn a:hover { + text-decoration: underline; + color: #787e7e; +} + +.learn h3, +.learn h4, +.learn h5 { + margin: 10px 0; + font-weight: 500; + line-height: 1.2; + color: #000; +} + +.learn h3 { + font-size: 24px; +} + +.learn h4 { + font-size: 18px; +} + +.learn h5 { + margin-bottom: 0; + font-size: 14px; +} + +.learn ul { + padding: 0; + margin: 0 0 30px 25px; +} + +.learn li { + line-height: 20px; +} + +.learn p { + font-size: 15px; + font-weight: 300; + line-height: 1.3; + margin-top: 0; + margin-bottom: 0; +} + +#issue-count { + display: none; +} + +.quote { + border: none; + margin: 20px 0 60px 0; +} + +.quote p { + font-style: italic; +} + +.quote p:before { + content: '“'; + font-size: 50px; + opacity: .15; + position: absolute; + top: -20px; + left: 3px; +} + +.quote p:after { + content: '”'; + font-size: 50px; + opacity: .15; + position: absolute; + bottom: -42px; + right: 3px; +} + +.quote footer { + position: absolute; + bottom: -40px; + right: 0; +} + +.quote footer img { + border-radius: 3px; +} + +.quote footer a { + margin-left: 5px; + vertical-align: middle; +} + +.speech-bubble { + position: relative; + padding: 10px; + background: rgba(0, 0, 0, .04); + border-radius: 5px; +} + +.speech-bubble:after { + content: ''; + position: absolute; + top: 100%; + right: 30px; + border: 13px solid transparent; + border-top-color: rgba(0, 0, 0, .04); +} + +.learn-bar > .learn { + position: absolute; + width: 272px; + top: 8px; + left: -300px; + padding: 10px; + border-radius: 5px; + background-color: rgba(255, 255, 255, .6); + transition-property: left; + transition-duration: 500ms; +} + +@media (min-width: 899px) { + .learn-bar { + width: auto; + padding-left: 300px; + } + + .learn-bar > .learn { + left: 8px; + } +} diff --git a/examples/flavour/index_files/classes.js b/examples/flavour/index_files/classes.js new file mode 100644 index 0000000000..00f53ce27b --- /dev/null +++ b/examples/flavour/index_files/classes.js @@ -0,0 +1,1458 @@ +"use strict"; +function $rt_cls(cls){return A(cls);} +function $rt_str(str) {if (str === null) {return null;}var characters = $rt_createCharArray(str.length);var charsBuffer = characters.data;for (var i = 0; i < str.length; i = (i + 1) | 0) {charsBuffer[i] = str.charCodeAt(i) & 0xFFFF;}return B(characters);} +function $rt_ustr(str) {if (str === null) {return null;}var result = "";var sz = C(str);var array = $rt_createCharArray(sz);D(str, 0, sz, array, 0);for (var i = 0; i < sz; i = (i + 1) | 0) {result += String.fromCharCode(array.data[i]);}return result;} +function $rt_objcls() { return E; } +function $rt_nullCheck(val) {if (val === null) {$rt_throw(F());}return val;} +function $rt_intern(str) {return G(str);} +function $rt_getThread(){return H();} +function $rt_setThread(t){return I(t);} +var IP=$rt_throw;var JP=$rt_compare;var KP=$rt_nullCheck;var LP=$rt_cls;var MP=$rt_createArray;var NP=$rt_isInstance;var OP=$rt_nativeThread;var PP=$rt_suspending;var QP=$rt_resuming;var RP=$rt_invalidPointer;var SP=$rt_s; +function E(){this.$id$=0;} +function TP(){var $r=new E();OB($r);return $r;} +function OB($t){return;} +function Su($t){return A($t.constructor);} +function Zy($t){return Ro($t);} +function Bp($t,a){return $t!==a?0:1;} +function Nw($t){return Yv(Up(Up(Up(UP(),JK(Su($t))),SP(0)),BL(Ro($t))));} +function Ro($t){var a;a=$t;if(a.$id$==0){a.$id$=$rt_nextId();}return $t.$id$;} +function SK($t){var a,b,c;if(NP($t,Nb)==0&&$t.constructor.$meta.item===null){IP(VP());}a=KM($t);b=a;c=$rt_nextId();b.$id$=c;return a;} +function TO(a){return a;} +function U(){E.call(this);} +function Bh(){E.call(this);this.We=null;} +function WP(b){var $r=new Bh();CD($r,b);return $r;} +function UB($t){return Tz($t.We);} +function CD($t,a){OB($t);$t.We=a;} +function Rb(){var a=this;E.call(a);a.Hf=null;a.oe=false;a.Jk=false;a.eg=null;} +function XP(){var $r=new Rb();ME($r);return $r;} +function YP(b){var $r=new Rb();JI($r,b);return $r;} +function ME($t){$t.oe=1;$t.Jk=1;KC($t);} +function JI($t,a){$t.oe=1;$t.Jk=1;KC($t);$t.Hf=a;} +function KC($t){return $t;} +function Kq($t){return $t.eg===null?MP(Qn,0):$t.eg.Nk();} +function VE($t,a){$t.eg=a.Nk();} +function Z(){Rb.call(this);} +function ZP(){var $r=new Z();Uw($r);return $r;} +function AQ(b){var $r=new Z();Ep($r,b);return $r;} +function Uw($t){ME($t);} +function Ep($t,a){JI($t,a);} +function L(){Z.call(this);} +function BQ(){var $r=new L();Xq($r);return $r;} +function CQ(b){var $r=new L();OG($r,b);return $r;} +function Xq($t){Uw($t);} +function OG($t,a){Ep($t,a);} +function Pc(){L.call(this);} +function DQ(){var $r=new Pc();Yw($r);return $r;} +function Yw($t){Xq($t);} +function Ah(){E.call(this);this.Kc=null;} +function EQ(b){var $r=new Ah();Wu($r,b);return $r;} +function Nz($t){return FQ(GQ($t.Kc));} +function Wu($t,a){OB($t);$t.Kc=a;} +function Ug(){E.call(this);this.Lj=null;} +function HQ(b){var $r=new Ug();EG($r,b);return $r;} +function Tz($t){return FQ(IQ($t.Lj));} +function EG($t,a){OB($t);$t.Lj=a;} +function Eb(){E.call(this);} +function Wg(){var a=this;E.call(a);a.He=null;a.Fe=null;} +function JQ(b,c){var $r=new Wg();Io($r,b,c);return $r;} +function Et($t){return FQ(KQ(LQ(),$t.He,$t.Fe));} +function Io($t,a,b){OB($t);$t.He=a;$t.Fe=b;} +function P(){E.call(this);} +function He(){E.call(this);} +function Vg(){E.call(this);this.Rj=null;} +function MQ(b){var $r=new Vg();MB($r,b);return $r;} +function LI($t){return FQ(NQ($t.Rj));} +function MB($t,a){OB($t);$t.Rj=a;} +function Q(){E.call(this);} +function Sc(){E.call(this);} +function OQ(){var $r=new Sc();LH($r);return $r;} +function LH($t){OB($t);} +function Db(){E.call(this);} +function Cd(){Sc.call(this);this.xj=0;} +var PQ=null;var QQ=null;function Cd_$callClinit(){Cd_$callClinit=function(){}; +JB();} +function RQ(b){var $r=new Cd();Jk($r,b);return $r;} +function Jk($t,a){Cd_$callClinit();LH($t);$t.xj=a;} +function Ty(a,b){Cd_$callClinit();if(!(b>=2&&b<=36)){b=10;}return Tq(Ls(SQ(20),a,b));} +function BL(a){Cd_$callClinit();return Ty(a,16);} +function Qv(a){Cd_$callClinit();return Ty(a,10);} +function Rt(a){Cd_$callClinit();if(a>= -128&&a<=127){Mt();return QQ.data[a+128|0];}return RQ(a);} +function Mt(){var a;Cd_$callClinit();if(QQ===null){QQ=MP(Cd,256);a=0;while(a=$t.bf){a.vf.removeChild(b[c]);c=c+ -1|0;}}a=$t.dd;Gz(a.nk,$t.ah);d=$t.Zb-$t.bf|0;c=$t.ah;while(c=0&&a<=$t.mi){if(b===null){b=EJ(SP(6));}else if(DJ(b)!=0){return $t;}QK($t,$t.mi+C(b)|0);c=$t.mi-1|0;while(c>=a){$t.Xd.data[c+C(b)|0]=$t.Xd.data[c];c=c+ -1|0;}$t.mi=$t.mi+C(b)|0;c=0;while(cb){j=g;break a;}h=h+1|0;if(j>i){break;}g=j;}}if(d==0){h=h+1|0;}Is($t,a,a+h|0);if(d!=0){d=a;}else{e=$t.Xd.data;d=a+1|0;e[a]=45;}while(j>0){e=$t.Xd.data;a=d+1|0;e[d]=EK(b/j|0,c);b=b%j|0;j=j/c|0;d=a;}}return $t;} +function OH($t,a){return Aq($t,$t.mi,a);} +function TB($t,a,b){return HL($t,a,EJ(b===null?SP(6):Nw(b)));} +function Yu($t,a){if($t.Xd.data.length>=a){return;}$t.Xd=TM($t.Xd,$t.Xd.data.length>=1073741823?2147483647:RO(a,RO($t.Xd.data.length*2|0,5)));} +function Tq($t){return CS($t.Xd,0,$t.mi);} +function Is($t,a,b){var c,d;c=$t.mi-a|0;Yu($t,($t.mi+b|0)-a|0);d=c-1|0;while(d>=0){$t.Xd.data[b+d|0]=$t.Xd.data[a+d|0];d=d+ -1|0;}$t.mi=$t.mi+(b-a|0)|0;} +function Kv(){var a,b,c,d,e,f,g,h;a=$rt_createFloatArray(6);b=a.data;b[0]=10.0;b[1]=100.0;b[2]=10000.0;b[3]=1.0E8;b[4]=1.00000003E16;b[5]=1.0E32;SR=a;c=$rt_createDoubleArray(9);d=c.data;d[0]=10.0;d[1]=100.0;d[2]=10000.0;d[3]=1.0E8;d[4]=1.0E16;d[5]=1.0E32;d[6]=1.0E64;d[7]=1.0E128;d[8]=1.0E256;TR=c;a=$rt_createFloatArray(6);b=a.data;b[0]=0.1;b[1]=0.01;b[2]=1.0E-4;b[3]=1.0E-8;b[4]=1.0E-16;b[5]=1.0E-32;UR=a;c=$rt_createDoubleArray(9);d=c.data;d[0]=0.1;d[1]=0.01;d[2]=1.0E-4;d[3]=1.0E-8;d[4]=1.0E-16;d[5]=1.0E-32;d[6] +=1.0E-64;d[7]=1.0E-128;d[8]=1.0E-256;VR=c;e=$rt_createIntArray(10);f=e.data;f[0]=1;f[1]=10;f[2]=100;f[3]=1000;f[4]=10000;f[5]=100000;f[6]=1000000;f[7]=10000000;f[8]=100000000;f[9]=1000000000;WR=e;g=$rt_createLongArray(19);h=g.data;h[0]=Long_fromInt(1);h[1]=Long_fromInt(10);h[2]=Long_fromInt(100);h[3]=Long_fromInt(1000);h[4]=Long_fromInt(10000);h[5]=Long_fromInt(100000);h[6]=Long_fromInt(1000000);h[7]=Long_fromInt(10000000);h[8]=Long_fromInt(100000000);h[9]=Long_fromInt(1000000000);h[10]=new Long(1410065408, 2);h[11] +=new Long(1215752192, 23);h[12]=new Long(3567587328, 232);h[13]=new Long(1316134912, 2328);h[14]=new Long(276447232, 23283);h[15]=new Long(2764472320, 232830);h[16]=new Long(1874919424, 2328306);h[17]=new Long(1569325056, 23283064);h[18]=new Long(2808348672, 232830643);XR=g;g=$rt_createLongArray(6);h=g.data;h[0]=Long_fromInt(1);h[1]=Long_fromInt(10);h[2]=Long_fromInt(100);h[3]=Long_fromInt(10000);h[4]=Long_fromInt(100000000);h[5]=new Long(1874919424, 2328306);YR=g;} +function Ye(){E.call(this);} +function Qg(){S.call(this);} +function UP(){var $r=new Qg();OI($r);return $r;} +function DS(b){var $r=new Qg();Xp($r,b);return $r;} +function OI($t){Ri($t);} +function Xp($t,a){Cn($t,a);} +function Up($t,a){Du($t,a);return $t;} +function Eq($t,a){OH($t,a);return $t;} +function TJ($t,a,b){TB($t,a,b);return $t;} +function GK($t,a,b){CA($t,a,b);return $t;} +function Yv($t){return Tq($t);} +function QK($t,a){Yu($t,a);} +function Aq($t,a,b){return TJ($t,a,b);} +function HL($t,a,b){return GK($t,a,b);} +function M(){E.call(this);this.yk=null;} +function ES(b){var $r=new M();IG($r,b);return $r;} +function IG($t,a){OB($t);$t.yk=a;} +function HF($t){Dv($t.yk);} +function My($t){return $t.yk;} +function N(){E.call(this);} +function Fh(){E.call(this);this.Ye=null;} +function FS(b){var $r=new Fh();RL($r,b);return $r;} +function RL($t,a){OB($t);$t.Ye=a;} +function Ps($t,a){Lt($t,a);} +function Lt($t,a){GM($t.Ye,a);} +function Ol(){L.call(this);} +function GS(){var $r=new Ol();IK($r);return $r;} +function IK($t){Xq($t);} +function Cc(){E.call(this);} +function Gd(){Cc.call(this);} +function Nk(){var a=this;E.call(a);a.fc=null;a.Zj=0;} +function Qd(){L.call(this);} +function HS(b){var $r=new Qd();Iw($r,b);return $r;} +function Iw($t,a){OG($t,a);} +function Pf(){Qd.call(this);} +function IS(b){var $r=new Pf();MD($r,b);return $r;} +function MD($t,a){Iw($t,a);} +function Ib(){E.call(this);} +function Rm(){E.call(this);} +function JS(){var $r=new Rm();QE($r);return $r;} +function DM($t,a,b){return AP(a,b);} +function QE($t){OB($t);} +function K(){E.call(this);} +function Qm(){E.call(this);} +function KS(){var $r=new Qm();Ns($r);return $r;} +function Vz($t,a,b){var c;a=a;c={};a=a;NC(a,b);b=Sp(b);a=b===null?null:Hs(LS(JS()),a,b);b=c;a=a;b["data"]=a;return c;} +function Ns($t){OB($t);} +function Sm(){E.call(this);} +function MS(){var $r=new Sm();DF($r);return $r;} +function Uq($t,a,b){var c,d;a=a;c={};NC(a,b);a=!!(!!Fr(b));d=c;a=a;d["completed"]=a;a=$rt_ustr(Es(b));d["title"]=a;return c;} +function DF($t){OB($t);} +function Nf(){var a=this;E.call(a);a.tj=null;a.lc=null;a.ih=null;a.Wf=null;a.Ek=null;a.Tj=null;} +function NS(){var $r=new Nf();ZA($r);return $r;} +function OS(b){var $r=new Nf();Wp($r,b);return $r;} +function ZA($t){Wp($t,window);} +function Wp($t,a){OB($t);$t.lc=PS();$t.Tj=QS($t);PD($t,a);} +function PD($t,a){if($t.tj===null){$t.tj=a;GO(a,$t.Tj);return;}IP(RS(SP(7)));} +function By($t,a){if(Np($t.lc,a)==0){Py($t.lc,a);}return $t;} +function Ey($t){var a;if(DJ($rt_str($t.tj.location.hash))==0&&YF($rt_str($t.tj.location.hash),SP(1))==0){a=SB($t.lc);while(true){if(Dr(a)==0){if($t.ih!==null){$t.ih.fb();}return;}if(Jr(DE(a),$t.tj)!=0){break;}}NK();return;}TL($t.Ek,$t.Wf);} +function Lo($t,a,b){$t.Wf=WO(a);$t.Ek=b;return $t;} +function AG($t,a){Ey($t);} +function Td(){E.call(this);} +function SS(){var $r=new Td();HG($r);return $r;} +function HG($t){OB($t);} +function Hs($t,a,b){if(b!==null){return AM($t,a,b);}return null;} +function Pk(){Td.call(this);this.Ue=null;} +function LS(b){var $r=new Pk();BD($r,b);return $r;} +function BD($t,a){HG($t);$t.Ue=a;} +function AM($t,a,b){var c,d;c=[];b=SB(b);while(Dr(b)!=0){d=DE(b);d=DM($t.Ue,a,d);c.push(d);}return c;} +function Qn(){E.call(this);} +function Bf(){E.call(this);} +function Yr($t,a){return So($t,a,0,C(a),0);} +function T(){E.call(this);} +function TS(){var $r=new T();Ts($r);return $r;} +function Ts($t){OB($t);} +function Le(){E.call(this);} +function Lf(){var a=this;E.call(a);a.be=0;a.bh=null;a.uh=null;} +function US(b,c,d){var $r=new Lf();Vu($r,b,c,d);return $r;} +function Vu($t,a,b,c){OB($t);$t.be=a;$t.bh=b;$t.uh=c;} +function WE($t){return $t.be;} +function Bj(){E.call(this);} +function VS(){var $r=new Bj();MK($r);return $r;} +function LR(b){var $r=new Bj();ZJ($r,b);return $r;} +function KB($t){return Dw();} +function MK($t){OB($t);} +function ZJ($t,a){MK($t);} +function Vc(){Gd.call(this);} +function Yc(){Vc.call(this);} +function Jd(){Yc.call(this);} +function Hd(){Jd.call(this);} +function SN(a){var b,c;a:{EP(a,SP(8));if(C(a)!=0){b:{b=FP(a);if(NP(b,Kb)!=0&&b.G()!=0){c=1;}else{b=Os(b);while(Cs(b)!=0){if(SM(Nt(a,Ev(b)))==0){c=0;break b;}}c=1;}}if(c==0){c=0;break a;}}c=1;}return c;} +function Ud(){Hd.call(this);} +function YM(a){var b,c,d,e;EP(a,SP(8));b=0;c=C(a)-1|0;d=0;a:{while(true){if(b>c){break a;}e=SM(Nt(a,d!=0?c:b));if(d!=0){if(e==0){break;}c=c-1|0;}else if(e==0){d=1;}else{b=b+1|0;}}}return PB(a,b,c+1|0);} +function FP(a){EP(a,SP(8));return WS(0,C(a)-1|0);} +function Od(){Ud.call(this);} +function Vl(){Od.call(this);} +function O(){E.call(this);this.Uc=0;} +function XS(b){var $r=new O();DI($r,b);return $r;} +function DI($t,a){OB($t);$t.Uc=a;} +function Fb(){E.call(this);} +function Ue(){O.call(this);} +var YS=null;function Ue_$callClinit(){Ue_$callClinit=function(){}; +Wo();} +function ZS(){var $r=new Ue();Sg($r);return $r;} +function VC($t,a){return Ox(Aw($t,a));} +function Aw($t,a){EP(a,SP(9));return Fr(a)!=0?0:1;} +function Sg($t){Ue_$callClinit();DI($t,1);} +function Wo(){YS=ZS();} +function Pb(){Sb.call(this);} +function AT(b){var $r=new Pb();SE($r,b);return $r;} +function SE($t,a){Cq($t,a);} +function Ul(){Pb.call(this);} +function BT(b){var $r=new Ul();Tx($r,b);return $r;} +function Tx($t,a){SE($t,a);} +function Je(){E.call(this);} +function Ln(){E.call(this);this.Ic=null;} +function CT(b){var $r=new Ln();WB($r,b);return $r;} +function FH($t,a,b){var c,d,e;c=$t.Ic;a=a;b=b;d=WE(PA(c,a));e=0;if((d!=0?0:1)!=0){Fv(b);e=1;}else if((d!=1?0:1)!=0){DB(b);e=1;}else if((d!=2?0:1)!=0){Or(b);e=1;}return e;} +function SA($t,a){return DT(a);} +function WB($t,a){OB($t);$t.Ic=a;} +function Kk(){M.call(this);this.zj=null;} +function ET(b,c){var $r=new Kk();Un($r,b,c);return $r;} +function Un($t,a,b){IG($t,a);$t.zj=b;LG(a,My(b));} +function IL($t){Kr($t.zj);} +function Zu($t){YI($t.zj);HF($t);QB(Rw(),$t);} +function Lc(){E.call(this);} +function FT(){var $r=new Lc();BH($r);return $r;} +function BH($t){OB($t);} +function SG($t,a){Mo($t,a);} +function Xe(){var a=this;Lc.call(a);a.Jc=null;a.Oj=null;a.nb=null;a.Mk=null;a.ql=null;a.jl=false;a.Ud=null;a.te=null;} +var GT=null;function Xe_$callClinit(){Xe_$callClinit=function(){}; +Zv();} +function HT(b){var $r=new Xe();Mf($r,b);return $r;} +function KA($t){return $t.Jc;} +function WC($t){var a,b,c,d;a=$t.Jc;b=$t.Oj;c=PS();a=SB(a);while(Dr(a)!=0){d=DE(a);if(ZE(b.x(d))!=0){Py(c,d);}}return c;} +function NE($t){return $t.nb;} +function Fw($t,a){EP(a,SP(10));$t.nb=a;} +function Hv($t){return $t.Mk;} +function UI($t){return $t.jl;} +function Js($t){return $t.Ud;} +function Vr($t){var a,b;a=KA($t);if(NP(a,Kb)!=0&&AB(a)!=0){b=0;}else{b=0;a=SB(a);while(Dr(a)!=0){if((Fr(DE(a))!=0?0:1)!=0){b=b+1|0;}}}return b;} +function EB($t){var a,b;a=KA($t);if(NP(a,Kb)!=0&&AB(a)!=0){b=0;}else{b=0;a=SB(a);while(Dr(a)!=0){if(Fr(DE(a))!=0){b=b+1|0;}}}return b;} +function TH($t){var a,b;a:{a=KA($t);if(NP(a,Kb)!=0&&AB(a)!=0){b=1;}else{a=SB(a);while(Dr(a)!=0){if(Fr(DE(a))==0){b=0;break a;}}b=1;}}return b;} +function Yt($t,a){var b;b=SB(KA($t));while(Dr(b)!=0){XJ(DE(b),a);}} +function Zq($t){var a,b;if(SN($t.nb)!=0){return;}a=$t.te;b=IT();Yo(b,$t.nb);XL(a,b);$t.nb=SP(11);Vs($t);} +function Cp($t,a){EP(a,SP(5));$t.Mk=a;$t.ql=Es(a);} +function PJ($t,a){EP(a,SP(5));if($t.Mk===null){return;}Yo(a,$t.ql);$t.Mk=null;Vs($t);} +function LA($t,a){var b,c;EP(a,SP(5));b=$t.Mk;if(b===null){return;}c=Es(b);if(c===null){IP(IS(SP(12)));}Yo(a,Kw(YM(c)));$t.Mk=null;if((SN(Es(b))!=0?0:1)==0){YG($t.te,a);}else{XL($t.te,a);}Vs($t);} +function CM($t,a){EP(a,SP(5));YG($t.te,a);Vs($t);} +function Dz($t){IJ($t.te);Vs($t);} +function Fv($t){Ge_$callClinit();$t.Oj=JT;Lb_$callClinit();$t.Ud=KT;} +function DB($t){Ue_$callClinit();$t.Oj=YS;Lb_$callClinit();$t.Ud=LT;} +function Or($t){Ve_$callClinit();$t.Oj=MT;Lb_$callClinit();$t.Ud=NT;} +function LC($t,a){EP(a,SP(13));return ZM(LP(Wc),a);} +function Vs($t){Av($t.Jc);EO($t.Jc,JC($t.te));} +function Mf($t,a){Xe_$callClinit();EP(a,SP(14));BH($t);$t.te=a;$t.Jc=PS();Vd_$callClinit();$t.Oj=OT;Vs($t);$t.nb=SP(11);$t.ql=SP(11);Lb_$callClinit();$t.Ud=KT;} +function Zv(){GT=PT(null);} +function Jz(a){Xe_$callClinit();EP(a,SP(15));BI(GT,a);} +function Th(){E.call(this);} +function QM(a){return DP(Su(a));} +function DP(a){var b;a:{b:{b=JK(a);switch(Ft(b)){case 1344771639:break;case -1064886025:break b;default:break a;}if(YF(b,SP(16))==0){break a;}return NN(a);}if(YF(b,SP(17))!=0){return NM(a);}}return null;} +function ZN(a){return WN(a);} +function Ki(){var a=this;E.call(a);a.bi=null;a.dg=null;a.Yh=false;} +function QT(b,c){var $r=new Ki();Jo($r,b,c);return $r;} +function Jo($t,a,b){OB($t);$t.bi=a;$t.dg=b;$t.Yh=1;} +function PA($t,a){var b,c,d,e,f,g,h,i,j,k,l,m,n;b=Qw($t.dg);NJ(Yr(b,a));if(Ct(b)<0){return US( -1,$rt_createIntArray(0),$rt_createIntArray(0));}c=$t.bi.data[Ct(b)];d=c.Wk.data;e=d.length;f=$rt_createIntArray(e);g=f.data;h=$rt_createIntArray(g.length);if(e>0){i=MP(Bf,e).data;j=0;k=i.length;while(j=e){break a;}k=i[n].bm(a,m[n]);if(k== -1){j=n+ -1|0;i[n].cm();}else{m[n]=k;if((n+1|0)=$t.Hi?0:1;} +function DE($t){var a,b;Gy($t);$t.sc=$t.xi;a=$t.he;b=$t.xi;$t.xi=b+1|0;return Oy(a,b);} +function DG($t){var a;if($t.sc<0){IP(ST());}Gy($t);Gz($t.he,$t.sc);a=$t.he;$t.Ai=a.Kg;if($t.sc<$t.xi){$t.xi=$t.xi-1|0;}$t.Hi=$t.Hi-1|0;$t.sc= -1;} +function Gy($t){var a,b;a=$t.Ai;b=$t.he;if(a>=b.Kg){return;}IP(GS());} +function Yl(){var a=this;E.call(a);a.Qg=0;a.wj=0;a.Ed=0;} +function TT(){var $r=new Yl();Lw($r);return $r;} +function Lw($t){OB($t);$t.Qg=0;$t.wj= -1;$t.Ed=0;} +function Ct($t){return $t.wj;} +function NJ($t){var a,b;a:{b:{switch($t.Qg){case 0:break b;case 1:break;case 2:break b;case 3:break b;case 4:break b;case 5:break b;case 6:break b;case 7:break b;case 8:break b;case 9:break b;case 10:a=11;b=2;break a;case 11:break b;case 12:break b;case 13:break b;case 14:break b;case 15:break b;case 16:break b;case 17:a=18;b=1;break a;case 18:break b;case 19:break b;default:break b;}a=19;b=0;break a;}a= -1;b= -1;}$t.Qg=a;$t.wj=b;return $t;} +function So($t,a,b,c,d){var e,f,g,h,i;e=$t.Qg;f=12;g=19;h=1;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{m:{n:{o:{p:{q:{r:{while((c-b|0)>0){s:{i=Nt(a,b);switch(e){case 0:switch(i){case 47:break;default:break b;}b=b+1|0;if((c-b|0)<=0){g=h;break a;}i=Nt(a,b);break s;case 12:switch(i){case 99:g=13;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break r;default:}break b;case 19:break b;case 1:break;case 2:break l;case 3:break k;case 4:break j;case 5:break i;case 6:break h;case 7:break g;case 8:break f;case 9:break e;case 10:break d;case 11:break c;case 13:break r;case 14:break q;case 15:break p;case 16:break o;case 17:break n;case 18:break m;default:break b;}}t: +{switch(i){case -1:$t.wj=0;if(d!=0){b=b+1|0;break a;}e=g;break t;case 97:break;case 99:g=2;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break l;default:break b;}e=f;}b=b+1|0;}g=e;break a;}switch(i){case 116:g=14;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break q;default:}break b;}switch(i){case 105:g=15;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break p;default:}break b;}switch(i){case 118:g=16;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break o;default:}break b;}switch(i){case 101:g=17;b=b+1|0;if((c-b|0)<=0){break a;}i +=Nt(a,b);break n;default:}break b;}switch(i){case -1:g=18;$t.wj=1;if(d!=0){b=b+1|0;break a;}b=b+1|0;if((c-b|0)<=0){break a;}Nt(a,b);break m;default:}break b;}break b;}switch(i){case 111:g=3;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break k;default:}break b;}switch(i){case 109:g=4;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break j;default:}break b;}switch(i){case 112:g=5;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break i;default:}break b;}switch(i){case 108:g=6;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break h;default:}break b;}switch +(i){case 101:g=7;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break g;default:}break b;}switch(i){case 116:g=8;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break f;default:}break b;}switch(i){case 101:g=9;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break e;default:}break b;}switch(i){case 100:g=10;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break d;default:}break b;}switch(i){case -1:g=11;$t.wj=2;if(d!=0){b=b+1|0;break a;}b=b+1|0;if((c-b|0)<=0){break a;}Nt(a,b);break c;default:}break b;}}g= -1;}$t.Qg=g;$t.Ed=b;return $t;} +function Ab(){E.call(this);} +function Aj(){E.call(this);this.Sb=null;} +function QS(b){var $r=new Aj();XC($r,b);return $r;} +function XC($t,a){OB($t);$t.Sb=a;} +function Ko($t,a){SD($t,a);} +function SD($t,a){AG($t.Sb,a);} +function Uo($t,a){Ko($t,a);} +function Yh(){var a=this;E.call(a);a.Od=null;a.Md=null;} +function UT(b,c){var $r=new Yh();ZK($r,b,c);return $r;} +function Gv($t){var a,b,c;a=$t.Od;b=$t.Md;c=MP(E,1);b=b;b=b.Di;c=c.data;c[0]=b;PJ(a,c[0]);NK();} +function ZK($t,a,b){OB($t);$t.Od=a;$t.Md=b;} +function Rj(){E.call(this);} +function CO(a){return AP(VT(),a);} +function AP(a,b){var c;if(b===null){return null;}c=EM(b);if(c!==null){return c.y(a,b);}IP(XQ(Yv(Up(Up(UP(),SP(18)),JK(Su(b))))));} +function EM(a){return OM(Su(a));} +function OM(a){var b;a:{b:{b=JK(a);switch(Ft(b)){case -725394638:break;case -1065183504:break b;default:break a;}if(YF(b,SP(19))==0){break a;}return AN(a);}if(YF(b,SP(20))!=0){return XN(a);}}return null;} +function LN(a,b){var c,d;c=JK(b);d=KO(b);if(d!==null){return d.E(PR(),a);}IP(XQ(Yv(Up(Up(UP(),SP(21)),c))));} +function KO(a){var b;a:{b:{c:{b=JK(a);switch(Ft(b)){case 1195259493:break;case -725394638:break c;case -1065183504:break b;default:break a;}if(YF(b,SP(22))==0){break a;}return IM(a);}if(YF(b,SP(19))==0){break a;}return AO(a);}if(YF(b,SP(20))!=0){return HO(a);}}return null;} +function MN(a){if(BO(a)!=0){return QL(a);}IP(XQ(SP(23)));} +function Ph(){E.call(this);} +function WT(){var $r=new Ph();TD($r);return $r;} +function XT(b){var $r=new Ph();Eo($r,b);return $r;} +function TD($t){OB($t);} +function Eo($t,a){TD($t);} +function Hh(){E.call(this);} +function HN(a,b){if(a===null){IP(F());}if(a===TO(LP($rt_voidcls()))){IP(YT());}if(b>=0){return PO(Pu(a),b);}IP(ZT());} +function PO(a,b){if (a.$meta.primitive) {if (a == $rt_bytecls()) {return $rt_createByteArray(b);}if (a == $rt_shortcls()) {return $rt_createShortArray(b);}if (a == $rt_charcls()) {return $rt_createCharArray(b);}if (a == $rt_intcls()) {return $rt_createIntArray(b);}if (a == $rt_longcls()) {return $rt_createLongArray(b);}if (a == $rt_floatcls()) {return $rt_createFloatArray(b);}if (a == $rt_doublecls()) {return $rt_createDoubleArray(b);}if (a == $rt_booleancls()) {return $rt_createBooleanArray(b);}} else {return $rt_createArray(a, b)}} +function Zb(){E.call(this);} +function J(){E.call(this);} +function El(){E.call(this);this.Ve=null;} +function AU(b){var $r=new El();Ws($r,b);return $r;} +function Pr($t,a){var b;b=$t.Ve;a=BU(a);Uy(a,CU(b));return a;} +function Ws($t,a){OB($t);$t.Ve=a;} +function Hl(){E.call(this);this.td=null;} +function DU(b){var $r=new Hl();Uz($r,b);return $r;} +function CL($t,a){var b;b=$t.td;a=EU(a);Dx(a,FU(b));return a;} +function Uz($t,a){OB($t);$t.td=a;} +function Dl(){E.call(this);this.kl=null;} +function GU(b){var $r=new Dl();Ky($r,b);return $r;} +function Nv($t,a){var b;b=$t.kl;a=HU(a);BE(a,IU(b));Zz(a,SP(24));return a;} +function Ky($t,a){OB($t);$t.kl=a;} +function Fl(){E.call(this);this.ud=null;} +function JU(b){var $r=new Fl();Ay($r,b);return $r;} +function IE($t,a){var b;b=$t.ud;a=KU(a);JA(a,LU(b));return a;} +function Ay($t,a){OB($t);$t.ud=a;} +function Zj(){E.call(this);} +function Ck(){T.call(this);this.Lc=null;} +function MU(b){var $r=new Ck();Qu($r,b);return $r;} +function Qu($t,a){Ts($t);$t.Lc=a;} +function PI($t,a,b){var c,d,e;if(IO(b)!=0){return null;}if(QN(b)==0){IP(XQ(SP(25)));}c=b;d=NU(CN(c));e=0;while(e92){return ((a-32|0)-2|0)<<24>>24;}if(a<=34){return (a-32|0)<<24>>24;}return ((a-32|0)-1|0)<<24>>24;} +function GP(a){var b,c,d,e,f,g,h,i,j,k,l,m,n;b=MP(Jh,16384);c=b.data;d=$rt_createByteArray(16384);e=d.data;f=0;g=0;h=0;i=0;while(i>24;i=i+1|0;k=UO(Nt(a,i));}if(j==0&&k>=128){if(f>0){l=g+1|0;c[g]=JW(h,h+f|0,JO(d,f));g=l;}h=h+(f+k|0)|0;f=0;}else{n=f+k|0;if(n=Nu(b)){Gz($t.kb,c).e();c=c+ -1|0;}$t.Lf=b;} +function Mp($t){var a;HF($t);a=Nu($t.kb)-1|0;while(a>=0){Oy($t.kb,a).e();a=a+ -1|0;}} +function Pd(){Xc.call(this);} +function Zc(){Pd.call(this);} +function Jc(){Zc.call(this);} +function EO(a,b){var c;EP(a,SP(8));EP(b,SP(30));if(NP(b,Kb)!=0){return Mu(a,b);}c=0;b=b.A();while(b.F()!=0){if(Py(a,b.z())!=0){c=1;}}return c;} +function VM(a,b,c){var d;d=0;a=SB(a);while(Dr(a)!=0){if(ZE(EF(b,DE(a)))==c){DG(a);d=1;}}return d;} +function FN(a,b){EP(a,SP(8));EP(b,SP(31));return VO(a,b,1);} +function VO(a,b,c){var d,e,f,g,h;if(NP(a,Wb)==0){if(a!==null){return VM(LO(a),b,c);}IP(IS(SP(32)));}d=0;e=0;f=MM(a);if(e<=f){while(true){g=Oy(a,e);if(ZE(EF(b,g))!=c){if(d!=e){Pq(a,d,g);}d=d+1|0;}if(e==f){break;}e=e+1|0;}}if(d>=Nu(a)){return 0;}h=MM(a);if(h>=d){while(true){Gz(a,h);if(h==d){break;}h=h+ -1|0;}}return 1;} +function Nd(){Jc.call(this);} +function Kd(){Nd.call(this);} +function Hn(){Kd.call(this);} +function Pm(){var a=this;Dc.call(a);a.cf=0;a.di=false;a.Se=0;a.nc=0;} +function QW(b,c,d){var $r=new Pm();Op($r,b,c,d);return $r;} +function Cs($t){return $t.di;} +function Ev($t){var a;a=$t.Se;if(a!=$t.cf){$t.Se=$t.Se+$t.nc|0;}else{if($t.di==0){IP(RW());}$t.di=0;}return a;} +function Op($t,a,b,c){RA($t);$t.nc=c;$t.cf=b;$t.di=$t.nc<=0?(ab?0:1;if($t.di==0){a=$t.cf;}$t.Se=a;} +function Ae(){E.call(this);} +function Tl(){E.call(this);this.Ij=null;} +function SW(b){var $r=new Tl();YA($r,b);return $r;} +function YA($t,a){OB($t);$t.Ij=a;} +function Cx($t,a){TC($t.Ij,a);} +function MJ($t,a){Cx($t,a);} +function Lj(){var a=this;E.call(a);a.Qj=0;a.Wk=null;} +function HW(){var $r=new Lj();Fz($r);return $r;} +function Fz($t){OB($t);} +function Of(){R.call(this);} +function Ie(){E.call(this);} +function Pe(){E.call(this);} +function Bd(){W.call(this);} +function TW(){var $r=new Bd();Fx($r);return $r;} +function Fx($t){XF($t);} +function Tk(){Bd.call(this);this.Jh=null;} +function UW(){var $r=new Tk();GD($r);return $r;} +function VW(b){var $r=new Tk();PE($r,b);return $r;} +function GD($t){PE($t,QR());} +function PE($t,a){Fx($t);$t.Jh=a;} +function BJ($t,a){return Ir($t.Jh,a,$t)!==null?0:1;} +function Zi(){E.call(this);} +function KM(a){var copy=new a.constructor();for(var field in a){if(!a.hasOwnProperty(field)){continue;}copy[field]=a[field];}return copy;} +function SO(a){return a.$meta.item;} +function YN(a){return $rt_str(a.$meta.name);} +function Ub(){var a=this;E.call(a);a.Kb=null;a.Zh=null;} +var WW=null;function Ub_$callClinit(){Ub_$callClinit=function(){}; +Br();} +function XW(b,c){var $r=new Ub();Nj($r,b,c);return $r;} +function Nj($t,a,b){var c,d,e;Ub_$callClinit();c=b.data;OB($t);Vy(a);d=c.length;e=0;while(e=48&&a<=57)&&!(a>=97&&a<=122)&&a<65&&a>90?0:1;} +function Br(){WW=QR();Ir(WW,SP(33),ZW());} +function Qb(){var a=this;E.call(a);a.Nh=null;a.Jd=null;a.Vb=null;a.xh=false;a.Xh=null;} +function AX(b){var $r=new Qb();Er($r,b);return $r;} +function Er($t,a){OB($t);$t.Xh=SW($t);$t.Nh=Ht(a);} +function Zz($t,a){$t.Jd=a;} +function BE($t,a){Su(a);$t.Vb=BX(a);} +function Xo($t){if($t.xh==0){$t.xh=1;$t.Nh.addEventListener($rt_ustr($t.Jd),JM($t.Xh,"handleEvent"));}} +function Mv($t){if($t.xh!=0){$t.xh=0;$t.Nh.removeEventListener($rt_ustr($t.Jd),JM($t.Xh,"handleEvent"));}} +function TC($t,a){$t.Vb.handleEvent(a);if(YF($t.Jd,SP(24))!=0){a.preventDefault();}} +function Sn(){Qb.call(this);} +function HU(b){var $r=new Sn();NB($r,b);return $r;} +function NB($t,a){Er($t,a);} +function Bc(){E.call(this);this.kj=false;} +var CX=null;var DX=null;var EX=null;function Bc_$callClinit(){Bc_$callClinit=function(){}; +Bv();} +function FX(b){var $r=new Bc();Xi($r,b);return $r;} +function Xi($t,a){Bc_$callClinit();OB($t);$t.kj=a;} +function ZE($t){return $t.kj;} +function Ox(a){Bc_$callClinit();return a==0?DX:CX;} +function Bv(){CX=FX(1);DX=FX(0);EX=LP($rt_booleancls());} +function Ed(){L.call(this);} +function YT(){var $r=new Ed();Sv($r);return $r;} +function XQ(b){var $r=new Ed();SL($r,b);return $r;} +function Sv($t){Xq($t);} +function SL($t,a){OG($t,a);} +function Ak(){Ed.call(this);this.Hd=null;} +function YW(b){var $r=new Ak();ED($r,b);return $r;} +function ED($t,a){Sv($t);$t.Hd=a;} +function We(){E.call(this);} +function Pl(){E.call(this);} +function IW(){var $r=new Pl();YL($r);return $r;} +function Qw($t){return TT();} +function YL($t){OB($t);} +function Sd(){var a=this;E.call(a);a.Id=null;a.Cg=0;} +function GX(b,c){var $r=new Sd();UF($r,b,c);return $r;} +function UF($t,a,b){OB($t);$t.Id=a;$t.Cg=b;} +function Lb(){Sd.call(this);} +var KT=null;var LT=null;var NT=null;var HX=null;function Lb_$callClinit(){Lb_$callClinit=function(){}; +Wy();} +function IX(b,c){var $r=new Lb();Kf($r,b,c);return $r;} +function Wy(){var a,b,c,d;a=MP(Lb,3);b=a.data;c=0;d=IX(SP(34),0);KT=d;b[c]=d;c=1;d=IX(SP(35),1);LT=d;b[c]=d;c=2;d=IX(SP(36),2);NT=d;b[c]=d;HX=a;} +function Kf($t,a,b){Lb_$callClinit();UF($t,a,b);} +function Mn(){L.call(this);} +function RW(){var $r=new Mn();Oq($r);return $r;} +function Oq($t){Xq($t);} +function Gf(){E.call(this);} +function Gc(){E.call(this);} +function Cb(){E.call(this);} +function JX(){var $r=new Cb();Tn($r);return $r;} +function Tn($t){OB($t);} +function Hc(){Cb.call(this);this.il=null;} +function KX(b){var $r=new Hc();Lq($r,b);return $r;} +function Lq($t,a){Tn($t);$t.il=a;} +function Rl(){var a=this;Hc.call(a);a.ie=false;a.Vi=null;a.kg=null;a.Jf=null;} +function LX(b,c){var $r=new Rl();UE($r,b,c);return $r;} +function UE($t,a,b){Lq($t,a);$t.Vi=UP();$t.kg=$rt_createCharArray(32);$t.ie=b;$t.Jf=ZW();} +function Xm(){E.call(this);this.ji=null;} +function OV(b){var $r=new Xm();FE($r,b);return $r;} +function XI($t){var a;a=$t.ji;return Es(a.Di);} +function FE($t,a){OB($t);$t.ji=a;} +function Tm(){E.call(this);this.Nf=null;} +function MX(b){var $r=new Tm();Bt($r,b);return $r;} +function LJ($t){var a,b;a=$t.Nf;b=MP(E,1).data;a=Rt(Vr(a));b[0]=a;return Rt(Zs(b[0]));} +function Bt($t,a){OB($t);$t.Nf=a;} +function Vm(){E.call(this);this.Ih=null;} +function GV(b){var $r=new Vm();UH($r,b);return $r;} +function OF($t){var a,b;a=$t.Ih;b=MP(E,1).data;a=a;a=Ox(Fr(a.Di));b[0]=a;return Ox(ZE(b[0]));} +function UH($t,a){OB($t);$t.Ih=a;} +function Wm(){E.call(this);this.lk=null;} +function NX(b){var $r=new Wm();AK($r,b);return $r;} +function RG($t){var a;a=$t.lk;return Es(a.Di);} +function AK($t,a){OB($t);$t.lk=a;} +function Fg(){var a=this;E.call(a);a.pf=0;a.of=0;a.Ze=0;a.mf=0;a.jk=null;} +function OX(b,c,d,e){var $r=new Fg();St($r,b,c,d,e);return $r;} +function St($t,a,b,c,d){$t.jk=a;OB($t);$t.pf=b;$t.of=b;$t.Ze=c;$t.mf=d;} +function ID($t){var a,b;Ds($t);if($t.pf==$t.mf){IP(RW());}$t.of=$t.pf;a=$t.jk;b=$t.pf;$t.pf=b+1|0;return Vn(a,b);} +function LE($t){return $t.pf;} +function Ds($t){var a,b;a=$t.Ze;b=$t.jk;if(a>=b.Kg){return;}IP(GS());} +function Jm(){E.call(this);this.ei=null;} +function PX(b){var $r=new Jm();NI($r,b);return $r;} +function Gx($t){return WC($t.ei);} +function NI($t,a){OB($t);$t.ei=a;} +function Um(){var a=this;E.call(a);a.wf=null;a.yf=null;} +function BV(b,c){var $r=new Um();TA($r,b,c);return $r;} +function Ew($t){var a,b,c,d,e;a=$t.wf;b=$t.yf;c=MP(E,1);a=a;d=a.Di;c=c;d=(d!==Hv(b)?0:1)==0?SP(11):SP(37);c=c.data;c[0]=d;e=MP(E,1);a=Fr(a.Di)==0?SP(11):SP(38);e=e.data;e[0]=a;return Yv(Up(Up(UP(),e[0]),c[0]));} +function TA($t,a,b){OB($t);$t.wf=a;$t.yf=b;} +function Hm(){E.call(this);this.fe=null;} +function QX(b){var $r=new Hm();MH($r,b);return $r;} +function GB($t){var a,b,c;a=$t.fe;b=MP(E,1);c=AB(KA(a))!=0?0:1;b=b.data;a=Ox(c);b[0]=a;return Ox(ZE(b[0]));} +function MH($t,a){OB($t);$t.fe=a;} +function Im(){E.call(this);this.ej=null;} +function MV(b){var $r=new Im();Yn($r,b);return $r;} +function Mz($t){var a,b;a=$t.ej;b=MP(E,1).data;a=Ox(TH(a));b[0]=a;return Ox(ZE(b[0]));} +function Yn($t,a){OB($t);$t.ej=a;} +function Oi(){E.call(this);} +function Km(){E.call(this);this.Zi=null;} +function LU(b){var $r=new Km();Iy($r,b);return $r;} +function XE($t){return NE($t.Zi);} +function Iy($t,a){OB($t);$t.Zi=a;} +function Gm(){E.call(this);this.Bd=null;} +function FU(b){var $r=new Gm();ZD($r,b);return $r;} +function Hq($t){var a,b,c;a=$t.Bd;b=MP(E,1);c=UI(a)!=0?0:1;b=b.data;a=Ox(c);b[0]=a;return Ox(ZE(b[0]));} +function ZD($t,a){OB($t);$t.Bd=a;} +function Ec(){E.call(this);} +function Wb(){E.call(this);} +function Hf(){E.call(this);} +var PU=null;function Hf_$callClinit(){Hf_$callClinit=function(){}; +VB();} +function RX(){var $r=new Hf();Qi($r);return $r;} +function AJ($t){Fe_$callClinit();return SX;} +function Qi($t){Hf_$callClinit();OB($t);PU=$t;} +function VB(){Qi(new Hf);} +function Lm(){R.call(this);} +function Rc(){E.call(this);} +function TX(){var $r=new Rc();BA($r);return $r;} +function BA($t){OB($t);} +function Re(){var a=this;E.call(a);a.Oh=null;a.Bb=null;a.Wj=null;} +var UX=null;function Re_$callClinit(){Re_$callClinit=function(){}; +Ur();} +function VX(b){var $r=new Re();Jf($r,b);return $r;} +function Jf($t,a){Re_$callClinit();OB($t);$t.Bb=WX();$t.Wj=PS();$t.Oh=a;} +function BF($t,a){return AA($t,a,0);} +function CH($t,a){return AA($t,a,1);} +function AA($t,a,b){var c,d;c=UX.createElement($rt_ustr(a));d=XX();d.Pg=c;if(b!=0){d.hk=UN(c);}AL($t.Bb,d);return $t;} +function At($t){var a;a=Sy($t.Bb);JG($t,a.Pg);return $t;} +function VF($t,a){JG($t,UX.createTextNode($rt_ustr(a)));return $t;} +function It($t,a,b){var c;if(Wt($t.Bb)!=0){IP(RS(SP(39)));}c=Bx($t.Bb);c.Pg.setAttribute($rt_ustr(a),$rt_ustr(b));return $t;} +function TE($t,a){var b;if(Wt($t.Bb)!=0){LG($t.Oh,My(a));}else{b=Bx($t.Bb);if(b.hk!==null){LG(b.hk,My(a));}else{LG(UN(b.Pg),My(a));}}a.d();Py($t.Wj,a);return $t;} +function ZH($t,a){var b;if(Wt($t.Bb)!=0){IP(RS(SP(40)));}b=a.c(Bx($t.Bb));Py($t.Wj,b);return $t;} +function JG($t,a){var b;if(Wt($t.Bb)!=0){LG($t.Oh,ZQ(a));}else{b=Bx($t.Bb);if(b.hk!==null){LG(b.hk,ZQ(a));}else{b.Pg.appendChild(a);}}} +function Wn($t){return $t.Wj;} +function Ur(){UX=window.document;} +function Bb(){E.call(this);} +function Ig(){var a=this;E.call(a);a.wc=null;a.vc=null;a.tc=null;} +function KQ(b,c,d){var $r=new Ig();Xx($r,b,c,d);return $r;} +function UL($t){var a,b;a=$t.wc;b=$t.vc;a.Di=NF(b);} +function KI($t,a){var b,c,d;b=$t.wc;c=$t.tc;a=CH(VF(At(ZH(ZH(It(It(BF(VF(It(BF(VF(ZH(BF(VF(a,SP(41)),SP(42)),ZU(b,c)),SP(43)),SP(44)),SP(28),SP(45)),SP(46)),SP(47)),SP(28),SP(48)),SP(49),SP(50)),EV(b)),UU(b))),SP(46)),SP(51));d=XU(c,b);a=ZH(a,d);d=YX(DN());Qr(d,NX(b));VF(At(VF(At(VF(At(ZH(ZH(ZH(ZH(ZH(It(BF(VF(ZH(BF(VF(At(VF(At(ZH(It(BF(VF(At(TE(a,d)),SP(46)),SP(52)),SP(28),SP(53)),QU(c,b))),SP(43))),SP(43)),SP(54)),RV(c,b)),SP(46)),SP(47)),SP(28),SP(55)),NV(b)),HV(b)),CV(c,b)),BW(c,b)),YV(b,c))),SP(43))),SP(41))), +SP(56));} +function Xx($t,a,b,c){OB($t);$t.wc=a;$t.vc=b;$t.tc=c;} +function Mg(){E.call(this);} +function WQ(){var $r=new Mg();VA($r);return $r;} +function Az($t){return;} +function YK($t,a){VF(a,SP(57));} +function VA($t){OB($t);} +function Ce(){E.call(this);} +function Nl(){var a=this;E.call(a);a.Jg=null;a.Fh=null;} +function ZX(b){var $r=new Nl();EC($r,b);return $r;} +function EC($t,a){var b;OB($t);$t.Fh=a;b=$t;a.classObject=b;} +function A(a){var b;if(a===null){return null;}b=a.classObject;if(b===null){b=ZX(a);}return b;} +function Pu($t){return $t.Fh;} +function JK($t){if($t.Jg===null){$t.Jg=EJ(YN($t.Fh));}return $t.Jg;} +function Vo($t){return A(SO($t.Fh));} +function Fn(){E.call(this);this.nd=null;} +function BX(b){var $r=new Fn();VK($r,b);return $r;} +function VK($t,a){OB($t);$t.nd=a;} +function GC($t,a){$t.nd.h(a);} +function TK($t,a){GC($t,a);} +function Kg(){E.call(this);} +function UQ(){var $r=new Kg();ND($r);return $r;} +function PK($t){return;} +function GL($t,a){VF(a,SP(58));} +function ND($t){OB($t);} +function Ng(){E.call(this);this.ec=null;} +function GQ(b){var $r=new Ng();LD($r,b);return $r;} +function Ip($t){return;} +function MC($t,a){VF(At(VF(ZH(It(BF(VF(a,SP(56)),SP(52)),SP(59),SP(60)),AY($t.ec)),SP(61))),SP(62));} +function LD($t,a){OB($t);$t.ec=a;} +function Ef(){E.call(this);} +function Yj(){E.call(this);} +function BY(){var $r=new Yj();BM($r);return $r;} +function CY(b){var $r=new Yj();ZL($r,b);return $r;} +function BM($t){OB($t);} +function ZL($t,a){BM($t);} +function Hg(){E.call(this);this.Ej=null;} +function IQ(b){var $r=new Hg();OJ($r,b);return $r;} +function WJ($t){return;} +function Bu($t,a){var b,c;b=$t.Ej;a=VF(At(VF(At(VF(At(ZH(ZH(ZH(It(It(It(BF(VF(ZH(It(BF(VF(At(VF(BF(VF(It(BF(VF(It(CH(VF(VF(a,SP(63)),SP(63)),SP(64)),SP(59),SP(65)),SP(66)),SP(67)),SP(59),SP(67)),SP(68)),SP(69)),SP(4))),SP(68)),SP(54)),SP(59),SP(70)),GU(b)),SP(62)),SP(47)),SP(59),SP(71)),SP(72),SP(73)),SP(74),SP(74)),JU(b)),AU(b)),DU(b))),SP(68))),SP(66))),SP(66));c=DY(DN());Do(c,QX(b));Nq(c,MQ(b));VF(At(VF(At(At(VF(It(BF(VF(BF(VF(At(VF(BF(VF(It(BF(VF(At(VF(TE(a,c),SP(63))),SP(63)),SP(75)),SP(59),SP(76)),SP(66)), +SP(77)),SP(78))),SP(66)),SP(77)),SP(79)),SP(80)),SP(81),SP(82)),SP(83)))),SP(63))),SP(63));} +function OJ($t,a){OB($t);$t.Ej=a;} +function Jg(){E.call(this);this.Pe=null;} +function NQ(b){var $r=new Jg();VD($r,b);return $r;} +function Iz($t){return;} +function HA($t,a){var b,c,d,e;b=$t.Pe;a=VF(It(CH(VF(At(VF(It(BF(VF(At(ZH(ZH(It(It(BF(VF(It(BF(VF(a,SP(68)),SP(64)),SP(59),SP(3)),SP(62)),SP(47)),SP(59),SP(84)),SP(49),SP(50)),LV(b)),PV(b))),SP(62)),SP(51)),SP(85),SP(84)),SP(86))),SP(62)),SP(87)),SP(59),SP(88)),SP(56));c=OW(DN());BG(c,PX(b));ZB(c,JQ(c,b));a=CH(It(CH(VF(It(CH(VF(At(VF(At(VF(TE(a,c),SP(62))),SP(68))),SP(68)),SP(75)),SP(59),SP(75)),SP(62)),SP(89)),SP(59),SP(90)),SP(91));c=YX(DN());Qr(c,MX(b));a=VF(At(TE(a,c)),SP(56));c=EY(DN());d=NU(1);e=FY();Sq(e, +GY(b));d=d;Py(d,e);WH(c,d);d=HY();Au(c,d);Kz(e,VQ());Go(d,TQ());a=VF(At(VF(At(VF(At(VF(ZH(ZH(BF(VF(BF(VF(At(VF(At(VF(ZH(ZH(BF(VF(BF(VF(At(VF(At(VF(ZH(ZH(BF(VF(BF(VF(It(BF(VF(At(VF(TE(a,c),SP(62))),SP(62)),SP(87)),SP(59),SP(92)),SP(56)),SP(42)),SP(41)),SP(80)),VV(b)),TV(b)),SP(93))),SP(56))),SP(56)),SP(42)),SP(41)),SP(80)),DW(b)),IY(b)),SP(94))),SP(56))),SP(56)),SP(42)),SP(41)),SP(80)),JY(b)),KY(b)),SP(95))),SP(56))),SP(62))),SP(62));c=DY(DN());Do(c,LY(b));Nq(c,EQ(b));VF(At(VF(TE(a,c),SP(68))),SP(66));} +function VD($t,a){OB($t);$t.Pe=a;} +function Mi(){E.call(this);} +function TM(a,b){var c,d,e,f;a=a.data;c=$rt_createCharArray(b);d=c.data;e=RM(b,a.length);f=0;while(fc){IP(YT());}while(b0&&a<=65535?1:0;} +function Us(a){Mb_$callClinit();return (a&64512)!=55296?0:1;} +function Tr(a){Mb_$callClinit();return (a&64512)!=56320?0:1;} +function JH(a){Mb_$callClinit();return Us(a)==0&&Tr(a)==0?0:1;} +function EK(a,b){Mb_$callClinit();if(b>=2&&b<=36&&a=f.Tb){c=e+1|0;}else{if(a>=f.Wh){return f.fi.data[a-f.Wh|0];}d=e-1|0;}}return 0;} +function AI(a){Mb_$callClinit();return Oz(a);} +function Oz(a){Mb_$callClinit();switch(Uu(a)){case 12:case 13:case 14:break;default:return 0;}return 1;} +function Ix(a){Mb_$callClinit();return TG(a);} +function TG(a){Mb_$callClinit();switch(a){case 9:case 10:case 11:case 12:case 13:case 28:case 29:case 30:case 31:break;case 160:case 8199:case 8239:return 0;default:return Oz(a);}return 1;} +function Bs(){VY=LP($rt_charcls());XY=MP(Mb,128);} +function WK(){return {"value":"PA-Y$;Y$679:95Y#J+Y#Z$Y#B;697<8:1=<=:L#<#Y#<,&?L$9B8:B(C9:C)!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!C#!#!#!#!#!#!#!#!C#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#B##!#!C$B##!#B##B$C#B%#B##B$C$B##B##!#!#B##!C#!#B##B$#!#B#C#&!C$F%!$#!$#!$#!#!#!#!#!#!#!#!C#!#!#!#!#!#!#!#!#!C#!$#!#B$#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!C(B##B#C#!#B%#!#!#!#!Cg&C?6_#?6>Y)./Q&-Y*>?Y%X#Y$:67Y,:98Y+-Q& Q+,%A#L'Z$67%L+Z$67 E.A$[AA1G.H%'H$G-A0^#!^%!^##B$C#B$#=!^#:B&^'!=!=!=B%=#B%#F%#^#C#B#Z&!C%=:^##=L1KD!#K%,^#A%Z&^&Z#^%:^#:^#:^(:^@Z#^#:=:^@b:-% ^)6767^5Z#^(67b=2! :^?Z:^IZ'^gA:^,A6L^^pL7b=X# :^*:^WZ)b=P! :b=Y$ 67676767676767L?^MZ&67Z@6767676767Z1b= % b:$# 6767676767676767676767Za6767ZA67b:#% ^QZ6^#Z'^HA#^AA#^CA$^- ^*A:^%A1BP CP !#B$C#!#!#!#B%#!C#!C'E#B$#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!C#^'!#!#G$!#A&Y%,Y#CG #A&#A#FYA(%9A/'F8A*F( F( F( F( F( F( F( F( GAY#>?>?Y$>?9>?Y*5Y#59>?Y#>?67676767Y&%Y+U#Y%596Y(AW^; b=:! A-b=7$ A;^-A%-Y$=%&+6767676767^#6767676756W#=K*G%I#5E&^#K$%&9^# b&7! A#G#]#E#&5b&;! 9E$&A&FKA#b&?! ^#L%^+FA$G$)FP'I#G%I#'I%Y. %J+A%Y#F&'%F*J+F& FJG'I#G#I#G#A*F$'F)')A#J+A#Y%F1%F'^$&)')FS'&G$F#G#F&G#&'&A9F#%Y#F,)G#I#Y#&E#)'A+F'A#F'A#F'A*F( F( CLA$FRA0'LL#9F>L$AAF)=F=G#A%L&Y(A*FWA$Y(F7A#L)F4A&L)F3A(Y%A-L(b 1! FkAXBTA.CTA(L'b A& L@b !' )')FVG0Y(A%L5J+A0G$)FNI$G%I#G#Y#1Y%A/F:A(J+A'G$FEG&)G) J+Y%A-FD'Y#&A*G#)FQI$G*I#F%Y&G$9A#J+&9&Y$ L5A,F3 F:I$G$I#')G#Y''AcF( & F% F0 F+9A'FP'I$G)A&J+A'G#I# F)A#F#A#F7 F( F# F&A#'&I#'I%A#I#A#I$A#&A')A&F&I#A#G(A$G&b ,# FVI$G)I#G$)'F%Y&J+ 9 9ACFQI$G')'I%G#)G#F#9&A)J+b G# FPI$G%A#I%G#)G#Y8F%G#ACFQI$G)I#')G#Y$&A,J+A'Y.A4FL')'I#G')'A)J+AWF;A$G$I#G%)G&A%J+L#Y$=b A& BACAJ+L*A-&b % &G'I#G#FIG')&G%Y)'A)&G'I#G$FIA#F%G.)G#Y$ Y&A>FZb (% F* FF)G( G')'&Y&A+J+L4A$Y#F?A#G7 )G()G#)G#AkF( F# FGG'A$' G# G(&'A)J+b G+ b&;/ b G! b+P! Y&A,b&%$ b ^K b&P1 b 2a b&(* b Z'#b&Z) A(F@ J+A%Y#b A! F?A#G&9A+FQG(Y&^%E%9=A+J+ L( F6A&F4b Q. FgA,&IOA1G%E.AbE#A?&b L@!&A4b&T, b .5#b&@% b 2! b&-' b %E b&L! A&F.A$F*A(F+A#=G#9Q%b =.!b=W$ A+^HA#^^I#G$^$I'Q)G)^#G(^?G%^]A8^dG$=b [# b=8! A*L3b /# B;C;B;C( C3B;C;! B#A#!A#B#A#B% B)C% # C( C,B;C;B# B%A#B) B( C;B# B% B& !A$B( C;B;C;B;C;B;C;B;C;B;C;B;C=A#B::C::C'B::C::C'B::C::C'B::C::C'B::C::C'!#A#JSb= ) GX^%GS^)'^/'^#Y&A0G& G0b 16 G( G2A#G( G# G&b 6@ b&&$ A#L*G(AJBCCCG(A&J+A%Y#b A3 F% F< F# &A#& F+ F% & &A'&A%& & & F$ F# &A#& & & & & F# &A#F% F( F% F% & F+ F2A&F$ F& F2AUZ#b /% ^MA%b=E! A-^0A#^0 ^0 ^FA+L.A$^@ ^^A%^_AZ^>A.^MA%^*A(^#A/^'b ;# b=]$ ]&b=6, A,^.A$^*A(b=U! A-b=6! AL^-A%^YA)^+A'^IA)^?b 3! ^-A%^P ^.A$^=A5^9AI=A0^8b :9 &b %b %b 6<#&AJ&b T !&A,&b =$ &A#&b ;!&A/&b PU!&b @Q b&?) b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b D8 1A?b1A! b # b'Q$ b %b %b %b 1Y$3b %b %b %b ^a$3A#3b %b %b %b ^a$3"} +;} +function Wf(){E.call(this);this.Bi=null;} +function GY(b){var $r=new Wf();KF($r,b);return $r;} +function NH($t){return Vr($t.Bi)!=1?0:1;} +function KF($t,a){OB($t);$t.Bi=a;} +function Id(){E.call(this);} +function Hk(){var a=this;E.call(a);a.Gj=null;a.Fj=null;} +function AW(b,c){var $r=new Hk();XG($r,b,c);return $r;} +function Qz($t){var a,b,c,d;a=$t.Gj;b=$t.Fj;c=MP(E,1);a=a;a=a.Di;c=c;d=a!==Hv(b)?0:1;c=c.data;a=Ox(d);c[0]=a;return Ox(ZE(c[0]));} +function XG($t,a,b){OB($t);$t.Gj=a;$t.Fj=b;} +function Tg(){var a=this;M.call(a);a.Pb=null;a.xe=null;} +function FQ(b){var $r=new Tg();Gw($r,b);return $r;} +function Gw($t,a){IG($t,DN());$t.Pb=a;} +function Kr($t){var a;$t.Pb.m();if($t.xe===null){a=VX(My($t));$t.Pb.o(a);$t.xe=Wn(a);}a=SB($t.xe);while(Dr(a)!=0){DE(a).d();}} +function YI($t){var a;if($t.xe!==null){a=SB($t.xe);while(Dr(a)!=0){DE(a).e();}$t.xe=null;}HF($t);} +function Cl(){E.call(this);} +function ZY(){var $r=new Cl();Bz($r);return $r;} +function PT(b){var $r=new Cl();Pp($r,b);return $r;} +function BI($t,a){var b,c,d;EP(a,SP(15));b=HT(IR());c=NS();d=LP(Wc);Zd_$callClinit();Ey(By(Lo(c,d,JV),b));SG(b,XO().body);} +function Bz($t){OB($t);} +function Pp($t,a){Bz($t);} +function Dj(){var a=this;M.call(a);a.Lg=null;a.lj=null;a.uk=null;a.Nc=false;} +function YX(b){var $r=new Dj();GJ($r,b);return $r;} +function GJ($t,a){IG($t,a);} +function Qr($t,a){$t.Lg=a;} +function CE($t){var a;a=$t.Lg.g();if($t.Nc!=0&&XM($t.uk,a)!=0){return;}$t.Nc=1;$t.uk=a;if($t.lj!==null){Dv($t.lj);$t.lj=null;}$t.lj=ZQ(window.document.createTextNode($rt_ustr(Cz(a))));LG(My($t),$t.lj);} +function If(){O.call(this);} +var JR=null;function If_$callClinit(){If_$callClinit=function(){}; +Ru();} +function AZ(){var $r=new If();Pj($r);return $r;} +function EF($t,a){return Ox(Hu($t,a));} +function Hu($t,a){EP(a,SP(9));return Fr(a);} +function Pj($t){If_$callClinit();DI($t,1);} +function Ru(){JR=AZ();} +function In(){E.call(this);} +function EP(a,b){if(a===null){ON(b);}} +function ON(a){var b;b=EI(H()).data[3];IP(DO(XQ(Yv(Up(Up(Up(Up(Up(Up(UP(),SP(99)),b.Zm()),SP(100)),b.an()),SP(101)),a)))));} +function DO(a){return PN(a,JK(LP(In)));} +function PN(a,b){var c,d,e,f,g,h;c=Kq(a);d=c.data;e=d.length;f= -1;g=0;while(g=$t.gf?0:1;} +function UG($t){if(LE($t.li)>=$t.gf){IP(RW());}return ID($t.li);} +function Lg(){T.call(this);} +function EZ(){var $r=new Lg();LL($r);return $r;} +function Lz($t,a,b){var c;a=a;b=b;c=b;if(IO(c)!=0){c=null;}else{if(QN(c)==0&&MO(c)==0){IP(XQ(Yv(Up(Up(Up(Up(UP(),SP(103)),FM(c)),SP(104)),SP(20)))));}c=KR();c.Ri=PI(MU(KO(LP(Yk))),a,b["data"]);}return c;} +function LL($t){Ts($t);} +function Og(){T.call(this);} +function FZ(){var $r=new Og();Pz($r);return $r;} +function FC($t,a,b){var c;a=a;b=b;c=b;if(IO(c)!=0){c=null;}else{if(QN(c)==0&&MO(c)==0){IP(XQ(Yv(Up(Up(Up(Up(UP(),SP(103)),FM(c)),SP(104)),SP(19)))));}c=IT();b=b;XJ(c,ZE(Ox(MN(b["completed"]))));Yo(c,KO(LP(Uc)).E(a,b["title"]));}return c;} +function Pz($t){Ts($t);} +function Tc(){R.call(this);} +var GZ=null;var HZ=null;function Tc_$callClinit(){Tc_$callClinit=function(){}; +TI();} +function TI(){GZ=!!(!!1);HZ=!!(!!0);} +function QL(a){Tc_$callClinit();return !!a?1:0;} +function Uk(){var a=this;E.call(a);a.Pg=null;a.hk=null;a.wd=null;a.vg=null;} +function XX(){var $r=new Uk();Vq($r);return $r;} +function Vq($t){OB($t);} +function Ht($t){return $t.Pg;} +function Xs($t,a){var b;if($t.wd===null){return;}if(NP($t.wd,Ec)==0){$t.wd.B(a);}else{b=SB($t.wd);while(Dr(b)!=0){DE(b).B(a);}}} +function Zn($t,a){var b,c;if($t.wd===null){$t.wd=a;b=$t.Pg;II($t);b.addEventListener("change",JM($t.vg,"handleEvent"));}else if(NP($t.wd,Ec)!=0){Py($t.wd,a);}else{c=NU(2);Py(c,$t.wd);Py(c,a);$t.wd=c;}} +function Xz($t,a){var b;if($t.wd!==null){if($t.wd===a){$t.Pg.removeEventListener("change",JM($t.vg,"handleEvent"));$t.vg=null;$t.wd=null;}else if(NP($t.wd,Ec)!=0){b=$t.wd;QB(b,a);if(Nu(b)==1){$t.wd=Oy(b,0);}}}} +function II($t){$t.vg=IZ($t);} +function DD($t){return $rt_str($t.Pg.value);} +function Tt($t,a){Xs($t,DD($t));} +function Se(){E.call(this);} +function Df(){E.call(this);} +function Cf(){E.call(this);} +function Ne(){E.call(this);} +function GO(a,b){var c;c=SP(105);a.addEventListener($rt_ustr(c),JM(b,"handleEvent"));} +function Xl(){var a=this;E.call(a);a.yg=null;a.ig=null;} +function VT(){var $r=new Xl();Rz($r);return $r;} +function Rz($t){OB($t);$t.yg=QR();$t.ig=UW();} +function NC($t,a){if(BJ($t.ig,a)!=0){return;}IP(XQ(Yv(Eq(Up(UP(),SP(106)),a))));} +function Y(){W.call(this);this.Kg=0;} +function JZ(){var $r=new Y();YH($r);return $r;} +function YH($t){XF($t);} +function Py($t,a){QI($t,Nu($t),a);return 1;} +function SB($t){return RT($t);} +function EE($t,a){var b,c,d;b=Nu($t);c=0;a:{while(cb){IP(YT());}if(a>=0&&b<=Ot($t)){if(NP($t,Wb)==0){return KZ($t,a,b);}return LZ($t,a,b);}IP(DQ());} +function Ni(){var a=this;Y.call(a);a.Hj=null;a.Mi=0;} +function PS(){var $r=new Ni();JD($r);return $r;} +function NU(b){var $r=new Ni();Ap($r,b);return $r;} +function PW(b){var $r=new Ni();Fy($r,b);return $r;} +function JD($t){Ap($t,10);} +function Ap($t,a){YH($t);$t.Hj=MP(E,a);} +function Fy($t,a){var b,c;Ap($t,Nu(a));b=SB(a);c=0;while(c<$t.Hj.data.length){$t.Hj.data[c]=DE(b);c=c+1|0;}$t.Mi=$t.Hj.data.length;} +function Zr($t,a){if($t.Hj.data.length=1073741823?2147483647:RO(a,RO($t.Hj.data.length*2|0,5)));}} +function Oy($t,a){Kp($t,a);return $t.Hj.data[a];} +function Nu($t){return $t.Mi;} +function Pq($t,a,b){var c;Kp($t,a);c=$t.Hj.data[a];$t.Hj.data[a]=b;return c;} +function QI($t,a,b){var c;Hz($t,a);Zr($t,$t.Mi+1|0);c=$t.Mi;while(c>a){$t.Hj.data[c]=$t.Hj.data[c-1|0];c=c+ -1|0;}$t.Hj.data[a]=b;$t.Mi=$t.Mi+1|0;$t.Kg=$t.Kg+1|0;} +function Gz($t,a){var b;Kp($t,a);b=$t.Hj.data[a];$t.Mi=$t.Mi-1|0;while(a<$t.Mi){$t.Hj.data[a]=$t.Hj.data[a+1|0];a=a+1|0;}$t.Hj.data[$t.Mi]=null;$t.Kg=$t.Kg+1|0;return b;} +function QB($t,a){var b;b=EE($t,a);if(b<0){return 0;}Gz($t,b);return 1;} +function Av($t){IN($t.Hj,0,$t.Mi,null);$t.Mi=0;} +function Kp($t,a){if(a>=0&&a<$t.Mi){return;}IP(DQ());} +function Hz($t,a){if(a>=0&&a<=$t.Mi){return;}IP(DQ());} +function Ke(){E.call(this);} +function Oe(){E.call(this);} +function Oh(){E.call(this);} +function ZC($t,a,b){MZ($t,$rt_str(a),WM(b,"handleEvent"));} +function FJ($t,a,b,c){NZ($t,$rt_str(a),WM(b,"handleEvent"),c?1:0);} +function QC($t,a){return !!OZ($t,a);} +function KE($t,a,b){PZ($t,$rt_str(a),WM(b,"handleEvent"));} +function CI($t,a){return QZ($t,a);} +function Ex($t){return RZ($t);} +function Fp($t,a,b,c){SZ($t,$rt_str(a),WM(b,"handleEvent"),c?1:0);} +function Ad(){var a=this;E.call(a);a.xf=null;a.xc=null;a.Qb=null;} +var TZ=27;var UY=null;function Ad_$callClinit(){Ad_$callClinit=function(){}; +LK();} +function DV(b){var $r=new Ad();Ch($r,b);return $r;} +function Vx($t){return $t.xf;} +function ZG($t,a){EP(a,SP(10));$t.xf=a;} +function Gs($t){var a,b,c;a=Ht($t.Qb);b=SP(107);c=$t.xc;a.addEventListener($rt_ustr(b),JM(c,"handleEvent"));} +function QH($t){var a,b,c;a=Ht($t.Qb);b=SP(107);c=$t.xc;a.removeEventListener($rt_ustr(b),JM(c,"handleEvent"));} +function Ch($t,a){Ad_$callClinit();EP(a,SP(102));OB($t);$t.Qb=a;Te_$callClinit();$t.xf=UZ;$t.xc=TY($t);} +function LK(){UY=VZ(null);TZ=27;} +function YE(){Ad_$callClinit();return TZ;} +function Mc(){var a=this;Y.call(a);a.Ab=null;a.Dd=0;a.Le=0;} +function KZ(b,c,d){var $r=new Mc();RI($r,b,c,d);return $r;} +function RI($t,a,b,c){YH($t);$t.Ab=a;$t.Kg=$t.Ab.Kg;$t.Dd=b;$t.Le=c-b|0;} +function Pv($t){return Ny($t,0);} +function Ny($t,a){if($t.Kg!=$t.Ab.Kg){IP(GS());}if(0<=a&&a<=$t.Le){return DZ(DA($t.Ab,a+$t.Dd|0),$t,$t.Dd,$t.Le);}IP(DQ());} +function Jp($t){if($t.Kg==$t.Ab.Kg){return $t.Le;}IP(GS());} +function Ej(){Mc.call(this);} +function LZ(b,c,d){var $r=new Ej();FB($r,b,c,d);return $r;} +function FB($t,a,b,c){RI($t,a,b,c);} +function Uc(){var a=this;E.call(a);a.hb=null;a.Db=0;} +var WZ=null;var XZ=null;function Uc_$callClinit(){Uc_$callClinit=function(){}; +RE();} +function B(b){var $r=new Uc();Eh($r,b);return $r;} +function CS(b,c,d){var $r=new Uc();Pn($r,b,c,d);return $r;} +function Eh($t,a){var b,c;Uc_$callClinit();a=a.data;OB($t);b=a.length;$t.hb=$rt_createCharArray(b);c=0;while(c=0&&a<$t.hb.data.length){return $t.hb.data[a];}IP(OR());} +function C($t){return $t.hb.data.length;} +function DJ($t){return $t.hb.data.length!=0?0:1;} +function D($t,a,b,c,d){var e,f;if(a>=0&&a<=b&&b<=$t.Ch()&&d>=0){c=c.data;if((d+(b-a|0)|0)<=c.length){while(aC($t)){return 0;}c=0;while(cb){IP(DQ());}return CS($t.hb,a,b-a|0);} +function SH($t,a){return Fq($t,a,C($t));} +function PB($t,a,b){return Fq($t,a,b);} +function Kw($t){return $t;} +function Cz(a){Uc_$callClinit();return a===null?EJ(SP(6)):EJ(a.u());} +function YF($t,a){var b,c;if($t===a){return 1;}if(a instanceof Uc==0){return 0;}b=a;if(C(b)!=C($t)){return 0;}c=0;while(c=$t.Xg.data.length){$t.wh=0;}$t.Yb=$t.Yb+1|0;return a;} +function VJ($t){return Wt($t)!=0?null:$t.Xg.data[$t.wh];} +function Bx($t){return VJ($t);} +function AL($t,a){FF($t,a);} +function Sy($t){return CF($t);} +function As($t){return $t.sb>=$t.wh?$t.sb-$t.wh|0:($t.Xg.data.length-$t.wh|0)+$t.sb|0;} +function Wt($t){return $t.wh!=$t.sb?0:1;} +function FI($t,a){var b,c,d,e,f;if(a<$t.Xg.data.length){return;}b=RO($t.Xg.data.length*2|0,((a*3|0)/2|0)+1|0);if(b<1){b=2147483647;}c=MP(E,b);d=0;if($t.wh<=$t.sb){e=c.data;f=$t.wh;while(f<$t.sb){a=d+1|0;e[d]=$t.Xg.data[f];f=f+1|0;d=a;}}else{e=c.data;f=$t.wh;while(f<$t.Xg.data.length){a=d+1|0;e[d]=$t.Xg.data[f];f=f+1|0;d=a;}f=0;while(f<$t.sb){a=d+1|0;e[d]=$t.Xg.data[f];f=f+1|0;d=a;}}$t.wh=0;$t.sb=d;$t.Xg=c;} +function Te(){E.call(this);} +var UZ=null;function Te_$callClinit(){Te_$callClinit=function(){}; +OE();} +function H0(){var $r=new Te();Em($r);return $r;} +function FD($t){return;} +function Em($t){Te_$callClinit();OB($t);} +function OE(){UZ=H0();} +function Dh(){Z.call(this);} +function ST(){var $r=new Dh();HB($r);return $r;} +function RS(b){var $r=new Dh();Ou($r,b);return $r;} +function HB($t){Uw($t);} +function Ou($t,a){Ep($t,a);} +function Si(){var a=this;E.call(a);a.ik=null;a.nf=null;a.Rc=null;a.vi=null;} +function WV(b){var $r=new Si();RH($r,b);return $r;} +function RH($t,a){OB($t);$t.vi=CZ($t);$t.ik=Ht(a);} +function EL($t,a){$t.Rc=a;} +function Zo($t){$t.Rc.h($t.vi);} +function BK($t){return;} +function ML($t,a){$t.nf=a;$t.ik.href='#'+$rt_ustr($t.nf);} +function Pg(){L.call(this);} +function F(){var $r=new Pg();Rx($r);return $r;} +function Rx($t){Xq($t);} +function Zm(){E.call(this);} +function ZO(a){return PN(a,JK(LP(Zm)));} +function VN(a,b){CP(Yv(Up(Up(Up(UP(),a===null?SP(6):JK(Su(a))),SP(109)),b)));} +function CP(a){IP(KN(HS(a)));} +function KN(a){IP(ZO(a));} +function LO(a){if(NP(a,Eb)!=0&&NP(a,Oi)==0){VN(a,SP(110));}return FO(a);} +function FO(a){var b,$$je;a:{try{a=a;}catch($$e){$$je=$$e.$javaException;if($$je&&$$je instanceof Qd){b=$$je;break a;}else {throw $$e;}}return a;}IP(KN(b));} +function Om(){E.call(this);} +function RM(a,b){if(ab){b=a;}return b;} +function Vi(){var a=this;E.call(a);a.Jj=null;a.Ng=null;a.Oi=false;a.Ok=null;} +function VU(b){var $r=new Vi();Zp($r,b);return $r;} +function Zp($t,a){OB($t);$t.Ok=FW($t);$t.Jj=Ht(a);} +function Cu($t,a){$t.Ng=a;} +function PF($t){if($t.Oi==0){$t.Oi=1;$t.Jj.addEventListener("change",JM($t.Ok,"handleEvent"));}} +function Ys($t){if($t.Oi!=0){$t.Oi=0;$t.Jj.removeEventListener("change",JM($t.Ok,"handleEvent"));}} +function BN(a){return a.Jj;} +function LM(a){return a.Ng;} +function Cm(){E.call(this);this.ge=null;} +function UV(b){var $r=new Cm();NG($r,b);return $r;} +function NA($t){var a;a=Js($t.ge);Lb_$callClinit();return (a!==KT?0:1)==0?SP(11):SP(111);} +function NG($t,a){OB($t);$t.ge=a;} +function Zl(){E.call(this);this.Of=null;} +function LY(b){var $r=new Zl();Kx($r,b);return $r;} +function Ks($t){var a,b,c;a=$t.Of;b=MP(E,1);c=EB(a)<=0?0:1;b=b.data;a=Ox(c);b[0]=a;return Ox(ZE(b[0]));} +function Kx($t,a){OB($t);$t.Of=a;} +function Bm(){E.call(this);this.Si=null;} +function A0(b){var $r=new Bm();BC($r,b);return $r;} +function Qp($t){var a;a=Js($t.Si);Lb_$callClinit();return (a!==LT?0:1)==0?SP(11):SP(111);} +function BC($t,a){OB($t);$t.Si=a;} +function Tj(){var a=this;M.call(a);a.af=null;a.Bf=null;a.Ie=null;a.Ge=false;} +function DY(b){var $r=new Tj();JL($r,b);return $r;} +function JL($t,a){IG($t,a);} +function Do($t,a){$t.af=a;} +function Nq($t,a){$t.Bf=a;} +function AE($t){var a;a=ZE($t.af.g());if($t.Ge!=a){if(a==0){Dv(My($t.Ie));}else{if($t.Ie===null){$t.Ie=$t.Bf.l();}LG(My($t),My($t.Ie));}}$t.Ge=a;if($t.Ge!=0){Kr($t.Ie);}} +function Sz($t){if($t.Ie!==null){YI($t.Ie);}HF($t);} +function Am(){E.call(this);this.gd=null;} +function C0(b){var $r=new Am();Xt($r,b);return $r;} +function IF($t){var a;a=Js($t.gd);Lb_$callClinit();return (a!==NT?0:1)==0?SP(11):SP(111);} +function Xt($t,a){OB($t);$t.gd=a;} +function Ac(){var a=this;E.call(a);a.ff=0;a.Lb=0;a.Pi=0;} +var I0=null;function Ac_$callClinit(){Ac_$callClinit=function(){}; +Zw();} +function J0(b,c,d){var $r=new Ac();Xk($r,b,c,d);return $r;} +function Jw($t){return QW($t.ff,$t.Lb,$t.Pi);} +function Os($t){return Jw($t);} +function Xk($t,a,b,c){Ac_$callClinit();OB($t);if(c!=0){$t.ff=a;$t.Lb=TN(a,b,c);$t.Pi=c;return;}IP(XQ(SP(112)));} +function Zw(){I0=XT(null);} +function Kc(){Ac.call(this);} +var K0=null;var L0=null;function Kc_$callClinit(){Kc_$callClinit=function(){}; +WA();} +function WS(b,c){var $r=new Kc();Li($r,b,c);return $r;} +function Li($t,a,b){Kc_$callClinit();Xk($t,a,b,1);} +function WA(){L0=CY(null);K0=WS(1,0);} +function Ik(){Fc.call(this);} +function Gb(){E.call(this);} +function Gk(){E.call(this);this.gk=null;} +function QV(b){var $r=new Gk();Yq($r,b);return $r;} +function Ut($t,a){var b,c;b=$t.gk;c=MP(E,1).data;a=Ox(ZE(a));c[0]=a;Yt(b,ZE(c[0]));NK();} +function Yq($t,a){OB($t);$t.gk=a;} +function Dk(){E.call(this);this.Me=null;} +function CU(b){var $r=new Dk();GF($r,b);return $r;} +function VL($t,a){var b,c;b=$t.Me;c=MP(E,1).data;c[0]=a;Fw(b,c[0]);NK();} +function GF($t,a){OB($t);$t.Me=a;} +function Ek(){E.call(this);this.dc=null;} +function IV(b){var $r=new Ek();XB($r,b);return $r;} +function WD($t,a){var b,c;b=$t.dc;b=b.Di;c=MP(E,1).data;c[0]=a;Yo(b,c[0]);NK();} +function XB($t,a){OB($t);$t.dc=a;} +function Fk(){E.call(this);this.gc=null;} +function WU(b){var $r=new Fk();Wv($r,b);return $r;} +function Xu($t,a){var b,c;b=$t.gc;b=b.Di;c=MP(E,1).data;c[0]=a;XJ(b,ZE(c[0]));NK();} +function Wv($t,a){OB($t);$t.gc=a;} +function Kj(){E.call(this);} +function HO(a){return EZ();} +function Ob(){Hb.call(this);this.nk=null;} +function M0(){var $r=new Ob();DH($r);return $r;} +function DH($t){Ly($t);$t.nk=PS();} +function LG($t,a){EH($t,a,HC($t));} +function EH($t,a,b){var c,d,e,f,g,h,i,j;if(Rs(a)!==null){IP(XQ(SP(113)));}c=RB($t);d=b>=Nu($t.nk)?$t.Zb:Oy($t.nk,b).Zb;if(c!==null){e=PS();a.M(e);f=c.vf.childNodes[d];e=SB(e);while(Dr(e)!=0){g=DE(e);h=c.vf;h.insertBefore(g.Ac,f);}}QI($t.nk,b,a);a.dd=$t;i=b;while(i=1073741824){return 1073741824;}if(a==0){return 16;}b=a-1|0;a=b|b>>1;a=a|a>>2;a=a|a>>4;a=a|a>>8;return (a|a>>16)+1|0;} +function VH($t,a,b){BA($t);if(a>=0&&b>0.0){a=NO(a);$t.ed=0;$t.me=AF($t,a);$t.Sk=b;Lx($t);return;}IP(YT());} +function Lx($t){$t.pj=$t.me.data.length*$t.Sk|0;} +function JF($t,a){var b;b=Cr($t,a);if(b===null){return null;}return b.Vh;} +function Cr($t,a){var b,c;if(a===null){b=FL($t);}else{c=GN(a);b=YC($t,a,c&($t.me.data.length-1|0),c);}return b;} +function YC($t,a,b,c){var d;d=$t.me.data[b];while(d!==null){if(d.Hc==c){if(UM(a,d.Qf)!=0){break;}}d=d.Mf;}return d;} +function FL($t){var a;a=$t.me.data[0];while(a!==null){if(a.Qf===null){break;}a=a.Mf;}return a;} +function Ir($t,a,b){return JE($t,a,b);} +function JE($t,a,b){var c,d,e,f;if(a===null){c=FL($t);if(c===null){$t.mk=$t.mk+1|0;c=Xw($t,null,0,0);d=$t.ed+1|0;$t.ed=d;if(d>$t.pj){Cy($t);}}}else{d=GN(a);e=d&($t.me.data.length-1|0);c=YC($t,a,e,d);if(c===null){$t.mk=$t.mk+1|0;c=Xw($t,a,e,d);d=$t.ed+1|0;$t.ed=d;if(d>$t.pj){Cy($t);}}}f=c.Vh;c.Vh=b;return f;} +function Xw($t,a,b,c){var d;d=NW(a,c);d.Mf=$t.me.data[b];$t.me.data[b]=d;return d;} +function YD($t,a){var b,c,d,e,f,g,h;b=NO(a==0?1:a<<1);c=AF($t,b);d=0;b=b-1|0;while(d<$t.me.data.length){e=$t.me.data[d];$t.me.data[d]=null;while(e!==null){f=c.data;g=e.Hc&b;h=e.Mf;e.Mf=f[g];f[g]=e;e=h;}d=d+1|0;}$t.me=c;Lx($t);} +function Cy($t){YD($t,$t.me.data.length);} +function GN(a){return a.V();} +function UM(a,b){return a!==b&&a.H(b)==0?0:1;} +function Oj(){var a=this;E.call(a);a.xk=null;a.Je=null;a.Ub=false;} +function EU(b){var $r=new Oj();NL($r,b);return $r;} +function NL($t,a){OB($t);$t.Ub=1;$t.xk=Ht(a);} +function Dx($t,a){$t.Je=a;} +function Lu($t){var a;a=ZE(Hq($t.Je));if(a!=$t.Ub){$t.Ub=a;$t.xk.disabled=!!(a!=0?0:1);}} +function Sx($t){return;} +function Ge(){O.call(this);} +var JT=null;function Ge_$callClinit(){Ge_$callClinit=function(){}; +Jy();} +function S0(){var $r=new Ge();Mj($r);return $r;} +function MF($t,a){return Ox(Pw($t,a));} +function Pw($t,a){EP(a,SP(9));return 1;} +function Mj($t){Ge_$callClinit();DI($t,1);} +function Jy(){JT=S0();} +function Ve(){O.call(this);} +var MT=null;function Ve_$callClinit(){Ve_$callClinit=function(){}; +Dp();} +function T0(){var $r=new Ve();Jn($r);return $r;} +function Xn($t,a){return Ox(XA($t,a));} +function XA($t,a){EP(a,SP(9));return Fr(a);} +function Jn($t){Ve_$callClinit();DI($t,1);} +function Dp(){MT=T0();} +function Jh(){var a=this;E.call(a);a.Wh=0;a.Tb=0;a.fi=null;} +function JW(b,c,d){var $r=new Jh();CC($r,b,c,d);return $r;} +function CC($t,a,b,c){OB($t);$t.Wh=a;$t.Tb=b;$t.fi=c;} +function Ci(){var a=this;E.call(a);a.eh=null;a.fh=null;} +function YU(b,c){var $r=new Ci();Qy($r,b,c);return $r;} +function Rr($t,a){var b,c;a=$t.eh;b=$t.fh;c=MP(E,1);b=b;b=b.Di;c=c.data;c[0]=b;Cp(a,c[0]);NK();} +function Qy($t,a,b){OB($t);$t.eh=a;$t.fh=b;} +function Zh(){E.call(this);this.kh=null;} +function IU(b){var $r=new Zh();QJ($r,b);return $r;} +function Wr($t,a){Zq($t.kh);NK();} +function QJ($t,a){OB($t);$t.kh=a;} +function Fm(){Sb.call(this);} +function Gi(){E.call(this);this.Qe=null;} +function XV(b){var $r=new Gi();HD($r,b);return $r;} +function MI($t,a){var b,c;b=$t.Qe;c=MP(E,1).data;c[0]=a;IA(LC(b,c[0]));NK();} +function HD($t,a){OB($t);$t.Qe=a;} +function Di(){var a=this;E.call(a);a.Ee=null;a.De=null;} +function CW(b,c){var $r=new Di();Qs($r,b,c);return $r;} +function Pt($t,a){var b,c;a=$t.Ee;b=$t.De;c=MP(E,1);b=b;b=b.Di;c=c.data;c[0]=b;LA(a,c[0]);NK();} +function Qs($t,a,b){OB($t);$t.Ee=a;$t.De=b;} +function Ei(){var a=this;E.call(a);a.ek=null;a.bk=null;} +function SV(b,c){var $r=new Ei();RK($r,b,c);return $r;} +function Gu($t,a){var b,c;a=$t.ek;b=$t.bk;c=MP(E,1);b=b;b=b.Di;c=c.data;c[0]=b;LA(a,c[0]);NK();} +function RK($t,a,b){OB($t);$t.ek=a;$t.bk=b;} +function Bi(){var a=this;E.call(a);a.yh=null;a.zh=null;} +function SU(b,c){var $r=new Bi();Ms($r,b,c);return $r;} +function Yy($t,a){var b,c;a=$t.yh;b=$t.zh;c=MP(E,1);b=b;b=b.Di;c=c.data;c[0]=b;CM(a,c[0]);NK();} +function Ms($t,a,b){OB($t);$t.yh=a;$t.zh=b;} +function Hi(){E.call(this);this.Rd=null;} +function B0(b){var $r=new Hi();AH($r,b);return $r;} +function Zt($t,a){Dz($t.Rd);NK();} +function AH($t,a){OB($t);$t.Rd=a;} +function Ii(){E.call(this);this.Dj=null;} +function ZZ(b){var $r=new Ii();No($r,b);return $r;} +function Yp($t,a){var b,c;b=$t.Dj;c=MP(E,1).data;c[0]=a;Xv(LC(b,c[0]));NK();} +function No($t,a){OB($t);$t.Dj=a;} +function Rg(){E.call(this);} +function OO(a,b){var c;c=a%b|0;if(c<0){c=c+b|0;}return c;} +function HM(a,b,c){return OO(OO(a,c)-OO(b,c)|0,c);} +function TN(a,b,c){if(c>0){return b-HM(b,a,c)|0;}if(c<0){return b+HM(a,b, -c)|0;}IP(XQ(SP(114)));} +function Fi(){E.call(this);this.Kj=null;} +function EW(b){var $r=new Fi();GI($r,b);return $r;} +function OL($t,a){var b,c;b=$t.Kj;c=MP(E,1).data;c[0]=a;Nr(LC(b,c[0]));NK();} +function GI($t,a){OB($t);$t.Kj=a;} +function Gg(){var a=this;E.call(a);a.mg=null;a.sg=null;a.wi=false;} +function BU(b){var $r=new Gg();Iv($r,b);return $r;} +function Iv($t,a){OB($t);$t.mg=a;} +function Uy($t,a){$t.sg=a;} +function Sw($t){if($t.wi==0){$t.wi=1;Zn($t.mg,$t.sg);}} +function UA($t){if($t.wi!=0){$t.wi=0;Xz($t.mg,$t.sg);}} +function Xj(){Cb.call(this);} +function RY(){var $r=new Xj();HI($r);return $r;} +function HI($t){Tn($t);} +function Yk(){var a=this;E.call(a);a.qk=null;a.tk=false;} +function IT(){var $r=new Yk();Mq($r);return $r;} +function Es($t){return $t.qk;} +function Yo($t,a){EP(a,SP(10));$t.qk=a;} +function Fr($t){return $t.tk;} +function XJ($t,a){$t.tk=a;} +function Mq($t){OB($t);$t.qk=SP(11);} +function Nn(){E.call(this);} +function U0(){var $r=new Nn();Hx($r);return $r;} +function VZ(b){var $r=new Nn();Hp($r,b);return $r;} +function Ez($t){return YE();} +function Hx($t){OB($t);} +function Hp($t,a){Hx($t);} +function Vk(){Ob.call(this);this.vf=null;} +function O0(b){var $r=new Vk();Ow($r,b);return $r;} +function Ow($t,a){DH($t);$t.vf=a;} +function Dn(){var a=this;M.call(a);a.Fk=null;a.ld=null;a.pg=null;a.tb=null;a.Yg=false;} +function EY(b){var $r=new Dn();PL($r,b);return $r;} +function PL($t,a){IG($t,a);$t.Yg=1;} +function WH($t,a){$t.Fk=a;} +function Au($t,a){$t.ld=a;} +function KK($t){var a,b,c;a=null;b=SB($t.Fk);a:{while(true){if(Dr(b)==0){c=a;break a;}c=DE(b);if(NH(c.Xf)!=0){break;}}}if(!($t.Yg==0&&$t.tb===c)){if($t.pg!==null){YI($t.pg);$t.pg=null;}$t.tb=c;if($t.tb!==null){a=$t.tb;$t.pg=CB(a.Vd);}else if($t.ld!==null){a=$t.ld;$t.pg=UJ(a.mh);}LG(My($t),My($t.pg));$t.Yg=0;}if($t.pg!==null){Kr($t.pg);}} +function Kt($t){HF($t);if($t.pg!==null){YI($t.pg);$t.pg=null;}} +function Ih(){Y.call(this);this.Yj=null;} +function MY(b){var $r=new Ih();Mw($r,b);return $r;} +function Mw($t,a){YH($t);$t.Yj=a;} +function Vn($t,a){return $t.Yj.data[a];} +function Ot($t){return $t.Yj.data.length;} +$rt_metadata([E,"java.lang.Object",0,[],0,0,["a",function(){OB(this);},"Hh",function(){return Su(this);},"V",function(){return Zy(this);},"H",function(b){return Bp(this,b);},"u",function(){return Nw(this);},"ob",function(){return Ro(this);},"Nk",function(){return SK(this);}],U,"org.teavm.flavour.templates.Fragment",E,[],0,0,[],Bh,"org.teavm.flavour.templates.Fragment$proxy6",E,[U],0,0,["l",function(){return UB(this);},"Nd",function(b){CD(this,b);}],Rb,"java.lang.Throwable",E,[],0,0,["a",function(){ME(this); +},"f",function(b){JI(this,b);},"Kh",function(){return KC(this);},"Q",function(){return Kq(this);},"Ah",function(b){VE(this,b);}],Z,"java.lang.Exception",Rb,[],0,0,["a",function(){Uw(this);},"f",function(b){Ep(this,b);}],L,"java.lang.RuntimeException",Z,[],0,0,["a",function(){Xq(this);},"f",function(b){OG(this,b);}],Pc,"java.lang.IndexOutOfBoundsException",L,[],0,0,["a",function(){Yw(this);}],Ah,"org.teavm.flavour.templates.Fragment$proxy5",E,[U],0,0,["l",function(){return Nz(this);},"b",function(b){Wu(this, +b);}],Ug,"org.teavm.flavour.templates.Fragment$proxy0",E,[U],0,0,["l",function(){return Tz(this);},"b",function(b){EG(this,b);}],Eb,"kotlin.jvm.internal.markers.KMappedMarker",E,[],0,0,[],Wg,"org.teavm.flavour.templates.Fragment$proxy2",E,[U],0,0,["l",function(){return Et(this);},"Dc",function(b,c){Io(this,b,c);}],P,"org.teavm.flavour.templates.Renderable",E,[],0,0,[],He,"org.teavm.flavour.templates.Component",E,[P],0,0,[],Vg,"org.teavm.flavour.templates.Fragment$proxy1",E,[U],0,0,["l",function(){return LI(this); +},"b",function(b){MB(this,b);}],Q,"java.io.Serializable",E,[],0,0,[],Sc,"java.lang.Number",E,[Q],0,0,["a",function(){LH(this);}],Db,"java.lang.Comparable",E,[],0,0,[],Cd,"java.lang.Integer",Sc,[Db],0,Cd_$callClinit,["r",function(b){Jk(this,b);},"pk",function(){return Zs(this);},"u",function(){return QG(this);},"H",function(b){return HJ(this,b);}],Ze,"kotlin.ranges.ClosedRange",E,[],0,0,[],Qk,"java.lang.CloneNotSupportedException",Z,[],0,0,["a",function(){XH(this);}],Tb,"kotlin.Function",E,[],0,0,[],Af,"kotlin.jvm.internal.FunctionBase", +E,[Tb,Q],0,0,[],Zg,"org.teavm.flavour.templates.Fragment$proxy4",E,[U],0,0,["l",function(){return UJ(this);},"a",function(){Ao(this);}],Xg,"org.teavm.flavour.templates.Fragment$proxy3",E,[U],0,0,["l",function(){return CB(this);},"a",function(){Tw(this);}],Qc,"org.teavm.flavour.routing.Route",E,[],0,0,["Hb",function(b){return Jr(this,b);},"wb",function(b){return FG(this,b);}],Wc,"org.teavm.flavour.example.todomvc.TodoRoute",E,[Qc],0,0,["Hb",function(b){return Jr(this,b);},"wb",function(b){return FG(this,b);}],Hb, +"org.teavm.flavour.templates.Space",E,[],0,0,["a",function(){Ly(this);},"pc",function(){return Rs(this);},"Sj",function(){Dv(this);},"W",function(b){Oo(this,b);},"Ji",function(){return RB(this);}],Cj,"org.teavm.flavour.templates.NodeHolder",Hb,[],0,0,["db",function(b){OK(this,b);},"M",function(b){Mx(this,b);}],V,"org.teavm.jso.JSObject",E,[],0,0,[],Wd,"org.teavm.jso.dom.xml.Node",E,[V],0,0,[],Yd,"org.teavm.jso.dom.xml.Document",E,[Wd],0,0,[],X,"org.teavm.jso.dom.events.EventTarget",E,[V],0,0,[],Al,"org.teavm.jso.dom.html.HTMLDocument", +E,[Yd,X],0,0,[],Vb,"java.lang.Runnable",E,[],0,0,[],Jb,"java.lang.Thread",E,[Vb],0,Jb_$callClinit,["f",function(b){Ti(this,b);},"bc",function(b,c){Uj(this,b,c);},"Q",function(){return EI(this);}],Be,"java.util.Map",E,[],0,0,[],Fd,"kotlin.text.CharsKt__CharJVMKt",E,[],0,0,[],Qe,"org.teavm.flavour.example.todomvc.TodoDataSource",E,[],0,0,[],Nc,"org.teavm.flavour.example.todomvc.LocalStorageTodoDataSource",E,[Qe],0,Nc_$callClinit,["ki",function(){return JC(this);},"Cf",function(b){XL(this,b);},"ll",function(b) +{YG(this,b);},"se",function(){IJ(this);},"Uk",function(){return FA(this);},"hh",function(b){Wx(this,b);},"a",function(){Wj(this);}],Ld,"java.lang.CharSequence",E,[],0,0,[],Md,"java.lang.Error",Rb,[],0,0,["f",function(b){Wz(this,b);}],Sb,"java.lang.LinkageError",Md,[],0,0,["f",function(b){Cq(this,b);}],Ee,"org.teavm.jso.dom.events.LoadEventTarget",E,[X],0,0,[],R,"org.teavm.flavour.json.tree.Node",E,[V],0,0,[],Ok,"org.teavm.flavour.json.tree.ArrayNode",R,[],0,0,[],An,"java.lang.StringIndexOutOfBoundsException", +Pc,[],0,0,["a",function(){SC(this);}],Ai,"org.teavm.flavour.json.deserializer.JsonDeserializerContext",E,[],0,0,["a",function(){Gr(this);}],Yb,"java.util.Iterator",E,[],0,0,[],Dc,"kotlin.collections.IntIterator",E,[Yb,Eb],0,0,["a",function(){RA(this);}],S,"java.lang.AbstractStringBuilder",E,[Q,Ld],0,S_$callClinit,["a",function(){Ri(this);},"r",function(b){Gh(this,b);},"f",function(b){Cn(this,b);},"dk",function(b){Bk(this,b);},"ml",function(b){return Du(this,b);},"Y",function(b,c){return CA(this,b,c);},"jd", +function(b,c){return Ls(this,b,c);},"yc",function(b,c,d){return PH(this,b,c,d);},"rj",function(b){return OH(this,b);},"X",function(b,c){return TB(this,b,c);},"D",function(b){Yu(this,b);},"u",function(){return Tq(this);},"rh",function(b,c){Is(this,b,c);}],Ye,"java.lang.Appendable",E,[],0,0,[],Qg,"java.lang.StringBuilder",S,[Ye],0,0,["a",function(){OI(this);},"f",function(b){Xp(this,b);},"re",function(b){return Up(this,b);},"ai",function(b){return Eq(this,b);},"ce",function(b,c){return TJ(this,b,c);},"Kd",function(b, +c){return GK(this,b,c);},"u",function(){return Yv(this);},"D",function(b){QK(this,b);},"X",function(b,c){return Aq(this,b,c);},"Y",function(b,c){return HL(this,b,c);}],M,"org.teavm.flavour.templates.AbstractComponent",E,[He],0,0,["n",function(b){IG(this,b);},"e",function(){HF(this);},"Zc",function(){return My(this);}],N,"java.util.function.Consumer",E,[],0,0,[],Fh,"$$LAMBDA2$$",E,[N],0,0,["P",function(b){RL(this,b);},"h",function(b){Ps(this,b);},"bb",function(b){Lt(this,b);}],Ol,"java.util.ConcurrentModificationException", +L,[],0,0,["a",function(){IK(this);}],Cc,"kotlin.text.StringsKt__IndentKt",E,[],0,0,[],Gd,"kotlin.text.StringsKt__RegexExtensionsKt",Cc,[],0,0,[],Nk,"org.teavm.flavour.routing.parsing.PathParser$PathParserElement",E,[],0,0,[],Qd,"java.lang.ClassCastException",L,[],0,0,["f",function(b){Iw(this,b);}],Pf,"kotlin.TypeCastException",Qd,[],0,0,["f",function(b){MD(this,b);}],Ib,"org.teavm.flavour.json.serializer.JsonSerializer",E,[],0,0,[],Rm,"org.teavm.flavour.json.serializer.JsonSerializer$proxy1",E,[Ib],0,0,["y", +function(b,c){return DM(this,b,c);},"a",function(){QE(this);}],K,"java.util.function.Supplier",E,[],0,0,[],Qm,"org.teavm.flavour.json.serializer.JsonSerializer$proxy0",E,[Ib],0,0,["y",function(b,c){return Vz(this,b,c);},"a",function(){Ns(this);}],Sm,"org.teavm.flavour.json.serializer.JsonSerializer$proxy2",E,[Ib],0,0,["y",function(b,c){return Uq(this,b,c);},"a",function(){DF(this);}],Nf,"org.teavm.flavour.widgets.RouteBinder",E,[],0,0,["a",function(){ZA(this);},"P",function(b){Wp(this,b);},"ke",function(b){ +PD(this,b);},"Eb",function(b){return By(this,b);},"m",function(){Ey(this);},"Cd",function(b,c){return Lo(this,b,c);},"cj",function(b){AG(this,b);}],Td,"org.teavm.flavour.json.serializer.NullableSerializer",E,[Ib],0,0,["a",function(){HG(this);},"y",function(b,c){return Hs(this,b,c);}],Pk,"org.teavm.flavour.json.serializer.ListSerializer",Td,[],0,0,["pb",function(b){BD(this,b);},"Gg",function(b,c){return AM(this,b,c);}],Qn,"java.lang.StackTraceElement",E,[Q],0,0,[],Bf,"org.teavm.flavour.regex.Matcher",E,[],0, +0,["mj",function(b){return Yr(this,b);}],T,"org.teavm.flavour.json.deserializer.JsonDeserializer",E,[],0,0,["a",function(){Ts(this);}],Le,"java.io.Flushable",E,[],0,0,[],Lf,"org.teavm.flavour.routing.parsing.PathParserResult",E,[],0,0,["Bk",function(b,c,d){Vu(this,b,c,d);},"rk",function(){return WE(this);}],Bj,"org.teavm.flavour.example.todomvc.LocalStorageTodoDataSource$Companion",E,[],0,0,["aj",function(){return KB(this);},"a",function(){MK(this);},"w",function(b){ZJ(this,b);}],Vc,"kotlin.text.StringsKt__StringBuilderJVMKt", +Gd,[],0,0,[],Yc,"kotlin.text.StringsKt__StringBuilderKt",Vc,[],0,0,[],Jd,"kotlin.text.StringsKt__StringNumberConversionsKt",Yc,[],0,0,[],Hd,"kotlin.text.StringsKt__StringsJVMKt",Jd,[],0,0,[],Ud,"kotlin.text.StringsKt__StringsKt",Hd,[],0,0,[],Od,"kotlin.text.StringsKt___StringsKt",Ud,[],0,0,[],Vl,"kotlin.text.StringsKt",Od,[],0,0,[],O,"kotlin.jvm.internal.Lambda",E,[Af],0,0,["r",function(b){DI(this,b);}],Fb,"kotlin.jvm.functions.Function1",E,[Tb],0,0,[],Ue,"org.teavm.flavour.example.todomvc.TodoView$active$1", +O,[Fb],0,Ue_$callClinit,["x",function(b){return VC(this,b);},"t",function(b){return Aw(this,b);},"a",function(){Sg(this);}],Pb,"java.lang.IncompatibleClassChangeError",Sb,[],0,0,["f",function(b){SE(this,b);}],Ul,"java.lang.NoSuchMethodError",Pb,[],0,0,["f",function(b){Tx(this,b);}],Je,"org.teavm.flavour.routing.emit.PathImplementor",E,[],0,0,[],Ln,"org.teavm.flavour.routing.emit.PathImplementor$proxy0",E,[Je],0,0,["Vk",function(b,c){return FH(this,b,c);},"uc",function(b){return SA(this,b);},"el",function(b) +{WB(this,b);}],Kk,"org.teavm.flavour.templates.Templates$RootComponent",M,[],0,0,["nh",function(b,c){Un(this,b,c);},"d",function(){IL(this);},"e",function(){Zu(this);}],Lc,"org.teavm.flavour.widgets.ApplicationTemplate",E,[Qc],0,0,["a",function(){BH(this);},"rb",function(b){SG(this,b);},"Hb",function(b){return Jr(this,b);},"wb",function(b){return FG(this,b);}],Xe,"org.teavm.flavour.example.todomvc.TodoView",Lc,[Wc],0,Xe_$callClinit,["Ph",function(){return KA(this);},"lb",function(){return WC(this);},"Oc",function() +{return NE(this);},"ni",function(b){Fw(this,b);},"Ti",function(){return Hv(this);},"qc",function(){return UI(this);},"Tc",function(){return Js(this);},"zk",function(){return Vr(this);},"ok",function(){return EB(this);},"we",function(){return TH(this);},"Xi",function(b){Yt(this,b);},"bg",function(){Zq(this);},"ae",function(b){Cp(this,b);},"vb",function(b){PJ(this,b);},"tf",function(b){LA(this,b);},"qj",function(b){CM(this,b);},"Gd",function(){Dz(this);},"I",function(){Fv(this);},"K",function(){DB(this);},"Z", +function(){Or(this);},"yi",function(b){return LC(this,b);},"Dk",function(){Vs(this);},"Vf",function(b){Mf(this,b);},"Hb",function(b){return Jr(this,b);},"wb",function(b){return FG(this,b);}],Th,"org.teavm.flavour.routing.emit.RoutingImpl",E,[],0,0,[],Ki,"org.teavm.flavour.routing.parsing.PathParser",E,[],0,0,["cl",function(b,c){Jo(this,b,c);},"Og",function(b){return PA(this,b);}],Nm,"org.teavm.flavour.example.todomvc.TodoList",E,[],0,0,["Cb",function(){return Sp(this);},"a",function(){JJ(this);}],Rh,"java.util.AbstractList$1", +E,[Yb],0,0,["Ef",function(b){Lv(this,b);},"F",function(){return Dr(this);},"z",function(){return DE(this);},"vj",function(){DG(this);},"O",function(){Gy(this);}],Yl,"org.teavm.flavour.routing.internal.Matcher0",E,[Bf],0,0,["a",function(){Lw(this);},"gg",function(){return Ct(this);},"qb",function(){return NJ(this);},"ol",function(b,c,d,e){return So(this,b,c,d,e);},"mj",function(b){return Yr(this,b);}],Ab,"org.teavm.jso.dom.events.EventListener",E,[V],0,0,[],Aj,"$$LAMBDA1$$",E,[Ab],0,0,["Kk",function(b){XC(this, +b);},"q",function(b){Ko(this,b);},"mc",function(b){SD(this,b);},"p",function(b){return Uo(this,b);}],Yh,"java.lang.Runnable$proxy0",E,[Vb],0,0,["fb",function(){Gv(this);},"j",function(b,c){ZK(this,b,c);}],Rj,"org.teavm.flavour.json.JSON",E,[],0,0,[],Ph,"kotlin.ranges.IntProgression$Companion",E,[],0,0,["a",function(){TD(this);},"w",function(b){Eo(this,b);}],Hh,"java.lang.reflect.Array",E,[],0,0,[],Zb,"java.util.ListIterator",E,[Yb],0,0,[],J,"org.teavm.flavour.templates.Modifier",E,[],0,0,[],El,"org.teavm.flavour.templates.Modifier$proxy2", +E,[J],0,0,["c",function(b){return Pr(this,b);},"b",function(b){Ws(this,b);}],Hl,"org.teavm.flavour.templates.Modifier$proxy3",E,[J],0,0,["c",function(b){return CL(this,b);},"b",function(b){Uz(this,b);}],Dl,"org.teavm.flavour.templates.Modifier$proxy0",E,[J],0,0,["c",function(b){return Nv(this,b);},"b",function(b){Ky(this,b);}],Fl,"org.teavm.flavour.templates.Modifier$proxy1",E,[J],0,0,["c",function(b){return IE(this,b);},"b",function(b){Ay(this,b);}],Zj,"org.teavm.platform.plugin.ResourceAccessor",E,[],0,0, +[],Ck,"org.teavm.flavour.json.deserializer.ListDeserializer",T,[],0,0,["vk",function(b){Qu(this,b);},"E",function(b,c){return PI(this,b,c);}],Ji,"java.lang.NoSuchFieldError",Pb,[],0,0,["f",function(b){Vw(this,b);}],Xc,"kotlin.collections.CollectionsKt__CollectionsKt",E,[],0,0,[],Rf,"org.teavm.flavour.templates.Modifier$proxy10",E,[J],0,0,["c",function(b){return CK(this,b);},"j",function(b,c){DL(this,b,c);}],Dd,"java.lang.Iterable",E,[],0,0,[],Kb,"java.util.Collection",E,[Dd],0,0,[],W,"java.util.AbstractCollection", +E,[Kb],0,0,["a",function(){XF(this);},"G",function(){return AB(this);},"qg",function(b){return Np(this,b);},"Ob",function(b){return IB(this,b);},"ti",function(b){return Mu(this,b);}],Kl,"org.teavm.flavour.templates.Modifier$proxy8",E,[J],0,0,["c",function(b){return Cw(this,b);},"k",function(b){RJ(this,b);}],Ml,"org.teavm.flavour.templates.Modifier$proxy9",E,[J],0,0,["c",function(b){return Mr(this,b);},"j",function(b,c){OC(this,b,c);}],Il,"org.teavm.flavour.templates.Modifier$proxy6",E,[J],0,0,["c",function(b) +{return Ww(this,b);},"C",function(b,c){Gt(this,b,c);}],Tf,"org.teavm.flavour.templates.Modifier$proxy14",E,[J],0,0,["c",function(b){return Gp(this,b);},"j",function(b,c){HK(this,b,c);}],Ll,"org.teavm.flavour.templates.Modifier$proxy7",E,[J],0,0,["c",function(b){return Ku(this,b);},"k",function(b){Hr(this,b);}],Uf,"org.teavm.flavour.templates.Modifier$proxy13",E,[J],0,0,["c",function(b){return Px(this,b);},"k",function(b){Zx(this,b);}],Zd,"org.teavm.flavour.example.todomvc.TodoView$Companion$main$1",E,[N],0, +Zd_$callClinit,["h",function(b){TL(this,b);},"hc",function(b){Ux(this,b);},"a",function(){Nh(this);}],Gl,"org.teavm.flavour.templates.Modifier$proxy4",E,[J],0,0,["c",function(b){return Iq(this,b);},"b",function(b){XK(this,b);}],Vf,"org.teavm.flavour.templates.Modifier$proxy12",E,[J],0,0,["c",function(b){return Vv(this,b);},"k",function(b){HE(this,b);}],Jl,"org.teavm.flavour.templates.Modifier$proxy5",E,[J],0,0,["c",function(b){return TF(this,b);},"b",function(b){Rq(this,b);}],Qf,"org.teavm.flavour.templates.Modifier$proxy11", +E,[J],0,0,["c",function(b){return VG(this,b);},"j",function(b,c){Dt(this,b,c);}],Cg,"org.teavm.flavour.templates.Modifier$proxy18",E,[J],0,0,["c",function(b){return KG(this,b);},"b",function(b){YB(this,b);}],Dg,"org.teavm.flavour.templates.Modifier$proxy17",E,[J],0,0,["c",function(b){return KL(this,b);},"b",function(b){WG(this,b);}],Eg,"org.teavm.flavour.templates.Modifier$proxy16",E,[J],0,0,["c",function(b){return Jq(this,b);},"C",function(b,c){LF(this,b,c);}],Sf,"org.teavm.flavour.templates.Modifier$proxy15", +E,[J],0,0,["c",function(b){return QF(this,b);},"j",function(b,c){Xr(this,b,c);}],Bg,"org.teavm.flavour.templates.Modifier$proxy19",E,[J],0,0,["c",function(b){return Ss(this,b);},"b",function(b){Qx(this,b);}],Sl,"org.teavm.flavour.components.html.CheckedChangeBinder$1",E,[Ab],0,0,["Td",function(b){Bo(this,b);},"q",function(b){CJ(this,b);},"p",function(b){return YJ(this,b);}],Vd,"org.teavm.flavour.example.todomvc.TodoView$todoFilter$1",O,[Fb],0,Vd_$callClinit,["x",function(b){return Fo(this,b);},"t",function(b) +{return GH(this,b);},"a",function(){Lk(this);}],Wh,"org.teavm.flavour.routing.emit.RoutingImpl$PROXY$6",E,[],0,0,[],Sj,"org.teavm.jso.impl.JS",E,[],0,0,[],Xh,"org.teavm.flavour.routing.emit.RoutingImpl$PROXY$3",E,[],0,0,[],Uh,"org.teavm.flavour.routing.emit.RoutingImpl$PROXY$1",E,[],0,0,[],Fc,"kotlin.text.CharsKt__CharKt",Fd,[],0,0,[],Yi,"org.teavm.classlib.impl.unicode.UnicodeHelper",E,[],0,0,[],Bl,"java.util.Objects",E,[],0,0,[],Ic,"org.teavm.flavour.templates.Templates",E,[],0,Ic_$callClinit,[],Xd,"java.util.Map$Entry", +E,[],0,0,[],Nb,"java.lang.Cloneable",E,[],0,0,[],Rd,"java.util.MapEntry",E,[Xd,Nb],0,0,["Pk",function(b,c){UK(this,b,c);}],Yg,"java.util.HashMap$HashEntry",Rd,[],0,0,["ne",function(b,c){Bw(this,b,c);}],Sk,"org.teavm.flavour.components.standard.ForEachComponent",M,[],0,0,["n",function(b){WF(this,b);},"Pc",function(b){BG(this,b);},"Th",function(){return NF(this);},"S",function(b){ZB(this,b);},"d",function(){AC(this);},"e",function(){Mp(this);}],Pd,"kotlin.collections.CollectionsKt__IterablesKt",Xc,[],0,0,[],Zc, +"kotlin.collections.CollectionsKt__IteratorsKt",Pd,[],0,0,[],Jc,"kotlin.collections.CollectionsKt__MutableCollectionsKt",Zc,[],0,0,[],Nd,"kotlin.collections.CollectionsKt__ReversedViewsKt",Jc,[],0,0,[],Kd,"kotlin.collections.CollectionsKt___CollectionsKt",Nd,[],0,0,[],Hn,"kotlin.collections.CollectionsKt",Kd,[],0,0,[],Pm,"kotlin.ranges.IntProgressionIterator",Dc,[],0,0,["F",function(){return Cs(this);},"Mj",function(){return Ev(this);},"R",function(b,c,d){Op(this,b,c,d);}],Ae,"java.util.Queue",E,[Kb],0,0,[],Tl, +"$$LAMBDA4$$",E,[Ab],0,0,["Xj",function(b){YA(this,b);},"q",function(b){Cx(this,b);},"p",function(b){return MJ(this,b);}],Lj,"org.teavm.flavour.routing.parsing.PathParser$PathParserCase",E,[],0,0,["a",function(){Fz(this);}],Of,"org.teavm.flavour.json.tree.NullNode",R,[],0,0,[],Ie,"org.teavm.flavour.templates.ModifierTarget",E,[],0,0,[],Pe,"java.util.Set",E,[Kb],0,0,[],Bd,"java.util.AbstractSet",W,[Pe],0,0,["a",function(){Fx(this);}],Tk,"java.util.HashSet",Bd,[Nb,Q],0,0,["a",function(){GD(this);},"Gk",function(b) +{PE(this,b);},"L",function(b){return BJ(this,b);}],Zi,"org.teavm.platform.Platform",E,[],0,0,[],Ub,"java.nio.charset.Charset",E,[Db],0,Ub_$callClinit,["ii",function(b,c){Nj(this,b,c);}],Qb,"org.teavm.flavour.components.events.BaseEventBinder",E,[P],0,0,["i",function(b){Er(this,b);},"sd",function(b){Zz(this,b);},"jg",function(b){BE(this,b);},"d",function(){Xo(this);},"e",function(){Mv(this);},"Ag",function(b){TC(this,b);}],Sn,"org.teavm.flavour.components.events.EventBinder",Qb,[],0,0,["i",function(b){NB(this, +b);}],Bc,"java.lang.Boolean",E,[Q,Db],0,Bc_$callClinit,["ri",function(b){Xi(this,b);},"lh",function(){return ZE(this);}],Ed,"java.lang.IllegalArgumentException",L,[],0,0,["a",function(){Sv(this);},"f",function(b){SL(this,b);}],Ak,"java.nio.charset.IllegalCharsetNameException",Ed,[],0,0,["f",function(b){ED(this,b);}],We,"org.teavm.flavour.regex.Pattern",E,[],0,0,[],Pl,"org.teavm.flavour.regex.Pattern$proxy0",E,[We],0,0,["si",function(){return Qw(this);},"a",function(){YL(this);}],Sd,"java.lang.Enum",E,[Db,Q], +0,0,["N",function(b,c){UF(this,b,c);}],Lb,"org.teavm.flavour.example.todomvc.TodoFilterType",Sd,[],1,Lb_$callClinit,["N",function(b,c){Kf(this,b,c);}],Mn,"java.util.NoSuchElementException",L,[],0,0,["a",function(){Oq(this);}],Gf,"java.lang.AutoCloseable",E,[],0,0,[],Gc,"java.io.Closeable",E,[Gf],0,0,[],Cb,"java.io.OutputStream",E,[Gc,Le],0,0,["a",function(){Tn(this);}],Hc,"java.io.FilterOutputStream",Cb,[],0,0,["oi",function(b){Lq(this,b);}],Rl,"java.io.PrintStream",Hc,[],0,0,["Ci",function(b,c){UE(this,b,c); +}],Xm,"java.util.function.Supplier$proxy8",E,[K],0,0,["g",function(){return XI(this);},"k",function(b){FE(this,b);}],Tm,"java.util.function.Supplier$proxy9",E,[K],0,0,["g",function(){return LJ(this);},"b",function(b){Bt(this,b);}],Vm,"java.util.function.Supplier$proxy6",E,[K],0,0,["g",function(){return OF(this);},"k",function(b){UH(this,b);}],Wm,"java.util.function.Supplier$proxy7",E,[K],0,0,["g",function(){return RG(this);},"k",function(b){AK(this,b);}],Fg,"java.util.AbstractList$TListIteratorImpl",E,[Zb], +0,0,["Gi",function(b,c,d,e){St(this,b,c,d,e);},"z",function(){return ID(this);},"yb",function(){return LE(this);},"O",function(){Ds(this);}],Jm,"java.util.function.Supplier$proxy4",E,[K],0,0,["g",function(){return Gx(this);},"b",function(b){NI(this,b);}],Um,"java.util.function.Supplier$proxy5",E,[K],0,0,["g",function(){return Ew(this);},"C",function(b,c){TA(this,b,c);}],Hm,"java.util.function.Supplier$proxy2",E,[K],0,0,["g",function(){return GB(this);},"b",function(b){MH(this,b);}],Im,"java.util.function.Supplier$proxy3", +E,[K],0,0,["g",function(){return Mz(this);},"b",function(b){Yn(this,b);}],Oi,"kotlin.jvm.internal.markers.KMutableIterable",E,[Eb],0,0,[],Km,"java.util.function.Supplier$proxy0",E,[K],0,0,["g",function(){return XE(this);},"b",function(b){Iy(this,b);}],Gm,"java.util.function.Supplier$proxy1",E,[K],0,0,["g",function(){return Hq(this);},"b",function(b){ZD(this,b);}],Ec,"java.util.List",E,[Kb],0,0,[],Wb,"java.util.RandomAccess",E,[],0,0,[],Hf,"kotlin.collections.EmptyList",E,[Ec,Q,Wb,Eb],0,Hf_$callClinit,["A",function() +{return AJ(this);},"a",function(){Qi(this);}],Lm,"org.teavm.flavour.json.tree.ObjectNode",R,[],0,0,[],Rc,"java.util.AbstractMap",E,[Be],0,0,["a",function(){BA(this);}],Re,"org.teavm.flavour.templates.DomBuilder",E,[],0,Re_$callClinit,["n",function(b){Jf(this,b);},"Tk",function(b){return BF(this,b);},"yd",function(b){return CH(this,b);},"Mg",function(b,c){return AA(this,b,c);},"Tg",function(){return At(this);},"Hk",function(b){return VF(this,b);},"zd",function(b,c){return It(this,b,c);},"pe",function(b){return TE(this, +b);},"Qi",function(b){return ZH(this,b);},"hi",function(b){JG(this,b);},"Ld",function(){return Wn(this);}],Bb,"org.teavm.flavour.templates.DomComponentHandler",E,[],0,0,[],Ig,"org.teavm.flavour.templates.DomComponentHandler$proxy2",E,[Bb],0,0,["m",function(){UL(this);},"o",function(b){KI(this,b);},"Gc",function(b,c,d){Xx(this,b,c,d);}],Mg,"org.teavm.flavour.templates.DomComponentHandler$proxy3",E,[Bb],0,0,["m",function(){Az(this);},"o",function(b){YK(this,b);},"a",function(){VA(this);}],Ce,"java.lang.reflect.AnnotatedElement", +E,[],0,0,[],Nl,"java.lang.Class",E,[Ce],0,0,["le",function(b){EC(this,b);},"Aj",function(){return Pu(this);},"ci",function(){return JK(this);},"gl",function(){return Vo(this);}],Fn,"$$LAMBDA3$$",E,[Ab],0,0,["ab",function(b){VK(this,b);},"q",function(b){GC(this,b);},"p",function(b){return TK(this,b);}],Kg,"org.teavm.flavour.templates.DomComponentHandler$proxy4",E,[Bb],0,0,["m",function(){PK(this);},"o",function(b){GL(this,b);},"a",function(){ND(this);}],Ng,"org.teavm.flavour.templates.DomComponentHandler$proxy5", +E,[Bb],0,0,["m",function(){Ip(this);},"o",function(b){MC(this,b);},"b",function(b){LD(this,b);}],Ef,"java.util.Comparator",E,[],0,0,[],Yj,"kotlin.ranges.IntRange$Companion",E,[],0,0,["a",function(){BM(this);},"w",function(b){ZL(this,b);}],Hg,"org.teavm.flavour.templates.DomComponentHandler$proxy0",E,[Bb],0,0,["m",function(){WJ(this);},"o",function(b){Bu(this,b);},"b",function(b){OJ(this,b);}],Jg,"org.teavm.flavour.templates.DomComponentHandler$proxy1",E,[Bb],0,0,["m",function(){Iz(this);},"o",function(b){HA(this, +b);},"b",function(b){VD(this,b);}],Mi,"java.util.Arrays",E,[],0,0,[],Ym,"java.lang.ConsoleOutputStreamStdout",Cb,[],0,0,["a",function(){Gq(this);}],Xb,"java.lang.System",E,[],0,Xb_$callClinit,[],Qh,"org.teavm.flavour.example.todomvc.EscapeComponent$eventListener$1",E,[Ab],0,0,["q",function(b){Nx(this,b);},"Qk",function(b){Hy(this,b);},"rd",function(b){Qt(this,b);},"p",function(b){return Lr(this,b);}],De,"java.util.function.BooleanSupplier",E,[],0,0,[],Lh,"org.teavm.flavour.example.todomvc.TodoRoute$proxy0", +E,[Wc],0,0,["I",function(){IA(this);},"K",function(){Nr(this);},"Z",function(){Xv(this);},"ab",function(b){Jt(this,b);},"Hb",function(b){return Jr(this,b);},"wb",function(b){return FG(this,b);}],Mb,"java.lang.Character",E,[Db],0,Mb_$callClinit,[],Wf,"java.util.function.BooleanSupplier$proxy0",E,[De],0,0,["ye",function(){return NH(this);},"b",function(b){KF(this,b);}],Id,"kotlin.jvm.functions.Function0",E,[Tb],0,0,[],Hk,"kotlin.jvm.functions.Function0$proxy0",E,[Id],0,0,["gb",function(){return Qz(this);},"C", +function(b,c){XG(this,b,c);}],Tg,"org.teavm.flavour.templates.DomComponentTemplate",M,[],0,0,["rf",function(b){Gw(this,b);},"d",function(){Kr(this);},"e",function(){YI(this);}],Cl,"org.teavm.flavour.example.todomvc.TodoView$Companion",E,[],0,0,["Oe",function(b){BI(this,b);},"a",function(){Bz(this);},"w",function(b){Pp(this,b);}],Dj,"org.teavm.flavour.components.html.TextComponent",M,[],0,0,["n",function(b){GJ(this,b);},"s",function(b){Qr(this,b);},"d",function(){CE(this);}],If,"org.teavm.flavour.example.todomvc.LocalStorageTodoDataSource$clearCompleted$1", +O,[Fb],0,If_$callClinit,["x",function(b){return EF(this,b);},"t",function(b){return Hu(this,b);},"a",function(){Pj(this);}],In,"kotlin.jvm.internal.Intrinsics",E,[],0,0,[],Ql,"org.teavm.flavour.example.todomvc.FocusComponent",E,[P],0,0,["ug",function(b){RD(this,b);},"d",function(){SF(this);},"e",function(){Dq(this);},"i",function(b){EA(this,b);}],Bn,"org.teavm.flavour.components.standard.ChooseClause",E,[],0,0,["a",function(){Rp(this);},"Df",function(b){Sq(this,b);},"U",function(b){Kz(this,b);}],Mk,"org.teavm.flavour.templates.emitting.VariableImpl", +E,[],0,0,["a",function(){PC(this);}],Gn,"org.teavm.flavour.components.html.CheckedBinder",E,[P],0,0,["i",function(b){KD(this,b);},"s",function(b){Ry(this,b);},"d",function(){IH(this);},"e",function(){Rv(this);}],Sh,"$$LAMBDA6$$",E,[N],0,0,["fd",function(b){Ju(this,b);},"h",function(b){Bq(this,b);},"bb",function(b){Ov(this,b);}],Wl,"java.util.AbstractList$SubAbstractList$SubAbstractListIterator",E,[Zb],0,0,["Kf",function(b,c,d,e){Yx(this,b,c,d,e);},"F",function(){return Tv(this);},"z",function(){return UG(this); +}],Lg,"org.teavm.flavour.json.deserializer.JsonDeserializer$proxy0",T,[],0,0,["E",function(b,c){return Lz(this,b,c);},"a",function(){LL(this);}],Og,"org.teavm.flavour.json.deserializer.JsonDeserializer$proxy1",T,[],0,0,["E",function(b,c){return FC(this,b,c);},"a",function(){Pz(this);}],Tc,"org.teavm.flavour.json.tree.BooleanNode",R,[],0,Tc_$callClinit,[],Uk,"org.teavm.flavour.templates.DomBuilder$Item",E,[Ie],0,0,["a",function(){Vq(this);},"yj",function(){return Ht(this);},"kf",function(b){Xs(this,b);},"Ei", +function(b){Zn(this,b);},"Fb",function(b){Xz(this,b);},"Dh",function(){II(this);},"vh",function(){return DD(this);},"Uj",function(b){Tt(this,b);}],Se,"org.teavm.jso.dom.events.FocusEventTarget",E,[X],0,0,[],Df,"org.teavm.jso.dom.events.MouseEventTarget",E,[X],0,0,[],Cf,"org.teavm.jso.dom.events.KeyboardEventTarget",E,[X],0,0,[],Ne,"org.teavm.jso.browser.WindowEventTarget",E,[X,Se,Df,Cf,Ee],0,0,[],Xl,"org.teavm.flavour.json.serializer.JsonSerializerContext",E,[],0,0,["a",function(){Rz(this);},"wg",function(b) +{NC(this,b);}],Y,"java.util.AbstractList",W,[Ec],0,0,["a",function(){YH(this);},"L",function(b){return Py(this,b);},"A",function(){return SB(this);},"Pf",function(b){return EE(this,b);},"T",function(b){return DA(this,b);},"Bg",function(b,c){return MA(this,b,c);}],Ni,"java.util.ArrayList",Y,[Nb,Q],0,0,["a",function(){JD(this);},"r",function(b){Ap(this,b);},"fl",function(b){Fy(this,b);},"D",function(b){Zr(this,b);},"J",function(b){return Oy(this,b);},"v",function(){return Nu(this);},"pd",function(b,c){return Pq(this, +b,c);},"Ck",function(b,c){QI(this,b,c);},"dj",function(b){return Gz(this,b);},"ad",function(b){return QB(this,b);},"md",function(){Av(this);},"Te",function(b){Kp(this,b);},"Wc",function(b){Hz(this,b);}],Ke,"org.teavm.jso.browser.StorageProvider",E,[],0,0,[],Oe,"org.teavm.jso.core.JSArrayReader",E,[V],0,0,[],Oh,"org.teavm.jso.browser.Window",E,[V,Ne,Ke,Oe],0,0,["Ec",function(b,c){return ZC(this,b,c);},"cc",function(b,c,d){return FJ(this,b,c,d);},"jc",function(b){return QC(this,b);},"Cc",function(b,c){return KE(this, +b,c);},"ze",function(b){return CI(this,b);},"pi",function(){return Ex(this);},"Ce",function(b,c,d){return Fp(this,b,c,d);}],Ad,"org.teavm.flavour.example.todomvc.EscapeComponent",E,[P],0,Ad_$callClinit,["pl",function(){return Vx(this);},"nj",function(b){ZG(this,b);},"d",function(){Gs(this);},"e",function(){QH(this);},"i",function(b){Ch(this,b);}],Mc,"java.util.AbstractList$SubAbstractList",Y,[],0,0,["eb",function(b,c,d){RI(this,b,c,d);},"A",function(){return Pv(this);},"T",function(b){return Ny(this,b);},"v", +function(){return Jp(this);}],Ej,"java.util.AbstractList$SubAbstractListRandomAccess",Mc,[Wb],0,0,["eb",function(b,c,d){FB(this,b,c,d);}],Uc,"java.lang.String",E,[Q,Db,Ld],0,Uc_$callClinit,["ij",function(b){Eh(this,b);},"Bj",function(b,c,d){Pn(this,b,c,d);},"qf",function(b){return Nt(this,b);},"Ch",function(){return C(this);},"G",function(){return DJ(this);},"vd",function(b,c,d,e){D(this,b,c,d,e);},"Fi",function(b,c){return Uv(this,b,c);},"Ui",function(b){return KJ(this,b);},"zc",function(b,c){return Fq(this, +b,c);},"Sd",function(b){return SH(this,b);},"Uf",function(b,c){return PB(this,b,c);},"u",function(){return Kw(this);},"H",function(b){return YF(this,b);},"V",function(){return Ft(this);},"Ki",function(){return G(this);}],Rn,"java.lang.NegativeArraySizeException",L,[],0,0,["a",function(){Cv(this);}],Vj,"org.teavm.flavour.components.standard.OtherwiseClause",E,[],0,0,["a",function(){WL(this);},"U",function(b){Go(this,b);}],Yf,"org.teavm.flavour.templates.Modifier$proxy21",E,[J],0,0,["c",function(b){return Po(this, +b);},"b",function(b){Ax(this,b);}],Zf,"org.teavm.flavour.templates.Modifier$proxy20",E,[J],0,0,["c",function(b){return QD(this,b);},"b",function(b){GA(this,b);}],Kn,"java.nio.charset.impl.UTF8Charset",Ub,[],0,0,["a",function(){KH(this);}],Ag,"org.teavm.flavour.templates.Modifier$proxy23",E,[J],0,0,["c",function(b){return Ar(this,b);},"b",function(b){DC(this,b);}],Ui,"org.teavm.flavour.json.tree.StringNode",R,[],0,0,[],Xf,"org.teavm.flavour.templates.Modifier$proxy22",E,[J],0,0,["c",function(b){return BB(this, +b);},"b",function(b){Vt(this,b);}],Qj,"$$LAMBDA5$$",E,[Ab],0,0,["cd",function(b){Wq(this,b);},"q",function(b){VI(this,b);},"p",function(b){return FK(this,b);}],Fe,"kotlin.collections.EmptyIterator",E,[Zb,Eb],0,Fe_$callClinit,["F",function(){return UC(this);},"gj",function(){return Vp(this);},"z",function(){return Fs(this);},"a",function(){Kh(this);}],Mh,"org.teavm.flavour.templates.Templates$PROXY$2",E,[],0,0,[],Pi,"org.teavm.flavour.json.deserializer.StringDeserializer",T,[],0,0,["a",function(){Yz(this);}, +"E",function(b,c){return Co(this,b,c);}],Me,"org.teavm.flavour.example.todomvc.FocusComponent$isFocused$1",O,[Id],0,Me_$callClinit,["gb",function(){return GG(this);},"mb",function(){return Qo(this);},"a",function(){Vh(this);}],On,"org.teavm.flavour.routing.Routing",E,[],0,0,[],Ff,"java.util.Deque",E,[Ae],0,0,[],Wi,"java.util.ArrayDeque",W,[Ff],0,0,["a",function(){To(this);},"r",function(b){GE(this,b);},"Yd",function(b){FF(this,b);},"bd",function(){return CF(this);},"ic",function(){return DK(this);},"ag",function() +{return VJ(this);},"Ad",function(){return Bx(this);},"hd",function(b){AL(this,b);},"sk",function(){return Sy(this);},"v",function(){return As(this);},"G",function(){return Wt(this);},"D",function(b){FI(this,b);}],Te,"org.teavm.flavour.example.todomvc.EscapeComponent$action$1",E,[Vb],0,Te_$callClinit,["fb",function(){FD(this);},"a",function(){Em(this);}],Dh,"java.lang.IllegalStateException",Z,[],0,0,["a",function(){HB(this);},"f",function(b){Ou(this,b);}],Si,"org.teavm.flavour.components.html.LinkComponent", +E,[P],0,0,["i",function(b){RH(this,b);},"gi",function(b){EL(this,b);},"d",function(){Zo(this);},"e",function(){BK(this);},"dh",function(b){ML(this,b);}],Pg,"java.lang.NullPointerException",L,[],0,0,["a",function(){Rx(this);}],Zm,"kotlin.jvm.internal.TypeIntrinsics",E,[],0,0,[],Om,"java.lang.Math",E,[],0,0,[],Vi,"org.teavm.flavour.components.html.CheckedChangeBinder",E,[P],0,0,["i",function(b){Zp(this,b);},"cb",function(b){Cu(this,b);},"d",function(){PF(this);},"e",function(){Ys(this);}],Cm,"java.util.function.Supplier$proxy10", +E,[K],0,0,["g",function(){return NA(this);},"b",function(b){NG(this,b);}],Zl,"java.util.function.Supplier$proxy13",E,[K],0,0,["g",function(){return Ks(this);},"b",function(b){Kx(this,b);}],Bm,"java.util.function.Supplier$proxy11",E,[K],0,0,["g",function(){return Qp(this);},"b",function(b){BC(this,b);}],Tj,"org.teavm.flavour.components.standard.IfComponent",M,[],0,0,["n",function(b){JL(this,b);},"Gf",function(b){Do(this,b);},"S",function(b){Nq(this,b);},"d",function(){AE(this);},"e",function(){Sz(this);}],Am, +"java.util.function.Supplier$proxy12",E,[K],0,0,["g",function(){return IF(this);},"b",function(b){Xt(this,b);}],Ac,"kotlin.ranges.IntProgression",E,[Dd,Eb],0,Ac_$callClinit,["Bc",function(){return Jw(this);},"A",function(){return Os(this);},"R",function(b,c,d){Xk(this,b,c,d);}],Kc,"kotlin.ranges.IntRange",Ac,[Ze],0,Kc_$callClinit,["Ne",function(b,c){Li(this,b,c);}],Ik,"kotlin.text.CharsKt",Fc,[],0,0,[],Gb,"org.teavm.flavour.templates.ValueChangeListener",E,[],0,0,[],Gk,"org.teavm.flavour.templates.ValueChangeListener$proxy1", +E,[Gb],0,0,["B",function(b){Ut(this,b);},"b",function(b){Yq(this,b);}],Dk,"org.teavm.flavour.templates.ValueChangeListener$proxy0",E,[Gb],0,0,["B",function(b){VL(this,b);},"b",function(b){GF(this,b);}],Ek,"org.teavm.flavour.templates.ValueChangeListener$proxy3",E,[Gb],0,0,["B",function(b){WD(this,b);},"k",function(b){XB(this,b);}],Fk,"org.teavm.flavour.templates.ValueChangeListener$proxy2",E,[Gb],0,0,["B",function(b){Xu(this,b);},"k",function(b){Wv(this,b);}],Kj,"org.teavm.flavour.json.JSON$PROXY$0",E,[],0, +0,[],Ob,"org.teavm.flavour.templates.Slot",Hb,[],0,0,["a",function(){DH(this);},"Sf",function(b){LG(this,b);},"Sh",function(b,c){EH(this,b,c);},"v",function(){return HC(this);},"W",function(b){Lp(this,b);},"M",function(b){Jx(this,b);}],Wk,"org.teavm.flavour.templates.ContainerSlot",Ob,[],0,0,["a",function(){WI(this);}],Gj,"org.teavm.flavour.json.JSON$PROXY$4",E,[],0,0,[],Jj,"org.teavm.flavour.json.JSON$PROXY$5",E,[],0,0,[],Fj,"org.teavm.flavour.components.attributes.ComputedAttribute",E,[P],0,0,["i",function(b) +{Dy(this,b);},"s",function(b){RF(this,b);},"hf",function(b){RC(this,b);},"d",function(){Jv(this);},"e",function(){Tu(this);}],Hj,"org.teavm.flavour.json.JSON$PROXY$7",E,[],0,0,[],Oc,"java.io.InputStream",E,[Gc],0,0,["a",function(){LB(this);}],Mm,"java.lang.ConsoleInputStream",Oc,[],0,0,["a",function(){MG(this);}],Ij,"org.teavm.flavour.json.JSON$PROXY$8",E,[],0,0,[],Zk,"$$LAMBDA0$$",E,[Ef],0,0,["a",function(){UD(this);}],Dm,"org.teavm.flavour.components.html.ValueBinder",E,[P],0,0,["i",function(b){SI(this,b); +},"s",function(b){JA(this,b);},"d",function(){Qq(this);},"e",function(){Iu(this);}],Rk,"org.teavm.flavour.components.events.MouseBinder",Qb,[],0,0,["i",function(b){CG(this,b);}],En,"java.util.HashMap",Rc,[Nb,Q],0,0,["ve",function(b){return AF(this,b);},"a",function(){OA(this);},"r",function(b){Ho(this,b);},"Dg",function(b,c){VH(this,b,c);},"uj",function(){Lx(this);},"nl",function(b){return JF(this,b);},"zi",function(b){return Cr(this,b);},"Yi",function(b,c,d){return YC(this,b,c,d);},"ak",function(){return FL(this); +},"Yf",function(b,c){return Ir(this,b,c);},"sj",function(b,c){return JE(this,b,c);},"Tf",function(b,c,d){return Xw(this,b,c,d);},"Xe",function(b){YD(this,b);},"Rf",function(){Cy(this);}],Oj,"org.teavm.flavour.components.html.EnabledBinder",E,[P],0,0,["i",function(b){NL(this,b);},"s",function(b){Dx(this,b);},"d",function(){Lu(this);},"e",function(){Sx(this);}],Ge,"org.teavm.flavour.example.todomvc.TodoView$all$1",O,[Fb],0,Ge_$callClinit,["x",function(b){return MF(this,b);},"t",function(b){return Pw(this,b);}, +"a",function(){Mj(this);}],Ve,"org.teavm.flavour.example.todomvc.TodoView$completed$1",O,[Fb],0,Ve_$callClinit,["x",function(b){return Xn(this,b);},"t",function(b){return XA(this,b);},"a",function(){Jn(this);}],Jh,"org.teavm.classlib.impl.unicode.UnicodeHelper$Range",E,[],0,0,["Zg",function(b,c,d){CC(this,b,c,d);}],Ci,"java.util.function.Consumer$proxy1",E,[N],0,0,["h",function(b){Rr(this,b);},"j",function(b,c){Qy(this,b,c);}],Zh,"java.util.function.Consumer$proxy0",E,[N],0,0,["h",function(b){Wr(this,b);},"b", +function(b){QJ(this,b);}],Fm,"java.lang.NoClassDefFoundError",Sb,[],0,0,[],Gi,"java.util.function.Consumer$proxy5",E,[N],0,0,["h",function(b){MI(this,b);},"b",function(b){HD(this,b);}],Di,"java.util.function.Consumer$proxy4",E,[N],0,0,["h",function(b){Pt(this,b);},"j",function(b,c){Qs(this,b,c);}],Ei,"java.util.function.Consumer$proxy3",E,[N],0,0,["h",function(b){Gu(this,b);},"j",function(b,c){RK(this,b,c);}],Bi,"java.util.function.Consumer$proxy2",E,[N],0,0,["h",function(b){Yy(this,b);},"j",function(b,c){Ms(this, +b,c);}],Hi,"java.util.function.Consumer$proxy8",E,[N],0,0,["h",function(b){Zt(this,b);},"b",function(b){AH(this,b);}],Ii,"java.util.function.Consumer$proxy7",E,[N],0,0,["h",function(b){Yp(this,b);},"b",function(b){No(this,b);}],Rg,"kotlin.internal.ProgressionUtilKt",E,[],0,0,[],Fi,"java.util.function.Consumer$proxy6",E,[N],0,0,["h",function(b){OL(this,b);},"b",function(b){GI(this,b);}],Gg,"org.teavm.flavour.components.html.ValueChangeBinder",E,[P],0,0,["i",function(b){Iv(this,b);},"cb",function(b){Uy(this,b); +},"d",function(){Sw(this);},"e",function(){UA(this);}],Xj,"java.lang.ConsoleOutputStreamStderr",Cb,[],0,0,["a",function(){HI(this);}],Yk,"org.teavm.flavour.example.todomvc.Todo",E,[],0,0,["Yk",function(){return Es(this);},"Fg",function(b){Yo(this,b);},"bl",function(){return Fr(this);},"qe",function(b){XJ(this,b);},"a",function(){Mq(this);}],Nn,"org.teavm.flavour.example.todomvc.EscapeComponent$Companion",E,[],0,0,["Qc",function(){return Ez(this);},"a",function(){Hx(this);},"w",function(b){Hp(this,b);}],Vk,"org.teavm.flavour.templates.RootSlot", +Ob,[],0,0,["db",function(b){Ow(this,b);}],Dn,"org.teavm.flavour.components.standard.ChooseComponent",M,[],0,0,["n",function(b){PL(this,b);},"Zf",function(b){WH(this,b);},"rg",function(b){Au(this,b);},"d",function(){KK(this);},"e",function(){Kt(this);}],Ih,"java.util.Arrays$ArrayAsList",Y,[Wb],0,0,["ub",function(b){Mw(this,b);},"J",function(b){return Vn(this,b);},"v",function(){return Ot(this);}]]); +$rt_stringPool(["@","#","Wrong route interface: ","main","todos","todo","null","This dispatcher is already attached to a window","$receiver","it","","","null cannot be cast to non-null type kotlin.CharSequence","c","dataSource","args","org.teavm.flavour.example.todomvc.TodoRoute","org.teavm.flavour.example.todomvc.TodoView","Can\'t serialize object of type ","org.teavm.flavour.example.todomvc.Todo","org.teavm.flavour.example.todomvc.TodoList","Don\'t know how to deserialize ","java.lang.String","Can\'t deserialize non-boolean not as a boolean primitive", +"submit","Can\'t deserialize non-array node as a list","click","dblclick","class","blur","elements","predicate","null cannot be cast to non-null type kotlin.collections.MutableIterable","UTF-8","ALL","ACTIVE","COMPLETED"," editing","completed","Can\'t set attribute to root node","Can\'t apply modifier to root node","\n ","li","\n ","div","view","\n ","input","toggle","type","checkbox","label","button","destroy","form","edit","\n ","item left","items left","id","clear-completed", +"Clear completed","\n ","\n","section","todoapp","\n ","header","\n ","h1","todo-form","new-todo","placeholder","What needs to be done?","autofocus","footer","info","p","Double-click to edit a todo","Part of ","a","href","http://todomvc.com","TodoMVC","toggle-all","for","Mark all as complete","ul","todo-list","span","todo-count","strong","filters","All","Active","Completed","/","/active","/completed","Parameter specified as non-null is null: method ",".",", parameter ","target","Can\'t deserialize node ", +" to an instance of ","hashchange","Object has already been serialzied: ","keydown","Can\'t deserialize non-string node as a string"," cannot be cast to ","kotlin.collections.MutableIterable","selected","Step must be non-zero","The given space is already hosted by a slot","Step is zero."]); +GR=SP(4);var main=Jz; +(function(){var c;c=Aj.prototype;c.handleEvent=c.p;c=Sl.prototype;c.handleEvent=c.p;c=Tl.prototype;c.handleEvent=c.p;c=Fn.prototype;c.handleEvent=c.p;c=Qh.prototype;c.handleEvent=c.p;c=Oh.prototype;c.removeEventListener=c.Ec;c.removeEventListener=c.cc;c.dispatchEvent=c.jc;c.getLength=c.pi;c.addEventListener=c.Cc;c.get=c.ze;c.addEventListener=c.Ce;c=Qj.prototype;c.handleEvent=c.p;})(); +main = $rt_mainStarter(main); + +//# sourceMappingURL=classes.js.map \ No newline at end of file diff --git a/examples/flavour/index_files/index.css b/examples/flavour/index_files/index.css new file mode 100644 index 0000000000..54d89abda7 --- /dev/null +++ b/examples/flavour/index_files/index.css @@ -0,0 +1,378 @@ +html, +body { + margin: 0; + padding: 0; +} + +button { + margin: 0; + padding: 0; + border: 0; + background: none; + font-size: 100%; + vertical-align: baseline; + font-family: inherit; + font-weight: inherit; + color: inherit; + -webkit-appearance: none; + appearance: none; + -webkit-font-smoothing: antialiased; + -moz-font-smoothing: antialiased; + font-smoothing: antialiased; +} + +body { + font: 14px 'Helvetica Neue', Helvetica, Arial, sans-serif; + line-height: 1.4em; + background: #f5f5f5; + color: #4d4d4d; + min-width: 230px; + max-width: 550px; + margin: 0 auto; + -webkit-font-smoothing: antialiased; + -moz-font-smoothing: antialiased; + font-smoothing: antialiased; + font-weight: 300; +} + +button, +input[type="checkbox"] { + outline: none; +} + +.hidden { + display: none; +} + +#todoapp { + background: #fff; + margin: 130px 0 40px 0; + position: relative; + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), + 0 25px 50px 0 rgba(0, 0, 0, 0.1); +} + +#todoapp input::-webkit-input-placeholder { + font-style: italic; + font-weight: 300; + color: #e6e6e6; +} + +#todoapp input::-moz-placeholder { + font-style: italic; + font-weight: 300; + color: #e6e6e6; +} + +#todoapp input::input-placeholder { + font-style: italic; + font-weight: 300; + color: #e6e6e6; +} + +#todoapp h1 { + position: absolute; + top: -155px; + width: 100%; + font-size: 100px; + font-weight: 100; + text-align: center; + color: rgba(175, 47, 47, 0.15); + -webkit-text-rendering: optimizeLegibility; + -moz-text-rendering: optimizeLegibility; + text-rendering: optimizeLegibility; +} + +#new-todo, +.edit { + position: relative; + margin: 0; + width: 100%; + font-size: 24px; + font-family: inherit; + font-weight: inherit; + line-height: 1.4em; + border: 0; + outline: none; + color: inherit; + padding: 6px; + border: 1px solid #999; + box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2); + box-sizing: border-box; + -webkit-font-smoothing: antialiased; + -moz-font-smoothing: antialiased; + font-smoothing: antialiased; +} + +#new-todo { + padding: 16px 16px 16px 60px; + border: none; + background: rgba(0, 0, 0, 0.003); + box-shadow: inset 0 -2px 1px rgba(0,0,0,0.03); +} + +#main { + position: relative; + z-index: 2; + border-top: 1px solid #e6e6e6; +} + +label[for='toggle-all'] { + display: none; +} + +#toggle-all { + position: absolute; + top: -55px; + left: -12px; + width: 60px; + height: 34px; + text-align: center; + border: none; /* Mobile Safari */ +} + +#toggle-all:before { + content: '❯'; + font-size: 22px; + color: #e6e6e6; + padding: 10px 27px 10px 27px; +} + +#toggle-all:checked:before { + color: #737373; +} + +#todo-list { + margin: 0; + padding: 0; + list-style: none; +} + +#todo-list li { + position: relative; + font-size: 24px; + border-bottom: 1px solid #ededed; +} + +#todo-list li:last-child { + border-bottom: none; +} + +#todo-list li.editing { + border-bottom: none; + padding: 0; +} + +#todo-list li.editing .edit { + display: block; + width: 506px; + padding: 13px 17px 12px 17px; + margin: 0 0 0 43px; +} + +#todo-list li.editing .view { + display: none; +} + +#todo-list li .toggle { + text-align: center; + width: 40px; + /* auto, since non-WebKit browsers doesn't support input styling */ + height: auto; + position: absolute; + top: 0; + bottom: 0; + margin: auto 0; + border: none; /* Mobile Safari */ + -webkit-appearance: none; + appearance: none; +} + +#todo-list li .toggle:after { + content: url('data:image/svg+xml;utf8,'); +} + +#todo-list li .toggle:checked:after { + content: url('data:image/svg+xml;utf8,'); +} + +#todo-list li label { + white-space: pre; + word-break: break-word; + padding: 15px 60px 15px 15px; + margin-left: 45px; + display: block; + line-height: 1.2; + transition: color 0.4s; +} + +#todo-list li.completed label { + color: #d9d9d9; + text-decoration: line-through; +} + +#todo-list li .destroy { + display: none; + position: absolute; + top: 0; + right: 10px; + bottom: 0; + width: 40px; + height: 40px; + margin: auto 0; + font-size: 30px; + color: #cc9a9a; + margin-bottom: 11px; + transition: color 0.2s ease-out; +} + +#todo-list li .destroy:hover { + color: #af5b5e; +} + +#todo-list li .destroy:after { + content: '×'; +} + +#todo-list li:hover .destroy { + display: block; +} + +#todo-list li .edit { + display: none; +} + +#todo-list li.editing:last-child { + margin-bottom: -1px; +} + +#footer { + color: #777; + padding: 10px 15px; + height: 20px; + text-align: center; + border-top: 1px solid #e6e6e6; +} + +#footer:before { + content: ''; + position: absolute; + right: 0; + bottom: 0; + left: 0; + height: 50px; + overflow: hidden; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), + 0 8px 0 -3px #f6f6f6, + 0 9px 1px -3px rgba(0, 0, 0, 0.2), + 0 16px 0 -6px #f6f6f6, + 0 17px 2px -6px rgba(0, 0, 0, 0.2); +} + +#todo-count { + float: left; + text-align: left; +} + +#todo-count strong { + font-weight: 300; +} + +#filters { + margin: 0; + padding: 0; + list-style: none; + position: absolute; + right: 0; + left: 0; +} + +#filters li { + display: inline; +} + +#filters li a { + color: inherit; + margin: 3px; + padding: 3px 7px; + text-decoration: none; + border: 1px solid transparent; + border-radius: 3px; +} + +#filters li a.selected, +#filters li a:hover { + border-color: rgba(175, 47, 47, 0.1); +} + +#filters li a.selected { + border-color: rgba(175, 47, 47, 0.2); +} + +#clear-completed, +html #clear-completed:active { + float: right; + position: relative; + line-height: 20px; + text-decoration: none; + cursor: pointer; + position: relative; +} + +#clear-completed:hover { + text-decoration: underline; +} + +#info { + margin: 65px auto 0; + color: #bfbfbf; + font-size: 10px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-align: center; +} + +#info p { + line-height: 1; +} + +#info a { + color: inherit; + text-decoration: none; + font-weight: 400; +} + +#info a:hover { + text-decoration: underline; +} + +/* + Hack to remove background from Mobile Safari. + Can't use it globally since it destroys checkboxes in Firefox +*/ +@media screen and (-webkit-min-device-pixel-ratio:0) { + #toggle-all, + #todo-list li .toggle { + background: none; + } + + #todo-list li .toggle { + height: 40px; + } + + #toggle-all { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); + -webkit-appearance: none; + appearance: none; + } +} + +@media (max-width: 430px) { + #footer { + height: 50px; + } + + #filters { + bottom: 10px; + } +} diff --git a/examples/flavour/index_files/runtime.js b/examples/flavour/index_files/runtime.js new file mode 100644 index 0000000000..470db3011c --- /dev/null +++ b/examples/flavour/index_files/runtime.js @@ -0,0 +1,1124 @@ +/* + * Copyright 2013 Alexey Andreev. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +"use strict"; +var $rt_global = this; +var $rt_lastObjectId = 1; +function $rt_nextId() { + var current = $rt_lastObjectId; + var next = (current + 1) | 0; + if (next === 0) { + next = (next + 1) | 0; + } + $rt_lastObjectId = next; + return current; +} +function $rt_compare(a, b) { + return a > b ? 1 : a < b ? -1 : 0; +} +function $rt_isInstance(obj, cls) { + return obj !== null && !!obj.constructor.$meta && $rt_isAssignable(obj.constructor, cls); +} +function $rt_isAssignable(from, to) { + if (from === to) { + return true; + } + var supertypes = from.$meta.supertypes; + for (var i = 0; i < supertypes.length; i = (i + 1) | 0) { + if ($rt_isAssignable(supertypes[i], to)) { + return true; + } + } + return false; +} +function $rt_createArray(cls, sz) { + var data = new Array(sz); + var arr = new ($rt_arraycls(cls))(data); + if (sz > 0) { + var i = 0; + do { + data[i] = null; + i = (i + 1) | 0; + } while (i < sz); + } + return arr; +} +function $rt_wrapArray(cls, data) { + return new ($rt_arraycls(cls))(data); +} +function $rt_createUnfilledArray(cls, sz) { + return new ($rt_arraycls(cls))(new Array(sz)); +} +function $rt_createLongArray(sz) { + var data = new Array(sz); + var arr = new ($rt_arraycls($rt_longcls()))(data); + for (var i = 0; i < sz; i = (i + 1) | 0) { + data[i] = Long_ZERO; + } + return arr; +} +var $rt_createNumericArray; +var $rt_createCharArray; +var $rt_createByteArray; +var $rt_createShortArray; +var $rt_createIntArray; +var $rt_createBooleanArray; +var $rt_createFloatArray; +var $rt_createDoubleArray; +if (typeof 'ArrayBuffer' !== 'undefined') { + $rt_createNumericArray = function(cls, nativeArray) { + return new ($rt_arraycls(cls))(nativeArray); + }; + $rt_createCharArray = function(sz) { + return $rt_createNumericArray($rt_charcls(), new Uint16Array(sz)); + }; + $rt_createByteArray = function(sz) { + return $rt_createNumericArray($rt_bytecls(), new Int8Array(sz)); + }; + $rt_createShortArray = function(sz) { + return $rt_createNumericArray($rt_shortcls(), new Int16Array(sz)); + }; + $rt_createIntArray = function(sz) { + return $rt_createNumericArray($rt_intcls(), new Int32Array(sz)); + }; + $rt_createBooleanArray = function(sz) { + return $rt_createNumericArray($rt_booleancls(), new Int8Array(sz)); + }; + $rt_createFloatArray = function(sz) { + return $rt_createNumericArray($rt_floatcls(), new Float32Array(sz)); + }; + $rt_createDoubleArray = function(sz) { + return $rt_createNumericArray($rt_doublecls(), new Float64Array(sz)); + }; +} else { + $rt_createNumericArray = function(cls, sz) { + var data = new Array(sz); + var arr = new ($rt_arraycls(cls))(data); + for (var i = 0; i < sz; i = (i + 1) | 0) { + data[i] = 0; + } + return arr; + }; + $rt_createByteArray = function(sz) { return $rt_createNumericArray($rt_bytecls(), sz); }; + $rt_createShortArray = function(sz) { return $rt_createNumericArray($rt_shortcls(), sz); }; + $rt_createIntArray = function(sz) { return $rt_createNumericArray($rt_intcls(), sz); }; + $rt_createBooleanArray = function(sz) { return $rt_createNumericArray($rt_booleancls(), sz); }; + $rt_createFloatArray = function(sz) { return $rt_createNumericArray($rt_floatcls(), sz); }; + $rt_createDoubleArray = function(sz) { return $rt_createNumericArray($rt_doublecls(), sz); }; + $rt_createCharArray = function(sz) { return $rt_createNumericArray($rt_charcls(), sz); } +} +function $rt_arraycls(cls) { + var result = cls.$array; + if (result === null) { + var arraycls = function(data) { + this.data = data; + this.$id$ = 0; + }; + arraycls.prototype = new ($rt_objcls())(); + arraycls.prototype.constructor = arraycls; + arraycls.prototype.toString = function() { + var str = "["; + for (var i = 0; i < this.data.length; ++i) { + if (i > 0) { + str += ", "; + } + str += this.data[i].toString(); + } + str += "]"; + return str; + }; + var name = "[" + cls.$meta.binaryName; + arraycls.$meta = { item : cls, supertypes : [$rt_objcls()], primitive : false, superclass : $rt_objcls(), + name : name, binaryName : name, enum : false }; + arraycls.classObject = null; + arraycls.$array = null; + result = arraycls; + cls.$array = arraycls; + } + return result; +} +function $rt_createcls() { + return { + $array : null, + classObject : null, + $meta : { + supertypes : [], + superclass : null + } + }; +} +function $rt_createPrimitiveCls(name, binaryName) { + var cls = $rt_createcls(); + cls.$meta.primitive = true; + cls.$meta.name = name; + cls.$meta.binaryName = binaryName; + cls.$meta.enum = false; + cls.$meta.item = null; + return cls; +} +var $rt_booleanclsCache = null; +function $rt_booleancls() { + if ($rt_booleanclsCache === null) { + $rt_booleanclsCache = $rt_createPrimitiveCls("boolean", "Z"); + } + return $rt_booleanclsCache; +} +var $rt_charclsCache = null; +function $rt_charcls() { + if ($rt_charclsCache === null) { + $rt_charclsCache = $rt_createPrimitiveCls("char", "C"); + } + return $rt_charclsCache; +} +var $rt_byteclsCache = null; +function $rt_bytecls() { + if ($rt_byteclsCache === null) { + $rt_byteclsCache = $rt_createPrimitiveCls("byte", "B"); + } + return $rt_byteclsCache; +} +var $rt_shortclsCache = null; +function $rt_shortcls() { + if ($rt_shortclsCache === null) { + $rt_shortclsCache = $rt_createPrimitiveCls("short", "S"); + } + return $rt_shortclsCache; +} +var $rt_intclsCache = null; +function $rt_intcls() { + if ($rt_intclsCache === null) { + $rt_intclsCache = $rt_createPrimitiveCls("int", "I"); + } + return $rt_intclsCache; +} +var $rt_longclsCache = null; +function $rt_longcls() { + if ($rt_longclsCache === null) { + $rt_longclsCache = $rt_createPrimitiveCls("long", "J"); + } + return $rt_longclsCache; +} +var $rt_floatclsCache = null; +function $rt_floatcls() { + if ($rt_floatclsCache === null) { + $rt_floatclsCache = $rt_createPrimitiveCls("float", "F"); + } + return $rt_floatclsCache; +} +var $rt_doubleclsCache = null; +function $rt_doublecls() { + if ($rt_doubleclsCache === null) { + $rt_doubleclsCache = $rt_createPrimitiveCls("double", "D"); + } + return $rt_doubleclsCache; +} +var $rt_voidclsCache = null; +function $rt_voidcls() { + if ($rt_voidclsCache === null) { + $rt_voidclsCache = $rt_createPrimitiveCls("void", "V"); + } + return $rt_voidclsCache; +} +function $rt_init(cls, constructor, args) { + var obj = new cls(); + cls.prototype[constructor].apply(obj, args); + return obj; +} +function $rt_throw(ex) { + throw $rt_exception(ex); +} +function $rt_exception(ex) { + var err = ex.$jsException; + if (!err) { + err = new Error("Java exception thrown"); + err.$javaException = ex; + ex.$jsException = err; + } + return err; +} +function $rt_createMultiArray(cls, dimensions) { + var first = 0; + for (var i = dimensions.length - 1; i >= 0; i = (i - 1) | 0) { + if (dimensions[i] == 0) { + first = i; + break; + } + } + if (first > 0) { + for (i = 0; i < first; i = (i + 1) | 0) { + cls = $rt_arraycls(cls); + } + if (first == dimensions.length - 1) { + return $rt_createArray(cls, dimensions[first]); + } + } + var arrays = new Array($rt_primitiveArrayCount(dimensions, first)); + var firstDim = dimensions[first] | 0; + for (i = 0; i < arrays.length; i = (i + 1) | 0) { + arrays[i] = $rt_createArray(cls, firstDim); + } + return $rt_createMultiArrayImpl(cls, arrays, dimensions, first); +} +function $rt_createByteMultiArray(dimensions) { + var arrays = new Array($rt_primitiveArrayCount(dimensions, 0)); + if (arrays.length == 0) { + return $rt_createMultiArray($rt_bytecls(), dimensions); + } + var firstDim = dimensions[0] | 0; + for (var i = 0; i < arrays.length; i = (i + 1) | 0) { + arrays[i] = $rt_createByteArray(firstDim); + } + return $rt_createMultiArrayImpl($rt_bytecls(), arrays, dimensions); +} +function $rt_createCharMultiArray(dimensions) { + var arrays = new Array($rt_primitiveArrayCount(dimensions, 0)); + if (arrays.length == 0) { + return $rt_createMultiArray($rt_charcls(), dimensions); + } + var firstDim = dimensions[0] | 0; + for (var i = 0; i < arrays.length; i = (i + 1) | 0) { + arrays[i] = $rt_createCharArray(firstDim); + } + return $rt_createMultiArrayImpl($rt_charcls(), arrays, dimensions, 0); +} +function $rt_createBooleanMultiArray(dimensions) { + var arrays = new Array($rt_primitiveArrayCount(dimensions, 0)); + if (arrays.length == 0) { + return $rt_createMultiArray($rt_booleancls(), dimensions); + } + var firstDim = dimensions[0] | 0; + for (var i = 0; i < arrays.length; i = (i + 1) | 0) { + arrays[i] = $rt_createBooleanArray(firstDim); + } + return $rt_createMultiArrayImpl($rt_booleancls(), arrays, dimensions, 0); +} +function $rt_createShortMultiArray(dimensions) { + var arrays = new Array($rt_primitiveArrayCount(dimensions, 0)); + if (arrays.length == 0) { + return $rt_createMultiArray($rt_shortcls(), dimensions); + } + var firstDim = dimensions[0] | 0; + for (var i = 0; i < arrays.length; i = (i + 1) | 0) { + arrays[i] = $rt_createShortArray(firstDim); + } + return $rt_createMultiArrayImpl($rt_shortcls(), arrays, dimensions, 0); +} +function $rt_createIntMultiArray(dimensions) { + var arrays = new Array($rt_primitiveArrayCount(dimensions, 0)); + if (arrays.length == 0) { + return $rt_createMultiArray($rt_intcls(), dimensions); + } + var firstDim = dimensions[0] | 0; + for (var i = 0; i < arrays.length; i = (i + 1) | 0) { + arrays[i] = $rt_createIntArray(firstDim); + } + return $rt_createMultiArrayImpl($rt_intcls(), arrays, dimensions, 0); +} +function $rt_createLongMultiArray(dimensions) { + var arrays = new Array($rt_primitiveArrayCount(dimensions, 0)); + if (arrays.length == 0) { + return $rt_createMultiArray($rt_longcls(), dimensions); + } + var firstDim = dimensions[0] | 0; + for (var i = 0; i < arrays.length; i = (i + 1) | 0) { + arrays[i] = $rt_createLongArray(firstDim); + } + return $rt_createMultiArrayImpl($rt_longcls(), arrays, dimensions, 0); +} +function $rt_createFloatMultiArray(dimensions) { + var arrays = new Array($rt_primitiveArrayCount(dimensions, 0)); + if (arrays.length == 0) { + return $rt_createMultiArray($rt_floatcls(), dimensions); + } + var firstDim = dimensions[0] | 0; + for (var i = 0; i < arrays.length; i = (i + 1) | 0) { + arrays[i] = $rt_createFloatArray(firstDim); + } + return $rt_createMultiArrayImpl($rt_floatcls(), arrays, dimensions, 0); +} +function $rt_createDoubleMultiArray(dimensions) { + var arrays = new Array($rt_primitiveArrayCount(dimensions, 0)); + if (arrays.length == 0) { + return $rt_createMultiArray($rt_doublecls(), dimensions); + } + var firstDim = dimensions[0] | 0; + for (var i = 0; i < arrays.length; i = (i + 1) | 0) { + arrays[i] = $rt_createDoubleArray(firstDim); + } + return $rt_createMultiArrayImpl($rt_doublecls(), arrays, dimensions, 0); +} +function $rt_primitiveArrayCount(dimensions, start) { + var val = dimensions[start + 1] | 0; + for (var i = start + 2; i < dimensions.length; i = (i + 1) | 0) { + val = (val * (dimensions[i] | 0)) | 0; + if (val == 0) { + break; + } + } + return val; +} +function $rt_createMultiArrayImpl(cls, arrays, dimensions, start) { + var limit = arrays.length; + for (var i = (start + 1) | 0; i < dimensions.length; i = (i + 1) | 0) { + cls = $rt_arraycls(cls); + var dim = dimensions[i]; + var index = 0; + var packedIndex = 0; + while (index < limit) { + var arr = $rt_createUnfilledArray(cls, dim); + for (var j = 0; j < dim; j = (j + 1) | 0) { + arr.data[j] = arrays[index]; + index = (index + 1) | 0; + } + arrays[packedIndex] = arr; + packedIndex = (packedIndex + 1) | 0; + } + limit = packedIndex; + } + return arrays[0]; +} +function $rt_assertNotNaN(value) { + if (typeof value === 'number' && isNaN(value)) { + throw "NaN"; + } + return value; +} +var $rt_stdoutBuffer = ""; +function $rt_putStdout(ch) { + if (ch == 0xA) { + if (console) { + console.info($rt_stdoutBuffer); + } + $rt_stdoutBuffer = ""; + } else { + $rt_stdoutBuffer += String.fromCharCode(ch); + } +} +var $rt_stderrBuffer = ""; +function $rt_putStderr(ch) { + if (ch == 0xA) { + if (console) { + console.info($rt_stderrBuffer); + } + $rt_stderrBuffer = ""; + } else { + $rt_stderrBuffer += String.fromCharCode(ch); + } +} +function $rt_metadata(data) { + for (var i = 0; i < data.length; i += 7) { + var cls = data[i]; + cls.$meta = {}; + var m = cls.$meta; + m.name = data[i + 1]; + m.binaryName = "L" + m.name + ";"; + var superclass = data[i + 2]; + m.superclass = superclass !== 0 ? superclass : null; + m.supertypes = data[i + 3]; + if (m.superclass) { + m.supertypes.push(m.superclass); + cls.prototype = new m.superclass(); + } else { + cls.prototype = {}; + } + var flags = data[i + 4]; + m.enum = (flags & 1) != 0; + m.primitive = false; + m.item = null; + cls.prototype.constructor = cls; + cls.classObject = null; + var clinit = data[i + 5]; + cls.$clinit = clinit !== 0 ? clinit : function() {}; + + var virtualMethods = data[i + 6]; + for (var j = 0; j < virtualMethods.length; j += 2) { + var name = virtualMethods[j]; + var func = virtualMethods[j + 1]; + if (typeof name === 'string') { + name = [name]; + } + for (var k = 0; k < name.length; ++k) { + cls.prototype[name[k]] = func; + } + } + + cls.$array = null; + } +} +function $rt_threadStarter(f) { + return function() { + var args = Array.prototype.slice.apply(arguments); + $rt_startThread(function() { + f.apply(this, args); + }); + } +} +function $rt_mainStarter(f) { + return function(args) { + if (!args) { + args = []; + } + var javaArgs = $rt_createArray($rt_objcls(), args.length); + for (var i = 0; i < args.length; ++i) { + javaArgs.data[i] = $rt_str(args[i]); + } + $rt_threadStarter(f)(javaArgs); + }; +} +var $rt_stringPool_instance; +function $rt_stringPool(strings) { + $rt_stringPool_instance = new Array(strings.length); + for (var i = 0; i < strings.length; ++i) { + $rt_stringPool_instance[i] = $rt_intern($rt_str(strings[i])); + } +} +function $rt_s(index) { + return $rt_stringPool_instance[index]; +} +function TeaVMThread(runner) { + this.status = 3; + this.stack = []; + this.suspendCallback = null; + this.runner = runner; + this.attribute = null; + this.completeCallback = null; +} +TeaVMThread.prototype.push = function() { + for (var i = 0; i < arguments.length; ++i) { + this.stack.push(arguments[i]); + } + return this; +}; +TeaVMThread.prototype.s = TeaVMThread.prototype.push; +TeaVMThread.prototype.pop = function() { + return this.stack.pop(); +}; +TeaVMThread.prototype.l = TeaVMThread.prototype.pop; +TeaVMThread.prototype.isResuming = function() { + return this.status == 2; +}; +TeaVMThread.prototype.isSuspending = function() { + return this.status == 1; +}; +TeaVMThread.prototype.suspend = function(callback) { + this.suspendCallback = callback; + this.status = 1; +}; +TeaVMThread.prototype.start = function(callback) { + if (this.status != 3) { + throw new Error("Thread already started"); + } + if ($rt_currentNativeThread !== null) { + throw new Error("Another thread is running"); + } + this.status = 0; + this.completeCallback = callback ? callback : function(result) { + if (result instanceof Error) { + throw result; + } + }; + this.run(); +}; +TeaVMThread.prototype.resume = function() { + if ($rt_currentNativeThread !== null) { + throw new Error("Another thread is running"); + } + this.status = 2; + this.run(); +}; +TeaVMThread.prototype.run = function() { + $rt_currentNativeThread = this; + var result; + try { + result = this.runner(); + } catch (e) { + result = e; + } finally { + $rt_currentNativeThread = null; + } + if (this.suspendCallback !== null) { + var self = this; + var callback = this.suspendCallback; + this.suspendCallback = null; + callback(function() { + self.resume(); + }); + } else if (this.status === 0) { + this.completeCallback(result); + } +}; +function $rt_suspending() { + var thread = $rt_nativeThread(); + return thread != null && thread.isSuspending(); +} +function $rt_resuming() { + var thread = $rt_nativeThread(); + return thread != null && thread.isResuming(); +} +function $rt_suspend(callback) { + return $rt_nativeThread().suspend(callback); +} +function $rt_startThread(runner, callback) { + new TeaVMThread(runner).start(callback); +} +var $rt_currentNativeThread = null; +function $rt_nativeThread() { + return $rt_currentNativeThread; +} +function $rt_invalidPointer() { + throw new Error("Invalid recorded state"); +} + +function $dbg_repr(obj) { + return obj.toString ? obj.toString() : ""; +} +function $dbg_class(obj) { + if (obj instanceof Long) { + return "long"; + } + var cls = obj.constructor; + var arrayDegree = 0; + while (cls.$meta && cls.$meta.item) { + ++arrayDegree; + cls = cls.$meta.item; + } + var clsName = ""; + if (cls === $rt_booleancls()) { + clsName = "boolean"; + } else if (cls === $rt_bytecls()) { + clsName = "byte"; + } else if (cls === $rt_shortcls()) { + clsName = "short"; + } else if (cls === $rt_charcls()) { + clsName = "char"; + } else if (cls === $rt_intcls()) { + clsName = "int"; + } else if (cls === $rt_longcls()) { + clsName = "long"; + } else if (cls === $rt_floatcls()) { + clsName = "float"; + } else if (cls === $rt_doublecls()) { + clsName = "double"; + } else { + clsName = cls.$meta ? cls.$meta.name : "@" + cls.name; + } + while (arrayDegree-- > 0) { + clsName += "[]"; + } + return clsName; +} + +function Long(lo, hi) { + this.lo = lo | 0; + this.hi = hi | 0; +} +Long.prototype.toString = function() { + var result = []; + var n = this; + var positive = Long_isPositive(n); + if (!positive) { + n = Long_neg(n); + } + var radix = new Long(10, 0); + do { + var divRem = Long_divRem(n, radix); + result.push(String.fromCharCode(48 + divRem[1].lo)); + n = divRem[0]; + } while (n.lo != 0 || n.hi != 0); + result = result.reverse().join(''); + return positive ? result : "-" + result; +}; +var Long_ZERO = new Long(0, 0); +var Long_MAX_NORMAL = 1 << 18; +function Long_fromInt(val) { + return val >= 0 ? new Long(val, 0) : new Long(val, -1); +} +function Long_fromNumber(val) { + if (val >= 0) { + return new Long(val | 0, (val / 0x100000000) | 0); + } else { + return Long_neg(new Long(-val | 0, (-val / 0x100000000) | 0)); + } +} +function Long_toNumber(val) { + var lo = val.lo; + var hi = val.hi; + if (lo < 0) { + lo += 0x100000000; + } + return 0x100000000 * hi + lo; +} +function Long_eq(a, b) { + return a.hi === b.hi && a.lo === b.lo; +} +function Long_ne(a, b) { + return a.hi !== b.hi || a.lo !== b.lo; +} +function Long_gt(a, b) { + if (a.hi < b.hi) { + return false; + } + if (a.hi > b.hi) { + return true; + } + var x = a.lo >>> 1; + var y = b.lo >>> 1; + if (x != y) { + return x > y; + } + return (a.lo & 1) > (b.lo & 1); +} +function Long_ge(a, b) { + if (a.hi < b.hi) { + return false; + } + if (a.hi > b.hi) { + return true; + } + var x = a.lo >>> 1; + var y = b.lo >>> 1; + if (x != y) { + return x >= y; + } + return (a.lo & 1) >= (b.lo & 1); +} +function Long_lt(a, b) { + if (a.hi > b.hi) { + return false; + } + if (a.hi < b.hi) { + return true; + } + var x = a.lo >>> 1; + var y = b.lo >>> 1; + if (x != y) { + return x < y; + } + return (a.lo & 1) < (b.lo & 1); +} +function Long_le(a, b) { + if (a.hi > b.hi) { + return false; + } + if (a.hi < b.hi) { + return true; + } + var x = a.lo >>> 1; + var y = b.lo >>> 1; + if (x != y) { + return x <= y; + } + return (a.lo & 1) <= (b.lo & 1); +} + +function Long_add(a, b) { + if (a.hi === (a.lo >> 31) && b.hi === (b.lo >> 31)) { + return Long_fromNumber(a.lo + b.lo); + } else if (Math.abs(a.hi) < Long_MAX_NORMAL && Math.abs(b.hi) < Long_MAX_NORMAL) { + return Long_fromNumber(Long_toNumber(a) + Long_toNumber(b)); + } + var a_lolo = a.lo & 0xFFFF; + var a_lohi = a.lo >>> 16; + var a_hilo = a.hi & 0xFFFF; + var a_hihi = a.hi >>> 16; + var b_lolo = b.lo & 0xFFFF; + var b_lohi = b.lo >>> 16; + var b_hilo = b.hi & 0xFFFF; + var b_hihi = b.hi >>> 16; + + var lolo = (a_lolo + b_lolo) | 0; + var lohi = (a_lohi + b_lohi + (lolo >> 16)) | 0; + var hilo = (a_hilo + b_hilo + (lohi >> 16)) | 0; + var hihi = (a_hihi + b_hihi + (hilo >> 16)) | 0; + return new Long((lolo & 0xFFFF) | ((lohi & 0xFFFF) << 16), (hilo & 0xFFFF) | ((hihi & 0xFFFF) << 16)); +} +function Long_inc(a) { + var lo = (a.lo + 1) | 0; + var hi = a.hi; + if (lo === 0) { + hi = (hi + 1) | 0; + } + return new Long(lo, hi); +} +function Long_dec(a) { + var lo = (a.lo - 1) | 0; + var hi = a.hi; + if (lo === -1) { + hi = (hi - 1) | 0; + } + return new Long(lo, hi); +} +function Long_neg(a) { + return Long_inc(new Long(a.lo ^ 0xFFFFFFFF, a.hi ^ 0xFFFFFFFF)); +} +function Long_sub(a, b) { + if (a.hi === (a.lo >> 31) && b.hi === (b.lo >> 31)) { + return Long_fromNumber(a.lo - b.lo); + } + var a_lolo = a.lo & 0xFFFF; + var a_lohi = a.lo >>> 16; + var a_hilo = a.hi & 0xFFFF; + var a_hihi = a.hi >>> 16; + var b_lolo = b.lo & 0xFFFF; + var b_lohi = b.lo >>> 16; + var b_hilo = b.hi & 0xFFFF; + var b_hihi = b.hi >>> 16; + + var lolo = (a_lolo - b_lolo) | 0; + var lohi = (a_lohi - b_lohi + (lolo >> 16)) | 0; + var hilo = (a_hilo - b_hilo + (lohi >> 16)) | 0; + var hihi = (a_hihi - b_hihi + (hilo >> 16)) | 0; + return new Long((lolo & 0xFFFF) | ((lohi & 0xFFFF) << 16), (hilo & 0xFFFF) | ((hihi & 0xFFFF) << 16)); +} +function Long_compare(a, b) { + var r = a.hi - b.hi; + if (r !== 0) { + return r; + } + r = (a.lo >>> 1) - (b.lo >>> 1); + if (r !== 0) { + return r; + } + return (a.lo & 1) - (b.lo & 1); +} +function Long_isPositive(a) { + return (a.hi & 0x80000000) === 0; +} +function Long_isNegative(a) { + return (a.hi & 0x80000000) !== 0; +} +function Long_mul(a, b) { + var positive = Long_isNegative(a) === Long_isNegative(b); + if (Long_isNegative(a)) { + a = Long_neg(a); + } + if (Long_isNegative(b)) { + b = Long_neg(b); + } + var a_lolo = a.lo & 0xFFFF; + var a_lohi = a.lo >>> 16; + var a_hilo = a.hi & 0xFFFF; + var a_hihi = a.hi >>> 16; + var b_lolo = b.lo & 0xFFFF; + var b_lohi = b.lo >>> 16; + var b_hilo = b.hi & 0xFFFF; + var b_hihi = b.hi >>> 16; + + var lolo = 0; + var lohi = 0; + var hilo = 0; + var hihi = 0; + lolo = (a_lolo * b_lolo) | 0; + lohi = lolo >>> 16; + lohi = ((lohi & 0xFFFF) + a_lohi * b_lolo) | 0; + hilo = (hilo + (lohi >>> 16)) | 0; + lohi = ((lohi & 0xFFFF) + a_lolo * b_lohi) | 0; + hilo = (hilo + (lohi >>> 16)) | 0; + hihi = hilo >>> 16; + hilo = ((hilo & 0xFFFF) + a_hilo * b_lolo) | 0; + hihi = (hihi + (hilo >>> 16)) | 0; + hilo = ((hilo & 0xFFFF) + a_lohi * b_lohi) | 0; + hihi = (hihi + (hilo >>> 16)) | 0; + hilo = ((hilo & 0xFFFF) + a_lolo * b_hilo) | 0; + hihi = (hihi + (hilo >>> 16)) | 0; + hihi = (hihi + a_hihi * b_lolo + a_hilo * b_lohi + a_lohi * b_hilo + a_lolo * b_hihi) | 0; + var result = new Long((lolo & 0xFFFF) | (lohi << 16), (hilo & 0xFFFF) | (hihi << 16)); + return positive ? result : Long_neg(result); +} +function Long_div(a, b) { + if (Math.abs(a.hi) < Long_MAX_NORMAL && Math.abs(b.hi) < Long_MAX_NORMAL) { + return Long_fromNumber(Long_toNumber(a) / Long_toNumber(b)); + } + return Long_divRem(a, b)[0]; +} +function Long_rem(a, b) { + if (Math.abs(a.hi) < Long_MAX_NORMAL && Math.abs(b.hi) < Long_MAX_NORMAL) { + return Long_fromNumber(Long_toNumber(a) % Long_toNumber(b)); + } + return Long_divRem(a, b)[1]; +} +function Long_divRem(a, b) { + if (b.lo == 0 && b.hi == 0) { + throw new Error("Division by zero"); + } + var positive = Long_isNegative(a) === Long_isNegative(b); + if (Long_isNegative(a)) { + a = Long_neg(a); + } + if (Long_isNegative(b)) { + b = Long_neg(b); + } + a = new LongInt(a.lo, a.hi, 0); + b = new LongInt(b.lo, b.hi, 0); + var q = LongInt_div(a, b); + a = new Long(a.lo, a.hi); + q = new Long(q.lo, q.hi); + return positive ? [q, a] : [Long_neg(q), Long_neg(a)]; +} +function Long_shiftLeft16(a) { + return new Long(a.lo << 16, (a.lo >>> 16) | (a.hi << 16)); +} +function Long_shiftRight16(a) { + return new Long((a.lo >>> 16) | (a.hi << 16), a.hi >>> 16); +} +function Long_and(a, b) { + return new Long(a.lo & b.lo, a.hi & b.hi); +} +function Long_or(a, b) { + return new Long(a.lo | b.lo, a.hi | b.hi); +} +function Long_xor(a, b) { + return new Long(a.lo ^ b.lo, a.hi ^ b.hi); +} +function Long_shl(a, b) { + b &= 63; + if (b == 0) { + return a; + } else if (b < 32) { + return new Long(a.lo << b, (a.lo >>> (32 - b)) | (a.hi << b)); + } else if (b == 32) { + return new Long(0, a.lo); + } else { + return new Long(0, a.lo << (b - 32)); + } +} +function Long_shr(a, b) { + b &= 63; + if (b == 0) { + return a; + } else if (b < 32) { + return new Long((a.lo >>> b) | (a.hi << (32 - b)), a.hi >> b); + } else if (b == 32) { + return new Long(a.hi, a.hi >> 31); + } else { + return new Long((a.hi >> (b - 32)), a.hi >> 31); + } +} +function Long_shru(a, b) { + b &= 63; + if (b == 0) { + return a; + } else if (b < 32) { + return new Long((a.lo >>> b) | (a.hi << (32 - b)), a.hi >>> b); + } else if (b == 32) { + return new Long(a.hi, 0); + } else { + return new Long((a.hi >>> (b - 32)), 0); + } +} + +// Represents a mutable 80-bit unsigned integer +function LongInt(lo, hi, sup) { + this.lo = lo; + this.hi = hi; + this.sup = sup; +} +function LongInt_mul(a, b) { + var a_lolo = ((a.lo & 0xFFFF) * b) | 0; + var a_lohi = ((a.lo >>> 16) * b) | 0; + var a_hilo = ((a.hi & 0xFFFF) * b) | 0; + var a_hihi = ((a.hi >>> 16) * b) | 0; + var sup = (a.sup * b) | 0; + + a_lohi = (a_lohi + (a_lolo >>> 16)) | 0; + a_hilo = (a_hilo + (a_lohi >>> 16)) | 0; + a_hihi = (a_hihi + (a_hilo >>> 16)) | 0; + sup = (sup + (a_hihi >>> 16)) | 0; + a.lo = (a_lolo & 0xFFFF) | (a_lohi << 16); + a.hi = (a_hilo & 0xFFFF) | (a_hihi << 16); + a.sup = sup & 0xFFFF; +} +function LongInt_sub(a, b) { + var a_lolo = a.lo & 0xFFFF; + var a_lohi = a.lo >>> 16; + var a_hilo = a.hi & 0xFFFF; + var a_hihi = a.hi >>> 16; + var b_lolo = b.lo & 0xFFFF; + var b_lohi = b.lo >>> 16; + var b_hilo = b.hi & 0xFFFF; + var b_hihi = b.hi >>> 16; + + a_lolo = (a_lolo - b_lolo) | 0; + a_lohi = (a_lohi - b_lohi + (a_lolo >> 16)) | 0; + a_hilo = (a_hilo - b_hilo + (a_lohi >> 16)) | 0; + a_hihi = (a_hihi - b_hihi + (a_hilo >> 16)) | 0; + var sup = (a.sup - b.sup + (a_hihi >> 16)) | 0; + a.lo = (a_lolo & 0xFFFF) | (a_lohi << 16); + a.hi = (a_hilo & 0xFFFF) | (a_hihi << 16); + a.sup = sup; +} +function LongInt_add(a, b) { + var a_lolo = a.lo & 0xFFFF; + var a_lohi = a.lo >>> 16; + var a_hilo = a.hi & 0xFFFF; + var a_hihi = a.hi >>> 16; + var b_lolo = b.lo & 0xFFFF; + var b_lohi = b.lo >>> 16; + var b_hilo = b.hi & 0xFFFF; + var b_hihi = b.hi >>> 16; + + a_lolo = (a_lolo + b_lolo) | 0; + a_lohi = (a_lohi + b_lohi + (a_lolo >> 16)) | 0; + a_hilo = (a_hilo + b_hilo + (a_lohi >> 16)) | 0; + a_hihi = (a_hihi + b_hihi + (a_hilo >> 16)) | 0; + var sup = (a.sup + b.sup + (a_hihi >> 16)) | 0; + a.lo = (a_lolo & 0xFFFF) | (a_lohi << 16); + a.hi = (a_hilo & 0xFFFF) | (a_hihi << 16); + a.sup = sup; +} +function LongInt_inc(a) { + a.lo = (a.lo + 1) | 0; + if (a.lo == 0) { + a.hi = (a.hi + 1) | 0; + if (a.hi == 0) { + a.sup = (a.sup + 1) & 0xFFFF; + } + } +} +function LongInt_dec(a) { + a.lo = (a.lo - 1) | 0; + if (a.lo == -1) { + a.hi = (a.hi - 1) | 0; + if (a.hi == -1) { + a.sup = (a.sup - 1) & 0xFFFF; + } + } +} +function LongInt_ucompare(a, b) { + var r = (a.sup - b.sup); + if (r != 0) { + return r; + } + r = (a.hi >>> 1) - (b.hi >>> 1); + if (r != 0) { + return r; + } + r = (a.hi & 1) - (b.hi & 1); + if (r != 0) { + return r; + } + r = (a.lo >>> 1) - (b.lo >>> 1); + if (r != 0) { + return r; + } + return (a.lo & 1) - (b.lo & 1); +} +function LongInt_numOfLeadingZeroBits(a) { + var n = 0; + var d = 16; + while (d > 0) { + if ((a >>> d) !== 0) { + a >>>= d; + n = (n + d) | 0; + } + d = (d / 2) | 0; + } + return 31 - n; +} +function LongInt_shl(a, b) { + if (b == 0) { + return; + } + if (b < 32) { + a.sup = ((a.hi >>> (32 - b)) | (a.sup << b)) & 0xFFFF; + a.hi = (a.lo >>> (32 - b)) | (a.hi << b); + a.lo <<= b; + } else if (b == 32) { + a.sup = a.hi & 0xFFFF; + a.hi = a.lo; + a.lo = 0; + } else if (b < 64) { + a.sup = ((a.lo >>> (64 - b)) | (a.hi << (b - 32))) & 0xFFFF; + a.hi = a.lo << b; + a.lo = 0; + } else if (b == 64) { + a.sup = a.lo & 0xFFFF; + a.hi = 0; + a.lo = 0; + } else { + a.sup = (a.lo << (b - 64)) & 0xFFFF; + a.hi = 0; + a.lo = 0; + } +} +function LongInt_shr(a, b) { + if (b == 0) { + return; + } + if (b == 32) { + a.lo = a.hi; + a.hi = a.sup; + a.sup = 0; + } else if (b < 32) { + a.lo = (a.lo >>> b) | (a.hi << (32 - b)); + a.hi = (a.hi >>> b) | (a.sup << (32 - b)); + a.sup >>>= b; + } else if (b == 64) { + a.lo = a.sup; + a.hi = 0; + a.sup = 0; + } else if (b < 64) { + a.lo = (a.hi >>> (b - 32)) | (a.sup << (64 - b)); + a.hi = a.sup >>> (b - 32); + a.sup = 0; + } else { + a.lo = a.sup >>> (b - 64); + a.hi = 0; + a.sup = 0; + } +} +function LongInt_copy(a) { + return new LongInt(a.lo, a.hi, a.sup); +} +function LongInt_div(a, b) { + // Normalize divisor + var bits = b.hi !== 0 ? LongInt_numOfLeadingZeroBits(b.hi) : LongInt_numOfLeadingZeroBits(b.lo) + 32; + var sz = 1 + ((bits / 16) | 0); + var dividentBits = bits % 16; + LongInt_shl(b, bits); + LongInt_shl(a, dividentBits); + var q = new LongInt(0, 0, 0); + while (sz-- > 0) { + LongInt_shl(q, 16); + // Calculate approximate q + var digitA = (a.hi >>> 16) + (0x10000 * a.sup); + var digitB = b.hi >>> 16; + var digit = (digitA / digitB) | 0; + var t = LongInt_copy(b); + LongInt_mul(t, digit); + // Adjust q either down or up + if (LongInt_ucompare(t, a) >= 0) { + while (LongInt_ucompare(t, a) > 0) { + LongInt_sub(t, b); + --digit; + } + } else { + while (true) { + var nextT = LongInt_copy(t); + LongInt_add(nextT, b); + if (LongInt_ucompare(nextT, a) > 0) { + break; + } + t = nextT; + ++digit; + } + } + LongInt_sub(a, t); + q.lo |= digit; + LongInt_shl(a, 16); + } + LongInt_shr(a, bits + 16); + return q; +} diff --git a/examples/flavour/package.json b/examples/flavour/package.json new file mode 100644 index 0000000000..1fcaf360d8 --- /dev/null +++ b/examples/flavour/package.json @@ -0,0 +1,6 @@ +{ + "dependencies": { + "todomvc-common": "^1.0.0", + "todomvc-app-css": "^1.0.1" + } +} \ No newline at end of file diff --git a/examples/flavour/pom.xml b/examples/flavour/pom.xml new file mode 100644 index 0000000000..d441bcdda0 --- /dev/null +++ b/examples/flavour/pom.xml @@ -0,0 +1,149 @@ + + + 4.0.0 + + org.teavm.flavour + flavour-example-todomvc + 1.0-SNAPSHOT + + war + + + 1.1.50 + 0.1.0 + 0.5.1 + + + + + org.teavm + teavm-classlib + ${teavm.version} + + + org.teavm + teavm-metaprogramming-impl + ${teavm.version} + + + + org.teavm.flavour + teavm-flavour-widgets + ${flavour.version} + + + org.teavm.flavour + teavm-flavour-json + ${flavour.version} + + + + com.fasterxml.jackson.core + jackson-annotations + 2.5.4 + + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + + + ${project.basedir}/src/main/kotlin + ${project.basedir}/src/test/kotlin + + + + org.codehaus.mojo + exec-maven-plugin + + + exec-npm-install + generate-sources + + npm + + install + + + + exec + + + + + + + kotlin-maven-plugin + org.jetbrains.kotlin + ${kotlin.version} + + 1.8 + + + + compile + + compile + + + + + test-compile + + test-compile + + + + + + + maven-war-plugin + 2.4 + + + + ${project.build.directory}/generated/js + + + ${project.basedir}/node_modules/ + + **/base.css + **/index.css + + + + + + + + org.teavm + teavm-maven-plugin + ${teavm.version} + + + web-client + prepare-package + + compile + + + ${project.build.directory}/generated/js/teavm + org.teavm.flavour.example.todomvc.TodoView + true + true + true + true + ADVANCED + + + + + + + + \ No newline at end of file diff --git a/examples/flavour/src/main/kotlin/org/teavm/flavour/example/todomvc/components.kt b/examples/flavour/src/main/kotlin/org/teavm/flavour/example/todomvc/components.kt new file mode 100644 index 0000000000..fa2e44bcc5 --- /dev/null +++ b/examples/flavour/src/main/kotlin/org/teavm/flavour/example/todomvc/components.kt @@ -0,0 +1,46 @@ +package org.teavm.flavour.example.todomvc + +import org.teavm.flavour.templates.BindAttributeComponent +import org.teavm.flavour.templates.BindContent +import org.teavm.flavour.templates.ModifierTarget +import org.teavm.flavour.templates.Renderable +import org.teavm.jso.dom.events.EventListener +import org.teavm.jso.dom.events.KeyboardEvent + +@BindAttributeComponent(name = arrayOf("escape")) +class EscapeComponent(private val target: ModifierTarget) : Renderable { + @set:BindContent + var action: Runnable = Runnable {} + + override fun render() { + target.element.addEventListener("keydown", eventListener) + } + + override fun destroy() { + target.element.removeEventListener("keydown", eventListener) + } + + private val eventListener = EventListener { + if (it.keyCode == ESCAPE_KEY) { + action.run() + } + } + + companion object { + val ESCAPE_KEY = 27 + } +} + +@BindAttributeComponent(name = arrayOf("focus")) +class FocusComponent(private val target: ModifierTarget) : Renderable { + @set:BindContent + var isFocused: () -> Boolean = { false } + + override fun render() { + if (isFocused()) { + target.element.focus() + } + } + + override fun destroy() { } +} diff --git a/examples/flavour/src/main/kotlin/org/teavm/flavour/example/todomvc/model.kt b/examples/flavour/src/main/kotlin/org/teavm/flavour/example/todomvc/model.kt new file mode 100644 index 0000000000..0d7bc9fbc7 --- /dev/null +++ b/examples/flavour/src/main/kotlin/org/teavm/flavour/example/todomvc/model.kt @@ -0,0 +1,22 @@ +package org.teavm.flavour.example.todomvc + +class Todo { + var title = "" + var completed = false +} + +enum class TodoFilterType { + ALL, + ACTIVE, + COMPLETED +} + +interface TodoDataSource { + fun fetch(): List + + fun save(todo: Todo) + + fun delete(todo: Todo) + + fun clearCompleted() +} \ No newline at end of file diff --git a/examples/flavour/src/main/kotlin/org/teavm/flavour/example/todomvc/store.kt b/examples/flavour/src/main/kotlin/org/teavm/flavour/example/todomvc/store.kt new file mode 100644 index 0000000000..3153069606 --- /dev/null +++ b/examples/flavour/src/main/kotlin/org/teavm/flavour/example/todomvc/store.kt @@ -0,0 +1,53 @@ +package org.teavm.flavour.example.todomvc + +import org.teavm.flavour.json.JSON +import org.teavm.flavour.json.tree.Node +import org.teavm.jso.browser.Window + +class LocalStorageTodoDataSource : TodoDataSource { + private val localStorage = Window.current().localStorage + private var list: TodoList? = null + + override fun fetch(): List { + val list = this.list ?: let { + val item = localStorage.getItem(ITEM_NAME) ?: return emptyList() + JSON.deserialize(Node.parse(item), TodoList::class.java).also { list = it } + } + return list.data + } + + override fun save(todo: Todo) { + val list = getOrCreateList() + val index = list.data.indexOf(todo) + if (index < 0) { + list.data += todo + } + updateLocalStorage(list) + } + + override fun delete(todo: Todo) { + val list = getOrCreateList() + list.data -= todo + updateLocalStorage(list) + } + + override fun clearCompleted() { + val list = getOrCreateList() + list.data.removeAll { it.completed } + updateLocalStorage(list) + } + + private fun getOrCreateList(): TodoList = list ?: TodoList().also { list = it } + + private fun updateLocalStorage(list: TodoList) { + localStorage.setItem(ITEM_NAME, JSON.serialize(list).stringify()) + } + + companion object { + val ITEM_NAME = "todos" + } +} + +class TodoList { + val data = mutableListOf() +} diff --git a/examples/flavour/src/main/kotlin/org/teavm/flavour/example/todomvc/view.kt b/examples/flavour/src/main/kotlin/org/teavm/flavour/example/todomvc/view.kt new file mode 100644 index 0000000000..531be5b409 --- /dev/null +++ b/examples/flavour/src/main/kotlin/org/teavm/flavour/example/todomvc/view.kt @@ -0,0 +1,137 @@ +package org.teavm.flavour.example.todomvc + +import org.teavm.flavour.routing.Path +import org.teavm.flavour.routing.PathSet +import org.teavm.flavour.routing.Route +import org.teavm.flavour.routing.Routing +import org.teavm.flavour.templates.BindTemplate +import org.teavm.flavour.widgets.ApplicationTemplate +import org.teavm.flavour.widgets.RouteBinder +import org.teavm.jso.dom.html.HTMLDocument +import java.util.function.Consumer + +@BindTemplate("templates/todo.html") +class TodoView(private val dataSource: TodoDataSource) : ApplicationTemplate(), TodoRoute { + private val allTodos = mutableListOf() + private var todoFilter: (Todo) -> Boolean = { true } + + init { + reload() + } + + val todos: List get() = allTodos + + val filteredTodos get() = allTodos.filter(todoFilter) + + var newTodo = "" + + var editedTodo: Todo? = null + get + private set + + private var titleBackup = "" + + var saving = false + get + private set + + var filterType = TodoFilterType.ALL + get + private set + + val remainingCount get() = todos.count { !it.completed } + + val completedCount get() = todos.count { it.completed } + + val allChecked get() = todos.all { it.completed } + + fun markAll(mark: Boolean) = todos.forEach { it.completed = mark } + + fun addTodo() { + if (newTodo.isBlank()) return + dataSource.save(Todo().apply { title = newTodo }) + newTodo = "" + reload() + } + + fun editTodo(todo: Todo) { + editedTodo = todo + titleBackup = todo.title + } + + fun revertEdits(todo: Todo) { + if (editedTodo == null) return + todo.title = titleBackup + editedTodo = null + reload() + } + + fun saveEdits(todo: Todo) { + val editedTodo = this.editedTodo ?: return + todo.title = editedTodo.title.trim() + this.editedTodo = null + if (editedTodo.title.isNotBlank()) { + dataSource.save(todo) + } + else { + dataSource.delete(todo) + } + reload() + } + + fun removeTodo(todo: Todo) { + dataSource.delete(todo) + reload() + } + + fun clearCompletedTodos() { + dataSource.clearCompleted() + reload() + } + + override fun all() { + todoFilter = { true } + filterType = TodoFilterType.ALL + } + + override fun active() { + todoFilter = { !it.completed } + filterType = TodoFilterType.ACTIVE + } + + override fun completed() { + todoFilter = { it.completed } + filterType = TodoFilterType.COMPLETED + } + + fun route(c: Consumer) = Routing.build(TodoRoute::class.java, c) + + private fun reload() { + allTodos.clear() + allTodos += dataSource.fetch() + } + + companion object { + @JvmStatic + fun main(args: Array) { + val view = TodoView(LocalStorageTodoDataSource()) + RouteBinder() + .withDefault(TodoRoute::class.java) { it.all() } + .add(view) + .update() + view.bind(HTMLDocument.current().body) + } + } +} + +@PathSet +interface TodoRoute : Route { + @Path("/") + fun all() + + @Path("/active") + fun active() + + @Path("/completed") + fun completed() +} diff --git a/examples/flavour/src/main/resources/META-INF/flavour/component-packages/org.teavm.flavour.example.todomvc b/examples/flavour/src/main/resources/META-INF/flavour/component-packages/org.teavm.flavour.example.todomvc new file mode 100644 index 0000000000..7007fc4e09 --- /dev/null +++ b/examples/flavour/src/main/resources/META-INF/flavour/component-packages/org.teavm.flavour.example.todomvc @@ -0,0 +1,2 @@ +EscapeComponent +FocusComponent \ No newline at end of file diff --git a/examples/flavour/src/main/resources/templates/todo.html b/examples/flavour/src/main/resources/templates/todo.html new file mode 100644 index 0000000000..b3eaec62f6 --- /dev/null +++ b/examples/flavour/src/main/resources/templates/todo.html @@ -0,0 +1,58 @@ + + +
+ + +
+ + +
    + +
  • +
    + + + +
    +
    + +
    +
  • +
    +
+
+
+ + + item left + items left + + + + + + +
+
+
+
+

Double-click to edit a todo

+

Part of TodoMVC

+
diff --git a/examples/flavour/src/main/webapp/WEB-INF/web.xml b/examples/flavour/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..f3c8e4b71f --- /dev/null +++ b/examples/flavour/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/examples/flavour/src/main/webapp/index.html b/examples/flavour/src/main/webapp/index.html new file mode 100644 index 0000000000..8e10659ecc --- /dev/null +++ b/examples/flavour/src/main/webapp/index.html @@ -0,0 +1,13 @@ + + + + + TeaVM Flavour/Kotlin • TodoMVC + + + + + + + + \ No newline at end of file diff --git a/learn.json b/learn.json index 39b9718afa..c2c3967620 100644 --- a/learn.json +++ b/learn.json @@ -951,6 +951,25 @@ }] }] }, + "flavour": { + "name": "TeaVM/Flavour", + "description": "TeaVM is an ahead-of-time compiler of Java bytecode to JavaScript.", + "homepage": "teavm.org", + "examples": [{ + "name": "Example", + "url": "examples/teavm" + }], + "link_groups": [{ + "heading": "Official Resources", + "links": [{ + "name": "Flavour on GitHub", + "url": "https://github.com/konsoletyper/teavm-flavour" + }, { + "name": "TeaVM on GitHub", + "url": "https://github.com/konsoletyper/teavm" + }] + }] + }, "flight": { "name": "Flight", "description": "Flight is a lightweight, component-based JavaScript framework that maps behavior to DOM nodes.", From 2e5e1c184a16380229cea9f1018d6dcf40bbec6e Mon Sep 17 00:00:00 2001 From: nin-jin Date: Fri, 13 Oct 2017 16:01:48 +0300 Subject: [PATCH 28/53] +fixed path --- learn.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/learn.json b/learn.json index c2c3967620..0f75fce379 100644 --- a/learn.json +++ b/learn.json @@ -957,7 +957,7 @@ "homepage": "teavm.org", "examples": [{ "name": "Example", - "url": "examples/teavm" + "url": "examples/flavour" }], "link_groups": [{ "heading": "Official Resources", From c47e2501b256b825e950876ee6df7bf0ddb3f02b Mon Sep 17 00:00:00 2001 From: Alexey Andreev Date: Sun, 15 Oct 2017 01:31:01 +0300 Subject: [PATCH 29/53] Put optimized Flavour example --- examples/flavour/index.html | 16 +- examples/flavour/index_files/classes.js | 2899 ++++++++++++----------- 2 files changed, 1492 insertions(+), 1423 deletions(-) diff --git a/examples/flavour/index.html b/examples/flavour/index.html index 842317cd7b..ac96d7ffec 100644 --- a/examples/flavour/index.html +++ b/examples/flavour/index.html @@ -12,19 +12,5 @@ -
- -
-
-

Double-click to edit a todo

-

Part of TodoMVC

-
- - - \ No newline at end of file + diff --git a/examples/flavour/index_files/classes.js b/examples/flavour/index_files/classes.js index 00f53ce27b..812e6e8095 100644 --- a/examples/flavour/index_files/classes.js +++ b/examples/flavour/index_files/classes.js @@ -7,1452 +7,1535 @@ function $rt_nullCheck(val) {if (val === null) {$rt_throw(F());}return val;} function $rt_intern(str) {return G(str);} function $rt_getThread(){return H();} function $rt_setThread(t){return I(t);} -var IP=$rt_throw;var JP=$rt_compare;var KP=$rt_nullCheck;var LP=$rt_cls;var MP=$rt_createArray;var NP=$rt_isInstance;var OP=$rt_nativeThread;var PP=$rt_suspending;var QP=$rt_resuming;var RP=$rt_invalidPointer;var SP=$rt_s; +var WQ=$rt_throw;var XQ=$rt_compare;var YQ=$rt_nullCheck;var ZQ=$rt_cls;var AR=$rt_createArray;var BR=$rt_isInstance;var CR=$rt_nativeThread;var DR=$rt_suspending;var ER=$rt_resuming;var FR=$rt_invalidPointer;var GR=$rt_s; function E(){this.$id$=0;} -function TP(){var $r=new E();OB($r);return $r;} -function OB($t){return;} -function Su($t){return A($t.constructor);} -function Zy($t){return Ro($t);} -function Bp($t,a){return $t!==a?0:1;} -function Nw($t){return Yv(Up(Up(Up(UP(),JK(Su($t))),SP(0)),BL(Ro($t))));} -function Ro($t){var a;a=$t;if(a.$id$==0){a.$id$=$rt_nextId();}return $t.$id$;} -function SK($t){var a,b,c;if(NP($t,Nb)==0&&$t.constructor.$meta.item===null){IP(VP());}a=KM($t);b=a;c=$rt_nextId();b.$id$=c;return a;} -function TO(a){return a;} -function U(){E.call(this);} -function Bh(){E.call(this);this.We=null;} -function WP(b){var $r=new Bh();CD($r,b);return $r;} -function UB($t){return Tz($t.We);} -function CD($t,a){OB($t);$t.We=a;} -function Rb(){var a=this;E.call(a);a.Hf=null;a.oe=false;a.Jk=false;a.eg=null;} -function XP(){var $r=new Rb();ME($r);return $r;} -function YP(b){var $r=new Rb();JI($r,b);return $r;} -function ME($t){$t.oe=1;$t.Jk=1;KC($t);} -function JI($t,a){$t.oe=1;$t.Jk=1;KC($t);$t.Hf=a;} -function KC($t){return $t;} -function Kq($t){return $t.eg===null?MP(Qn,0):$t.eg.Nk();} -function VE($t,a){$t.eg=a.Nk();} -function Z(){Rb.call(this);} -function ZP(){var $r=new Z();Uw($r);return $r;} -function AQ(b){var $r=new Z();Ep($r,b);return $r;} -function Uw($t){ME($t);} -function Ep($t,a){JI($t,a);} +function HR(){var $r=new E();KC($r);return $r;} +function KC($t){return;} +function Ev($t){var a,b;a=$t.constructor;if(a===null){b=null;}else{b=a.classObject;if(b===null){b=new Sl;b.Xh=a;a.classObject=b;}}return b;} +function Sz($t){return Xo($t);} +function Jp($t,a){return $t!==a?0:1;} +function Dx($t){var a,b,c,d,e,f,g,h,i,j,k;a=new Sg;S_$callClinit();a.ke=$rt_createCharArray(16);b=$t.constructor;if(b===null){c=null;}else{c=b.classObject;if(c===null){c=new Sl;c.Xh=b;b.classObject=c;}}if(c.bh===null){b=$rt_str(c.Xh.$meta.name);Vc_$callClinit();c.bh=b;}b=c.bh;WA(a,a.Ii,b);b=GR(0);WA(a,a.Ii,b);d=Xo($t);Dd_$callClinit();e=16;b=new S;b.ke=$rt_createCharArray(20);f=RI(b,b.Ii,d,e);b=new Vc;g=f.ke;e=0;h=f.Ii;Vc_$callClinit();b.pb=$rt_createCharArray(h);i=0;while(i=2&&b<=36)){b=10;}return Tq(Ls(SQ(20),a,b));} -function BL(a){Cd_$callClinit();return Ty(a,16);} -function Qv(a){Cd_$callClinit();return Ty(a,10);} -function Rt(a){Cd_$callClinit();if(a>= -128&&a<=127){Mt();return QQ.data[a+128|0];}return RQ(a);} -function Mt(){var a;Cd_$callClinit();if(QQ===null){QQ=MP(Cd,256);a=0;while(a=2&&b<=36)){b=10;}c=new S;d=20;S_$callClinit();c.ke=$rt_createCharArray(d);e=RI(c,c.Ii,a,b);c=new Vc;f=e.ke;a=0;b=e.Ii;Vc_$callClinit();c.pb=$rt_createCharArray(b);d=0;while(d= -128&&a<=127){Vt();return WR.data[a+128|0];}b=new Dd;b.Wj=a;return b;} +function Vt(){var a,b,c,d;Dd_$callClinit();if(WR===null){WR=AR(Dd,256);a=0;while(a=$t.bf){a.vf.removeChild(b[c]);c=c+ -1|0;}}a=$t.dd;Gz(a.nk,$t.ah);d=$t.Zb-$t.bf|0;c=$t.ah;while(cd){a=new Pc;a.Ce=1;a.gl=1;WQ(a);}a=BS(b.pb,c,d-c|0);}return FH($t,a);} +function FH($t,a){var b,c,d,e,f,g,h,i,j;b=$t.constructor;if(b===null){c=null;}else{c=b.classObject;if(c===null){c=new Sl;c.Xh=b;b.classObject=c;}}if(c.bh===null){b=$rt_str(c.Xh.$meta.name);Vc_$callClinit();c.bh=b;}a:{b:{c:{d=c.bh;switch(Nt(d)){case 1344771639:break;case -1064886025:break c;default:break b;}if(XG(d,GR(2))==0){break b;}b=IP(ZQ(Xc));break a;}if(XG(d,GR(3))!=0){b=IP(ZQ(Xc));break a;}}b=null;}if(b!==null){return HI(b,a,$t);}a=new Fd;b=new Sg;S_$callClinit();e=16;b.ke=$rt_createCharArray(e);WA(b, +b.Ii,GR(4));d=$t.constructor;if(d===null){f=null;}else{f=d.classObject;if(f===null){f=new Sl;f.Xh=d;d.classObject=f;}}if(f.bh===null){f.bh=$rt_str(f.Xh.$meta.name);}d=f.bh;WA(b,b.Ii,d);d=new Vc;g=b.ke;e=0;h=b.Ii;d.pb=$rt_createCharArray(h);i=0;while(i=e){f= -1;break a;}if(f<0){break;}if(f>=b.lj){break;}c:{g=b.gk.data[f];if(a===null){if(g!==null){break c;}else{break b;}}if((a!==g?0:1)!=0){break b;}}f=f+1|0;}a=new Pc;KF(a);WQ(a);}}if(f>=0){Zz(b,f);}Ny($t,c);} +function MK($t){var a,b,c,d,e,f,g,h;a=$t.pl;if(a===null){a=new Sm;b=new Pi;c=10;b.gk=AR(E,c);a.qj=b;$t.pl=a;}d=a.qj;Jf_$callClinit();b=QS;e=GR(8);if(d===null){AP(e);}e=GR(9);if(b===null){AP(e);}KQ(d,b,1);b=$t.uc;f=MS;e=new Cm;d=new Jn;c=16;g=0.75;KC(d);c=CQ(c);d.qd=0;d.Ae=AR(Ah,c);d.ql=g;d.Pj=d.Ae.data.length*d.ql|0;e.Qg=d;d=new Xk;h=new Jn;c=16;g=0.75;VA(h);c=CQ(c);h.qd=0;h.Ae=YF(h,c);h.ql=g;By(h);KC(d);d.ci=h;e.Ag=d;e=OQ(e,a);d=$rt_str(JSON.stringify(e));b.setItem($rt_ustr(f),$rt_ustr(d));} +function ZA($t){var a,b,c;a=$t.pl;if(a===null){a=new Sm;b=new Pi;c=10;b.gk=AR(E,c);a.qj=b;$t.pl=a;}return a;} +function Ny($t,a){var b,c,d,e,f,g,h;b=$t.uc;c=MS;d=new Cm;e=new Jn;f=16;g=0.75;f=CQ(f);e.qd=0;e.Ae=AR(Ah,f);e.ql=g;e.Pj=e.Ae.data.length*e.ql|0;d.Qg=e;e=new Xk;h=new Jn;f=16;g=0.75;KC(h);f=CQ(f);h.qd=0;h.Ae=AR(Ah,f);h.ql=g;h.Pj=h.Ae.data.length*h.ql|0;e.ci=h;d.Ag=e;a=OQ(d,a);d=$rt_str(JSON.stringify(a));b.setItem($rt_ustr(c),$rt_ustr(d));} +function Ak($t){Nc_$callClinit();$t.uc=window.localStorage;} +function FD(){var a;a=new Ej;NS=a;MS=GR(6);} +function Sw(){Nc_$callClinit();return MS;} +function Nd(){E.call(this);} +function Od(){Sb.call(this);} +function RS(b){var $r=new Od();QA($r,b);return $r;} +function QA($t,a){$t.Ce=1;$t.gl=1;$t.Xf=a;} +function Tb(){Od.call(this);} +function SS(b){var $r=new Tb();Kq($r,b);return $r;} +function Kq($t,a){$t.Ce=1;$t.gl=1;$t.Xf=a;} +function He(){E.call(this);} function R(){E.call(this);} -function QN(a){return HP(a)?1:0;} -function MO(a){return YO(a)?1:0;} -function RN(a){return typeof a=='string'?1:0;} -function IO(a){return a===null?1:0;} -function BO(a){return typeof a=='boolean'?1:0;} -function FM(a){return $rt_str(JSON.stringify(a));} -function HP(a){return typeof a=='object'&&a instanceof Array;} -function YO(a){return typeof a=='object'&&!(a instanceof Array);} -function Ok(){R.call(this);} -function CN(a){return a.length;} -function An(){Pc.call(this);} -function OR(){var $r=new An();SC($r);return $r;} -function SC($t){Yw($t);} -function Ai(){E.call(this);this.rc=null;} -function PR(){var $r=new Ai();Gr($r);return $r;} -function Gr($t){OB($t);$t.rc=QR();} -function Yb(){E.call(this);} +function CP(a){return JP(a)?1:0;} +function BQ(a){return VQ(a)?1:0;} +function DP(a){return typeof a=='string'?1:0;} +function XP(a){return a===null?1:0;} +function PP(a){return typeof a=='boolean'?1:0;} +function PN(a){return $rt_str(JSON.stringify(a));} +function JP(a){return typeof a=='object'&&a instanceof Array;} +function VQ(a){return typeof a=='object'&&!(a instanceof Array);} +function Sk(){R.call(this);} +function MO(a){return a.length;} +function Fn(){Pc.call(this);} +function TS(){var $r=new Fn();QD($r);return $r;} +function QD($t){$t.Ce=1;$t.gl=1;} +function Ci(){E.call(this);this.Bc=null;} +function US(){var $r=new Ci();Or($r);return $r;} +function Or($t){var a,b,c;a=new Jn;b=16;c=0.75;b=CQ(b);a.qd=0;a.Ae=AR(Ah,b);a.ql=c;a.Pj=a.Ae.data.length*a.ql|0;$t.Bc=a;} +function Zb(){E.call(this);} function Dc(){E.call(this);} -function RR(){var $r=new Dc();RA($r);return $r;} -function RA($t){OB($t);} -function S(){var a=this;E.call(a);a.Xd=null;a.mi=0;} -var SR=null;var TR=null;var UR=null;var VR=null;var WR=null;var XR=null;var YR=null;function S_$callClinit(){S_$callClinit=function(){}; -Kv();} -function ZR(){var $r=new S();Ri($r);return $r;} -function SQ(b){var $r=new S();Gh($r,b);return $r;} -function AS(b){var $r=new S();Cn($r,b);return $r;} -function BS(b){var $r=new S();Bk($r,b);return $r;} -function Ri($t){S_$callClinit();Gh($t,16);} -function Gh($t,a){S_$callClinit();OB($t);$t.Xd=$rt_createCharArray(a);} -function Cn($t,a){S_$callClinit();Bk($t,a);} -function Bk($t,a){var b;S_$callClinit();OB($t);$t.Xd=$rt_createCharArray(C(a));b=0;while(b<$t.Xd.data.length){$t.Xd.data[b]=Nt(a,b);b=b+1|0;}$t.mi=C(a);} -function Du($t,a){return HL($t,$t.mi,a);} -function CA($t,a,b){var c,d,e;if(a>=0&&a<=$t.mi){if(b===null){b=EJ(SP(6));}else if(DJ(b)!=0){return $t;}QK($t,$t.mi+C(b)|0);c=$t.mi-1|0;while(c>=a){$t.Xd.data[c+C(b)|0]=$t.Xd.data[c];c=c+ -1|0;}$t.mi=$t.mi+C(b)|0;c=0;while(cb){j=g;break a;}h=h+1|0;if(j>i){break;}g=j;}}if(d==0){h=h+1|0;}Is($t,a,a+h|0);if(d!=0){d=a;}else{e=$t.Xd.data;d=a+1|0;e[a]=45;}while(j>0){e=$t.Xd.data;a=d+1|0;e[d]=EK(b/j|0,c);b=b%j|0;j=j/c|0;d=a;}}return $t;} -function OH($t,a){return Aq($t,$t.mi,a);} -function TB($t,a,b){return HL($t,a,EJ(b===null?SP(6):Nw(b)));} -function Yu($t,a){if($t.Xd.data.length>=a){return;}$t.Xd=TM($t.Xd,$t.Xd.data.length>=1073741823?2147483647:RO(a,RO($t.Xd.data.length*2|0,5)));} -function Tq($t){return CS($t.Xd,0,$t.mi);} -function Is($t,a,b){var c,d;c=$t.mi-a|0;Yu($t,($t.mi+b|0)-a|0);d=c-1|0;while(d>=0){$t.Xd.data[b+d|0]=$t.Xd.data[a+d|0];d=d+ -1|0;}$t.mi=$t.mi+(b-a|0)|0;} -function Kv(){var a,b,c,d,e,f,g,h;a=$rt_createFloatArray(6);b=a.data;b[0]=10.0;b[1]=100.0;b[2]=10000.0;b[3]=1.0E8;b[4]=1.00000003E16;b[5]=1.0E32;SR=a;c=$rt_createDoubleArray(9);d=c.data;d[0]=10.0;d[1]=100.0;d[2]=10000.0;d[3]=1.0E8;d[4]=1.0E16;d[5]=1.0E32;d[6]=1.0E64;d[7]=1.0E128;d[8]=1.0E256;TR=c;a=$rt_createFloatArray(6);b=a.data;b[0]=0.1;b[1]=0.01;b[2]=1.0E-4;b[3]=1.0E-8;b[4]=1.0E-16;b[5]=1.0E-32;UR=a;c=$rt_createDoubleArray(9);d=c.data;d[0]=0.1;d[1]=0.01;d[2]=1.0E-4;d[3]=1.0E-8;d[4]=1.0E-16;d[5]=1.0E-32;d[6] -=1.0E-64;d[7]=1.0E-128;d[8]=1.0E-256;VR=c;e=$rt_createIntArray(10);f=e.data;f[0]=1;f[1]=10;f[2]=100;f[3]=1000;f[4]=10000;f[5]=100000;f[6]=1000000;f[7]=10000000;f[8]=100000000;f[9]=1000000000;WR=e;g=$rt_createLongArray(19);h=g.data;h[0]=Long_fromInt(1);h[1]=Long_fromInt(10);h[2]=Long_fromInt(100);h[3]=Long_fromInt(1000);h[4]=Long_fromInt(10000);h[5]=Long_fromInt(100000);h[6]=Long_fromInt(1000000);h[7]=Long_fromInt(10000000);h[8]=Long_fromInt(100000000);h[9]=Long_fromInt(1000000000);h[10]=new Long(1410065408, 2);h[11] -=new Long(1215752192, 23);h[12]=new Long(3567587328, 232);h[13]=new Long(1316134912, 2328);h[14]=new Long(276447232, 23283);h[15]=new Long(2764472320, 232830);h[16]=new Long(1874919424, 2328306);h[17]=new Long(1569325056, 23283064);h[18]=new Long(2808348672, 232830643);XR=g;g=$rt_createLongArray(6);h=g.data;h[0]=Long_fromInt(1);h[1]=Long_fromInt(10);h[2]=Long_fromInt(100);h[3]=Long_fromInt(10000);h[4]=Long_fromInt(100000000);h[5]=new Long(1874919424, 2328306);YR=g;} -function Ye(){E.call(this);} -function Qg(){S.call(this);} -function UP(){var $r=new Qg();OI($r);return $r;} -function DS(b){var $r=new Qg();Xp($r,b);return $r;} -function OI($t){Ri($t);} -function Xp($t,a){Cn($t,a);} -function Up($t,a){Du($t,a);return $t;} -function Eq($t,a){OH($t,a);return $t;} -function TJ($t,a,b){TB($t,a,b);return $t;} -function GK($t,a,b){CA($t,a,b);return $t;} -function Yv($t){return Tq($t);} -function QK($t,a){Yu($t,a);} -function Aq($t,a,b){return TJ($t,a,b);} -function HL($t,a,b){return GK($t,a,b);} -function M(){E.call(this);this.yk=null;} -function ES(b){var $r=new M();IG($r,b);return $r;} -function IG($t,a){OB($t);$t.yk=a;} -function HF($t){Dv($t.yk);} -function My($t){return $t.yk;} +function VS(){var $r=new Dc();MB($r);return $r;} +function MB($t){} +function S(){var a=this;E.call(a);a.ke=null;a.Ii=0;} +var WS=null;var XS=null;var YS=null;var ZS=null;var AT=null;var BT=null;var CT=null;function S_$callClinit(){S_$callClinit=function(){}; +Xv();} +function DT(){var $r=new S();Ti($r);return $r;} +function ET(b){var $r=new S();Ih($r,b);return $r;} +function FT(b){var $r=new S();Hn($r,b);return $r;} +function GT(b){var $r=new S();Fk($r,b);return $r;} +function Ti($t){var a;S_$callClinit();a=16;$t.ke=$rt_createCharArray(a);} +function Ih($t,a){S_$callClinit();$t.ke=$rt_createCharArray(a);} +function Hn($t,a){var b;S_$callClinit();$t.ke=$rt_createCharArray(a.pb.data.length);b=0;while(b<$t.ke.data.length){$t.ke.data[b]=Wt(a,b);b=b+1|0;}$t.Ii=a.pb.data.length;} +function Fk($t,a){var b;S_$callClinit();$t.ke=$rt_createCharArray(a.pb.data.length);b=0;while(b<$t.ke.data.length){$t.ke.data[b]=Wt(a,b);b=b+1|0;}$t.Ii=a.pb.data.length;} +function Ou($t,a){WA($t,$t.Ii,a);return $t;} +function WA($t,a,b){var c,d,e;if(a>=0&&a<=$t.Ii){if(b===null){b=GR(10);Vc_$callClinit();b=b;}else if((b.pb.data.length!=0?0:1)!=0){return $t;}Lv($t,$t.Ii+b.pb.data.length|0);c=$t.Ii-1|0;while(c>=a){$t.ke.data[c+b.pb.data.length|0]=$t.ke.data[c];c=c+ -1|0;}$t.Ii=$t.Ii+b.pb.data.length|0;c=0;while(cb){j=g;break a;}h=h+1|0;if(j>i){break;}g=j;}}if(d==0){h=h+1|0;}Qs($t,a,a+h|0);if(d!=0){d=a;}else{e=$t.ke.data;d=a+1|0;e[a]=45;}while(j>0){e=$t.ke.data;a=d+1|0;e[d]=JL(b/j|0,c);b=b%j|0;j=j/c|0;d=a;}}return $t;} +function QI($t,a){var b,c,d,e,f,g,h,i;b=$t.Ii;if(a===null){a=GR(10);}else{c=new Sg;d=16;KC(c);c.ke=$rt_createCharArray(d);e=a.constructor;if(e===null){f=null;}else{f=e.classObject;if(f===null){f=new Sl;KC(f);f.Xh=e;e.classObject=f;}}if(f.bh===null){e=$rt_str(f.Xh.$meta.name);Vc_$callClinit();f.bh=e;}LL(c,c.Ii,f.bh);LL(c,c.Ii,GR(0));d=Xo(a);Dd_$callClinit();g=16;a=new S;h=20;KC(a);a.ke=$rt_createCharArray(h);e=RI(a,a.Ii,d,g);LL(c,c.Ii,BS(e.ke,0,e.Ii));a=new Vc;i=c.ke;d=0;g=c.Ii;KC(a);a.pb=$rt_createCharArray(g);h +=0;while(h=a){return;}if($t.ke.data.length>=1073741823){b=2147483647;}else{c=$t.ke.data.length*2|0;b=5;if(c>b){b=c;}if(a>b){b=a;}}$t.ke=DO($t.ke,b);} +function Br($t){var a,b,c,d,e,f;a=new Vc;b=$t.ke;c=0;d=$t.Ii;Vc_$callClinit();a.pb=$rt_createCharArray(d);e=0;while(e=0){$t.ke.data[b+d|0]=$t.ke.data[a+d|0];d=d+ -1|0;}$t.Ii=$t.Ii+(b-a|0)|0;} +function Xv(){var a,b,c,d,e,f,g,h;a=$rt_createFloatArray(6);b=a.data;b[0]=10.0;b[1]=100.0;b[2]=10000.0;b[3]=1.0E8;b[4]=1.00000003E16;b[5]=1.0E32;WS=a;c=$rt_createDoubleArray(9);d=c.data;d[0]=10.0;d[1]=100.0;d[2]=10000.0;d[3]=1.0E8;d[4]=1.0E16;d[5]=1.0E32;d[6]=1.0E64;d[7]=1.0E128;d[8]=1.0E256;XS=c;a=$rt_createFloatArray(6);b=a.data;b[0]=0.1;b[1]=0.01;b[2]=1.0E-4;b[3]=1.0E-8;b[4]=1.0E-16;b[5]=1.0E-32;YS=a;c=$rt_createDoubleArray(9);d=c.data;d[0]=0.1;d[1]=0.01;d[2]=1.0E-4;d[3]=1.0E-8;d[4]=1.0E-16;d[5]=1.0E-32;d[6] +=1.0E-64;d[7]=1.0E-128;d[8]=1.0E-256;ZS=c;e=$rt_createIntArray(10);f=e.data;f[0]=1;f[1]=10;f[2]=100;f[3]=1000;f[4]=10000;f[5]=100000;f[6]=1000000;f[7]=10000000;f[8]=100000000;f[9]=1000000000;AT=e;g=$rt_createLongArray(19);h=g.data;h[0]=Long_fromInt(1);h[1]=Long_fromInt(10);h[2]=Long_fromInt(100);h[3]=Long_fromInt(1000);h[4]=Long_fromInt(10000);h[5]=Long_fromInt(100000);h[6]=Long_fromInt(1000000);h[7]=Long_fromInt(10000000);h[8]=Long_fromInt(100000000);h[9]=Long_fromInt(1000000000);h[10]=new Long(1410065408, 2);h[11] +=new Long(1215752192, 23);h[12]=new Long(3567587328, 232);h[13]=new Long(1316134912, 2328);h[14]=new Long(276447232, 23283);h[15]=new Long(2764472320, 232830);h[16]=new Long(1874919424, 2328306);h[17]=new Long(1569325056, 23283064);h[18]=new Long(2808348672, 232830643);BT=g;g=$rt_createLongArray(6);h=g.data;h[0]=Long_fromInt(1);h[1]=Long_fromInt(10);h[2]=Long_fromInt(100);h[3]=Long_fromInt(10000);h[4]=Long_fromInt(100000000);h[5]=new Long(1874919424, 2328306);CT=g;} +function Af(){E.call(this);} +function Sg(){S.call(this);} +function HT(){var $r=new Sg();RJ($r);return $r;} +function IT(b){var $r=new Sg();Fq($r,b);return $r;} +function RJ($t){var a;S_$callClinit();a=16;$t.ke=$rt_createCharArray(a);} +function Fq($t,a){var b;S_$callClinit();$t.ke=$rt_createCharArray(a.pb.data.length);b=0;while(b<$t.ke.data.length){$t.ke.data[b]=Wt(a,b);b=b+1|0;}$t.Ii=a.pb.data.length;} +function Cq($t,a){WA($t,$t.Ii,a);return $t;} +function Mq($t,a){var b,c,d,e,f;b=$t.Ii;if(a===null){a=GR(10);}else{c=new Sg;S_$callClinit();Ih(c,16);d=a.constructor;if(d===null){e=null;}else{e=d.classObject;if(e===null){e=JT(d);}}if(e.bh===null){d=$rt_str(e.Xh.$meta.name);Vc_$callClinit();e.bh=d;}OM(c,c.Ii,e.bh);OM(c,c.Ii,GR(0));f=Xo(a);Dd_$callClinit();OM(c,c.Ii,Br(Ts(ET(20),f,16)));a=BS(c.ke,0,c.Ii);}Vc_$callClinit();WA($t,b,a);return $t;} +function YK($t,a,b){var c,d,e,f,g,h,i;if(b===null){b=GR(10);}else{c=new Sg;S_$callClinit();d=16;c.ke=$rt_createCharArray(d);e=b.constructor;if(e===null){f=null;}else{f=e.classObject;if(f===null){f=new Sl;f.Xh=e;e.classObject=f;}}if(f.bh===null){e=$rt_str(f.Xh.$meta.name);Vc_$callClinit();f.bh=e;}WA(c,c.Ii,f.bh);WA(c,c.Ii,GR(0));d=Xo(b);Dd_$callClinit();g=16;b=new S;b.ke=$rt_createCharArray(20);e=RI(b,b.Ii,d,g);b=new Vc;h=e.ke;d=0;g=e.Ii;Vc_$callClinit();b.pb=$rt_createCharArray(g);i=0;while(ic){break a;}e=SM(Nt(a,d!=0?c:b));if(d!=0){if(e==0){break;}c=c-1|0;}else if(e==0){d=1;}else{b=b+1|0;}}}return PB(a,b,c+1|0);} -function FP(a){EP(a,SP(8));return WS(0,C(a)-1|0);} -function Od(){Ud.call(this);} -function Vl(){Od.call(this);} -function O(){E.call(this);this.Uc=0;} -function XS(b){var $r=new O();DI($r,b);return $r;} -function DI($t,a){OB($t);$t.Uc=a;} +function Vm(){E.call(this);} +function QT(){var $r=new Vm();Vs($r);return $r;} +function PA($t,a,b){var c,d,e,f,g,h,i,j;a=a;c={};a=a;LD(a,b);d=b.qj;if(d===null){a=null;}else{a:{b=new Wm;e=new Tk;b=b;e.lf=b;b=e;if(d===null){e=null;}else{e=[];f=d;g=0;h=f.ch;i=f.lj;while(true){if((g>=i?0:1)==0){break a;}if(h=f.lj){break;}e.push(MN(b.lf,a,f.gk.data[g]));g=j;}a=new Pc;Kx(a);WQ(a);}}a=e;}b=c;a=a;b["data"]=a;return c;} +function Vs($t){} +function Xm(){E.call(this);} +function RT(){var $r=new Xm();BG($r);return $r;} +function Cr($t,a,b){var c,d;a=a;c={};LD(a,b);a=!!(!!b.Rk);d=c;a=a;d["completed"]=a;a=$rt_ustr(b.Ok);d["title"]=a;return c;} +function BG($t){} +function Of(){var a=this;E.call(a);a.Tj=null;a.vc=null;a.zh=null;a.mg=null;a.bl=null;a.sk=null;} +function ST(){var $r=new Of();UB($r);return $r;} +function TT(b){var $r=new Of();Eq($r,b);return $r;} +function UB($t){var a,b,c;a=window;b=new Pi;c=10;b.gk=AR(E,c);$t.vc=b;b=new Dj;b.cc=$t;$t.sk=b;if($t.Tj===null){$t.Tj=a;VP(a,$t.sk);return;}b=new Fh;a=GR(11);b.Ce=1;b.gl=1;b.Xf=a;WQ(b);} +function Eq($t,a){var b,c;b=new Pi;c=10;b.gk=AR(E,c);$t.vc=b;b=new Dj;b.cc=$t;$t.sk=b;if($t.Tj===null){$t.Tj=a;VP(a,$t.sk);return;}b=new Fh;a=GR(11);b.Ce=1;b.gl=1;b.Xf=a;WQ(b);} +function NE($t,a){var b;if($t.Tj===null){$t.Tj=a;VP(a,$t.sk);return;}b=new Fh;a=GR(11);b.Ce=1;b.gl=1;b.Xf=a;WQ(b);} +function Ty($t,a){var b,c,d,e,f,g;b=$t.vc;c=0;d=b.ch;e=b.lj;a:{b:{while(true){if((c>=e?0:1)==0){e=0;break a;}if(d=b.lj){break;}c:{g=b.gk.data[c];if(g!==null){if(g.I(a)==0){break c;}else{break b;}}if(a===null){break b;}}c=f;}a=new Pc;KF(a);WQ(a);}e=1;}if(e==0){b=$t.vc;TJ(b,b.lj,a);}return $t;} +function Wy($t){var a,b,c,d,e,f,g,h,i;a=$rt_str($t.Tj.location.hash).pb.data.length!=0?0:1;if(a==0&&XG($rt_str($t.Tj.location.hash),GR(1))==0){b=$t.vc;c=0;d=b.ch;e=b.lj;a:{while(true){if((c>=e?0:1)==0){if($t.zh!==null){$t.zh.kb();}return;}if(d=b.lj){break a;}if(Rr(b.gk.data[c],$t.Tj)!=0){break;}c=f;}TL();return;}b=new Pc;b.Ce=1;b.gl=1;HD(b);WQ(b);}g=$t.mg.gi;b=new Sg;h=GR(12);S_$callClinit();b.ke=$rt_createCharArray(h.pb.data.length);a=0;while +(a=f?0:1)!=0){if(e=b.lj){break a;}c.push(MN($t.lf,a,b.gk.data[d]));d=g;}return c;}a=new Pc;KF(a);WQ(a);} +function Tk(){Wd.call(this);this.lf=null;} +function VT(b){var $r=new Tk();ZD($r,b);return $r;} +function ZD($t,a){$t.lf=a;} +function IN($t,a,b){var c,d,e,f,g,h;c=[];d=b;e=0;f=d.ch;g=d.lj;a:{while((e>=g?0:1)!=0){if(f=d.lj){break a;}c.push(MN($t.lf,a,d.gk.data[e]));e=h;}return c;}a=new Pc;a.Ce=1;a.gl=1;HD(a);WQ(a);} +function Vn(){E.call(this);} +function Df(){E.call(this);} +function Gs($t,a){return Zo($t,a,0,a.pb.data.length,0);} +function U(){E.call(this);} +function WT(){var $r=new U();Bt($r);return $r;} +function Bt($t){} +function Oe(){E.call(this);} +function Mf(){var a=this;E.call(a);a.oe=0;a.sh=null;a.Lh=null;} +function XT(b,c,d){var $r=new Mf();Iv($r,b,c,d);return $r;} +function Iv($t,a,b,c){$t.oe=a;$t.sh=b;$t.Lh=c;} +function UF($t){return $t.oe;} +function Ej(){E.call(this);} +function YT(){var $r=new Ej();SL($r);return $r;} +function ZT(b){var $r=new Ej();EL($r,b);return $r;} +function FC($t){Nc_$callClinit();return MS;} +function SL($t){} +function EL($t,a){} +function Wc(){Hd.call(this);} +function Zc(){Wc.call(this);} +function Ld(){Zc.call(this);} +function Id(){Ld.call(this);} +function EP(a){var b,c,d,e,f;b=GR(8);if(a===null){AP(b);}a:{if(a.pb.data.length!=0){b=GR(8);if(a===null){AP(b);}b:{c=0;b=new Kc;d=a.pb.data.length-1|0;Kc_$callClinit();e=1;Ac_$callClinit();b.vf=c;b.Vb=FP(c,d,e);b.oj=e;b=b;if(BR(b,Kb)!=0&&b.H()!=0){d=1;}else{f=AU(b.vf,b.Vb,b.oj);while(f.zi!=0){c:{d=Wt(a,Rv(f));Mb_$callClinit();switch(d){case 9:case 10:case 11:case 12:case 13:case 28:case 29:case 30:case 31:break;case 160:case 8199:case 8239:c=0;break c;default:d:{switch(Gv(d)){case 12:case 13:case 14:break;default:c +=0;break d;}c=1;}break c;}c=1;}e:{if(c==0){f:{switch(Gv(d)){case 12:case 13:case 14:break;default:d=0;break f;}d=1;}if(d==0){d=0;break e;}}d=1;}if(d==0){d=0;break b;}}d=1;}}if(d==0){d=0;break a;}}d=1;}return d;} +function Xd(){Id.call(this);} +function IO(a){var b,c,d,e,f,g,h;b=GR(8);if(a===null){AP(b);}c=0;d=a.pb.data.length-1|0;e=0;a:{while(true){if(c>d){break a;}f=e!=0?d:c;b:{g=Wt(a,f);Mb_$callClinit();switch(g){case 9:case 10:case 11:case 12:case 13:case 28:case 29:case 30:case 31:break;case 160:case 8199:case 8239:h=0;break b;default:c:{switch(Gv(g)){case 12:case 13:case 14:break;default:h=0;break c;}h=1;}break b;}h=1;}d:{if(h==0){e:{switch(Gv(g)){case 12:case 13:case 14:break;default:h=0;break e;}h=1;}if(h==0){h=0;break d;}}h=1;}if(e==0){if +(h==0){e=1;}else{c=c+1|0;}}else{if(h==0){break;}d=d-1|0;}}}e=d+1|0;if(c<=e){return BS(a.pb,c,e-c|0);}a=new Pc;a.Ce=1;a.gl=1;WQ(a);} +function TQ(a){var b,c,d,e;b=GR(8);if(a===null){AP(b);}c=0;b=new Kc;d=a.pb.data.length-1|0;Kc_$callClinit();e=1;Ac_$callClinit();b.vf=c;b.Vb=FP(c,d,e);b.oj=e;return b;} +function Qd(){Xd.call(this);} +function Am(){Qd.call(this);} +function O(){E.call(this);this.fd=0;} +function BU(b){var $r=new O();FJ($r,b);return $r;} +function FJ($t,a){$t.fd=a;} function Fb(){E.call(this);} -function Ue(){O.call(this);} -var YS=null;function Ue_$callClinit(){Ue_$callClinit=function(){}; -Wo();} -function ZS(){var $r=new Ue();Sg($r);return $r;} -function VC($t,a){return Ox(Aw($t,a));} -function Aw($t,a){EP(a,SP(9));return Fr(a)!=0?0:1;} -function Sg($t){Ue_$callClinit();DI($t,1);} -function Wo(){YS=ZS();} -function Pb(){Sb.call(this);} -function AT(b){var $r=new Pb();SE($r,b);return $r;} -function SE($t,a){Cq($t,a);} -function Ul(){Pb.call(this);} -function BT(b){var $r=new Ul();Tx($r,b);return $r;} -function Tx($t,a){SE($t,a);} -function Je(){E.call(this);} -function Ln(){E.call(this);this.Ic=null;} -function CT(b){var $r=new Ln();WB($r,b);return $r;} -function FH($t,a,b){var c,d,e;c=$t.Ic;a=a;b=b;d=WE(PA(c,a));e=0;if((d!=0?0:1)!=0){Fv(b);e=1;}else if((d!=1?0:1)!=0){DB(b);e=1;}else if((d!=2?0:1)!=0){Or(b);e=1;}return e;} -function SA($t,a){return DT(a);} -function WB($t,a){OB($t);$t.Ic=a;} -function Kk(){M.call(this);this.zj=null;} -function ET(b,c){var $r=new Kk();Un($r,b,c);return $r;} -function Un($t,a,b){IG($t,a);$t.zj=b;LG(a,My(b));} -function IL($t){Kr($t.zj);} -function Zu($t){YI($t.zj);HF($t);QB(Rw(),$t);} +function We(){O.call(this);} +var CU=null;function We_$callClinit(){We_$callClinit=function(){}; +Dp();} +function DU(){var $r=new We();Ug($r);return $r;} +function TD($t,a){var b,c;a=a;b=GR(13);if(a===null){AP(b);}c=a.Rk!=0?0:1;Bc_$callClinit();return c==0?EU:FU;} +function Pw($t,a){var b;b=GR(13);if(a===null){AP(b);}return a.Rk!=0?0:1;} +function Ug($t){var a;We_$callClinit();a=1;$t.fd=a;} +function Dp(){var a,b;a=new We;b=1;a.fd=b;CU=a;} +function Qb(){Tb.call(this);} +function GU(b){var $r=new Qb();QF($r,b);return $r;} +function QF($t,a){$t.Ce=1;$t.gl=1;$t.Xf=a;} +function Zl(){Qb.call(this);} +function HU(b){var $r=new Zl();Ky($r,b);return $r;} +function Ky($t,a){$t.Ce=1;$t.gl=1;$t.Xf=a;} +function Me(){E.call(this);} +function Qn(){E.call(this);this.Sc=null;} +function IU(b){var $r=new Qn();TC($r,b);return $r;} +function HI($t,a,b){var c,d,e;c=$t.Sc;a=a;b=b;d=KB(c,a).oe;e=0;if((d!=0?0:1)!=0){Je_$callClinit();b.nk=JU;Lb_$callClinit();b.he=KU;e=1;}else if((d!=1?0:1)!=0){We_$callClinit();b.nk=CU;Lb_$callClinit();b.he=LU;e=1;}else if((d!=2?0:1)!=0){Xe_$callClinit();b.nk=MU;Lb_$callClinit();b.he=NU;e=1;}return e;} +function NB($t,a){var b;a=a;b=new Nh;b.gi=a;return b;} +function TC($t,a){$t.Sc=a;} +function Ok(){M.call(this);this.Yj=null;} +function OU(b,c){var $r=new Ok();Zn($r,b,c);return $r;} +function Zn($t,a,b){$t.Wk=a;$t.Yj=b;KD(a,b.Wk,null);} +function PM($t){Sr($t.Yj);} +function Mv($t){var a,b,c,d,e,f;a:{a=$t.Yj;if(a.Le!==null){b=a.Le;c=0;d=b.ch;e=b.lj;while(true){if((c>=e?0:1)==0){a.Le=null;break a;}if(d=b.lj){break;}b.gk.data[c].e();c=f;}a=new Pc;KF(a);WQ(a);}}Qv(a.Wk);Qv($t.Wk);Ic_$callClinit();b=PU;f=b.lj;d=0;b:{c:{while(true){if(d>=f){d= -1;break b;}if(d<0){break;}if(d>=b.lj){break;}d:{a=b.gk.data[d];if($t===null){if(a!==null){break d;}else{break c;}}if(($t!==a?0:1)!=0){break c;}}d=d+1|0;}a=new Pc;KF(a);WQ(a);}}if +(d>=0){Zz(b,d);}} function Lc(){E.call(this);} -function FT(){var $r=new Lc();BH($r);return $r;} -function BH($t){OB($t);} -function SG($t,a){Mo($t,a);} -function Xe(){var a=this;Lc.call(a);a.Jc=null;a.Oj=null;a.nb=null;a.Mk=null;a.ql=null;a.jl=false;a.Ud=null;a.te=null;} -var GT=null;function Xe_$callClinit(){Xe_$callClinit=function(){}; -Zv();} -function HT(b){var $r=new Xe();Mf($r,b);return $r;} -function KA($t){return $t.Jc;} -function WC($t){var a,b,c,d;a=$t.Jc;b=$t.Oj;c=PS();a=SB(a);while(Dr(a)!=0){d=DE(a);if(ZE(b.x(d))!=0){Py(c,d);}}return c;} -function NE($t){return $t.nb;} -function Fw($t,a){EP(a,SP(10));$t.nb=a;} -function Hv($t){return $t.Mk;} -function UI($t){return $t.jl;} -function Js($t){return $t.Ud;} -function Vr($t){var a,b;a=KA($t);if(NP(a,Kb)!=0&&AB(a)!=0){b=0;}else{b=0;a=SB(a);while(Dr(a)!=0){if((Fr(DE(a))!=0?0:1)!=0){b=b+1|0;}}}return b;} -function EB($t){var a,b;a=KA($t);if(NP(a,Kb)!=0&&AB(a)!=0){b=0;}else{b=0;a=SB(a);while(Dr(a)!=0){if(Fr(DE(a))!=0){b=b+1|0;}}}return b;} -function TH($t){var a,b;a:{a=KA($t);if(NP(a,Kb)!=0&&AB(a)!=0){b=1;}else{a=SB(a);while(Dr(a)!=0){if(Fr(DE(a))==0){b=0;break a;}}b=1;}}return b;} -function Yt($t,a){var b;b=SB(KA($t));while(Dr(b)!=0){XJ(DE(b),a);}} -function Zq($t){var a,b;if(SN($t.nb)!=0){return;}a=$t.te;b=IT();Yo(b,$t.nb);XL(a,b);$t.nb=SP(11);Vs($t);} -function Cp($t,a){EP(a,SP(5));$t.Mk=a;$t.ql=Es(a);} -function PJ($t,a){EP(a,SP(5));if($t.Mk===null){return;}Yo(a,$t.ql);$t.Mk=null;Vs($t);} -function LA($t,a){var b,c;EP(a,SP(5));b=$t.Mk;if(b===null){return;}c=Es(b);if(c===null){IP(IS(SP(12)));}Yo(a,Kw(YM(c)));$t.Mk=null;if((SN(Es(b))!=0?0:1)==0){YG($t.te,a);}else{XL($t.te,a);}Vs($t);} -function CM($t,a){EP(a,SP(5));YG($t.te,a);Vs($t);} -function Dz($t){IJ($t.te);Vs($t);} -function Fv($t){Ge_$callClinit();$t.Oj=JT;Lb_$callClinit();$t.Ud=KT;} -function DB($t){Ue_$callClinit();$t.Oj=YS;Lb_$callClinit();$t.Ud=LT;} -function Or($t){Ve_$callClinit();$t.Oj=MT;Lb_$callClinit();$t.Ud=NT;} -function LC($t,a){EP(a,SP(13));return ZM(LP(Wc),a);} -function Vs($t){Av($t.Jc);EO($t.Jc,JC($t.te));} -function Mf($t,a){Xe_$callClinit();EP(a,SP(14));BH($t);$t.te=a;$t.Jc=PS();Vd_$callClinit();$t.Oj=OT;Vs($t);$t.nb=SP(11);$t.ql=SP(11);Lb_$callClinit();$t.Ud=KT;} -function Zv(){GT=PT(null);} -function Jz(a){Xe_$callClinit();EP(a,SP(15));BI(GT,a);} -function Th(){E.call(this);} -function QM(a){return DP(Su(a));} -function DP(a){var b;a:{b:{b=JK(a);switch(Ft(b)){case 1344771639:break;case -1064886025:break b;default:break a;}if(YF(b,SP(16))==0){break a;}return NN(a);}if(YF(b,SP(17))!=0){return NM(a);}}return null;} -function ZN(a){return WN(a);} -function Ki(){var a=this;E.call(a);a.bi=null;a.dg=null;a.Yh=false;} -function QT(b,c){var $r=new Ki();Jo($r,b,c);return $r;} -function Jo($t,a,b){OB($t);$t.bi=a;$t.dg=b;$t.Yh=1;} -function PA($t,a){var b,c,d,e,f,g,h,i,j,k,l,m,n;b=Qw($t.dg);NJ(Yr(b,a));if(Ct(b)<0){return US( -1,$rt_createIntArray(0),$rt_createIntArray(0));}c=$t.bi.data[Ct(b)];d=c.Wk.data;e=d.length;f=$rt_createIntArray(e);g=f.data;h=$rt_createIntArray(g.length);if(e>0){i=MP(Bf,e).data;j=0;k=i.length;while(j=e){break a;}k=i[n].bm(a,m[n]);if(k== -1){j=n+ -1|0;i[n].cm();}else{m[n]=k;if((n+1|0)=$t.Hi?0:1;} -function DE($t){var a,b;Gy($t);$t.sc=$t.xi;a=$t.he;b=$t.xi;$t.xi=b+1|0;return Oy(a,b);} -function DG($t){var a;if($t.sc<0){IP(ST());}Gy($t);Gz($t.he,$t.sc);a=$t.he;$t.Ai=a.Kg;if($t.sc<$t.xi){$t.xi=$t.xi-1|0;}$t.Hi=$t.Hi-1|0;$t.sc= -1;} -function Gy($t){var a,b;a=$t.Ai;b=$t.he;if(a>=b.Kg){return;}IP(GS());} -function Yl(){var a=this;E.call(a);a.Qg=0;a.wj=0;a.Ed=0;} -function TT(){var $r=new Yl();Lw($r);return $r;} -function Lw($t){OB($t);$t.Qg=0;$t.wj= -1;$t.Ed=0;} -function Ct($t){return $t.wj;} -function NJ($t){var a,b;a:{b:{switch($t.Qg){case 0:break b;case 1:break;case 2:break b;case 3:break b;case 4:break b;case 5:break b;case 6:break b;case 7:break b;case 8:break b;case 9:break b;case 10:a=11;b=2;break a;case 11:break b;case 12:break b;case 13:break b;case 14:break b;case 15:break b;case 16:break b;case 17:a=18;b=1;break a;case 18:break b;case 19:break b;default:break b;}a=19;b=0;break a;}a= -1;b= -1;}$t.Qg=a;$t.wj=b;return $t;} -function So($t,a,b,c,d){var e,f,g,h,i;e=$t.Qg;f=12;g=19;h=1;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{m:{n:{o:{p:{q:{r:{while((c-b|0)>0){s:{i=Nt(a,b);switch(e){case 0:switch(i){case 47:break;default:break b;}b=b+1|0;if((c-b|0)<=0){g=h;break a;}i=Nt(a,b);break s;case 12:switch(i){case 99:g=13;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break r;default:}break b;case 19:break b;case 1:break;case 2:break l;case 3:break k;case 4:break j;case 5:break i;case 6:break h;case 7:break g;case 8:break f;case 9:break e;case 10:break d;case 11:break c;case 13:break r;case 14:break q;case 15:break p;case 16:break o;case 17:break n;case 18:break m;default:break b;}}t: -{switch(i){case -1:$t.wj=0;if(d!=0){b=b+1|0;break a;}e=g;break t;case 97:break;case 99:g=2;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break l;default:break b;}e=f;}b=b+1|0;}g=e;break a;}switch(i){case 116:g=14;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break q;default:}break b;}switch(i){case 105:g=15;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break p;default:}break b;}switch(i){case 118:g=16;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break o;default:}break b;}switch(i){case 101:g=17;b=b+1|0;if((c-b|0)<=0){break a;}i -=Nt(a,b);break n;default:}break b;}switch(i){case -1:g=18;$t.wj=1;if(d!=0){b=b+1|0;break a;}b=b+1|0;if((c-b|0)<=0){break a;}Nt(a,b);break m;default:}break b;}break b;}switch(i){case 111:g=3;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break k;default:}break b;}switch(i){case 109:g=4;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break j;default:}break b;}switch(i){case 112:g=5;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break i;default:}break b;}switch(i){case 108:g=6;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break h;default:}break b;}switch -(i){case 101:g=7;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break g;default:}break b;}switch(i){case 116:g=8;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break f;default:}break b;}switch(i){case 101:g=9;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break e;default:}break b;}switch(i){case 100:g=10;b=b+1|0;if((c-b|0)<=0){break a;}i=Nt(a,b);break d;default:}break b;}switch(i){case -1:g=11;$t.wj=2;if(d!=0){b=b+1|0;break a;}b=b+1|0;if((c-b|0)<=0){break a;}Nt(a,b);break c;default:}break b;}}g= -1;}$t.Qg=g;$t.Ed=b;return $t;} +function QU(){var $r=new Lc();EI($r);return $r;} +function EI($t){} +function UH($t,a){var b,c,$$je;Ic_$callClinit();b=$t.constructor;if(b!==null&&b.classObject===null){c=new Sl;c.Xh=b;b.classObject=c;}b=new Wg;b.kk=$t;c=new Dh;c.nf=b;c=c;b=new Zk;b.Lf=a;a=new Ok;c=RC(c);a.Wk=b;a.Yj=c;KD(b,c.Wk,null);b=PU;TJ(b,b.lj,a);RU=1;a:{try{PM(a);break a;}catch($$e){$$je=$$e.$javaException;if($$je){a=$$je;}else {throw $$e;}}RU=0;WQ(a);}RU=0;} +function Ze(){var a=this;Lc.call(a);a.Tc=null;a.nk=null;a.wb=null;a.kl=null;a.Pl=null;a.Hl=false;a.he=null;a.He=null;} +var SU=null;function Ze_$callClinit(){Ze_$callClinit=function(){}; +Ow();} +function TU(b){var $r=new Ze();Nf($r,b);return $r;} +function FB($t){return $t.Tc;} +function UD($t){var a,b,c,d,e,f,g,h;a=$t.Tc;b=$t.nk;c=new Pi;d=10;c.gk=AR(E,d);c=c;e=0;d=a.ch;f=a.lj;a:{while((e>=f?0:1)!=0){if(d=a.lj){break a;}h=a.gk.data[e];if(b.z(h).Kj!=0){TJ(c,c.lj,h);}e=g;}return c;}a=new Pc;a.Ce=1;a.gl=1;HD(a);WQ(a);} +function LF($t){return $t.wb;} +function Uw($t,a){var b;b=GR(14);if(a===null){AP(b);}$t.wb=a;} +function Uv($t){return $t.kl;} +function XJ($t){return $t.Hl;} +function Rs($t){return $t.he;} +function Ds($t){var a,b,c,d,e,f;a:{a=$t.Tc;if(BR(a,Kb)!=0&&(a.lj!=0?0:1)!=0){b=0;}else{b=0;c=0;d=a.ch;e=a.lj;while((c>=e?0:1)!=0){if(d=a.lj){break a;}if((a.gk.data[c].Rk!=0?0:1)!=0){b=b+1|0;}c=f;}}return b;}a=new Pc;a.Ce=1;a.gl=1;HD(a);WQ(a);} +function ZB($t){var a,b,c,d,e,f;a:{a=$t.Tc;if(BR(a,Kb)!=0&&(a.lj!=0?0:1)!=0){b=0;}else{b=0;c=0;d=a.ch;e=a.lj;while((c>=e?0:1)!=0){if(d=a.lj){break a;}if(a.gk.data[c].Rk!=0){b=b+1|0;}c=f;}}return b;}a=new Pc;a.Ce=1;a.gl=1;HD(a);WQ(a);} +function VI($t){var a,b,c,d,e,f;a:{b:{a=$t.Tc;if(BR(a,Kb)!=0&&(a.lj!=0?0:1)!=0){b=1;}else{c=0;d=a.ch;e=a.lj;while((c>=e?0:1)!=0){if(d=a.lj){break a;}if(a.gk.data[c].Rk==0){b=0;break b;}c=f;}b=1;}}return b;}a=new Pc;a.Ce=1;a.gl=1;HD(a);WQ(a);} +function Iu($t,a){var b,c,d,e,f;b=$t.Tc;c=0;d=b.ch;e=b.lj;a:{while((c>=e?0:1)!=0){if(d=b.lj){break a;}b.gk.data[c].Rk=a;c=f;}return;}b=new Pc;b.Ce=1;b.gl=1;HD(b);WQ(b);} +function Hr($t){var a,b,c,d,e,f,g,h,i;if(EP($t.wb)!=0){return;}a=$t.He;b=new Cl;b.Ok=GR(15);c=$t.wb;d=GR(14);if(c===null){AP(d);}b.Ok=c;FN(a,b);$t.wb=GR(15);b=$t.Tc;e=b.gk;f=0;g=b.lj;a=null;if(f>g){b=new Fd;b.Ce=1;b.gl=1;HD(b);WQ(b);}while(ff){a=new Fd;a.Ce=1;a.gl=1;HD(a);WQ(a);}while(e=g){f= -1;break a;}if(f<0){break;}if(f>=c.lj){break;}c:{d=c.gk.data[f];if(a===null){if(d!==null){break c;} +else{break b;}}if((a!==d?0:1)!=0){break b;}}f=f+1|0;}a=new Pc;Kx(a);WQ(a);}}if(f>=0){Zz(c,f);}Ny(b,e);}a=$t.Tc;h=a.gk;f=0;g=a.lj;b=null;if(f>g){a=new Fd;a.Ce=1;a.gl=1;HD(a);WQ(a);}while(f=f){e= -1;break a;}if(e<0){break;}if(e>=c.lj){break;}c:{g=c.gk.data[e];if(a===null){if(g!==null){break c;}else{break b;}}if((a!==g?0:1)!=0){break b;}}e=e+1|0;}a=new Pc;Kx(a);WQ(a);}}if(e>=0){Zz(c,e);}Ny(b,d);a=$t.Tc;h=a.gk;e=0;f=a.lj;b=null;if(e>f){a=new Fd;a.Ce=1;a.gl=1;HD(a);WQ(a);}while +(ej){a=new Fd;a.Ce=1;a.gl= +1;HD(a);WQ(a);}while(dd){a=new Fd;a.Ce=1;a.gl=1;WQ(a);}while(ce){a=new Fd;a.Ce=1;a.gl=1;HD(a);WQ(a);}while(c0){k=AR(Df,h).data;l=0;c=k.length;while(l=h){break a;}n=k[c].km(a,d[c]);if(n== -1){o=c+ -1|0;k[c].lm();} +else{d[c]=n;if((c+1|0)=$t.ej?0:1;} +function BF($t){var a,b,c;a=$t.Wi;b=$t.ue;if(a=0&&c=b.ch){return;}b=new Tl;b.Ce=1;b.gl=1;WQ(b);} +function Dm(){var a=this;E.call(a);a.ih=0;a.Vj=0;a.Rd=0;} +function ZU(){var $r=new Dm();Bx($r);return $r;} +function Bx($t){$t.ih=0;$t.Vj= -1;$t.Rd=0;} +function Kt($t){return $t.Vj;} +function SK($t){var a,b;a:{b:{switch($t.ih){case 0:break b;case 1:break;case 2:break b;case 3:break b;case 4:break b;case 5:break b;case 6:break b;case 7:break b;case 8:break b;case 9:break b;case 10:a=11;b=2;break a;case 11:break b;case 12:break b;case 13:break b;case 14:break b;case 15:break b;case 16:break b;case 17:a=18;b=1;break a;case 18:break b;case 19:break b;default:break b;}a=19;b=0;break a;}a= -1;b= -1;}$t.ih=a;$t.Vj=b;return $t;} +function Zo($t,a,b,c,d){var e,f,g,h,i;e=$t.ih;f=12;g=19;h=1;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{m:{n:{o:{p:{q:{r:{while((c-b|0)>0){s:{i=Wt(a,b);switch(e){case 0:switch(i){case 47:break;default:break b;}b=b+1|0;if((c-b|0)<=0){g=h;break a;}i=Wt(a,b);break s;case 12:switch(i){case 99:g=13;b=b+1|0;if((c-b|0)<=0){break a;}i=Wt(a,b);break r;default:}break b;case 19:break b;case 1:break;case 2:break l;case 3:break k;case 4:break j;case 5:break i;case 6:break h;case 7:break g;case 8:break f;case 9:break e;case 10:break d;case 11:break c;case 13:break r;case 14:break q;case 15:break p;case 16:break o;case 17:break n;case 18:break m;default:break b;}}t: +{switch(i){case -1:$t.Vj=0;if(d!=0){b=b+1|0;break a;}e=g;break t;case 97:break;case 99:g=2;b=b+1|0;if((c-b|0)<=0){break a;}i=Wt(a,b);break l;default:break b;}e=f;}b=b+1|0;}g=e;break a;}switch(i){case 116:g=14;b=b+1|0;if((c-b|0)<=0){break a;}i=Wt(a,b);break q;default:}break b;}switch(i){case 105:g=15;b=b+1|0;if((c-b|0)<=0){break a;}i=Wt(a,b);break p;default:}break b;}switch(i){case 118:g=16;b=b+1|0;if((c-b|0)<=0){break a;}i=Wt(a,b);break o;default:}break b;}switch(i){case 101:g=17;b=b+1|0;if((c-b|0)<=0){break a;}i +=Wt(a,b);break n;default:}break b;}switch(i){case -1:g=18;$t.Vj=1;if(d!=0){b=b+1|0;break a;}b=b+1|0;if((c-b|0)<=0){break a;}Wt(a,b);break m;default:}break b;}break b;}switch(i){case 111:g=3;b=b+1|0;if((c-b|0)<=0){break a;}i=Wt(a,b);break k;default:}break b;}switch(i){case 109:g=4;b=b+1|0;if((c-b|0)<=0){break a;}i=Wt(a,b);break j;default:}break b;}switch(i){case 112:g=5;b=b+1|0;if((c-b|0)<=0){break a;}i=Wt(a,b);break i;default:}break b;}switch(i){case 108:g=6;b=b+1|0;if((c-b|0)<=0){break a;}i=Wt(a,b);break h;default:}break b;}switch +(i){case 101:g=7;b=b+1|0;if((c-b|0)<=0){break a;}i=Wt(a,b);break g;default:}break b;}switch(i){case 116:g=8;b=b+1|0;if((c-b|0)<=0){break a;}i=Wt(a,b);break f;default:}break b;}switch(i){case 101:g=9;b=b+1|0;if((c-b|0)<=0){break a;}i=Wt(a,b);break e;default:}break b;}switch(i){case 100:g=10;b=b+1|0;if((c-b|0)<=0){break a;}i=Wt(a,b);break d;default:}break b;}switch(i){case -1:g=11;$t.Vj=2;if(d!=0){b=b+1|0;break a;}b=b+1|0;if((c-b|0)<=0){break a;}Wt(a,b);break c;default:}break b;}}g= -1;}$t.ih=g;$t.Rd=b;return $t;} function Ab(){E.call(this);} -function Aj(){E.call(this);this.Sb=null;} -function QS(b){var $r=new Aj();XC($r,b);return $r;} -function XC($t,a){OB($t);$t.Sb=a;} -function Ko($t,a){SD($t,a);} -function SD($t,a){AG($t.Sb,a);} -function Uo($t,a){Ko($t,a);} -function Yh(){var a=this;E.call(a);a.Od=null;a.Md=null;} -function UT(b,c){var $r=new Yh();ZK($r,b,c);return $r;} -function Gv($t){var a,b,c;a=$t.Od;b=$t.Md;c=MP(E,1);b=b;b=b.Di;c=c.data;c[0]=b;PJ(a,c[0]);NK();} -function ZK($t,a,b){OB($t);$t.Od=a;$t.Md=b;} -function Rj(){E.call(this);} -function CO(a){return AP(VT(),a);} -function AP(a,b){var c;if(b===null){return null;}c=EM(b);if(c!==null){return c.y(a,b);}IP(XQ(Yv(Up(Up(UP(),SP(18)),JK(Su(b))))));} -function EM(a){return OM(Su(a));} -function OM(a){var b;a:{b:{b=JK(a);switch(Ft(b)){case -725394638:break;case -1065183504:break b;default:break a;}if(YF(b,SP(19))==0){break a;}return AN(a);}if(YF(b,SP(20))!=0){return XN(a);}}return null;} -function LN(a,b){var c,d;c=JK(b);d=KO(b);if(d!==null){return d.E(PR(),a);}IP(XQ(Yv(Up(Up(UP(),SP(21)),c))));} -function KO(a){var b;a:{b:{c:{b=JK(a);switch(Ft(b)){case 1195259493:break;case -725394638:break c;case -1065183504:break b;default:break a;}if(YF(b,SP(22))==0){break a;}return IM(a);}if(YF(b,SP(19))==0){break a;}return AO(a);}if(YF(b,SP(20))!=0){return HO(a);}}return null;} -function MN(a){if(BO(a)!=0){return QL(a);}IP(XQ(SP(23)));} -function Ph(){E.call(this);} -function WT(){var $r=new Ph();TD($r);return $r;} -function XT(b){var $r=new Ph();Eo($r,b);return $r;} -function TD($t){OB($t);} -function Eo($t,a){TD($t);} -function Hh(){E.call(this);} -function HN(a,b){if(a===null){IP(F());}if(a===TO(LP($rt_voidcls()))){IP(YT());}if(b>=0){return PO(Pu(a),b);}IP(ZT());} -function PO(a,b){if (a.$meta.primitive) {if (a == $rt_bytecls()) {return $rt_createByteArray(b);}if (a == $rt_shortcls()) {return $rt_createShortArray(b);}if (a == $rt_charcls()) {return $rt_createCharArray(b);}if (a == $rt_intcls()) {return $rt_createIntArray(b);}if (a == $rt_longcls()) {return $rt_createLongArray(b);}if (a == $rt_floatcls()) {return $rt_createFloatArray(b);}if (a == $rt_doublecls()) {return $rt_createDoubleArray(b);}if (a == $rt_booleancls()) {return $rt_createBooleanArray(b);}} else {return $rt_createArray(a, b)}} -function Zb(){E.call(this);} +function Dj(){E.call(this);this.cc=null;} +function AV(b){var $r=new Dj();VD($r,b);return $r;} +function VD($t,a){$t.cc=a;} +function Ro($t,a){Wy($t.cc);} +function QE($t,a){Wy($t.cc);} +function Bp($t,a){Wy($t.cc);} +function Ai(){var a=this;E.call(a);a.be=null;a.Zd=null;} +function BV(b,c){var $r=new Ai();GM($r,b,c);return $r;} +function Tv($t){var a,b,c;a=$t.be;b=$t.Zd;c=AR(E,1);b=b;b=b.aj;c=c.data;c[0]=b;UK(a,c[0]);TL();} +function GM($t,a,b){$t.be=a;$t.Zd=b;} +function Vj(){E.call(this);} +function QP(a){var b,c,d,e,f;b=new Cm;c=new Jn;d=16;e=0.75;d=CQ(d);c.qd=0;c.Ae=AR(Ah,d);c.ql=e;c.Pj=c.Ae.data.length*c.ql|0;b.Qg=c;c=new Xk;f=new Jn;d=16;e=0.75;d=CQ(d);f.qd=0;f.Ae=AR(Ah,d);f.ql=e;f.Pj=f.Ae.data.length*f.ql|0;c.ci=f;b.Ag=c;return OQ(b,a);} +function OQ(a,b){var c,d,e,f,g,h,i,j;if(b===null){return null;}c=b.constructor;if(c===null){d=null;}else{d=c.classObject;if(d===null){d=new Sl;d.Xh=c;c.classObject=d;}}if(d.bh===null){c=$rt_str(d.Xh.$meta.name);Vc_$callClinit();d.bh=c;}a:{b:{c:{e=d.bh;switch(Nt(e)){case -725394638:break;case -1065183504:break c;default:break b;}if(XG(e,GR(20))==0){break b;}c=new Xm;c=c;break a;}if(XG(e,GR(21))!=0){c=new Vm;c=c;break a;}}c=null;}if(c!==null){return c.A(a,b);}a=new Fd;c=new Sg;S_$callClinit();f=16;c.ke=$rt_createCharArray(f);WA(c, +c.Ii,GR(22));b=b.constructor;if(b===null){d=null;}else{d=b.classObject;if(d===null){d=new Sl;d.Xh=b;b.classObject=d;}}if(d.bh===null){d.bh=$rt_str(d.Xh.$meta.name);}b=d.bh;WA(c,c.Ii,b);b=new Vc;g=c.ke;f=0;h=c.Ii;b.pb=$rt_createCharArray(h);i=0;while(i=0){return EQ(a.Xh,b);}a=new Wn;a.Ce=1;a.gl=1;WQ(a);} +function EQ(a,b){if (a.$meta.primitive) {if (a == $rt_bytecls()) {return $rt_createByteArray(b);}if (a == $rt_shortcls()) {return $rt_createShortArray(b);}if (a == $rt_charcls()) {return $rt_createCharArray(b);}if (a == $rt_intcls()) {return $rt_createIntArray(b);}if (a == $rt_longcls()) {return $rt_createLongArray(b);}if (a == $rt_floatcls()) {return $rt_createFloatArray(b);}if (a == $rt_doublecls()) {return $rt_createDoubleArray(b);}if (a == $rt_booleancls()) {return $rt_createBooleanArray(b);}} else {return $rt_createArray(a, b)}} +function Ob(){E.call(this);} function J(){E.call(this);} -function El(){E.call(this);this.Ve=null;} -function AU(b){var $r=new El();Ws($r,b);return $r;} -function Pr($t,a){var b;b=$t.Ve;a=BU(a);Uy(a,CU(b));return a;} -function Ws($t,a){OB($t);$t.Ve=a;} -function Hl(){E.call(this);this.td=null;} -function DU(b){var $r=new Hl();Uz($r,b);return $r;} -function CL($t,a){var b;b=$t.td;a=EU(a);Dx(a,FU(b));return a;} -function Uz($t,a){OB($t);$t.td=a;} -function Dl(){E.call(this);this.kl=null;} -function GU(b){var $r=new Dl();Ky($r,b);return $r;} -function Nv($t,a){var b;b=$t.kl;a=HU(a);BE(a,IU(b));Zz(a,SP(24));return a;} -function Ky($t,a){OB($t);$t.kl=a;} -function Fl(){E.call(this);this.ud=null;} -function JU(b){var $r=new Fl();Ay($r,b);return $r;} -function IE($t,a){var b;b=$t.ud;a=KU(a);JA(a,LU(b));return a;} -function Ay($t,a){OB($t);$t.ud=a;} -function Zj(){E.call(this);} -function Ck(){T.call(this);this.Lc=null;} -function MU(b){var $r=new Ck();Qu($r,b);return $r;} -function Qu($t,a){Ts($t);$t.Lc=a;} -function PI($t,a,b){var c,d,e;if(IO(b)!=0){return null;}if(QN(b)==0){IP(XQ(SP(25)));}c=b;d=NU(CN(c));e=0;while(e=d?0:1)!=0){if(c<$t.ch){a=new Tl;a.Ce=1;a.gl=1;WQ(a);}e=b+1|0;if(b<0){break a;}if(b>=$t.lj){break a;}c:{f=$t.gk.data[b];if(f!==null){if(f.I(a)==0){break c;}else{break b;}}if(a===null){break b;}}b=e;}return 0;}return 1;}a=new Pc;a.Ce=1;a.gl=1;HD(a);WQ(a);} +function DC($t,a){var b,c,d,e,f,g,h;if($t.ch!=$t.Jb.ch){b=new Tl;b.Ce=1;b.gl=1;WQ(b);}c=a.data;d=$t.bf;e=c.length;if(e>=d){while(d=f.wf?0:1)!=0){h=e+1|0;if(f.Hi.Ff>=f.wf){b=new Rn;b.Ce=1;b.gl=1;WQ(b);}a.data[e]=GE(f.Hi);e=h;}return a;} +function Xu($t,a){var b,c;b=0;c=a.B();while(c.s()!=0){a=c.y();TJ($t,$t.lj,a);b=1;}return b;} +function Pl(){E.call(this);this.bc=null;} +function MV(b){var $r=new Pl();WK($r,b);return $r;} +function Rw($t,a){var b,c,d;b=$t.bc;a=a;c=new Yi;a=a;d=new Xl;d.ah=c;c.ml=d;c.ik=a.hh;a=c;c=new Jk;c.qc=b;a.fh=c;return a;} +function WK($t,a){$t.bc=a;} +function Rl(){var a=this;E.call(a);a.Wb=null;a.Xb=null;} +function NV(b,c){var $r=new Rl();MD($r,b,c);return $r;} +function Ur($t,a){var b,c,d,e;b=$t.Wb;c=$t.Xb;a=a;d=new Vk;a=a;e=new Yl;e.hk=d;d.ri=e;d.ii=a.hh;a=d;d=new Ei;d.vh=b;d.wh=c;b=d;c=b.constructor;if(c!==null&&c.classObject===null){d=new Sl;d.Xh=c;c.classObject=d;}c=new Kn;c.Ad=b;a.fc=c;a.Wd=GR(29);return a;} +function MD($t,a,b){$t.Wb=a;$t.Xb=b;} +function Nl(){var a=this;E.call(a);a.Sb=null;a.Tb=null;} +function OV(b,c){var $r=new Nl();Pt($r,b,c);return $r;} +function Mx($t,a){var b,c,d;b=$t.Sb;c=$t.Tb;a=a;d=new Jj;a=a;d.ce=a.hh;a=d;d=new Zm;d.Mf=b;d.Of=c;a.Ie=d;a.zg=GR(30);return a;} +function Pt($t,a,b){$t.Sb=a;$t.Tb=b;} +function Vf(){var a=this;E.call(a);a.Fg=null;a.Gg=null;} +function PV(b,c){var $r=new Vf();ML($r,b,c);return $r;} +function Op($t,a){var b,c,d;b=$t.Fg;c=$t.Gg;a=QV(a);d=new Ai;d.be=b;d.Zd=c;b=d;c=GR(14);if(b===null){AP(c);}a.Nf=b;return a;} +function ML($t,a,b){$t.Fg=a;$t.Gg=b;} +function Ql(){E.call(this);this.rb=null;} +function RV(b){var $r=new Ql();Pr($r,b);return $r;} +function Vu($t,a){var b,c;b=$t.rb;a=a;c=new Ln;a=a;c.hc=a.hh;a=c;c=new An;c.bi=b;a.oi=c;return a;} +function Pr($t,a){$t.rb=a;} +function Wf(){E.call(this);this.Wh=null;} +function SV(b){var $r=new Wf();Ry($r,b);return $r;} +function Ey($t,a){var b,c;b=$t.Wh;a=a;c=new Ig;a=a;c.Eg=a;a=c;c=new Ik;c.nc=b;a.Kg=c;return a;} +function Ry($t,a){$t.Wh=a;} +function Ce(){E.call(this);} +var TV=null;function Ce_$callClinit(){Ce_$callClinit=function(){}; +DK();} +function UV(){var $r=new Ce();Ph($r);return $r;} +function BN($t,a){var b,c,d,e,f,g,h;b=a.gi;a=new Sg;c=GR(12);S_$callClinit();a.ke=$rt_createCharArray(c.pb.data.length);d=0;while(d92){return ((a-32|0)-2|0)<<24>>24;}if(a<=34){return (a-32|0)<<24>>24;}return ((a-32|0)-1|0)<<24>>24;} -function GP(a){var b,c,d,e,f,g,h,i,j,k,l,m,n;b=MP(Jh,16384);c=b.data;d=$rt_createByteArray(16384);e=d.data;f=0;g=0;h=0;i=0;while(i>24;i=i+1|0;k=UO(Nt(a,i));}if(j==0&&k>=128){if(f>0){l=g+1|0;c[g]=JW(h,h+f|0,JO(d,f));g=l;}h=h+(f+k|0)|0;f=0;}else{n=f+k|0;if(n92){return ((a-32|0)-2|0)<<24>>24;}if(a<=34){return (a-32|0)<<24>>24;}return ((a-32|0)-1|0)<<24>>24;} +function UQ(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p;b=AR(Lh,16384);c=b.data;d=$rt_createByteArray(16384);e=d.data;f=0;g=0;h=0;i=0;while(i>24;i=i+1|0;k=JQ(Wt(a,i));}if(j==0&&k>=128){if(f>0){l=g+1|0;n=new Lh;m=h+f|0;o=YP(d,f);n.qi=h;n.dc=m;n.Bi=o;c[g]=n;g=l;}h=h+(f+k|0)|0;f=0;}else{p=f+k|0;if(p=Nu(b)){Gz($t.kb,c).e();c=c+ -1|0;}$t.Lf=b;} -function Mp($t){var a;HF($t);a=Nu($t.kb)-1|0;while(a>=0){Oy($t.kb,a).e();a=a+ -1|0;}} -function Pd(){Xc.call(this);} -function Zc(){Pd.call(this);} -function Jc(){Zc.call(this);} -function EO(a,b){var c;EP(a,SP(8));EP(b,SP(30));if(NP(b,Kb)!=0){return Mu(a,b);}c=0;b=b.A();while(b.F()!=0){if(Py(a,b.z())!=0){c=1;}}return c;} -function VM(a,b,c){var d;d=0;a=SB(a);while(Dr(a)!=0){if(ZE(EF(b,DE(a)))==c){DG(a);d=1;}}return d;} -function FN(a,b){EP(a,SP(8));EP(b,SP(31));return VO(a,b,1);} -function VO(a,b,c){var d,e,f,g,h;if(NP(a,Wb)==0){if(a!==null){return VM(LO(a),b,c);}IP(IS(SP(32)));}d=0;e=0;f=MM(a);if(e<=f){while(true){g=Oy(a,e);if(ZE(EF(b,g))!=c){if(d!=e){Pq(a,d,g);}d=d+1|0;}if(e==f){break;}e=e+1|0;}}if(d>=Nu(a)){return 0;}h=MM(a);if(h>=d){while(true){Gz(a,h);if(h==d){break;}h=h+ -1|0;}}return 1;} -function Nd(){Jc.call(this);} -function Kd(){Nd.call(this);} -function Hn(){Kd.call(this);} -function Pm(){var a=this;Dc.call(a);a.cf=0;a.di=false;a.Se=0;a.nc=0;} -function QW(b,c,d){var $r=new Pm();Op($r,b,c,d);return $r;} -function Cs($t){return $t.di;} -function Ev($t){var a;a=$t.Se;if(a!=$t.cf){$t.Se=$t.Se+$t.nc|0;}else{if($t.di==0){IP(RW());}$t.di=0;}return a;} -function Op($t,a,b,c){RA($t);$t.nc=c;$t.cf=b;$t.di=$t.nc<=0?(ab?0:1;if($t.di==0){a=$t.cf;}$t.Se=a;} +var RU=false;var PU=null;function Ic_$callClinit(){Ic_$callClinit=function(){}; +Qu();} +function To(a,b){var c,d,$$je;Ic_$callClinit();c=a.constructor;if(c!==null&&c.classObject===null){d=new Sl;d.Xh=c;c.classObject=d;}c=new Wg;c.kk=a;a=new Dh;a.nf=c;a=a;c=new Zk;c.Lf=b;d=new Ok;a=RC(a);d.Wk=c;d.Yj=a;KD(c,a.Wk,null);a=PU;TJ(a,a.lj,d);RU=1;a:{try{PM(d);break a;}catch($$e){$$je=$$e.$javaException;if($$je){a=$$je;}else {throw $$e;}}RU=0;WQ(a);}RU=0;return d;} +function ME(a){var b,c;Ic_$callClinit();b=a.constructor;if(b!==null&&b.classObject===null){c=new Sl;c.Xh=b;b.classObject=c;}b=new Wg;b.kk=a;a=new Dh;a.nf=b;return a;} +function YG(a,b){Ic_$callClinit();a=new Wg;a.kk=b;b=new Dh;b.nf=a;return b;} +function TL(){var a,$$je;Ic_$callClinit();if(RU!=0){return;}RU=1;a:{try{a=PC(PU);while(true){try{if(Lr(a)==0){break a;}PM(BF(a));continue;}catch($$e){$$je=$$e.$javaException;if($$je){a=$$je;break;}else {throw $$e;}}}}catch($$e){$$je=$$e.$javaException;if($$je){a=$$je;}else {throw $$e;}}RU=0;WQ(a);}RU=0;} +function Hx(){Ic_$callClinit();return PU;} +function Qu(){var a,b;a=new Pi;b=10;a.gk=AR(E,b);PU=a;} function Ae(){E.call(this);} -function Tl(){E.call(this);this.Ij=null;} -function SW(b){var $r=new Tl();YA($r,b);return $r;} -function YA($t,a){OB($t);$t.Ij=a;} -function Cx($t,a){TC($t.Ij,a);} -function MJ($t,a){Cx($t,a);} -function Lj(){var a=this;E.call(a);a.Qj=0;a.Wk=null;} -function HW(){var $r=new Lj();Fz($r);return $r;} -function Fz($t){OB($t);} -function Of(){R.call(this);} -function Ie(){E.call(this);} -function Pe(){E.call(this);} -function Bd(){W.call(this);} -function TW(){var $r=new Bd();Fx($r);return $r;} -function Fx($t){XF($t);} -function Tk(){Bd.call(this);this.Jh=null;} -function UW(){var $r=new Tk();GD($r);return $r;} -function VW(b){var $r=new Tk();PE($r,b);return $r;} -function GD($t){PE($t,QR());} -function PE($t,a){Fx($t);$t.Jh=a;} -function BJ($t,a){return Ir($t.Jh,a,$t)!==null?0:1;} -function Zi(){E.call(this);} -function KM(a){var copy=new a.constructor();for(var field in a){if(!a.hasOwnProperty(field)){continue;}copy[field]=a[field];}return copy;} -function SO(a){return a.$meta.item;} -function YN(a){return $rt_str(a.$meta.name);} -function Ub(){var a=this;E.call(a);a.Kb=null;a.Zh=null;} -var WW=null;function Ub_$callClinit(){Ub_$callClinit=function(){}; -Br();} -function XW(b,c){var $r=new Ub();Nj($r,b,c);return $r;} -function Nj($t,a,b){var c,d,e;Ub_$callClinit();c=b.data;OB($t);Vy(a);d=c.length;e=0;while(e=48&&a<=57)&&!(a>=97&&a<=122)&&a<65&&a>90?0:1;} -function Br(){WW=QR();Ir(WW,SP(33),ZW());} -function Qb(){var a=this;E.call(a);a.Nh=null;a.Jd=null;a.Vb=null;a.xh=false;a.Xh=null;} -function AX(b){var $r=new Qb();Er($r,b);return $r;} -function Er($t,a){OB($t);$t.Xh=SW($t);$t.Nh=Ht(a);} -function Zz($t,a){$t.Jd=a;} -function BE($t,a){Su(a);$t.Vb=BX(a);} -function Xo($t){if($t.xh==0){$t.xh=1;$t.Nh.addEventListener($rt_ustr($t.Jd),JM($t.Xh,"handleEvent"));}} -function Mv($t){if($t.xh!=0){$t.xh=0;$t.Nh.removeEventListener($rt_ustr($t.Jd),JM($t.Xh,"handleEvent"));}} -function TC($t,a){$t.Vb.handleEvent(a);if(YF($t.Jd,SP(24))!=0){a.preventDefault();}} -function Sn(){Qb.call(this);} -function HU(b){var $r=new Sn();NB($r,b);return $r;} -function NB($t,a){Er($t,a);} -function Bc(){E.call(this);this.kj=false;} -var CX=null;var DX=null;var EX=null;function Bc_$callClinit(){Bc_$callClinit=function(){}; -Bv();} -function FX(b){var $r=new Bc();Xi($r,b);return $r;} -function Xi($t,a){Bc_$callClinit();OB($t);$t.kj=a;} -function ZE($t){return $t.kj;} -function Ox(a){Bc_$callClinit();return a==0?DX:CX;} -function Bv(){CX=FX(1);DX=FX(0);EX=LP($rt_booleancls());} -function Ed(){L.call(this);} -function YT(){var $r=new Ed();Sv($r);return $r;} -function XQ(b){var $r=new Ed();SL($r,b);return $r;} -function Sv($t){Xq($t);} -function SL($t,a){OG($t,a);} -function Ak(){Ed.call(this);this.Hd=null;} -function YW(b){var $r=new Ak();ED($r,b);return $r;} -function ED($t,a){Sv($t);$t.Hd=a;} -function We(){E.call(this);} -function Pl(){E.call(this);} -function IW(){var $r=new Pl();YL($r);return $r;} -function Qw($t){return TT();} -function YL($t){OB($t);} -function Sd(){var a=this;E.call(a);a.Id=null;a.Cg=0;} -function GX(b,c){var $r=new Sd();UF($r,b,c);return $r;} -function UF($t,a,b){OB($t);$t.Id=a;$t.Cg=b;} -function Lb(){Sd.call(this);} -var KT=null;var LT=null;var NT=null;var HX=null;function Lb_$callClinit(){Lb_$callClinit=function(){}; -Wy();} -function IX(b,c){var $r=new Lb();Kf($r,b,c);return $r;} -function Wy(){var a,b,c,d;a=MP(Lb,3);b=a.data;c=0;d=IX(SP(34),0);KT=d;b[c]=d;c=1;d=IX(SP(35),1);LT=d;b[c]=d;c=2;d=IX(SP(36),2);NT=d;b[c]=d;HX=a;} -function Kf($t,a,b){Lb_$callClinit();UF($t,a,b);} -function Mn(){L.call(this);} -function RW(){var $r=new Mn();Oq($r);return $r;} -function Oq($t){Xq($t);} -function Gf(){E.call(this);} -function Gc(){E.call(this);} -function Cb(){E.call(this);} -function JX(){var $r=new Cb();Tn($r);return $r;} -function Tn($t){OB($t);} -function Hc(){Cb.call(this);this.il=null;} -function KX(b){var $r=new Hc();Lq($r,b);return $r;} -function Lq($t,a){Tn($t);$t.il=a;} -function Rl(){var a=this;Hc.call(a);a.ie=false;a.Vi=null;a.kg=null;a.Jf=null;} -function LX(b,c){var $r=new Rl();UE($r,b,c);return $r;} -function UE($t,a,b){Lq($t,a);$t.Vi=UP();$t.kg=$rt_createCharArray(32);$t.ie=b;$t.Jf=ZW();} -function Xm(){E.call(this);this.ji=null;} -function OV(b){var $r=new Xm();FE($r,b);return $r;} -function XI($t){var a;a=$t.ji;return Es(a.Di);} -function FE($t,a){OB($t);$t.ji=a;} -function Tm(){E.call(this);this.Nf=null;} -function MX(b){var $r=new Tm();Bt($r,b);return $r;} -function LJ($t){var a,b;a=$t.Nf;b=MP(E,1).data;a=Rt(Vr(a));b[0]=a;return Rt(Zs(b[0]));} -function Bt($t,a){OB($t);$t.Nf=a;} -function Vm(){E.call(this);this.Ih=null;} -function GV(b){var $r=new Vm();UH($r,b);return $r;} -function OF($t){var a,b;a=$t.Ih;b=MP(E,1).data;a=a;a=Ox(Fr(a.Di));b[0]=a;return Ox(ZE(b[0]));} -function UH($t,a){OB($t);$t.Ih=a;} -function Wm(){E.call(this);this.lk=null;} -function NX(b){var $r=new Wm();AK($r,b);return $r;} -function RG($t){var a;a=$t.lk;return Es(a.Di);} -function AK($t,a){OB($t);$t.lk=a;} -function Fg(){var a=this;E.call(a);a.pf=0;a.of=0;a.Ze=0;a.mf=0;a.jk=null;} -function OX(b,c,d,e){var $r=new Fg();St($r,b,c,d,e);return $r;} -function St($t,a,b,c,d){$t.jk=a;OB($t);$t.pf=b;$t.of=b;$t.Ze=c;$t.mf=d;} -function ID($t){var a,b;Ds($t);if($t.pf==$t.mf){IP(RW());}$t.of=$t.pf;a=$t.jk;b=$t.pf;$t.pf=b+1|0;return Vn(a,b);} -function LE($t){return $t.pf;} -function Ds($t){var a,b;a=$t.Ze;b=$t.jk;if(a>=b.Kg){return;}IP(GS());} -function Jm(){E.call(this);this.ei=null;} -function PX(b){var $r=new Jm();NI($r,b);return $r;} -function Gx($t){return WC($t.ei);} -function NI($t,a){OB($t);$t.ei=a;} -function Um(){var a=this;E.call(a);a.wf=null;a.yf=null;} -function BV(b,c){var $r=new Um();TA($r,b,c);return $r;} -function Ew($t){var a,b,c,d,e;a=$t.wf;b=$t.yf;c=MP(E,1);a=a;d=a.Di;c=c;d=(d!==Hv(b)?0:1)==0?SP(11):SP(37);c=c.data;c[0]=d;e=MP(E,1);a=Fr(a.Di)==0?SP(11):SP(38);e=e.data;e[0]=a;return Yv(Up(Up(UP(),e[0]),c[0]));} -function TA($t,a,b){OB($t);$t.wf=a;$t.yf=b;} -function Hm(){E.call(this);this.fe=null;} -function QX(b){var $r=new Hm();MH($r,b);return $r;} -function GB($t){var a,b,c;a=$t.fe;b=MP(E,1);c=AB(KA(a))!=0?0:1;b=b.data;a=Ox(c);b[0]=a;return Ox(ZE(b[0]));} -function MH($t,a){OB($t);$t.fe=a;} -function Im(){E.call(this);this.ej=null;} -function MV(b){var $r=new Im();Yn($r,b);return $r;} -function Mz($t){var a,b;a=$t.ej;b=MP(E,1).data;a=Ox(TH(a));b[0]=a;return Ox(ZE(b[0]));} -function Yn($t,a){OB($t);$t.ej=a;} -function Oi(){E.call(this);} -function Km(){E.call(this);this.Zi=null;} -function LU(b){var $r=new Km();Iy($r,b);return $r;} -function XE($t){return NE($t.Zi);} -function Iy($t,a){OB($t);$t.Zi=a;} -function Gm(){E.call(this);this.Bd=null;} -function FU(b){var $r=new Gm();ZD($r,b);return $r;} -function Hq($t){var a,b,c;a=$t.Bd;b=MP(E,1);c=UI(a)!=0?0:1;b=b.data;a=Ox(c);b[0]=a;return Ox(ZE(b[0]));} -function ZD($t,a){OB($t);$t.Bd=a;} +function Nb(){E.call(this);} +function Td(){var a=this;E.call(a);a.gg=null;a.pi=null;} +function HW(b,c){var $r=new Td();BM($r,b,c);return $r;} +function BM($t,a,b){$t.gg=a;$t.pi=b;} +function Ah(){var a=this;Td.call(a);a.Rc=0;a.cg=null;} +function IW(b,c){var $r=new Ah();Qw($r,b,c);return $r;} +function Qw($t,a,b){var c;c=null;$t.gg=a;$t.pi=c;$t.Rc=b;} +function Wk(){var a=this;M.call(a);a.Fj=null;a.oh=null;a.mk=0;a.Jk=null;a.tb=null;a.bg=null;} +function JW(b){var $r=new Wk();UG($r,b);return $r;} +function UG($t,a){$t.Wk=a;a=new Ij;$t.tb=a;$t.bg=new Ij;} +function BH($t,a){$t.Fj=a;} +function LG($t){return $t.oh;} +function WC($t,a){$t.Jk=a;} +function XC($t){var a,b,c,d,e,f,g,h,i,j,k,l,m,n;a=Po($t);b=$t.bg;c=new Uf;d=b.jj;e=null;f=0;c.Df=b;b=c.Df;c.ic=b.ch;c.vi=d;c.hi=e;c.ug=f;b=a.R();e=$t.tb;g=new Uf;h=e.jj;d=null;f=0;g.Df=e;g.ic=g.Df.ch;g.vi=h;g.hi=d;g.ug=f;e=Hy($t.bg,$t.bg.md);d=a.K(a.w());h=Hy($t.tb,$t.tb.md);Hp($t,e,d,h);i=e.ug;j=d.M();while((c.vi===null?0:1)!=0&&c.ug=i){break a;}k=Lu(g);AK(g);k.e();Lu(c);AK(c);i +=i+ -1|0;}}if(b.s()!=0&&b.M()=e?0:1)!=0){if(d=a.lj){break a;}g=a.gk.data[c];h=b.md;if(h<0){a=new Pc;a.Ce=1;a.gl=1;WQ(a);}ZG(Hy(b,h),g);c=f;}}return b;}a=new Pc;a.Ce=1;a.gl=1;HD(a);WQ(a);} +function Hp($t,a,b,c){a:{while(true){if((a.hi===null?0:1)==0){break a;}if(b.W()==0){break a;}$t.mk=b.lb();$t.oh=b.ob();if($t.oh!==Qp(a)){break;}Qp(c).d();}Lu(a);b.y();}} +function Up($t){var a,b,c,d;Qv($t.Wk);a=$t.tb.md-1|0;while(a>=0){b=$t.tb;if(a<0){b=new Pc;b.Ce=1;b.gl=1;WQ(b);}b=Hy(b,a);c=b.ic;d=b.Df;if(c=b.ej?0:1)!=0){if(b.Wi=a.lj){break a;}a=a.gk.data[e];f=GR(13);if(a===null){AP(f);}g=a.Rk;Bc_$callClinit();if((g==0?EU:FU).Kj==c){DH(b);d=1;}}return d;}a=new Pc;a.Ce=1;a.gl=1;HD(a);WQ(a);} +function QO(a,b){var c;c=GR(8);if(a===null){AP(c);}c=GR(9);if(b===null){AP(c);}return KQ(a,b,1);} +function KQ(a,b,c){var d,e,f,g,h,i,$$je;if(BR(a,Xb)==0){if(a===null){b=new Qf;a=GR(34);b.Ce=1;b.gl=1;b.Xf=a;WQ(b);}if(BR(a,Eb)!=0&&BR(a,Qi)==0){HP(a,GR(35));}a:{try{a=a;}catch($$e){$$je=$$e.$javaException;if($$je&&$$je instanceof Sd){a=$$je;break a;}else {throw $$e;}}return FO(a,b,c);}b=ZQ(En);if(b.bh===null){d=b.Xh;d=$rt_str(d.$meta.name);Vc_$callClinit();b.bh=d;}WQ(BP(a,b.bh));}e=0;f=0;b=GR(8);if(a===null){AP(b);}b:{g=a.lj-1|0;if(f<=g){c:{while(true){if(f<0){break c;}if(f>=a.lj){break c;}h=a.gk.data[f];b= +h;d=GR(13);if(b===null){AP(d);}i=b.Rk;Bc_$callClinit();if((i==0?EU:FU).Kj!=c){if(e!=f){if(e<0){break;}if(e>=a.lj){break;}a.gk.data[e]=h;}e=e+1|0;}if(f==g){break b;}f=f+1|0;}a=new Pc;a.Ce=1;a.gl=1;WQ(a);}a=new Pc;a.Ce=1;a.gl=1;WQ(a);}}if(e>=a.lj){return 0;}b=GR(8);if(a===null){AP(b);}i=a.lj-1|0;if(i>=e){while(true){Zz(a,i);if(i==e){break;}i=i+ -1|0;}}return 1;} +function Pd(){Jc.call(this);} +function Md(){Pd.call(this);} +function Mn(){Md.call(this);} +function Um(){var a=this;Dc.call(a);a.sf=0;a.zi=false;a.jf=0;a.xc=0;} +function AU(b,c,d){var $r=new Um();Wp($r,b,c,d);return $r;} +function Ks($t){return $t.zi;} +function Rv($t){var a,b;a=$t.jf;if(a!=$t.sf){$t.jf=$t.jf+$t.xc|0;}else{if($t.zi==0){b=new Rn;b.Ce=1;b.gl=1;WQ(b);}$t.zi=0;}return a;} +function Wp($t,a,b,c){$t.xc=c;$t.sf=b;$t.zi=$t.xc<=0?(ab?0:1;if($t.zi==0){a=$t.sf;}$t.jf=a;} +function De(){E.call(this);} +function Yl(){E.call(this);this.hk=null;} +function LW(b){var $r=new Yl();TB($r,b);return $r;} +function TB($t,a){$t.hk=a;} +function Sx($t,a){var b;b=$t.hk;b.fc.handleEvent(a);if(XG(b.Wd,GR(26))!=0){a.preventDefault();}} +function RK($t,a){var b;a=a;b=$t.hk;b.fc.handleEvent(a);if(XG(b.Wd,GR(26))!=0){a.preventDefault();}} +function Pj(){var a=this;E.call(a);a.pk=0;a.ul=null;} +function MW(){var $r=new Pj();Yz($r);return $r;} +function Yz($t){} +function Pf(){R.call(this);} +function Le(){E.call(this);} +function Re(){E.call(this);} +function Cd(){X.call(this);} +function NW(){var $r=new Cd();Wx($r);return $r;} +function Wx($t){} +function Xk(){Cd.call(this);this.ci=null;} +function OW(){var $r=new Xk();EE($r);return $r;} +function PW(b){var $r=new Xk();NF($r,b);return $r;} +function EE($t){var a,b,c;a=new Jn;b=16;c=0.75;b=CQ(b);a.qd=0;a.Ae=AR(Ah,b);a.ql=c;a.Pj=a.Ae.data.length*a.ql|0;$t.ci=a;} +function NF($t,a){$t.ci=a;} +function FK($t,a){return HF($t.ci,a,$t)!==null?0:1;} +function Cj(){E.call(this);} +function UN(a){var copy=new a.constructor();for(var field in a){if(!a.hasOwnProperty(field)){continue;}copy[field]=a[field];}return copy;} +function HQ(a){return a.$meta.item;} +function MP(a){return $rt_str(a.$meta.name);} +function Vb(){var a=this;E.call(a);a.Ub=null;a.ti=null;} +var QW=null;function Vb_$callClinit(){Vb_$callClinit=function(){}; +Jr();} +function RW(b,c){var $r=new Vb();Rj($r,b,c);return $r;} +function Rj($t,a,b){var c,d,e;Vb_$callClinit();c=b.data;Oz(a);d=c.length;e=0;while(e=48&&a<=57)&&!(a>=97&&a<=122)&&a<65&&a>90?0:1;} +function Jr(){var a,b,c,d,e,f,g,h,i;a=new Jn;b=16;c=0.75;b=CQ(b);a.qd=0;a.Ae=AR(Ah,b);a.ql=c;a.Pj=a.Ae.data.length*a.ql|0;QW=a;d=QW;e=GR(36);a=new Pn;f=GR(36);g=AR(Vc,0);h=g.data;Oz(f);b=h.length;i=0;while(i=$t.lj){break a;}c:{d=$t.gk.data[c];if(a===null){if(d!==null){break c;}else{break b;}}if((a!==d?0:1)!=0){break b;}}c=c+1|0;}return -1;}return c;}a=new Pc;a.Ce=1;a.gl=1;WQ(a);} +function Yo($t){return $t.K(0);} +function XA($t,a){var b,c,d;b=new Hg;c=$t.ch;d=$t.w();b.Ik=$t;b.Ff=a;b.Ef=a;b.qf=c;b.Bf=d;return b;} +function HB($t,a,b){var c;if(a>b){c=new Fd;c.Ce=1;c.gl=1;WQ(c);}if(a>=0&&b<=$t.xk.data.length){if(BR($t,Xb)==0){c=new Mc;c.Jb=$t;c.ch=c.Jb.ch;c.Qd=a;c.bf=b-a|0;return c;}c=new Hj;c.Jb=$t;c.ch=c.Jb.ch;c.Qd=a;c.bf=b-a|0;return c;}c=new Pc;c.Ce=1;c.gl=1;WQ(c);} +function Jd(){T.call(this);} +function FX(){var $r=new Jd();LC($r);return $r;} +function LC($t){} +function DB($t,a){var b,c;if(a<0){b=new Pc;b.Ce=1;b.gl=1;WQ(b);}b=Hy($t,a);a=b.ic;c=b.Df;if(a=0){ZG(Hy($t,a),b);return;}b=new Pc;b.Ce=1;b.gl=1;WQ(b);} +function Ud(){E.call(this);} +function Ij(){var a=this;Jd.call(a);a.jj=null;a.Kb=null;a.md=0;} +function GX(){var $r=new Ij();KN($r);return $r;} +function KW(b){var $r=new Ij();Nw($r,b);return $r;} +function KN($t){} +function Nw($t,a){var b,c,d,e,f,g;b=0;c=a.ch;d=a.lj;e=null;a:{while((b>=d?0:1)!=0){f=new Vi;if(c=a.lj){break a;}f.Qe=a.gk.data[b];f.wg=e;if(e!==null){e.ve=f;}else{$t.jj=f;}$t.md=$t.md+1|0;e=f;b=g;}$t.Kb=e;return;}a=new Pc;a.Ce=1;a.gl=1;HD(a);WQ(a);} +function Xy($t){return $t.md;} +function Hv($t){var a,b,c,d,e;a=new Uf;b=$t.jj;c=null;d=0;a.Df=$t;e=a.Df;a.ic=e.ch;a.vi=b;a.hi=c;a.ug=d;return a;} +function Hy($t,a){var b,c,d,e,f;if(a<0){b=new Pc;b.Ce=1;b.gl=1;WQ(b);}if(a<=($t.md/2|0)){c=$t.jj;d=0;while(d$t.md){b=new Pc;b.Ce=1;b.gl=1;WQ(b);}b=$t.Kb;d=a;while(d<$t.md){b=b.wg;d=d+1|0;}c=new Uf;if(b===null){e=null;}else{e=b.ve;}c.Df=$t;f=c.Df;c.ic=f.ch;c.vi=e;c.hi=b;c.ug=a;return c;} +function Cv($t,a){if(a.wg===null){$t.jj=a.ve;}else{a.wg.ve=a.ve;}if(a.ve===null){$t.Kb=a.wg;}else{a.ve.wg=a.wg;}$t.md=$t.md-1|0;$t.ch=$t.ch+1|0;} +function XO(a,b){Cv(a,b);} +function SP(a,b){a.jj=b;return b;} +function KP(a,b){a.Kb=b;return b;} +function PO(a){var b;b=a.md+1|0;a.md=b;return b;} function Hf(){E.call(this);} -var PU=null;function Hf_$callClinit(){Hf_$callClinit=function(){}; -VB();} -function RX(){var $r=new Hf();Qi($r);return $r;} -function AJ($t){Fe_$callClinit();return SX;} -function Qi($t){Hf_$callClinit();OB($t);PU=$t;} -function VB(){Qi(new Hf);} -function Lm(){R.call(this);} +function Gc(){E.call(this);} +function Cb(){E.call(this);} +function HX(){var $r=new Cb();Yn($r);return $r;} +function Yn($t){} +function Hc(){Cb.call(this);this.Gl=null;} +function IX(b){var $r=new Hc();Tq($r,b);return $r;} +function Tq($t,a){$t.Gl=a;} +function Wl(){var a=this;Hc.call(a);a.we=false;a.uj=null;a.Cg=null;a.Zf=null;} +function JX(b,c){var $r=new Wl();SF($r,b,c);return $r;} +function SF($t,a,b){var c,d,e,f,g;$t.Gl=a;a=new Sg;S_$callClinit();a.ke=$rt_createCharArray(16);$t.uj=a;$t.Cg=$rt_createCharArray(32);$t.we=b;a=new Pn;c=GR(36);d=AR(Vc,0);e=d.data;Vb_$callClinit();Oz(c);f=e.length;g=0;while(g=$t.Bf?0:1;} +function GE($t){var a,b,c;a=$t.qf;b=$t.Ik;if(a=0){b=$t.Ik;c=$t.Ff;$t.Ff=c-1|0;return b.G(c-1|0);}b=new Rn;b.Ce=1;b.gl=1;WQ(b);} +function JF($t){return $t.Ff;} +function PH($t){return $t.Ff-1|0;} +function Ls($t){var a,b;a=$t.qf;b=$t.Ik;if(a>=b.ch){return;}b=new Tl;b.Ce=1;b.gl=1;WQ(b);} +function Om(){E.call(this);this.Ai=null;} +function PX(b){var $r=new Om();QJ($r,b);return $r;} +function Xx($t){return UD($t.Ai);} +function QJ($t,a){$t.Ai=a;} +function Zm(){var a=this;E.call(a);a.Mf=null;a.Of=null;} +function QX(b,c){var $r=new Zm();OB($r,b,c);return $r;} +function Tw($t){var a,b,c,d,e,f,g,h,i,j;a=$t.Mf;b=$t.Of;c=AR(E,1);a=a;d=a.aj;c=c;d=(d!==b.kl?0:1)==0?GR(15):GR(40);c=c.data;c[0]=d;e=AR(E,1);a=a.aj.Rk==0?GR(15):GR(41);e=e.data;e[0]=a;a=new Sg;S_$callClinit();f=16;a.ke=$rt_createCharArray(f);d=e[0];WA(a,a.Ii,d);d=c[0];WA(a,a.Ii,d);d=new Vc;g=a.ke;f=0;h=a.Ii;Vc_$callClinit();d.pb=$rt_createCharArray(h);i=0;while(ic){IP(YT());}while(b0&&a<=65535?1:0;} -function Us(a){Mb_$callClinit();return (a&64512)!=55296?0:1;} -function Tr(a){Mb_$callClinit();return (a&64512)!=56320?0:1;} -function JH(a){Mb_$callClinit();return Us(a)==0&&Tr(a)==0?0:1;} -function EK(a,b){Mb_$callClinit();if(b>=2&&b<=36&&a=f.Tb){c=e+1|0;}else{if(a>=f.Wh){return f.fi.data[a-f.Wh|0];}d=e-1|0;}}return 0;} -function AI(a){Mb_$callClinit();return Oz(a);} -function Oz(a){Mb_$callClinit();switch(Uu(a)){case 12:case 13:case 14:break;default:return 0;}return 1;} -function Ix(a){Mb_$callClinit();return TG(a);} -function TG(a){Mb_$callClinit();switch(a){case 9:case 10:case 11:case 12:case 13:case 28:case 29:case 30:case 31:break;case 160:case 8199:case 8239:return 0;default:return Oz(a);}return 1;} -function Bs(){VY=LP($rt_charcls());XY=MP(Mb,128);} -function WK(){return {"value":"PA-Y$;Y$679:95Y#J+Y#Z$Y#B;697<8:1=<=:L#<#Y#<,&?L$9B8:B(C9:C)!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!C#!#!#!#!#!#!#!#!C#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#B##!#!C$B##!#B##B$C#B%#B##B$C$B##B##!#!#B##!C#!#B##B$#!#B#C#&!C$F%!$#!$#!$#!#!#!#!#!#!#!#!C#!#!#!#!#!#!#!#!#!C#!$#!#B$#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!C(B##B#C#!#B%#!#!#!#!Cg&C?6_#?6>Y)./Q&-Y*>?Y%X#Y$:67Y,:98Y+-Q& Q+,%A#L'Z$67%L+Z$67 E.A$[AA1G.H%'H$G-A0^#!^%!^##B$C#B$#=!^#:B&^'!=!=!=B%=#B%#F%#^#C#B#Z&!C%=:^##=L1KD!#K%,^#A%Z&^&Z#^%:^#:^#:^(:^@Z#^#:=:^@b:-% ^)6767^5Z#^(67b=2! :^?Z:^IZ'^gA:^,A6L^^pL7b=X# :^*:^WZ)b=P! :b=Y$ 67676767676767L?^MZ&67Z@6767676767Z1b= % b:$# 6767676767676767676767Za6767ZA67b:#% ^QZ6^#Z'^HA#^AA#^CA$^- ^*A:^%A1BP CP !#B$C#!#!#!#B%#!C#!C'E#B$#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!C#^'!#!#G$!#A&Y%,Y#CG #A&#A#FYA(%9A/'F8A*F( F( F( F( F( F( F( F( GAY#>?>?Y$>?9>?Y*5Y#59>?Y#>?67676767Y&%Y+U#Y%596Y(AW^; b=:! A-b=7$ A;^-A%-Y$=%&+6767676767^#6767676756W#=K*G%I#5E&^#K$%&9^# b&7! A#G#]#E#&5b&;! 9E$&A&FKA#b&?! ^#L%^+FA$G$)FP'I#G%I#'I%Y. %J+A%Y#F&'%F*J+F& FJG'I#G#I#G#A*F$'F)')A#J+A#Y%F1%F'^$&)')FS'&G$F#G#F&G#&'&A9F#%Y#F,)G#I#Y#&E#)'A+F'A#F'A#F'A*F( F( CLA$FRA0'LL#9F>L$AAF)=F=G#A%L&Y(A*FWA$Y(F7A#L)F4A&L)F3A(Y%A-L(b 1! FkAXBTA.CTA(L'b A& L@b !' )')FVG0Y(A%L5J+A0G$)FNI$G%I#G#Y#1Y%A/F:A(J+A'G$FEG&)G) J+Y%A-FD'Y#&A*G#)FQI$G*I#F%Y&G$9A#J+&9&Y$ L5A,F3 F:I$G$I#')G#Y''AcF( & F% F0 F+9A'FP'I$G)A&J+A'G#I# F)A#F#A#F7 F( F# F&A#'&I#'I%A#I#A#I$A#&A')A&F&I#A#G(A$G&b ,# FVI$G)I#G$)'F%Y&J+ 9 9ACFQI$G')'I%G#)G#F#9&A)J+b G# FPI$G%A#I%G#)G#Y8F%G#ACFQI$G)I#')G#Y$&A,J+A'Y.A4FL')'I#G')'A)J+AWF;A$G$I#G%)G&A%J+L#Y$=b A& BACAJ+L*A-&b % &G'I#G#FIG')&G%Y)'A)&G'I#G$FIA#F%G.)G#Y$ Y&A>FZb (% F* FF)G( G')'&Y&A+J+L4A$Y#F?A#G7 )G()G#)G#AkF( F# FGG'A$' G# G(&'A)J+b G+ b&;/ b G! b+P! Y&A,b&%$ b ^K b&P1 b 2a b&(* b Z'#b&Z) A(F@ J+A%Y#b A! F?A#G&9A+FQG(Y&^%E%9=A+J+ L( F6A&F4b Q. FgA,&IOA1G%E.AbE#A?&b L@!&A4b&T, b .5#b&@% b 2! b&-' b %E b&L! A&F.A$F*A(F+A#=G#9Q%b =.!b=W$ A+^HA#^^I#G$^$I'Q)G)^#G(^?G%^]A8^dG$=b [# b=8! A*L3b /# B;C;B;C( C3B;C;! B#A#!A#B#A#B% B)C% # C( C,B;C;B# B%A#B) B( C;B# B% B& !A$B( C;B;C;B;C;B;C;B;C;B;C;B;C=A#B::C::C'B::C::C'B::C::C'B::C::C'B::C::C'!#A#JSb= ) GX^%GS^)'^/'^#Y&A0G& G0b 16 G( G2A#G( G# G&b 6@ b&&$ A#L*G(AJBCCCG(A&J+A%Y#b A3 F% F< F# &A#& F+ F% & &A'&A%& & & F$ F# &A#& & & & & F# &A#F% F( F% F% & F+ F2A&F$ F& F2AUZ#b /% ^MA%b=E! A-^0A#^0 ^0 ^FA+L.A$^@ ^^A%^_AZ^>A.^MA%^*A(^#A/^'b ;# b=]$ ]&b=6, A,^.A$^*A(b=U! A-b=6! AL^-A%^YA)^+A'^IA)^?b 3! ^-A%^P ^.A$^=A5^9AI=A0^8b :9 &b %b %b 6<#&AJ&b T !&A,&b =$ &A#&b ;!&A/&b PU!&b @Q b&?) b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b D8 1A?b1A! b # b'Q$ b %b %b %b 1Y$3b %b %b %b ^a$3A#3b %b %b %b ^a$3"} +var RY=null;var SY=null;var TY=null;var UY=null;function Mb_$callClinit(){Mb_$callClinit=function(){}; +Js();} +function Bq(a){Mb_$callClinit();return a>0&&a<=65535?1:0;} +function Ct(a){Mb_$callClinit();return (a&64512)!=55296?0:1;} +function Bs(a){Mb_$callClinit();return (a&64512)!=56320?0:1;} +function LI(a){var b;Mb_$callClinit();b=(a&64512)!=55296?0:1;return b==0&&((a&64512)!=56320?0:1)==0?0:1;} +function JL(a,b){Mb_$callClinit();if(b>=2&&b<=36&&a0&&a<=65535?1:0)!=0){b=a&65535;c=(b&64512)!=55296?0:1;if((c==0&&((b&64512)!=56320?0:1)==0?0:1)!=0){return 19;}}d=QH().data;c=0;b=d.length-1|0;while(c<=b){e=(c+b|0)/2|0;f=d[e];if(a>=f.dc){c=e+1|0;}else{if(a>=f.qi){return f.Bi.data[a-f.qi|0];}b=e-1|0;}}return 0;} +function CJ(a){Mb_$callClinit();a:{switch(Gv(a)){case 12:case 13:case 14:break;default:a=0;break a;}a=1;}return a;} +function IA(a){Mb_$callClinit();switch(Gv(a)){case 12:case 13:case 14:break;default:return 0;}return 1;} +function Zx(a){Mb_$callClinit();a:{switch(a){case 9:case 10:case 11:case 12:case 13:case 28:case 29:case 30:case 31:break;case 160:case 8199:case 8239:a=0;break a;default:b:{switch(Gv(a)){case 12:case 13:case 14:break;default:a=0;break b;}a=1;}break a;}a=1;}return a;} +function VH(a){Mb_$callClinit();switch(a){case 9:case 10:case 11:case 12:case 13:case 28:case 29:case 30:case 31:break;case 160:case 8199:case 8239:return 0;default:a:{switch(Gv(a)){case 12:case 13:case 14:break;default:a=0;break a;}a=1;}return a;}return 1;} +function Js(){RY=ZQ($rt_charcls());TY=AR(Mb,128);} +function DM(){return {"value":"PA-Y$;Y$679:95Y#J+Y#Z$Y#B;697<8:1=<=:L#<#Y#<,&?L$9B8:B(C9:C)!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!C#!#!#!#!#!#!#!#!C#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#B##!#!C$B##!#B##B$C#B%#B##B$C$B##B##!#!#B##!C#!#B##B$#!#B#C#&!C$F%!$#!$#!$#!#!#!#!#!#!#!#!C#!#!#!#!#!#!#!#!#!C#!$#!#B$#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!C(B##B#C#!#B%#!#!#!#!Cg&C?6_#?6>Y)./Q&-Y*>?Y%X#Y$:67Y,:98Y+-Q& Q+,%A#L'Z$67%L+Z$67 E.A$[AA1G.H%'H$G-A0^#!^%!^##B$C#B$#=!^#:B&^'!=!=!=B%=#B%#F%#^#C#B#Z&!C%=:^##=L1KD!#K%,^#A%Z&^&Z#^%:^#:^#:^(:^@Z#^#:=:^@b:-% ^)6767^5Z#^(67b=2! :^?Z:^IZ'^gA:^,A6L^^pL7b=X# :^*:^WZ)b=P! :b=Y$ 67676767676767L?^MZ&67Z@6767676767Z1b= % b:$# 6767676767676767676767Za6767ZA67b:#% ^QZ6^#Z'^HA#^AA#^CA$^- ^*A:^%A1BP CP !#B$C#!#!#!#B%#!C#!C'E#B$#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!C#^'!#!#G$!#A&Y%,Y#CG #A&#A#FYA(%9A/'F8A*F( F( F( F( F( F( F( F( GAY#>?>?Y$>?9>?Y*5Y#59>?Y#>?67676767Y&%Y+U#Y%596Y(AW^; b=:! A-b=7$ A;^-A%-Y$=%&+6767676767^#6767676756W#=K*G%I#5E&^#K$%&9^# b&7! A#G#]#E#&5b&;! 9E$&A&FKA#b&?! ^#L%^+FA$G$)FP'I#G%I#'I%Y. %J+A%Y#F&'%F*J+F& FJG'I#G#I#G#A*F$'F)')A#J+A#Y%F1%F'^$&)')FS'&G$F#G#F&G#&'&A9F#%Y#F,)G#I#Y#&E#)'A+F'A#F'A#F'A*F( F( CLA$FRA0'LL#9F>L$AAF)=F=G#A%L&Y(A*FWA$Y(F7A#L)F4A&L)F3A(Y%A-L(b 1! FkAXBTA.CTA(L'b A& L@b !' )')FVG0Y(A%L5J+A0G$)FNI$G%I#G#Y#1Y%A/F:A(J+A'G$FEG&)G) J+Y%A-FD'Y#&A*G#)FQI$G*I#F%Y&G$9A#J+&9&Y$ L5A,F3 F:I$G$I#')G#Y''AcF( & F% F0 F+9A'FP'I$G)A&J+A'G#I# F)A#F#A#F7 F( F# F&A#'&I#'I%A#I#A#I$A#&A')A&F&I#A#G(A$G&b ,# FVI$G)I#G$)'F%Y&J+ 9 9ACFQI$G')'I%G#)G#F#9&A)J+b G# FPI$G%A#I%G#)G#Y8F%G#ACFQI$G)I#')G#Y$&A,J+A'Y.A4FL')'I#G')'A)J+AWF;A$G$I#G%)G&A%J+L#Y$=b A& BACAJ+L*A-&b % &G'I#G#FIG')&G%Y)'A)&G'I#G$FIA#F%G.)G#Y$ Y&A>FZb (% F* FF)G( G')'&Y&A+J+L4A$Y#F?A#G7 )G()G#)G#AkF( F# FGG'A$' G# G(&'A)J+b G+ b&;/ b G! b+P! Y&A,b&%$ b ^K b&P1 b 2a b&(* b Z'#b&Z) A(F@ J+A%Y#b A! F?A#G&9A+FQG(Y&^%E%9=A+J+ L( F6A&F4b Q. FgA,&IOA1G%E.AbE#A?&b L@!&A4b&T, b .5#b&@% b 2! b&-' b %E b&L! A&F.A$F*A(F+A#=G#9Q%b =.!b=W$ A+^HA#^^I#G$^$I'Q)G)^#G(^?G%^]A8^dG$=b [# b=8! A*L3b /# B;C;B;C( C3B;C;! B#A#!A#B#A#B% B)C% # C( C,B;C;B# B%A#B) B( C;B# B% B& !A$B( C;B;C;B;C;B;C;B;C;B;C;B;C=A#B::C::C'B::C::C'B::C::C'B::C::C'B::C::C'!#A#JSb= ) GX^%GS^)'^/'^#Y&A0G& G0b 16 G( G2A#G( G# G&b 6@ b&&$ A#L*G(AJBCCCG(A&J+A%Y#b A3 F% F< F# &A#& F+ F% & &A'&A%& & & F$ F# &A#& & & & & F# &A#F% F( F% F% & F+ F2A&F$ F& F2AUZ#b /% ^MA%b=E! A-^0A#^0 ^0 ^FA+L.A$^@ ^^A%^_AZ^>A.^MA%^*A(^#A/^'b ;# b=]$ ]&b=6, A,^.A$^*A(b=U! A-b=6! AL^-A%^YA)^+A'^IA)^?b 3! ^-A%^P ^.A$^=A5^9AI=A0^8b :9 &b %b %b 6<#&AJ&b T !&A,&b =$ &A#&b ;!&A/&b PU!&b @Q b&?) b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b D8 1A?b1A! b # b'Q$ b %b %b %b 1Y$3b %b %b %b ^a$3A#3b %b %b %b ^a$3"} ;} -function Wf(){E.call(this);this.Bi=null;} -function GY(b){var $r=new Wf();KF($r,b);return $r;} -function NH($t){return Vr($t.Bi)!=1?0:1;} -function KF($t,a){OB($t);$t.Bi=a;} -function Id(){E.call(this);} -function Hk(){var a=this;E.call(a);a.Gj=null;a.Fj=null;} -function AW(b,c){var $r=new Hk();XG($r,b,c);return $r;} -function Qz($t){var a,b,c,d;a=$t.Gj;b=$t.Fj;c=MP(E,1);a=a;a=a.Di;c=c;d=a!==Hv(b)?0:1;c=c.data;a=Ox(d);c[0]=a;return Ox(ZE(c[0]));} -function XG($t,a,b){OB($t);$t.Gj=a;$t.Fj=b;} -function Tg(){var a=this;M.call(a);a.Pb=null;a.xe=null;} -function FQ(b){var $r=new Tg();Gw($r,b);return $r;} -function Gw($t,a){IG($t,DN());$t.Pb=a;} -function Kr($t){var a;$t.Pb.m();if($t.xe===null){a=VX(My($t));$t.Pb.o(a);$t.xe=Wn(a);}a=SB($t.xe);while(Dr(a)!=0){DE(a).d();}} -function YI($t){var a;if($t.xe!==null){a=SB($t.xe);while(Dr(a)!=0){DE(a).e();}$t.xe=null;}HF($t);} -function Cl(){E.call(this);} -function ZY(){var $r=new Cl();Bz($r);return $r;} -function PT(b){var $r=new Cl();Pp($r,b);return $r;} -function BI($t,a){var b,c,d;EP(a,SP(15));b=HT(IR());c=NS();d=LP(Wc);Zd_$callClinit();Ey(By(Lo(c,d,JV),b));SG(b,XO().body);} -function Bz($t){OB($t);} -function Pp($t,a){Bz($t);} -function Dj(){var a=this;M.call(a);a.Lg=null;a.lj=null;a.uk=null;a.Nc=false;} -function YX(b){var $r=new Dj();GJ($r,b);return $r;} -function GJ($t,a){IG($t,a);} -function Qr($t,a){$t.Lg=a;} -function CE($t){var a;a=$t.Lg.g();if($t.Nc!=0&&XM($t.uk,a)!=0){return;}$t.Nc=1;$t.uk=a;if($t.lj!==null){Dv($t.lj);$t.lj=null;}$t.lj=ZQ(window.document.createTextNode($rt_ustr(Cz(a))));LG(My($t),$t.lj);} -function If(){O.call(this);} -var JR=null;function If_$callClinit(){If_$callClinit=function(){}; -Ru();} -function AZ(){var $r=new If();Pj($r);return $r;} -function EF($t,a){return Ox(Hu($t,a));} -function Hu($t,a){EP(a,SP(9));return Fr(a);} -function Pj($t){If_$callClinit();DI($t,1);} -function Ru(){JR=AZ();} -function In(){E.call(this);} -function EP(a,b){if(a===null){ON(b);}} -function ON(a){var b;b=EI(H()).data[3];IP(DO(XQ(Yv(Up(Up(Up(Up(Up(Up(UP(),SP(99)),b.Zm()),SP(100)),b.an()),SP(101)),a)))));} -function DO(a){return PN(a,JK(LP(In)));} -function PN(a,b){var c,d,e,f,g,h;c=Kq(a);d=c.data;e=d.length;f= -1;g=0;while(g=$t.gf?0:1;} -function UG($t){if(LE($t.li)>=$t.gf){IP(RW());}return ID($t.li);} -function Lg(){T.call(this);} -function EZ(){var $r=new Lg();LL($r);return $r;} -function Lz($t,a,b){var c;a=a;b=b;c=b;if(IO(c)!=0){c=null;}else{if(QN(c)==0&&MO(c)==0){IP(XQ(Yv(Up(Up(Up(Up(UP(),SP(103)),FM(c)),SP(104)),SP(20)))));}c=KR();c.Ri=PI(MU(KO(LP(Yk))),a,b["data"]);}return c;} -function LL($t){Ts($t);} -function Og(){T.call(this);} -function FZ(){var $r=new Og();Pz($r);return $r;} -function FC($t,a,b){var c;a=a;b=b;c=b;if(IO(c)!=0){c=null;}else{if(QN(c)==0&&MO(c)==0){IP(XQ(Yv(Up(Up(Up(Up(UP(),SP(103)),FM(c)),SP(104)),SP(19)))));}c=IT();b=b;XJ(c,ZE(Ox(MN(b["completed"]))));Yo(c,KO(LP(Uc)).E(a,b["title"]));}return c;} -function Pz($t){Ts($t);} -function Tc(){R.call(this);} -var GZ=null;var HZ=null;function Tc_$callClinit(){Tc_$callClinit=function(){}; -TI();} -function TI(){GZ=!!(!!1);HZ=!!(!!0);} -function QL(a){Tc_$callClinit();return !!a?1:0;} -function Uk(){var a=this;E.call(a);a.Pg=null;a.hk=null;a.wd=null;a.vg=null;} -function XX(){var $r=new Uk();Vq($r);return $r;} -function Vq($t){OB($t);} -function Ht($t){return $t.Pg;} -function Xs($t,a){var b;if($t.wd===null){return;}if(NP($t.wd,Ec)==0){$t.wd.B(a);}else{b=SB($t.wd);while(Dr(b)!=0){DE(b).B(a);}}} -function Zn($t,a){var b,c;if($t.wd===null){$t.wd=a;b=$t.Pg;II($t);b.addEventListener("change",JM($t.vg,"handleEvent"));}else if(NP($t.wd,Ec)!=0){Py($t.wd,a);}else{c=NU(2);Py(c,$t.wd);Py(c,a);$t.wd=c;}} -function Xz($t,a){var b;if($t.wd!==null){if($t.wd===a){$t.Pg.removeEventListener("change",JM($t.vg,"handleEvent"));$t.vg=null;$t.wd=null;}else if(NP($t.wd,Ec)!=0){b=$t.wd;QB(b,a);if(Nu(b)==1){$t.wd=Oy(b,0);}}}} -function II($t){$t.vg=IZ($t);} -function DD($t){return $rt_str($t.Pg.value);} -function Tt($t,a){Xs($t,DD($t));} -function Se(){E.call(this);} -function Df(){E.call(this);} -function Cf(){E.call(this);} +function Yf(){E.call(this);this.Xi=null;} +function VY(b){var $r=new Yf();IG($r,b);return $r;} +function PI($t){return Ds($t.Xi)!=1?0:1;} +function IG($t,a){$t.Xi=a;} +function Kd(){E.call(this);} +function Lk(){var a=this;E.call(a);a.fk=null;a.ek=null;} +function WY(b,c){var $r=new Lk();ZH($r,b,c);return $r;} +function KA($t){var a,b,c,d;a=$t.fk;b=$t.ek;c=AR(E,1);a=a;a=a.aj;c=c;d=a!==b.kl?0:1;Bc_$callClinit();a=d==0?EU:FU;c=c.data;c[0]=a;return c[0].Kj==0?EU:FU;} +function ZH($t,a,b){$t.fk=a;$t.ek=b;} +function Vg(){var a=this;M.call(a);a.Zb=null;a.Le=null;} +function XY(b){var $r=new Vg();Vw($r,b);return $r;} +function Vw($t,a){var b;b=new Al;$t.Wk=b;$t.Zb=a;} +function Sr($t){var a,b,c,d,e,f,g;$t.Zb.m();if($t.Le===null){a=new Te;b=$t.Wk;Te_$callClinit();c=new Zi;c.ph=AR(E,9);a.Lb=c;c=new Pi;d=10;c.gk=AR(E,d);a.vk=c;a.ji=b;$t.Zb.o(a);$t.Le=a.vk;}a=$t.Le;e=0;f=a.ch;g=a.lj;a:{while((e>=g?0:1)!=0){if(f=a.lj){break a;}a.gk.data[e].d();e=d;}return;}a=new Pc;a.Ce=1;a.gl=1;HD(a);WQ(a);} +function CK($t){var a,b,c,d,e;a:{if($t.Le!==null){a=$t.Le;b=0;c=a.ch;d=a.lj;while((b>=d?0:1)!=0){if(c=a.lj){break a;}a.gk.data[b].e();b=e;}$t.Le=null;}Qv($t.Wk);return;}a=new Pc;a.Ce=1;a.gl=1;HD(a);WQ(a);} +function Hl(){E.call(this);} +function YY(){var $r=new Hl();Uz($r);return $r;} +function ZY(b){var $r=new Hl();Xp($r,b);return $r;} +function DJ($t,a){var b,c,d,e,f,g,h,i,j,k,l,$$je;b=GR(19);if(a===null){AP(b);}c=new Ze;b=new Nc;Nc_$callClinit();b.uc=window.localStorage;Nf(c,b);b=new Of;d=window;e=new Pi;f=10;e.gk=AR(E,f);b.vc=e;e=new Dj;e.cc=b;b.sk=e;if(b.Tj!==null){c=new Fh;b=GR(11);c.Ce=1;c.gl=1;c.Xf=b;WQ(c);}b.Tj=d;VP(d,b.sk);d=ZQ(Xc);Ce_$callClinit();e=TV;g=window;h=new Hh;h.pf=g;if(d.bh===null){g=d.Xh;g=$rt_str(g.$meta.name);Vc_$callClinit();d.bh=g;}a:{b:{c:{g=d.bh;switch(Nt(g)){case 1344771639:break;case -1064886025:break c;default:break b;}if +(XG(g,GR(2))==0){break b;}IP(ZQ(Xc));break a;}if(XG(g,GR(3))!=0){IP(ZQ(Xc));break a;}}}d=h;g=new Nh;g.gi=d;b.mg=g;b.bl=e;d=c;e=b.vc;i=0;j=e.ch;k=e.lj;d:{e:{while(true){if((i>=k?0:1)==0){f=0;break d;}if(j=e.lj){break;}f:{g=e.gk.data[i];if(g!==null){if(g.I(d)==0){break f;}else{break e;}}if(d===null){break e;}}i=l;}b=new Pc;Kx(b);WQ(b);}f=1;}if(f==0){e=b.vc;TJ(e,e.lj,d);}Wy(b);b=window.document.body;Ic_$callClinit();d=c.constructor;if(d!==null&&d.classObject +===null){e=new Sl;e.Xh=d;d.classObject=e;}d=new Wg;d.kk=c;c=new Dh;c.nf=d;c=c;e=new Zk;e.Lf=b;b=new Ok;c=RC(c);b.Wk=e;b.Yj=c;KD(e,c.Wk,null);c=PU;TJ(c,c.lj,b);RU=1;g:{try{PM(b);break g;}catch($$e){$$je=$$e.$javaException;if($$je){b=$$je;}else {throw $$e;}}RU=0;WQ(b);}RU=0;} +function Uz($t){} +function Xp($t,a){} +function Gj(){var a=this;M.call(a);a.dh=null;a.Lj=null;a.Sk=null;a.Xc=false;} +function AZ(b){var $r=new Gj();KK($r,b);return $r;} +function KK($t,a){$t.Wk=a;} +function Yr($t,a){$t.dh=a;} +function AF($t){var a,b,c;a=$t.dh.g();if($t.Xc!=0&&HO($t.Sk,a)!=0){return;}$t.Xc=1;$t.Sk=a;if($t.Lj!==null){Qv($t.Lj);$t.Lj=null;}b=new Fj;c=window.document;Vc_$callClinit();a=c.createTextNode($rt_ustr(a===null?GR(10):a.v()));b.Kc=a;$t.Lj=b;KD($t.Wk,$t.Lj,null);} +function Jf(){O.call(this);} +var QS=null;function Jf_$callClinit(){Jf_$callClinit=function(){}; +Dv();} +function BZ(){var $r=new Jf();Tj($r);return $r;} +function CG($t,a){var b,c;a=a;b=GR(13);if(a===null){AP(b);}c=a.Rk;Bc_$callClinit();return c==0?EU:FU;} +function Su($t,a){var b;b=GR(13);if(a===null){AP(b);}return a.Rk;} +function Tj($t){var a;Jf_$callClinit();a=1;$t.fd=a;} +function Dv(){var a,b;a=new Jf;b=1;a.fd=b;QS=a;} +function Nn(){E.call(this);} +function SQ(a,b){if(a===null){AP(b);}} +function AP(a){var b,c,d,e,f,g,h,i,j,k;Jb_$callClinit();b=AR(Vn,0).data[3];c=b.Dm();d=b.Em();e=new Fd;b=new Sg;S_$callClinit();f=16;b.ke=$rt_createCharArray(f);g=GR(70);WA(b,b.Ii,g);WA(b,b.Ii,c);c=GR(71);WA(b,b.Ii,c);WA(b,b.Ii,d);c=GR(72);WA(b,b.Ii,c);WA(b,b.Ii,a);a=new Vc;h=b.ke;f=0;i=b.Ii;Vc_$callClinit();a.pb=$rt_createCharArray(i);j=0;while(j=$t.wf?0:1;} +function WH($t){var a;if($t.Hi.Ff<$t.wf){return GE($t.Hi);}a=new Rn;a.Ce=1;a.gl=1;WQ(a);} +function Ng(){U.call(this);} +function IZ(){var $r=new Ng();SM($r);return $r;} +function FA($t,a,b){var c,d,e,f,g,h,i;a=a;b=b;c=b;if((c===null?1:0)!=0){c=null;}else{if((JP(c)?1:0)==0&&(VQ(c)?1:0)==0){a=new Fd;b=new Sg;S_$callClinit();d=16;b.ke=$rt_createCharArray(d);WA(b,b.Ii,GR(73));WA(b,b.Ii,$rt_str(JSON.stringify(c)));WA(b,b.Ii,GR(74));WA(b,b.Ii,GR(21));c=new Vc;e=b.ke;d=0;f=b.Ii;Vc_$callClinit();c.pb=$rt_createCharArray(f);g=0;while(g=e?0:1)!=0){if(d=b.lj){break a;}b.gk.data[c].C(a);c=f;}}return;}a=new Pc;a.Ce=1;a.gl=1;HD(a);WQ(a);} +function Fo($t,a){var b,c,d;if($t.Jd===null){$t.Jd=a;b=$t.hh;a=new Uj;a.Dg=$t;$t.Ng=a;b.addEventListener("change",TN($t.Ng,"handleEvent"));}else if(BR($t.Jd,Ec)!=0){c=$t.Jd;TJ(c,c.lj,a);}else{c=new Pi;d=2;c.gk=AR(E,d);TJ(c,c.lj,$t.Jd);TJ(c,c.lj,a);$t.Jd=c;}} +function RA($t,a){var b,c,d,e;if($t.Jd!==null){if($t.Jd===a){$t.hh.removeEventListener("change",TN($t.Ng,"handleEvent"));$t.Ng=null;$t.Jd=null;}else if(BR($t.Jd,Ec)!=0){b=$t.Jd;c=b.lj;d=0;a:{b:{while(true){if(d>=c){d= -1;break a;}if(d<0){break;}if(d>=b.lj){break;}c:{e=b.gk.data[d];if(a===null){if(e!==null){break c;}else{break b;}}if((a!==e?0:1)!=0){break b;}}d=d+1|0;}a=new Pc;KF(a);WQ(a);}}if(d>=0){Zz(b,d);}if(b.lj==1){d=0;if(d>=b.lj){a=new Pc;a.Ce=1;a.gl=1;WQ(a);}$t.Jd=b.gk.data[d];}}}} +function KJ($t){var a;a=new Uj;a.Dg=$t;$t.Ng=a;} +function BE($t){return $rt_str($t.hh.value);} +function Cu($t,a){Ft($t,$rt_str($t.hh.value));} +function Ue(){E.call(this);} +function Ff(){E.call(this);} +function Ef(){E.call(this);} +function Qe(){E.call(this);} +function VP(a,b){var c;c=GR(75);a.addEventListener($rt_ustr(c),TN(b,"handleEvent"));} +function Cm(){var a=this;E.call(a);a.Qg=null;a.Ag=null;} +function NZ(){var $r=new Cm();LA($r);return $r;} +function LA($t){var a,b,c,d,e;a=new Jn;b=16;c=0.75;b=CQ(b);a.qd=0;a.Ae=AR(Ah,b);a.ql=c;a.Pj=a.Ae.data.length*a.ql|0;$t.Qg=a;a=new Xk;d=new Jn;b=16;c=0.75;e=CQ(b);d.qd=0;d.Ae=AR(Ah,e);d.ql=c;d.Pj=d.Ae.data.length*d.ql|0;a.ci=d;$t.Ag=a;} +function LD($t,a){var b,c,d,e,f,g,h,i,j;b=$t.Ag;if((HF(b.ci,a,b)!==null?0:1)!=0){return;}c=new Fd;b=new Sg;S_$callClinit();d=16;b.ke=$rt_createCharArray(d);WA(b,b.Ii,GR(76));d=b.Ii;if(a===null){a=GR(10);}else{e=new Sg;Ti(e);f=A(a.constructor);if(f.bh===null){f.bh=IK(MP(f.Xh));}Ou(e,f.bh);Ou(e,GR(0));g=Xo(a);Dd_$callClinit();Ou(e,Mz(g,16));a=Br(e);}Vc_$callClinit();WA(b,d,a);a=new Vc;h=b.ke;d=0;g=b.Ii;a.pb=$rt_createCharArray(g);i=0;while(i=1073741823){b=2147483647;}else{c=$t.gk.data.length*2|0;b=5;if(c>b){b=c;}if(a>b){b=a;}}$t.gk=FQ($t.gk,b);}} +function Hz($t,a){var b;if(a>=0&&a<$t.lj){return $t.gk.data[a];}b=new Pc;b.Ce=1;b.gl=1;WQ(b);} +function Yu($t){return $t.lj;} +function Xq($t,a,b){var c;if(a>=0&&a<$t.lj){c=$t.gk.data[a];$t.gk.data[a]=b;return c;}b=new Pc;b.Ce=1;b.gl=1;WQ(b);} +function TJ($t,a,b){var c;if(a>=0&&a<=$t.lj){Hs($t,$t.lj+1|0);c=$t.lj;while(c>a){$t.gk.data[c]=$t.gk.data[c-1|0];c=c+ -1|0;}$t.gk.data[a]=b;$t.lj=$t.lj+1|0;$t.ch=$t.ch+1|0;return;}b=new Pc;b.Ce=1;b.gl=1;WQ(b);} +function Zz($t,a){var b;if(a>=0&&a<$t.lj){b=$t.gk.data[a];$t.lj=$t.lj-1|0;while(a<$t.lj){$t.gk.data[a]=$t.gk.data[a+1|0];a=a+1|0;}$t.gk.data[$t.lj]=null;$t.ch=$t.ch+1|0;return b;}b=new Pc;b.Ce=1;b.gl=1;WQ(b);} +function NC($t,a){var b,c,d;b=$t.lj;c=0;a:{b:{c:{while(c=$t.lj){break a;}d:{d=$t.gk.data[c];if(a===null){if(d!==null){break d;}else{break c;}}if((a!==d?0:1)!=0){break c;}}c=c+1|0;}c= -1;break b;}}if(c<0){return 0;}Zz($t,c);return 1;}a=new Pc;a.Ce=1;a.gl=1;HD(a);WQ(a);} +function Nv($t){var a,b,c,d,e,f;a=$t.gk;b=0;c=$t.lj;d=null;if(b<=c){while(b=0&&a<$t.lj){return;}b=new Pc;b.Ce=1;b.gl=1;WQ(b);} +function AA($t,a){var b;if(a>=0&&a<=$t.lj){return;}b=new Pc;b.Ce=1;b.gl=1;WQ(b);} function Ne(){E.call(this);} -function GO(a,b){var c;c=SP(105);a.addEventListener($rt_ustr(c),JM(b,"handleEvent"));} -function Xl(){var a=this;E.call(a);a.yg=null;a.ig=null;} -function VT(){var $r=new Xl();Rz($r);return $r;} -function Rz($t){OB($t);$t.yg=QR();$t.ig=UW();} -function NC($t,a){if(BJ($t.ig,a)!=0){return;}IP(XQ(Yv(Eq(Up(UP(),SP(106)),a))));} -function Y(){W.call(this);this.Kg=0;} -function JZ(){var $r=new Y();YH($r);return $r;} -function YH($t){XF($t);} -function Py($t,a){QI($t,Nu($t),a);return 1;} -function SB($t){return RT($t);} -function EE($t,a){var b,c,d;b=Nu($t);c=0;a:{while(cb){IP(YT());}if(a>=0&&b<=Ot($t)){if(NP($t,Wb)==0){return KZ($t,a,b);}return LZ($t,a,b);}IP(DQ());} -function Ni(){var a=this;Y.call(a);a.Hj=null;a.Mi=0;} -function PS(){var $r=new Ni();JD($r);return $r;} -function NU(b){var $r=new Ni();Ap($r,b);return $r;} -function PW(b){var $r=new Ni();Fy($r,b);return $r;} -function JD($t){Ap($t,10);} -function Ap($t,a){YH($t);$t.Hj=MP(E,a);} -function Fy($t,a){var b,c;Ap($t,Nu(a));b=SB(a);c=0;while(c<$t.Hj.data.length){$t.Hj.data[c]=DE(b);c=c+1|0;}$t.Mi=$t.Hj.data.length;} -function Zr($t,a){if($t.Hj.data.length=1073741823?2147483647:RO(a,RO($t.Hj.data.length*2|0,5)));}} -function Oy($t,a){Kp($t,a);return $t.Hj.data[a];} -function Nu($t){return $t.Mi;} -function Pq($t,a,b){var c;Kp($t,a);c=$t.Hj.data[a];$t.Hj.data[a]=b;return c;} -function QI($t,a,b){var c;Hz($t,a);Zr($t,$t.Mi+1|0);c=$t.Mi;while(c>a){$t.Hj.data[c]=$t.Hj.data[c-1|0];c=c+ -1|0;}$t.Hj.data[a]=b;$t.Mi=$t.Mi+1|0;$t.Kg=$t.Kg+1|0;} -function Gz($t,a){var b;Kp($t,a);b=$t.Hj.data[a];$t.Mi=$t.Mi-1|0;while(a<$t.Mi){$t.Hj.data[a]=$t.Hj.data[a+1|0];a=a+1|0;}$t.Hj.data[$t.Mi]=null;$t.Kg=$t.Kg+1|0;return b;} -function QB($t,a){var b;b=EE($t,a);if(b<0){return 0;}Gz($t,b);return 1;} -function Av($t){IN($t.Hj,0,$t.Mi,null);$t.Mi=0;} -function Kp($t,a){if(a>=0&&a<$t.Mi){return;}IP(DQ());} -function Hz($t,a){if(a>=0&&a<=$t.Mi){return;}IP(DQ());} -function Ke(){E.call(this);} -function Oe(){E.call(this);} +function Qh(){E.call(this);} +function XD($t,a,b){QZ($t,$rt_str(a),GO(b,"handleEvent"));} +function JK($t,a,b,c){RZ($t,$rt_str(a),GO(b,"handleEvent"),c?1:0);} +function OD($t,a){return !!SZ($t,a);} +function IF($t,a,b){TZ($t,$rt_str(a),GO(b,"handleEvent"));} +function EJ($t,a){return KS($t,a);} +function Vx($t){return LS($t);} +function Np($t,a,b,c){UZ($t,$rt_str(a),GO(b,"handleEvent"),c?1:0);} +function Uf(){var a=this;E.call(a);a.vi=null;a.hi=null;a.Oe=null;a.ug=0;a.ic=0;a.Df=null;} +function VZ(b,c,d,e){var $r=new Uf();Ax($r,b,c,d,e);return $r;} +function Ax($t,a,b,c,d){$t.Df=a;a=$t.Df;$t.ic=a.ch;$t.vi=b;$t.hi=c;$t.ug=d;} +function QK($t){return $t.vi===null?0:1;} +function Lu($t){var a,b;a=$t.ic;b=$t.Df;if(a=b.ch){return;}b=new Tl;b.Ce=1;b.gl=1;WQ(b);} +function Bd(){var a=this;E.call(a);a.Nf=null;a.Hc=null;a.ac=null;} +var OY=27;var WZ=null;function Bd_$callClinit(){Bd_$callClinit=function(){}; +RL();} +function QV(b){var $r=new Bd();Eh($r,b);return $r;} +function My($t){return $t.Nf;} +function BI($t,a){var b;b=GR(14);if(a===null){AP(b);}$t.Nf=a;} +function Os($t){var a,b,c;a=$t.ac.hh;b=GR(77);c=$t.Hc;a.addEventListener($rt_ustr(b),TN(c,"handleEvent"));} +function SI($t){var a,b,c;a=$t.ac.hh;b=GR(77);c=$t.Hc;a.removeEventListener($rt_ustr(b),TN(c,"handleEvent"));} +function Eh($t,a){var b;Bd_$callClinit();b=GR(31);if(a===null){AP(b);}$t.ac=a;Ve_$callClinit();$t.Nf=XZ;a=new Sh;a.xh=$t;$t.Hc=a;} +function RL(){var a;a=new Sn;WZ=a;OY=27;} +function WF(){Bd_$callClinit();return OY;} +function Mc(){var a=this;T.call(a);a.Jb=null;a.Qd=0;a.bf=0;} +function YZ(b,c,d){var $r=new Mc();UJ($r,b,c,d);return $r;} +function UJ($t,a,b,c){$t.Jb=a;$t.ch=$t.Jb.ch;$t.Qd=b;$t.bf=c-b|0;} +function Cw($t){return Gz($t,0);} +function Gz($t,a){var b,c,d,e,f;if($t.ch!=$t.Jb.ch){b=new Tl;b.Ce=1;b.gl=1;WQ(b);}if(0<=a&&a<=$t.bf){b=new Bm;c=$t.Jb;a=a+$t.Qd|0;d=new Hg;e=c.ch;f=c.xk.data.length;d.Ik=c;d.Ff=a;d.Ef=a;d.qf=e;d.Bf=f;a=$t.Qd;e=$t.bf;b.Hi=d;b.Pg=$t;b.de=a;b.wf=b.de+e|0;return b;}b=new Pc;b.Ce=1;b.gl=1;WQ(b);} +function Sp($t){var a;if($t.ch==$t.Jb.ch){return $t.bf;}a=new Tl;a.Ce=1;a.gl=1;WQ(a);} +function Hj(){Mc.call(this);} +function ZZ(b,c,d){var $r=new Hj();AC($r,b,c,d);return $r;} +function AC($t,a,b,c){$t.Jb=a;$t.ch=$t.Jb.ch;$t.Qd=b;$t.bf=c-b|0;} +function Vc(){var a=this;E.call(a);a.pb=null;a.Nb=0;} +var A0=null;var B0=null;function Vc_$callClinit(){Vc_$callClinit=function(){}; +PF();} +function B(b){var $r=new Vc();Gh($r,b);return $r;} +function BS(b,c,d){var $r=new Vc();Un($r,b,c,d);return $r;} +function Gh($t,a){var b,c;Vc_$callClinit();a=a.data;b=a.length;$t.pb=$rt_createCharArray(b);c=0;while(c=0&&a<$t.pb.data.length){return $t.pb.data[a];}b=new Fn;b.Ce=1;b.gl=1;WQ(b);} +function C($t){return $t.pb.data.length;} +function HK($t){return $t.pb.data.length!=0?0:1;} +function D($t,a,b,c,d){var e,f,g;if(a>=0&&a<=b&&b<=$t.Uh()&&d>=0){c=c.data;if((d+(b-a|0)|0)<=c.length){while(a$t.pb.data.length){return 0;}c=0;while(c=0&&a<$t.hb.data.length){return $t.hb.data[a];}IP(OR());} -function C($t){return $t.hb.data.length;} -function DJ($t){return $t.hb.data.length!=0?0:1;} -function D($t,a,b,c,d){var e,f;if(a>=0&&a<=b&&b<=$t.Ch()&&d>=0){c=c.data;if((d+(b-a|0)|0)<=c.length){while(aC($t)){return 0;}c=0;while(cb){IP(DQ());}return CS($t.hb,a,b-a|0);} -function SH($t,a){return Fq($t,a,C($t));} -function PB($t,a,b){return Fq($t,a,b);} -function Kw($t){return $t;} -function Cz(a){Uc_$callClinit();return a===null?EJ(SP(6)):EJ(a.u());} -function YF($t,a){var b,c;if($t===a){return 1;}if(a instanceof Uc==0){return 0;}b=a;if(C(b)!=C($t)){return 0;}c=0;while(c=$t.Xg.data.length){$t.wh=0;}$t.Yb=$t.Yb+1|0;return a;} -function VJ($t){return Wt($t)!=0?null:$t.Xg.data[$t.wh];} -function Bx($t){return VJ($t);} -function AL($t,a){FF($t,a);} -function Sy($t){return CF($t);} -function As($t){return $t.sb>=$t.wh?$t.sb-$t.wh|0:($t.Xg.data.length-$t.wh|0)+$t.sb|0;} -function Wt($t){return $t.wh!=$t.sb?0:1;} -function FI($t,a){var b,c,d,e,f;if(a<$t.Xg.data.length){return;}b=RO($t.Xg.data.length*2|0,((a*3|0)/2|0)+1|0);if(b<1){b=2147483647;}c=MP(E,b);d=0;if($t.wh<=$t.sb){e=c.data;f=$t.wh;while(f<$t.sb){a=d+1|0;e[d]=$t.Xg.data[f];f=f+1|0;d=a;}}else{e=c.data;f=$t.wh;while(f<$t.Xg.data.length){a=d+1|0;e[d]=$t.Xg.data[f];f=f+1|0;d=a;}f=0;while(f<$t.sb){a=d+1|0;e[d]=$t.Xg.data[f];f=f+1|0;d=a;}}$t.wh=0;$t.sb=d;$t.Xg=c;} -function Te(){E.call(this);} -var UZ=null;function Te_$callClinit(){Te_$callClinit=function(){}; -OE();} -function H0(){var $r=new Te();Em($r);return $r;} -function FD($t){return;} -function Em($t){Te_$callClinit();OB($t);} -function OE(){UZ=H0();} -function Dh(){Z.call(this);} -function ST(){var $r=new Dh();HB($r);return $r;} -function RS(b){var $r=new Dh();Ou($r,b);return $r;} -function HB($t){Uw($t);} -function Ou($t,a){Ep($t,a);} -function Si(){var a=this;E.call(a);a.ik=null;a.nf=null;a.Rc=null;a.vi=null;} -function WV(b){var $r=new Si();RH($r,b);return $r;} -function RH($t,a){OB($t);$t.vi=CZ($t);$t.ik=Ht(a);} -function EL($t,a){$t.Rc=a;} -function Zo($t){$t.Rc.h($t.vi);} -function BK($t){return;} -function ML($t,a){$t.nf=a;$t.ik.href='#'+$rt_ustr($t.nf);} -function Pg(){L.call(this);} -function F(){var $r=new Pg();Rx($r);return $r;} -function Rx($t){Xq($t);} -function Zm(){E.call(this);} -function ZO(a){return PN(a,JK(LP(Zm)));} -function VN(a,b){CP(Yv(Up(Up(Up(UP(),a===null?SP(6):JK(Su(a))),SP(109)),b)));} -function CP(a){IP(KN(HS(a)));} -function KN(a){IP(ZO(a));} -function LO(a){if(NP(a,Eb)!=0&&NP(a,Oi)==0){VN(a,SP(110));}return FO(a);} -function FO(a){var b,$$je;a:{try{a=a;}catch($$e){$$je=$$e.$javaException;if($$je&&$$je instanceof Qd){b=$$je;break a;}else {throw $$e;}}return a;}IP(KN(b));} -function Om(){E.call(this);} -function RM(a,b){if(ab){b=a;}return b;} -function Vi(){var a=this;E.call(a);a.Jj=null;a.Ng=null;a.Oi=false;a.Ok=null;} -function VU(b){var $r=new Vi();Zp($r,b);return $r;} -function Zp($t,a){OB($t);$t.Ok=FW($t);$t.Jj=Ht(a);} -function Cu($t,a){$t.Ng=a;} -function PF($t){if($t.Oi==0){$t.Oi=1;$t.Jj.addEventListener("change",JM($t.Ok,"handleEvent"));}} -function Ys($t){if($t.Oi!=0){$t.Oi=0;$t.Jj.removeEventListener("change",JM($t.Ok,"handleEvent"));}} -function BN(a){return a.Jj;} -function LM(a){return a.Ng;} -function Cm(){E.call(this);this.ge=null;} -function UV(b){var $r=new Cm();NG($r,b);return $r;} -function NA($t){var a;a=Js($t.ge);Lb_$callClinit();return (a!==KT?0:1)==0?SP(11):SP(111);} -function NG($t,a){OB($t);$t.ge=a;} -function Zl(){E.call(this);this.Of=null;} -function LY(b){var $r=new Zl();Kx($r,b);return $r;} -function Ks($t){var a,b,c;a=$t.Of;b=MP(E,1);c=EB(a)<=0?0:1;b=b.data;a=Ox(c);b[0]=a;return Ox(ZE(b[0]));} -function Kx($t,a){OB($t);$t.Of=a;} -function Bm(){E.call(this);this.Si=null;} -function A0(b){var $r=new Bm();BC($r,b);return $r;} -function Qp($t){var a;a=Js($t.Si);Lb_$callClinit();return (a!==LT?0:1)==0?SP(11):SP(111);} -function BC($t,a){OB($t);$t.Si=a;} -function Tj(){var a=this;M.call(a);a.af=null;a.Bf=null;a.Ie=null;a.Ge=false;} -function DY(b){var $r=new Tj();JL($r,b);return $r;} -function JL($t,a){IG($t,a);} -function Do($t,a){$t.af=a;} -function Nq($t,a){$t.Bf=a;} -function AE($t){var a;a=ZE($t.af.g());if($t.Ge!=a){if(a==0){Dv(My($t.Ie));}else{if($t.Ie===null){$t.Ie=$t.Bf.l();}LG(My($t),My($t.Ie));}}$t.Ge=a;if($t.Ge!=0){Kr($t.Ie);}} -function Sz($t){if($t.Ie!==null){YI($t.Ie);}HF($t);} -function Am(){E.call(this);this.gd=null;} -function C0(b){var $r=new Am();Xt($r,b);return $r;} -function IF($t){var a;a=Js($t.gd);Lb_$callClinit();return (a!==NT?0:1)==0?SP(11):SP(111);} -function Xt($t,a){OB($t);$t.gd=a;} -function Ac(){var a=this;E.call(a);a.ff=0;a.Lb=0;a.Pi=0;} -var I0=null;function Ac_$callClinit(){Ac_$callClinit=function(){}; -Zw();} -function J0(b,c,d){var $r=new Ac();Xk($r,b,c,d);return $r;} -function Jw($t){return QW($t.ff,$t.Lb,$t.Pi);} -function Os($t){return Jw($t);} -function Xk($t,a,b,c){Ac_$callClinit();OB($t);if(c!=0){$t.ff=a;$t.Lb=TN(a,b,c);$t.Pi=c;return;}IP(XQ(SP(112)));} -function Zw(){I0=XT(null);} +function OO(a,b){a=new Wg;a.kk=b;b=new Dh;b.nf=a;return b;} +function Ri(){U.call(this);} +function L0(){var $r=new Ri();SA($r);return $r;} +function SA($t){} +function Io($t,a,b){if((b===null?1:0)!=0){return null;}if((typeof b=='string'?1:0)!=0){return $rt_str(b);}b=new Fd;a=GR(78);b.Ce=1;b.gl=1;b.Xf=a;WQ(b);} +function Pe(){O.call(this);} +var CW=null;function Pe_$callClinit(){Pe_$callClinit=function(){}; +Ww();} +function M0(){var $r=new Pe();Xh($r);return $r;} +function GH($t){Bc_$callClinit();return EU;} +function Wo($t){return 0;} +function Xh($t){var a;Pe_$callClinit();a=0;$t.fd=a;} +function Ww(){var a,b;a=new Pe;b=0;a.fd=b;CW=a;} +function Tn(){E.call(this);} +function JO(a,b){var c;if(a.bh===null){c=a.Xh;c=$rt_str(c.$meta.name);Vc_$callClinit();a.bh=c;}a:{b:{c:{c=a.bh;switch(Nt(c)){case 1344771639:break;case -1064886025:break c;default:break b;}if(XG(c,GR(2))==0){break b;}IP(ZQ(Xc));break a;}if(XG(c,GR(3))!=0){IP(ZQ(Xc));break a;}}}a=b;b=new Nh;b.gi=a;return b;} +function PQ(a,b){var c;c=new Hh;c.pf=a;if(b.bh===null){a=b.Xh;a=$rt_str(a.$meta.name);Vc_$callClinit();b.bh=a;}a:{b:{c:{b=b.bh;switch(Nt(b)){case 1344771639:break;case -1064886025:break c;default:break b;}if(XG(b,GR(2))==0){break b;}IP(ZQ(Xc));break a;}if(XG(b,GR(3))!=0){IP(ZQ(Xc));break a;}}}a=c;b=new Nh;b.gi=a;return b;} +function LQ(a){var b,c;b=window;c=new Hh;c.pf=b;if(a.bh===null){b=a.Xh;b=$rt_str(b.$meta.name);Vc_$callClinit();a.bh=b;}a:{b:{c:{b=a.bh;switch(Nt(b)){case 1344771639:break;case -1064886025:break c;default:break b;}if(XG(b,GR(2))==0){break b;}IP(ZQ(Xc));break a;}if(XG(b,GR(3))!=0){IP(ZQ(Xc));break a;}}}a=c;b=new Nh;b.gi=a;return b;} +function QN(a,b){a=a.location;b=$rt_ustr(b);a.hash=b;} +function Zi(){var a=this;X.call(a);a.jc=0;a.ph=null;a.Nh=0;a.Bb=0;} +function N0(){var $r=new Zi();Ap($r);return $r;} +function O0(b){var $r=new Zi();EF($r,b);return $r;} +function Ap($t){$t.ph=AR(E,9);} +function EF($t,a){$t.ph=AR(E,a+1|0);} +function DG($t,a){if(a===null){a=new Rg;a.Ce=1;a.gl=1;WQ(a);}HJ($t,Is($t)+1|0);$t.Nh=$t.Nh-1|0;if($t.Nh<0){$t.Nh=$t.Nh+$t.ph.data.length|0;}$t.ph.data[$t.Nh]=a;$t.jc=$t.jc+1|0;} +function AG($t){var a;a=IL($t);if(a!==null){return a;}a=new Rn;a.Ce=1;a.gl=1;WQ(a);} +function IL($t){var a;if($t.Nh==$t.Bb){return null;}a=$t.ph.data[$t.Nh];$t.ph.data[$t.Nh]=null;$t.Nh=$t.Nh+1|0;if($t.Nh>=$t.ph.data.length){$t.Nh=0;}$t.jc=$t.jc+1|0;return a;} +function AL($t){return ($t.Nh!=$t.Bb?0:1)!=0?null:$t.ph.data[$t.Nh];} +function Rx($t){return ($t.Nh!=$t.Bb?0:1)!=0?null:$t.ph.data[$t.Nh];} +function HM($t,a){DG($t,a);} +function Lz($t){var a;a=IL($t);if(a!==null){return a;}a=new Rn;a.Ce=1;a.gl=1;WQ(a);} +function Is($t){return $t.Bb>=$t.Nh?$t.Bb-$t.Nh|0:($t.ph.data.length-$t.Nh|0)+$t.Bb|0;} +function Fu($t){return $t.Nh!=$t.Bb?0:1;} +function HJ($t,a){var b,c,d,e,f;if(a<$t.ph.data.length){return;}b=$t.ph.data.length*2|0;c=((a*3|0)/2|0)+1|0;if(b>c){c=b;}if(c<1){c=2147483647;}d=AR(E,c);b=0;if($t.Nh<=$t.Bb){e=d.data;f=$t.Nh;while(f<$t.Bb){a=b+1|0;e[b]=$t.ph.data[f];f=f+1|0;b=a;}}else{e=d.data;f=$t.Nh;while(f<$t.ph.data.length){a=b+1|0;e[b]=$t.ph.data[f];f=f+1|0;b=a;}f=0;while(f<$t.Bb){a=b+1|0;e[b]=$t.ph.data[f];f=f+1|0;b=a;}}$t.Nh=0;$t.Bb=b;$t.ph=d;} +function Ve(){E.call(this);} +var XZ=null;function Ve_$callClinit(){Ve_$callClinit=function(){}; +MF();} +function P0(){var $r=new Ve();Jm($r);return $r;} +function DE($t){return;} +function Jm($t){Ve_$callClinit();} +function MF(){var a;a=new Ve;XZ=a;} +function Fh(){Z.call(this);} +function Q0(){var $r=new Fh();CC($r);return $r;} +function R0(b){var $r=new Fh();Zu($r,b);return $r;} +function CC($t){$t.Ce=1;$t.gl=1;} +function Zu($t,a){$t.Ce=1;$t.gl=1;$t.Xf=a;} +function Ui(){var a=this;E.call(a);a.Hk=null;a.Cf=null;a.bd=null;a.Ri=null;} +function S0(b){var $r=new Ui();TI($r,b);return $r;} +function TI($t,a){var b;b=new Uh;b.Wc=$t;$t.Ri=b;$t.Hk=a.hh;} +function LM($t,a){$t.bd=a;} +function Gp($t){$t.bd.h($t.Ri);} +function GL($t){return;} +function TM($t,a){$t.Cf=a;$t.Hk.href='#'+$rt_ustr($t.Cf);} +function Rg(){L.call(this);} +function F(){var $r=new Rg();Iy($r);return $r;} +function Iy($t){$t.Ce=1;$t.gl=1;} +function En(){E.call(this);} +function NQ(a){var b,c;b=ZQ(En);if(b.bh===null){c=b.Xh;c=$rt_str(c.$meta.name);Vc_$callClinit();b.bh=c;}return BP(a,b.bh);} +function HP(a,b){var c,d,e,f,g,h,i;if(a===null){c=GR(10);}else{a=a.constructor;if(a===null){d=null;}else{d=a.classObject;if(d===null){d=new Sl;d.Xh=a;a.classObject=d;}}if(d.bh===null){a=$rt_str(d.Xh.$meta.name);Vc_$callClinit();d.bh=a;}c=d.bh;}a=new Sg;S_$callClinit();e=16;a.ke=$rt_createCharArray(e);WA(a,a.Ii,c);c=GR(79);WA(a,a.Ii,c);WA(a,a.Ii,b);b=new Vc;f=a.ke;e=0;g=a.Ii;Vc_$callClinit();b.pb=$rt_createCharArray(g);h=0;while(hb){b=a;}return b;} +function Yi(){var a=this;E.call(a);a.ik=null;a.fh=null;a.nj=false;a.ml=null;} +function T0(b){var $r=new Yi();Hq($r,b);return $r;} +function Hq($t,a){var b;b=new Xl;b.ah=$t;$t.ml=b;$t.ik=a.hh;} +function Nu($t,a){$t.fh=a;} +function NG($t){if($t.nj==0){$t.nj=1;$t.ik.addEventListener("change",TN($t.ml,"handleEvent"));}} +function Gt($t){if($t.nj!=0){$t.nj=0;$t.ik.removeEventListener("change",TN($t.ml,"handleEvent"));}} +function LO(a){return a.ik;} +function VN(a){return a.fh;} +function Hm(){E.call(this);this.te=null;} +function U0(b){var $r=new Hm();NH($r,b);return $r;} +function IB($t){var a;a=$t.te.he;Lb_$callClinit();return (a!==KU?0:1)==0?GR(15):GR(80);} +function NH($t,a){$t.te=a;} +function Em(){E.call(this);this.eg=null;} +function V0(b){var $r=new Em();Ay($r,b);return $r;} +function Ss($t){var a,b,c;a=$t.eg;b=AR(E,1);c=ZB(a)<=0?0:1;Bc_$callClinit();a=c==0?EU:FU;b=b.data;b[0]=a;return b[0].Kj==0?EU:FU;} +function Ay($t,a){$t.eg=a;} +function Gm(){E.call(this);this.rj=null;} +function W0(b){var $r=new Gm();YC($r,b);return $r;} +function Yp($t){var a;a=$t.rj.he;Lb_$callClinit();return (a!==LU?0:1)==0?GR(15):GR(80);} +function YC($t,a){$t.rj=a;} +function Xj(){var a=this;M.call(a);a.rf=null;a.Rf=null;a.Ye=null;a.We=false;} +function X0(b){var $r=new Xj();QM($r,b);return $r;} +function QM($t,a){$t.Wk=a;} +function Jo($t,a){$t.rf=a;} +function Vq($t,a){$t.Rf=a;} +function YE($t){var a;a=$t.rf.g().Kj;if($t.We!=a){if(a==0){Qv($t.Ye.Wk);}else{if($t.Ye===null){$t.Ye=$t.Rf.l();}KD($t.Wk,$t.Ye.Wk,null);}}$t.We=a;if($t.We!=0){Sr($t.Ye);}} +function MA($t){var a,b,c,d,e,f;if($t.Ye!==null){a:{a=$t.Ye;if(a.Le!==null){b=a.Le;c=0;d=b.ch;e=b.lj;while(true){if((c>=e?0:1)==0){a.Le=null;break a;}if(d=b.lj){break;}b.gk.data[c].e();c=f;}a=new Pc;KF(a);WQ(a);}}Qv(a.Wk);}Qv($t.Wk);} +function Fm(){E.call(this);this.td=null;} +function Y0(b){var $r=new Fm();Hu($r,b);return $r;} +function GG($t){var a;a=$t.td.he;Lb_$callClinit();return (a!==NU?0:1)==0?GR(15):GR(80);} +function Hu($t,a){$t.td=a;} +function Ac(){var a=this;E.call(a);a.vf=0;a.Vb=0;a.oj=0;} +var Z0=null;function Ac_$callClinit(){Ac_$callClinit=function(){}; +Px();} +function A1(b,c,d){var $r=new Ac();Bl($r,b,c,d);return $r;} +function Yw($t){return AU($t.vf,$t.Vb,$t.oj);} +function Ws($t){return AU($t.vf,$t.Vb,$t.oj);} +function Bl($t,a,b,c){var d,e;Ac_$callClinit();if(c!=0){$t.vf=a;$t.Vb=FP(a,b,c);$t.oj=c;return;}d=new Fd;e=GR(81);d.Ce=1;d.gl=1;d.Xf=e;WQ(d);} +function Px(){var a;a=new Rh;Z0=a;} function Kc(){Ac.call(this);} -var K0=null;var L0=null;function Kc_$callClinit(){Kc_$callClinit=function(){}; -WA();} -function WS(b,c){var $r=new Kc();Li($r,b,c);return $r;} -function Li($t,a,b){Kc_$callClinit();Xk($t,a,b,1);} -function WA(){L0=CY(null);K0=WS(1,0);} -function Ik(){Fc.call(this);} +var B1=null;var C1=null;function Kc_$callClinit(){Kc_$callClinit=function(){}; +RB();} +function D1(b,c){var $r=new Kc();Ni($r,b,c);return $r;} +function Ni($t,a,b){var c;Kc_$callClinit();c=1;Ac_$callClinit();$t.vf=a;$t.Vb=FP(a,b,c);$t.oj=c;} +function RB(){var a,b,c,d;a=new Ck;C1=a;a=new Kc;b=1;c=0;d=1;Ac_$callClinit();a.vf=b;a.Vb=FP(b,c,d);a.oj=d;B1=a;} +function Mk(){Fc.call(this);} function Gb(){E.call(this);} -function Gk(){E.call(this);this.gk=null;} -function QV(b){var $r=new Gk();Yq($r,b);return $r;} -function Ut($t,a){var b,c;b=$t.gk;c=MP(E,1).data;a=Ox(ZE(a));c[0]=a;Yt(b,ZE(c[0]));NK();} -function Yq($t,a){OB($t);$t.gk=a;} -function Dk(){E.call(this);this.Me=null;} -function CU(b){var $r=new Dk();GF($r,b);return $r;} -function VL($t,a){var b,c;b=$t.Me;c=MP(E,1).data;c[0]=a;Fw(b,c[0]);NK();} -function GF($t,a){OB($t);$t.Me=a;} -function Ek(){E.call(this);this.dc=null;} -function IV(b){var $r=new Ek();XB($r,b);return $r;} -function WD($t,a){var b,c;b=$t.dc;b=b.Di;c=MP(E,1).data;c[0]=a;Yo(b,c[0]);NK();} -function XB($t,a){OB($t);$t.dc=a;} -function Fk(){E.call(this);this.gc=null;} -function WU(b){var $r=new Fk();Wv($r,b);return $r;} -function Xu($t,a){var b,c;b=$t.gc;b=b.Di;c=MP(E,1).data;c[0]=a;XJ(b,ZE(c[0]));NK();} -function Wv($t,a){OB($t);$t.gc=a;} +function Kk(){E.call(this);this.Fk=null;} +function E1(b){var $r=new Kk();Gr($r,b);return $r;} +function Du($t,a){var b,c,d;b=$t.Fk;c=AR(E,1);d=a.Kj;Bc_$callClinit();a=d==0?EU:FU;c=c.data;c[0]=a;Iu(b,c[0].Kj);TL();} +function Gr($t,a){$t.Fk=a;} +function Hk(){E.call(this);this.cf=null;} +function F1(b){var $r=new Hk();EG($r,b);return $r;} +function DN($t,a){var b,c,d;b=$t.cf;c=AR(E,1).data;c[0]=a;a=c[0];d=GR(14);if(a===null){AP(d);}b.wb=a;TL();} +function EG($t,a){$t.cf=a;} +function Ik(){E.call(this);this.nc=null;} +function G1(b){var $r=new Ik();UC($r,b);return $r;} +function UE($t,a){var b,c,d;b=$t.nc;b=b.aj;c=AR(E,1).data;c[0]=a;a=c[0];d=GR(14);if(a===null){AP(d);}b.Ok=a;TL();} +function UC($t,a){$t.nc=a;} +function Jk(){E.call(this);this.qc=null;} +function H1(b){var $r=new Jk();Kw($r,b);return $r;} +function Kv($t,a){var b,c;b=$t.qc;b=b.aj;c=AR(E,1).data;c[0]=a;b.Rk=c[0].Kj;TL();} +function Kw($t,a){$t.qc=a;} +function Oj(){E.call(this);} +function WP(a){a=new Ng;return a;} +function Pb(){var a=this;Hb.call(a);a.qb=null;a.Ph=null;} +function I1(){var $r=new Pb();GI($r);return $r;} +function GI($t){} +function LH($t,a){KD($t,a,null);} +function KD($t,a,b){var c,d,e,f;if(a.pd!==null){a=new Fd;b=GR(82);a.Ce=1;a.gl=1;a.Xf=b;WQ(a);}if(b!==null&&b.pd!==$t){a=new Fd;b=GR(83);a.Ce=1;a.gl=1;a.Xf=b;WQ(a);}a.pd=$t;if(b===null){a.yj=$t.Ph;if($t.Ph===null){$t.qb=a;}else{$t.Ph.ei=a;}$t.Ph=a;}else{a.ei=b;a.yj=b.yj;if(a.ei===null){$t.Ph=a;}else{a.ei.yj=a;}if(a.yj===null){$t.qb=a;}else{a.yj.ei=a;}}c=$t;while(c.pd!==null){c=c.pd;}d=c instanceof Zk==0?null:c;if(d===null){return;}e=new Array();a.N(e);if(e.length==0){return;}a:{if(b===null){c=null;while($t!== +null){if($t.ei!==null){c=$t.ei.eb();break a;}$t=$t.pd;}}else{a=b.qb;b:{while(true){if(a===null){c=null;break b;}c=a.eb();if(c!==null){break;}a=a.ei;}}}}f=0;while(f=Nu($t.nk)?$t.Zb:Oy($t.nk,b).Zb;if(c!==null){e=PS();a.M(e);f=c.vf.childNodes[d];e=SB(e);while(Dr(e)!=0){g=DE(e);h=c.vf;h.insertBefore(g.Ac,f);}}QI($t.nk,b,a);a.dd=$t;i=b;while(i=1073741824){return 1073741824;}if(a==0){return 16;}b=a-1|0;a=b|b>>1;a=a|a>>2;a=a|a>>4;a=a|a>>8;return (a|a>>16)+1|0;} -function VH($t,a,b){BA($t);if(a>=0&&b>0.0){a=NO(a);$t.ed=0;$t.me=AF($t,a);$t.Sk=b;Lx($t);return;}IP(YT());} -function Lx($t){$t.pj=$t.me.data.length*$t.Sk|0;} -function JF($t,a){var b;b=Cr($t,a);if(b===null){return null;}return b.Vh;} -function Cr($t,a){var b,c;if(a===null){b=FL($t);}else{c=GN(a);b=YC($t,a,c&($t.me.data.length-1|0),c);}return b;} -function YC($t,a,b,c){var d;d=$t.me.data[b];while(d!==null){if(d.Hc==c){if(UM(a,d.Qf)!=0){break;}}d=d.Mf;}return d;} -function FL($t){var a;a=$t.me.data[0];while(a!==null){if(a.Qf===null){break;}a=a.Mf;}return a;} -function Ir($t,a,b){return JE($t,a,b);} -function JE($t,a,b){var c,d,e,f;if(a===null){c=FL($t);if(c===null){$t.mk=$t.mk+1|0;c=Xw($t,null,0,0);d=$t.ed+1|0;$t.ed=d;if(d>$t.pj){Cy($t);}}}else{d=GN(a);e=d&($t.me.data.length-1|0);c=YC($t,a,e,d);if(c===null){$t.mk=$t.mk+1|0;c=Xw($t,a,e,d);d=$t.ed+1|0;$t.ed=d;if(d>$t.pj){Cy($t);}}}f=c.Vh;c.Vh=b;return f;} -function Xw($t,a,b,c){var d;d=NW(a,c);d.Mf=$t.me.data[b];$t.me.data[b]=d;return d;} -function YD($t,a){var b,c,d,e,f,g,h;b=NO(a==0?1:a<<1);c=AF($t,b);d=0;b=b-1|0;while(d<$t.me.data.length){e=$t.me.data[d];$t.me.data[d]=null;while(e!==null){f=c.data;g=e.Hc&b;h=e.Mf;e.Mf=f[g];f[g]=e;e=h;}d=d+1|0;}$t.me=c;Lx($t);} -function Cy($t){YD($t,$t.me.data.length);} -function GN(a){return a.V();} -function UM(a,b){return a!==b&&a.H(b)==0?0:1;} -function Oj(){var a=this;E.call(a);a.xk=null;a.Je=null;a.Ub=false;} -function EU(b){var $r=new Oj();NL($r,b);return $r;} -function NL($t,a){OB($t);$t.Ub=1;$t.xk=Ht(a);} -function Dx($t,a){$t.Je=a;} -function Lu($t){var a;a=ZE(Hq($t.Je));if(a!=$t.Ub){$t.Ub=a;$t.xk.disabled=!!(a!=0?0:1);}} -function Sx($t){return;} -function Ge(){O.call(this);} -var JT=null;function Ge_$callClinit(){Ge_$callClinit=function(){}; -Jy();} -function S0(){var $r=new Ge();Mj($r);return $r;} -function MF($t,a){return Ox(Pw($t,a));} -function Pw($t,a){EP(a,SP(9));return 1;} -function Mj($t){Ge_$callClinit();DI($t,1);} -function Jy(){JT=S0();} -function Ve(){O.call(this);} -var MT=null;function Ve_$callClinit(){Ve_$callClinit=function(){}; -Dp();} -function T0(){var $r=new Ve();Jn($r);return $r;} -function Xn($t,a){return Ox(XA($t,a));} -function XA($t,a){EP(a,SP(9));return Fr(a);} -function Jn($t){Ve_$callClinit();DI($t,1);} -function Dp(){MT=T0();} -function Jh(){var a=this;E.call(a);a.Wh=0;a.Tb=0;a.fi=null;} -function JW(b,c,d){var $r=new Jh();CC($r,b,c,d);return $r;} -function CC($t,a,b,c){OB($t);$t.Wh=a;$t.Tb=b;$t.fi=c;} -function Ci(){var a=this;E.call(a);a.eh=null;a.fh=null;} -function YU(b,c){var $r=new Ci();Qy($r,b,c);return $r;} -function Rr($t,a){var b,c;a=$t.eh;b=$t.fh;c=MP(E,1);b=b;b=b.Di;c=c.data;c[0]=b;Cp(a,c[0]);NK();} -function Qy($t,a,b){OB($t);$t.eh=a;$t.fh=b;} -function Zh(){E.call(this);this.kh=null;} -function IU(b){var $r=new Zh();QJ($r,b);return $r;} -function Wr($t,a){Zq($t.kh);NK();} -function QJ($t,a){OB($t);$t.kh=a;} -function Fm(){Sb.call(this);} -function Gi(){E.call(this);this.Qe=null;} -function XV(b){var $r=new Gi();HD($r,b);return $r;} -function MI($t,a){var b,c;b=$t.Qe;c=MP(E,1).data;c[0]=a;IA(LC(b,c[0]));NK();} -function HD($t,a){OB($t);$t.Qe=a;} -function Di(){var a=this;E.call(a);a.Ee=null;a.De=null;} -function CW(b,c){var $r=new Di();Qs($r,b,c);return $r;} -function Pt($t,a){var b,c;a=$t.Ee;b=$t.De;c=MP(E,1);b=b;b=b.Di;c=c.data;c[0]=b;LA(a,c[0]);NK();} -function Qs($t,a,b){OB($t);$t.Ee=a;$t.De=b;} -function Ei(){var a=this;E.call(a);a.ek=null;a.bk=null;} -function SV(b,c){var $r=new Ei();RK($r,b,c);return $r;} -function Gu($t,a){var b,c;a=$t.ek;b=$t.bk;c=MP(E,1);b=b;b=b.Di;c=c.data;c[0]=b;LA(a,c[0]);NK();} -function RK($t,a,b){OB($t);$t.ek=a;$t.bk=b;} -function Bi(){var a=this;E.call(a);a.yh=null;a.zh=null;} -function SU(b,c){var $r=new Bi();Ms($r,b,c);return $r;} -function Yy($t,a){var b,c;a=$t.yh;b=$t.zh;c=MP(E,1);b=b;b=b.Di;c=c.data;c[0]=b;CM(a,c[0]);NK();} -function Ms($t,a,b){OB($t);$t.yh=a;$t.zh=b;} -function Hi(){E.call(this);this.Rd=null;} -function B0(b){var $r=new Hi();AH($r,b);return $r;} -function Zt($t,a){Dz($t.Rd);NK();} -function AH($t,a){OB($t);$t.Rd=a;} -function Ii(){E.call(this);this.Dj=null;} -function ZZ(b){var $r=new Ii();No($r,b);return $r;} -function Yp($t,a){var b,c;b=$t.Dj;c=MP(E,1).data;c[0]=a;Xv(LC(b,c[0]));NK();} -function No($t,a){OB($t);$t.Dj=a;} -function Rg(){E.call(this);} -function OO(a,b){var c;c=a%b|0;if(c<0){c=c+b|0;}return c;} -function HM(a,b,c){return OO(OO(a,c)-OO(b,c)|0,c);} -function TN(a,b,c){if(c>0){return b-HM(b,a,c)|0;}if(c<0){return b+HM(a,b, -c)|0;}IP(XQ(SP(114)));} -function Fi(){E.call(this);this.Kj=null;} -function EW(b){var $r=new Fi();GI($r,b);return $r;} -function OL($t,a){var b,c;b=$t.Kj;c=MP(E,1).data;c[0]=a;Nr(LC(b,c[0]));NK();} -function GI($t,a){OB($t);$t.Kj=a;} -function Gg(){var a=this;E.call(a);a.mg=null;a.sg=null;a.wi=false;} -function BU(b){var $r=new Gg();Iv($r,b);return $r;} -function Iv($t,a){OB($t);$t.mg=a;} -function Uy($t,a){$t.sg=a;} -function Sw($t){if($t.wi==0){$t.wi=1;Zn($t.mg,$t.sg);}} -function UA($t){if($t.wi!=0){$t.wi=0;Xz($t.mg,$t.sg);}} -function Xj(){Cb.call(this);} -function RY(){var $r=new Xj();HI($r);return $r;} -function HI($t){Tn($t);} -function Yk(){var a=this;E.call(a);a.qk=null;a.tk=false;} -function IT(){var $r=new Yk();Mq($r);return $r;} -function Es($t){return $t.qk;} -function Yo($t,a){EP(a,SP(10));$t.qk=a;} -function Fr($t){return $t.tk;} -function XJ($t,a){$t.tk=a;} -function Mq($t){OB($t);$t.qk=SP(11);} -function Nn(){E.call(this);} -function U0(){var $r=new Nn();Hx($r);return $r;} -function VZ(b){var $r=new Nn();Hp($r,b);return $r;} -function Ez($t){return YE();} -function Hx($t){OB($t);} -function Hp($t,a){Hx($t);} -function Vk(){Ob.call(this);this.vf=null;} -function O0(b){var $r=new Vk();Ow($r,b);return $r;} -function Ow($t,a){DH($t);$t.vf=a;} -function Dn(){var a=this;M.call(a);a.Fk=null;a.ld=null;a.pg=null;a.tb=null;a.Yg=false;} -function EY(b){var $r=new Dn();PL($r,b);return $r;} -function PL($t,a){IG($t,a);$t.Yg=1;} -function WH($t,a){$t.Fk=a;} -function Au($t,a){$t.ld=a;} -function KK($t){var a,b,c;a=null;b=SB($t.Fk);a:{while(true){if(Dr(b)==0){c=a;break a;}c=DE(b);if(NH(c.Xf)!=0){break;}}}if(!($t.Yg==0&&$t.tb===c)){if($t.pg!==null){YI($t.pg);$t.pg=null;}$t.tb=c;if($t.tb!==null){a=$t.tb;$t.pg=CB(a.Vd);}else if($t.ld!==null){a=$t.ld;$t.pg=UJ(a.mh);}LG(My($t),My($t.pg));$t.Yg=0;}if($t.pg!==null){Kr($t.pg);}} -function Kt($t){HF($t);if($t.pg!==null){YI($t.pg);$t.pg=null;}} -function Ih(){Y.call(this);this.Yj=null;} -function MY(b){var $r=new Ih();Mw($r,b);return $r;} -function Mw($t,a){YH($t);$t.Yj=a;} -function Vn($t,a){return $t.Yj.data[a];} -function Ot($t){return $t.Yj.data.length;} -$rt_metadata([E,"java.lang.Object",0,[],0,0,["a",function(){OB(this);},"Hh",function(){return Su(this);},"V",function(){return Zy(this);},"H",function(b){return Bp(this,b);},"u",function(){return Nw(this);},"ob",function(){return Ro(this);},"Nk",function(){return SK(this);}],U,"org.teavm.flavour.templates.Fragment",E,[],0,0,[],Bh,"org.teavm.flavour.templates.Fragment$proxy6",E,[U],0,0,["l",function(){return UB(this);},"Nd",function(b){CD(this,b);}],Rb,"java.lang.Throwable",E,[],0,0,["a",function(){ME(this); -},"f",function(b){JI(this,b);},"Kh",function(){return KC(this);},"Q",function(){return Kq(this);},"Ah",function(b){VE(this,b);}],Z,"java.lang.Exception",Rb,[],0,0,["a",function(){Uw(this);},"f",function(b){Ep(this,b);}],L,"java.lang.RuntimeException",Z,[],0,0,["a",function(){Xq(this);},"f",function(b){OG(this,b);}],Pc,"java.lang.IndexOutOfBoundsException",L,[],0,0,["a",function(){Yw(this);}],Ah,"org.teavm.flavour.templates.Fragment$proxy5",E,[U],0,0,["l",function(){return Nz(this);},"b",function(b){Wu(this, -b);}],Ug,"org.teavm.flavour.templates.Fragment$proxy0",E,[U],0,0,["l",function(){return Tz(this);},"b",function(b){EG(this,b);}],Eb,"kotlin.jvm.internal.markers.KMappedMarker",E,[],0,0,[],Wg,"org.teavm.flavour.templates.Fragment$proxy2",E,[U],0,0,["l",function(){return Et(this);},"Dc",function(b,c){Io(this,b,c);}],P,"org.teavm.flavour.templates.Renderable",E,[],0,0,[],He,"org.teavm.flavour.templates.Component",E,[P],0,0,[],Vg,"org.teavm.flavour.templates.Fragment$proxy1",E,[U],0,0,["l",function(){return LI(this); -},"b",function(b){MB(this,b);}],Q,"java.io.Serializable",E,[],0,0,[],Sc,"java.lang.Number",E,[Q],0,0,["a",function(){LH(this);}],Db,"java.lang.Comparable",E,[],0,0,[],Cd,"java.lang.Integer",Sc,[Db],0,Cd_$callClinit,["r",function(b){Jk(this,b);},"pk",function(){return Zs(this);},"u",function(){return QG(this);},"H",function(b){return HJ(this,b);}],Ze,"kotlin.ranges.ClosedRange",E,[],0,0,[],Qk,"java.lang.CloneNotSupportedException",Z,[],0,0,["a",function(){XH(this);}],Tb,"kotlin.Function",E,[],0,0,[],Af,"kotlin.jvm.internal.FunctionBase", -E,[Tb,Q],0,0,[],Zg,"org.teavm.flavour.templates.Fragment$proxy4",E,[U],0,0,["l",function(){return UJ(this);},"a",function(){Ao(this);}],Xg,"org.teavm.flavour.templates.Fragment$proxy3",E,[U],0,0,["l",function(){return CB(this);},"a",function(){Tw(this);}],Qc,"org.teavm.flavour.routing.Route",E,[],0,0,["Hb",function(b){return Jr(this,b);},"wb",function(b){return FG(this,b);}],Wc,"org.teavm.flavour.example.todomvc.TodoRoute",E,[Qc],0,0,["Hb",function(b){return Jr(this,b);},"wb",function(b){return FG(this,b);}],Hb, -"org.teavm.flavour.templates.Space",E,[],0,0,["a",function(){Ly(this);},"pc",function(){return Rs(this);},"Sj",function(){Dv(this);},"W",function(b){Oo(this,b);},"Ji",function(){return RB(this);}],Cj,"org.teavm.flavour.templates.NodeHolder",Hb,[],0,0,["db",function(b){OK(this,b);},"M",function(b){Mx(this,b);}],V,"org.teavm.jso.JSObject",E,[],0,0,[],Wd,"org.teavm.jso.dom.xml.Node",E,[V],0,0,[],Yd,"org.teavm.jso.dom.xml.Document",E,[Wd],0,0,[],X,"org.teavm.jso.dom.events.EventTarget",E,[V],0,0,[],Al,"org.teavm.jso.dom.html.HTMLDocument", -E,[Yd,X],0,0,[],Vb,"java.lang.Runnable",E,[],0,0,[],Jb,"java.lang.Thread",E,[Vb],0,Jb_$callClinit,["f",function(b){Ti(this,b);},"bc",function(b,c){Uj(this,b,c);},"Q",function(){return EI(this);}],Be,"java.util.Map",E,[],0,0,[],Fd,"kotlin.text.CharsKt__CharJVMKt",E,[],0,0,[],Qe,"org.teavm.flavour.example.todomvc.TodoDataSource",E,[],0,0,[],Nc,"org.teavm.flavour.example.todomvc.LocalStorageTodoDataSource",E,[Qe],0,Nc_$callClinit,["ki",function(){return JC(this);},"Cf",function(b){XL(this,b);},"ll",function(b) -{YG(this,b);},"se",function(){IJ(this);},"Uk",function(){return FA(this);},"hh",function(b){Wx(this,b);},"a",function(){Wj(this);}],Ld,"java.lang.CharSequence",E,[],0,0,[],Md,"java.lang.Error",Rb,[],0,0,["f",function(b){Wz(this,b);}],Sb,"java.lang.LinkageError",Md,[],0,0,["f",function(b){Cq(this,b);}],Ee,"org.teavm.jso.dom.events.LoadEventTarget",E,[X],0,0,[],R,"org.teavm.flavour.json.tree.Node",E,[V],0,0,[],Ok,"org.teavm.flavour.json.tree.ArrayNode",R,[],0,0,[],An,"java.lang.StringIndexOutOfBoundsException", -Pc,[],0,0,["a",function(){SC(this);}],Ai,"org.teavm.flavour.json.deserializer.JsonDeserializerContext",E,[],0,0,["a",function(){Gr(this);}],Yb,"java.util.Iterator",E,[],0,0,[],Dc,"kotlin.collections.IntIterator",E,[Yb,Eb],0,0,["a",function(){RA(this);}],S,"java.lang.AbstractStringBuilder",E,[Q,Ld],0,S_$callClinit,["a",function(){Ri(this);},"r",function(b){Gh(this,b);},"f",function(b){Cn(this,b);},"dk",function(b){Bk(this,b);},"ml",function(b){return Du(this,b);},"Y",function(b,c){return CA(this,b,c);},"jd", -function(b,c){return Ls(this,b,c);},"yc",function(b,c,d){return PH(this,b,c,d);},"rj",function(b){return OH(this,b);},"X",function(b,c){return TB(this,b,c);},"D",function(b){Yu(this,b);},"u",function(){return Tq(this);},"rh",function(b,c){Is(this,b,c);}],Ye,"java.lang.Appendable",E,[],0,0,[],Qg,"java.lang.StringBuilder",S,[Ye],0,0,["a",function(){OI(this);},"f",function(b){Xp(this,b);},"re",function(b){return Up(this,b);},"ai",function(b){return Eq(this,b);},"ce",function(b,c){return TJ(this,b,c);},"Kd",function(b, -c){return GK(this,b,c);},"u",function(){return Yv(this);},"D",function(b){QK(this,b);},"X",function(b,c){return Aq(this,b,c);},"Y",function(b,c){return HL(this,b,c);}],M,"org.teavm.flavour.templates.AbstractComponent",E,[He],0,0,["n",function(b){IG(this,b);},"e",function(){HF(this);},"Zc",function(){return My(this);}],N,"java.util.function.Consumer",E,[],0,0,[],Fh,"$$LAMBDA2$$",E,[N],0,0,["P",function(b){RL(this,b);},"h",function(b){Ps(this,b);},"bb",function(b){Lt(this,b);}],Ol,"java.util.ConcurrentModificationException", -L,[],0,0,["a",function(){IK(this);}],Cc,"kotlin.text.StringsKt__IndentKt",E,[],0,0,[],Gd,"kotlin.text.StringsKt__RegexExtensionsKt",Cc,[],0,0,[],Nk,"org.teavm.flavour.routing.parsing.PathParser$PathParserElement",E,[],0,0,[],Qd,"java.lang.ClassCastException",L,[],0,0,["f",function(b){Iw(this,b);}],Pf,"kotlin.TypeCastException",Qd,[],0,0,["f",function(b){MD(this,b);}],Ib,"org.teavm.flavour.json.serializer.JsonSerializer",E,[],0,0,[],Rm,"org.teavm.flavour.json.serializer.JsonSerializer$proxy1",E,[Ib],0,0,["y", -function(b,c){return DM(this,b,c);},"a",function(){QE(this);}],K,"java.util.function.Supplier",E,[],0,0,[],Qm,"org.teavm.flavour.json.serializer.JsonSerializer$proxy0",E,[Ib],0,0,["y",function(b,c){return Vz(this,b,c);},"a",function(){Ns(this);}],Sm,"org.teavm.flavour.json.serializer.JsonSerializer$proxy2",E,[Ib],0,0,["y",function(b,c){return Uq(this,b,c);},"a",function(){DF(this);}],Nf,"org.teavm.flavour.widgets.RouteBinder",E,[],0,0,["a",function(){ZA(this);},"P",function(b){Wp(this,b);},"ke",function(b){ -PD(this,b);},"Eb",function(b){return By(this,b);},"m",function(){Ey(this);},"Cd",function(b,c){return Lo(this,b,c);},"cj",function(b){AG(this,b);}],Td,"org.teavm.flavour.json.serializer.NullableSerializer",E,[Ib],0,0,["a",function(){HG(this);},"y",function(b,c){return Hs(this,b,c);}],Pk,"org.teavm.flavour.json.serializer.ListSerializer",Td,[],0,0,["pb",function(b){BD(this,b);},"Gg",function(b,c){return AM(this,b,c);}],Qn,"java.lang.StackTraceElement",E,[Q],0,0,[],Bf,"org.teavm.flavour.regex.Matcher",E,[],0, -0,["mj",function(b){return Yr(this,b);}],T,"org.teavm.flavour.json.deserializer.JsonDeserializer",E,[],0,0,["a",function(){Ts(this);}],Le,"java.io.Flushable",E,[],0,0,[],Lf,"org.teavm.flavour.routing.parsing.PathParserResult",E,[],0,0,["Bk",function(b,c,d){Vu(this,b,c,d);},"rk",function(){return WE(this);}],Bj,"org.teavm.flavour.example.todomvc.LocalStorageTodoDataSource$Companion",E,[],0,0,["aj",function(){return KB(this);},"a",function(){MK(this);},"w",function(b){ZJ(this,b);}],Vc,"kotlin.text.StringsKt__StringBuilderJVMKt", -Gd,[],0,0,[],Yc,"kotlin.text.StringsKt__StringBuilderKt",Vc,[],0,0,[],Jd,"kotlin.text.StringsKt__StringNumberConversionsKt",Yc,[],0,0,[],Hd,"kotlin.text.StringsKt__StringsJVMKt",Jd,[],0,0,[],Ud,"kotlin.text.StringsKt__StringsKt",Hd,[],0,0,[],Od,"kotlin.text.StringsKt___StringsKt",Ud,[],0,0,[],Vl,"kotlin.text.StringsKt",Od,[],0,0,[],O,"kotlin.jvm.internal.Lambda",E,[Af],0,0,["r",function(b){DI(this,b);}],Fb,"kotlin.jvm.functions.Function1",E,[Tb],0,0,[],Ue,"org.teavm.flavour.example.todomvc.TodoView$active$1", -O,[Fb],0,Ue_$callClinit,["x",function(b){return VC(this,b);},"t",function(b){return Aw(this,b);},"a",function(){Sg(this);}],Pb,"java.lang.IncompatibleClassChangeError",Sb,[],0,0,["f",function(b){SE(this,b);}],Ul,"java.lang.NoSuchMethodError",Pb,[],0,0,["f",function(b){Tx(this,b);}],Je,"org.teavm.flavour.routing.emit.PathImplementor",E,[],0,0,[],Ln,"org.teavm.flavour.routing.emit.PathImplementor$proxy0",E,[Je],0,0,["Vk",function(b,c){return FH(this,b,c);},"uc",function(b){return SA(this,b);},"el",function(b) -{WB(this,b);}],Kk,"org.teavm.flavour.templates.Templates$RootComponent",M,[],0,0,["nh",function(b,c){Un(this,b,c);},"d",function(){IL(this);},"e",function(){Zu(this);}],Lc,"org.teavm.flavour.widgets.ApplicationTemplate",E,[Qc],0,0,["a",function(){BH(this);},"rb",function(b){SG(this,b);},"Hb",function(b){return Jr(this,b);},"wb",function(b){return FG(this,b);}],Xe,"org.teavm.flavour.example.todomvc.TodoView",Lc,[Wc],0,Xe_$callClinit,["Ph",function(){return KA(this);},"lb",function(){return WC(this);},"Oc",function() -{return NE(this);},"ni",function(b){Fw(this,b);},"Ti",function(){return Hv(this);},"qc",function(){return UI(this);},"Tc",function(){return Js(this);},"zk",function(){return Vr(this);},"ok",function(){return EB(this);},"we",function(){return TH(this);},"Xi",function(b){Yt(this,b);},"bg",function(){Zq(this);},"ae",function(b){Cp(this,b);},"vb",function(b){PJ(this,b);},"tf",function(b){LA(this,b);},"qj",function(b){CM(this,b);},"Gd",function(){Dz(this);},"I",function(){Fv(this);},"K",function(){DB(this);},"Z", -function(){Or(this);},"yi",function(b){return LC(this,b);},"Dk",function(){Vs(this);},"Vf",function(b){Mf(this,b);},"Hb",function(b){return Jr(this,b);},"wb",function(b){return FG(this,b);}],Th,"org.teavm.flavour.routing.emit.RoutingImpl",E,[],0,0,[],Ki,"org.teavm.flavour.routing.parsing.PathParser",E,[],0,0,["cl",function(b,c){Jo(this,b,c);},"Og",function(b){return PA(this,b);}],Nm,"org.teavm.flavour.example.todomvc.TodoList",E,[],0,0,["Cb",function(){return Sp(this);},"a",function(){JJ(this);}],Rh,"java.util.AbstractList$1", -E,[Yb],0,0,["Ef",function(b){Lv(this,b);},"F",function(){return Dr(this);},"z",function(){return DE(this);},"vj",function(){DG(this);},"O",function(){Gy(this);}],Yl,"org.teavm.flavour.routing.internal.Matcher0",E,[Bf],0,0,["a",function(){Lw(this);},"gg",function(){return Ct(this);},"qb",function(){return NJ(this);},"ol",function(b,c,d,e){return So(this,b,c,d,e);},"mj",function(b){return Yr(this,b);}],Ab,"org.teavm.jso.dom.events.EventListener",E,[V],0,0,[],Aj,"$$LAMBDA1$$",E,[Ab],0,0,["Kk",function(b){XC(this, -b);},"q",function(b){Ko(this,b);},"mc",function(b){SD(this,b);},"p",function(b){return Uo(this,b);}],Yh,"java.lang.Runnable$proxy0",E,[Vb],0,0,["fb",function(){Gv(this);},"j",function(b,c){ZK(this,b,c);}],Rj,"org.teavm.flavour.json.JSON",E,[],0,0,[],Ph,"kotlin.ranges.IntProgression$Companion",E,[],0,0,["a",function(){TD(this);},"w",function(b){Eo(this,b);}],Hh,"java.lang.reflect.Array",E,[],0,0,[],Zb,"java.util.ListIterator",E,[Yb],0,0,[],J,"org.teavm.flavour.templates.Modifier",E,[],0,0,[],El,"org.teavm.flavour.templates.Modifier$proxy2", -E,[J],0,0,["c",function(b){return Pr(this,b);},"b",function(b){Ws(this,b);}],Hl,"org.teavm.flavour.templates.Modifier$proxy3",E,[J],0,0,["c",function(b){return CL(this,b);},"b",function(b){Uz(this,b);}],Dl,"org.teavm.flavour.templates.Modifier$proxy0",E,[J],0,0,["c",function(b){return Nv(this,b);},"b",function(b){Ky(this,b);}],Fl,"org.teavm.flavour.templates.Modifier$proxy1",E,[J],0,0,["c",function(b){return IE(this,b);},"b",function(b){Ay(this,b);}],Zj,"org.teavm.platform.plugin.ResourceAccessor",E,[],0,0, -[],Ck,"org.teavm.flavour.json.deserializer.ListDeserializer",T,[],0,0,["vk",function(b){Qu(this,b);},"E",function(b,c){return PI(this,b,c);}],Ji,"java.lang.NoSuchFieldError",Pb,[],0,0,["f",function(b){Vw(this,b);}],Xc,"kotlin.collections.CollectionsKt__CollectionsKt",E,[],0,0,[],Rf,"org.teavm.flavour.templates.Modifier$proxy10",E,[J],0,0,["c",function(b){return CK(this,b);},"j",function(b,c){DL(this,b,c);}],Dd,"java.lang.Iterable",E,[],0,0,[],Kb,"java.util.Collection",E,[Dd],0,0,[],W,"java.util.AbstractCollection", -E,[Kb],0,0,["a",function(){XF(this);},"G",function(){return AB(this);},"qg",function(b){return Np(this,b);},"Ob",function(b){return IB(this,b);},"ti",function(b){return Mu(this,b);}],Kl,"org.teavm.flavour.templates.Modifier$proxy8",E,[J],0,0,["c",function(b){return Cw(this,b);},"k",function(b){RJ(this,b);}],Ml,"org.teavm.flavour.templates.Modifier$proxy9",E,[J],0,0,["c",function(b){return Mr(this,b);},"j",function(b,c){OC(this,b,c);}],Il,"org.teavm.flavour.templates.Modifier$proxy6",E,[J],0,0,["c",function(b) -{return Ww(this,b);},"C",function(b,c){Gt(this,b,c);}],Tf,"org.teavm.flavour.templates.Modifier$proxy14",E,[J],0,0,["c",function(b){return Gp(this,b);},"j",function(b,c){HK(this,b,c);}],Ll,"org.teavm.flavour.templates.Modifier$proxy7",E,[J],0,0,["c",function(b){return Ku(this,b);},"k",function(b){Hr(this,b);}],Uf,"org.teavm.flavour.templates.Modifier$proxy13",E,[J],0,0,["c",function(b){return Px(this,b);},"k",function(b){Zx(this,b);}],Zd,"org.teavm.flavour.example.todomvc.TodoView$Companion$main$1",E,[N],0, -Zd_$callClinit,["h",function(b){TL(this,b);},"hc",function(b){Ux(this,b);},"a",function(){Nh(this);}],Gl,"org.teavm.flavour.templates.Modifier$proxy4",E,[J],0,0,["c",function(b){return Iq(this,b);},"b",function(b){XK(this,b);}],Vf,"org.teavm.flavour.templates.Modifier$proxy12",E,[J],0,0,["c",function(b){return Vv(this,b);},"k",function(b){HE(this,b);}],Jl,"org.teavm.flavour.templates.Modifier$proxy5",E,[J],0,0,["c",function(b){return TF(this,b);},"b",function(b){Rq(this,b);}],Qf,"org.teavm.flavour.templates.Modifier$proxy11", -E,[J],0,0,["c",function(b){return VG(this,b);},"j",function(b,c){Dt(this,b,c);}],Cg,"org.teavm.flavour.templates.Modifier$proxy18",E,[J],0,0,["c",function(b){return KG(this,b);},"b",function(b){YB(this,b);}],Dg,"org.teavm.flavour.templates.Modifier$proxy17",E,[J],0,0,["c",function(b){return KL(this,b);},"b",function(b){WG(this,b);}],Eg,"org.teavm.flavour.templates.Modifier$proxy16",E,[J],0,0,["c",function(b){return Jq(this,b);},"C",function(b,c){LF(this,b,c);}],Sf,"org.teavm.flavour.templates.Modifier$proxy15", -E,[J],0,0,["c",function(b){return QF(this,b);},"j",function(b,c){Xr(this,b,c);}],Bg,"org.teavm.flavour.templates.Modifier$proxy19",E,[J],0,0,["c",function(b){return Ss(this,b);},"b",function(b){Qx(this,b);}],Sl,"org.teavm.flavour.components.html.CheckedChangeBinder$1",E,[Ab],0,0,["Td",function(b){Bo(this,b);},"q",function(b){CJ(this,b);},"p",function(b){return YJ(this,b);}],Vd,"org.teavm.flavour.example.todomvc.TodoView$todoFilter$1",O,[Fb],0,Vd_$callClinit,["x",function(b){return Fo(this,b);},"t",function(b) -{return GH(this,b);},"a",function(){Lk(this);}],Wh,"org.teavm.flavour.routing.emit.RoutingImpl$PROXY$6",E,[],0,0,[],Sj,"org.teavm.jso.impl.JS",E,[],0,0,[],Xh,"org.teavm.flavour.routing.emit.RoutingImpl$PROXY$3",E,[],0,0,[],Uh,"org.teavm.flavour.routing.emit.RoutingImpl$PROXY$1",E,[],0,0,[],Fc,"kotlin.text.CharsKt__CharKt",Fd,[],0,0,[],Yi,"org.teavm.classlib.impl.unicode.UnicodeHelper",E,[],0,0,[],Bl,"java.util.Objects",E,[],0,0,[],Ic,"org.teavm.flavour.templates.Templates",E,[],0,Ic_$callClinit,[],Xd,"java.util.Map$Entry", -E,[],0,0,[],Nb,"java.lang.Cloneable",E,[],0,0,[],Rd,"java.util.MapEntry",E,[Xd,Nb],0,0,["Pk",function(b,c){UK(this,b,c);}],Yg,"java.util.HashMap$HashEntry",Rd,[],0,0,["ne",function(b,c){Bw(this,b,c);}],Sk,"org.teavm.flavour.components.standard.ForEachComponent",M,[],0,0,["n",function(b){WF(this,b);},"Pc",function(b){BG(this,b);},"Th",function(){return NF(this);},"S",function(b){ZB(this,b);},"d",function(){AC(this);},"e",function(){Mp(this);}],Pd,"kotlin.collections.CollectionsKt__IterablesKt",Xc,[],0,0,[],Zc, -"kotlin.collections.CollectionsKt__IteratorsKt",Pd,[],0,0,[],Jc,"kotlin.collections.CollectionsKt__MutableCollectionsKt",Zc,[],0,0,[],Nd,"kotlin.collections.CollectionsKt__ReversedViewsKt",Jc,[],0,0,[],Kd,"kotlin.collections.CollectionsKt___CollectionsKt",Nd,[],0,0,[],Hn,"kotlin.collections.CollectionsKt",Kd,[],0,0,[],Pm,"kotlin.ranges.IntProgressionIterator",Dc,[],0,0,["F",function(){return Cs(this);},"Mj",function(){return Ev(this);},"R",function(b,c,d){Op(this,b,c,d);}],Ae,"java.util.Queue",E,[Kb],0,0,[],Tl, -"$$LAMBDA4$$",E,[Ab],0,0,["Xj",function(b){YA(this,b);},"q",function(b){Cx(this,b);},"p",function(b){return MJ(this,b);}],Lj,"org.teavm.flavour.routing.parsing.PathParser$PathParserCase",E,[],0,0,["a",function(){Fz(this);}],Of,"org.teavm.flavour.json.tree.NullNode",R,[],0,0,[],Ie,"org.teavm.flavour.templates.ModifierTarget",E,[],0,0,[],Pe,"java.util.Set",E,[Kb],0,0,[],Bd,"java.util.AbstractSet",W,[Pe],0,0,["a",function(){Fx(this);}],Tk,"java.util.HashSet",Bd,[Nb,Q],0,0,["a",function(){GD(this);},"Gk",function(b) -{PE(this,b);},"L",function(b){return BJ(this,b);}],Zi,"org.teavm.platform.Platform",E,[],0,0,[],Ub,"java.nio.charset.Charset",E,[Db],0,Ub_$callClinit,["ii",function(b,c){Nj(this,b,c);}],Qb,"org.teavm.flavour.components.events.BaseEventBinder",E,[P],0,0,["i",function(b){Er(this,b);},"sd",function(b){Zz(this,b);},"jg",function(b){BE(this,b);},"d",function(){Xo(this);},"e",function(){Mv(this);},"Ag",function(b){TC(this,b);}],Sn,"org.teavm.flavour.components.events.EventBinder",Qb,[],0,0,["i",function(b){NB(this, -b);}],Bc,"java.lang.Boolean",E,[Q,Db],0,Bc_$callClinit,["ri",function(b){Xi(this,b);},"lh",function(){return ZE(this);}],Ed,"java.lang.IllegalArgumentException",L,[],0,0,["a",function(){Sv(this);},"f",function(b){SL(this,b);}],Ak,"java.nio.charset.IllegalCharsetNameException",Ed,[],0,0,["f",function(b){ED(this,b);}],We,"org.teavm.flavour.regex.Pattern",E,[],0,0,[],Pl,"org.teavm.flavour.regex.Pattern$proxy0",E,[We],0,0,["si",function(){return Qw(this);},"a",function(){YL(this);}],Sd,"java.lang.Enum",E,[Db,Q], -0,0,["N",function(b,c){UF(this,b,c);}],Lb,"org.teavm.flavour.example.todomvc.TodoFilterType",Sd,[],1,Lb_$callClinit,["N",function(b,c){Kf(this,b,c);}],Mn,"java.util.NoSuchElementException",L,[],0,0,["a",function(){Oq(this);}],Gf,"java.lang.AutoCloseable",E,[],0,0,[],Gc,"java.io.Closeable",E,[Gf],0,0,[],Cb,"java.io.OutputStream",E,[Gc,Le],0,0,["a",function(){Tn(this);}],Hc,"java.io.FilterOutputStream",Cb,[],0,0,["oi",function(b){Lq(this,b);}],Rl,"java.io.PrintStream",Hc,[],0,0,["Ci",function(b,c){UE(this,b,c); -}],Xm,"java.util.function.Supplier$proxy8",E,[K],0,0,["g",function(){return XI(this);},"k",function(b){FE(this,b);}],Tm,"java.util.function.Supplier$proxy9",E,[K],0,0,["g",function(){return LJ(this);},"b",function(b){Bt(this,b);}],Vm,"java.util.function.Supplier$proxy6",E,[K],0,0,["g",function(){return OF(this);},"k",function(b){UH(this,b);}],Wm,"java.util.function.Supplier$proxy7",E,[K],0,0,["g",function(){return RG(this);},"k",function(b){AK(this,b);}],Fg,"java.util.AbstractList$TListIteratorImpl",E,[Zb], -0,0,["Gi",function(b,c,d,e){St(this,b,c,d,e);},"z",function(){return ID(this);},"yb",function(){return LE(this);},"O",function(){Ds(this);}],Jm,"java.util.function.Supplier$proxy4",E,[K],0,0,["g",function(){return Gx(this);},"b",function(b){NI(this,b);}],Um,"java.util.function.Supplier$proxy5",E,[K],0,0,["g",function(){return Ew(this);},"C",function(b,c){TA(this,b,c);}],Hm,"java.util.function.Supplier$proxy2",E,[K],0,0,["g",function(){return GB(this);},"b",function(b){MH(this,b);}],Im,"java.util.function.Supplier$proxy3", -E,[K],0,0,["g",function(){return Mz(this);},"b",function(b){Yn(this,b);}],Oi,"kotlin.jvm.internal.markers.KMutableIterable",E,[Eb],0,0,[],Km,"java.util.function.Supplier$proxy0",E,[K],0,0,["g",function(){return XE(this);},"b",function(b){Iy(this,b);}],Gm,"java.util.function.Supplier$proxy1",E,[K],0,0,["g",function(){return Hq(this);},"b",function(b){ZD(this,b);}],Ec,"java.util.List",E,[Kb],0,0,[],Wb,"java.util.RandomAccess",E,[],0,0,[],Hf,"kotlin.collections.EmptyList",E,[Ec,Q,Wb,Eb],0,Hf_$callClinit,["A",function() -{return AJ(this);},"a",function(){Qi(this);}],Lm,"org.teavm.flavour.json.tree.ObjectNode",R,[],0,0,[],Rc,"java.util.AbstractMap",E,[Be],0,0,["a",function(){BA(this);}],Re,"org.teavm.flavour.templates.DomBuilder",E,[],0,Re_$callClinit,["n",function(b){Jf(this,b);},"Tk",function(b){return BF(this,b);},"yd",function(b){return CH(this,b);},"Mg",function(b,c){return AA(this,b,c);},"Tg",function(){return At(this);},"Hk",function(b){return VF(this,b);},"zd",function(b,c){return It(this,b,c);},"pe",function(b){return TE(this, -b);},"Qi",function(b){return ZH(this,b);},"hi",function(b){JG(this,b);},"Ld",function(){return Wn(this);}],Bb,"org.teavm.flavour.templates.DomComponentHandler",E,[],0,0,[],Ig,"org.teavm.flavour.templates.DomComponentHandler$proxy2",E,[Bb],0,0,["m",function(){UL(this);},"o",function(b){KI(this,b);},"Gc",function(b,c,d){Xx(this,b,c,d);}],Mg,"org.teavm.flavour.templates.DomComponentHandler$proxy3",E,[Bb],0,0,["m",function(){Az(this);},"o",function(b){YK(this,b);},"a",function(){VA(this);}],Ce,"java.lang.reflect.AnnotatedElement", -E,[],0,0,[],Nl,"java.lang.Class",E,[Ce],0,0,["le",function(b){EC(this,b);},"Aj",function(){return Pu(this);},"ci",function(){return JK(this);},"gl",function(){return Vo(this);}],Fn,"$$LAMBDA3$$",E,[Ab],0,0,["ab",function(b){VK(this,b);},"q",function(b){GC(this,b);},"p",function(b){return TK(this,b);}],Kg,"org.teavm.flavour.templates.DomComponentHandler$proxy4",E,[Bb],0,0,["m",function(){PK(this);},"o",function(b){GL(this,b);},"a",function(){ND(this);}],Ng,"org.teavm.flavour.templates.DomComponentHandler$proxy5", -E,[Bb],0,0,["m",function(){Ip(this);},"o",function(b){MC(this,b);},"b",function(b){LD(this,b);}],Ef,"java.util.Comparator",E,[],0,0,[],Yj,"kotlin.ranges.IntRange$Companion",E,[],0,0,["a",function(){BM(this);},"w",function(b){ZL(this,b);}],Hg,"org.teavm.flavour.templates.DomComponentHandler$proxy0",E,[Bb],0,0,["m",function(){WJ(this);},"o",function(b){Bu(this,b);},"b",function(b){OJ(this,b);}],Jg,"org.teavm.flavour.templates.DomComponentHandler$proxy1",E,[Bb],0,0,["m",function(){Iz(this);},"o",function(b){HA(this, -b);},"b",function(b){VD(this,b);}],Mi,"java.util.Arrays",E,[],0,0,[],Ym,"java.lang.ConsoleOutputStreamStdout",Cb,[],0,0,["a",function(){Gq(this);}],Xb,"java.lang.System",E,[],0,Xb_$callClinit,[],Qh,"org.teavm.flavour.example.todomvc.EscapeComponent$eventListener$1",E,[Ab],0,0,["q",function(b){Nx(this,b);},"Qk",function(b){Hy(this,b);},"rd",function(b){Qt(this,b);},"p",function(b){return Lr(this,b);}],De,"java.util.function.BooleanSupplier",E,[],0,0,[],Lh,"org.teavm.flavour.example.todomvc.TodoRoute$proxy0", -E,[Wc],0,0,["I",function(){IA(this);},"K",function(){Nr(this);},"Z",function(){Xv(this);},"ab",function(b){Jt(this,b);},"Hb",function(b){return Jr(this,b);},"wb",function(b){return FG(this,b);}],Mb,"java.lang.Character",E,[Db],0,Mb_$callClinit,[],Wf,"java.util.function.BooleanSupplier$proxy0",E,[De],0,0,["ye",function(){return NH(this);},"b",function(b){KF(this,b);}],Id,"kotlin.jvm.functions.Function0",E,[Tb],0,0,[],Hk,"kotlin.jvm.functions.Function0$proxy0",E,[Id],0,0,["gb",function(){return Qz(this);},"C", -function(b,c){XG(this,b,c);}],Tg,"org.teavm.flavour.templates.DomComponentTemplate",M,[],0,0,["rf",function(b){Gw(this,b);},"d",function(){Kr(this);},"e",function(){YI(this);}],Cl,"org.teavm.flavour.example.todomvc.TodoView$Companion",E,[],0,0,["Oe",function(b){BI(this,b);},"a",function(){Bz(this);},"w",function(b){Pp(this,b);}],Dj,"org.teavm.flavour.components.html.TextComponent",M,[],0,0,["n",function(b){GJ(this,b);},"s",function(b){Qr(this,b);},"d",function(){CE(this);}],If,"org.teavm.flavour.example.todomvc.LocalStorageTodoDataSource$clearCompleted$1", -O,[Fb],0,If_$callClinit,["x",function(b){return EF(this,b);},"t",function(b){return Hu(this,b);},"a",function(){Pj(this);}],In,"kotlin.jvm.internal.Intrinsics",E,[],0,0,[],Ql,"org.teavm.flavour.example.todomvc.FocusComponent",E,[P],0,0,["ug",function(b){RD(this,b);},"d",function(){SF(this);},"e",function(){Dq(this);},"i",function(b){EA(this,b);}],Bn,"org.teavm.flavour.components.standard.ChooseClause",E,[],0,0,["a",function(){Rp(this);},"Df",function(b){Sq(this,b);},"U",function(b){Kz(this,b);}],Mk,"org.teavm.flavour.templates.emitting.VariableImpl", -E,[],0,0,["a",function(){PC(this);}],Gn,"org.teavm.flavour.components.html.CheckedBinder",E,[P],0,0,["i",function(b){KD(this,b);},"s",function(b){Ry(this,b);},"d",function(){IH(this);},"e",function(){Rv(this);}],Sh,"$$LAMBDA6$$",E,[N],0,0,["fd",function(b){Ju(this,b);},"h",function(b){Bq(this,b);},"bb",function(b){Ov(this,b);}],Wl,"java.util.AbstractList$SubAbstractList$SubAbstractListIterator",E,[Zb],0,0,["Kf",function(b,c,d,e){Yx(this,b,c,d,e);},"F",function(){return Tv(this);},"z",function(){return UG(this); -}],Lg,"org.teavm.flavour.json.deserializer.JsonDeserializer$proxy0",T,[],0,0,["E",function(b,c){return Lz(this,b,c);},"a",function(){LL(this);}],Og,"org.teavm.flavour.json.deserializer.JsonDeserializer$proxy1",T,[],0,0,["E",function(b,c){return FC(this,b,c);},"a",function(){Pz(this);}],Tc,"org.teavm.flavour.json.tree.BooleanNode",R,[],0,Tc_$callClinit,[],Uk,"org.teavm.flavour.templates.DomBuilder$Item",E,[Ie],0,0,["a",function(){Vq(this);},"yj",function(){return Ht(this);},"kf",function(b){Xs(this,b);},"Ei", -function(b){Zn(this,b);},"Fb",function(b){Xz(this,b);},"Dh",function(){II(this);},"vh",function(){return DD(this);},"Uj",function(b){Tt(this,b);}],Se,"org.teavm.jso.dom.events.FocusEventTarget",E,[X],0,0,[],Df,"org.teavm.jso.dom.events.MouseEventTarget",E,[X],0,0,[],Cf,"org.teavm.jso.dom.events.KeyboardEventTarget",E,[X],0,0,[],Ne,"org.teavm.jso.browser.WindowEventTarget",E,[X,Se,Df,Cf,Ee],0,0,[],Xl,"org.teavm.flavour.json.serializer.JsonSerializerContext",E,[],0,0,["a",function(){Rz(this);},"wg",function(b) -{NC(this,b);}],Y,"java.util.AbstractList",W,[Ec],0,0,["a",function(){YH(this);},"L",function(b){return Py(this,b);},"A",function(){return SB(this);},"Pf",function(b){return EE(this,b);},"T",function(b){return DA(this,b);},"Bg",function(b,c){return MA(this,b,c);}],Ni,"java.util.ArrayList",Y,[Nb,Q],0,0,["a",function(){JD(this);},"r",function(b){Ap(this,b);},"fl",function(b){Fy(this,b);},"D",function(b){Zr(this,b);},"J",function(b){return Oy(this,b);},"v",function(){return Nu(this);},"pd",function(b,c){return Pq(this, -b,c);},"Ck",function(b,c){QI(this,b,c);},"dj",function(b){return Gz(this,b);},"ad",function(b){return QB(this,b);},"md",function(){Av(this);},"Te",function(b){Kp(this,b);},"Wc",function(b){Hz(this,b);}],Ke,"org.teavm.jso.browser.StorageProvider",E,[],0,0,[],Oe,"org.teavm.jso.core.JSArrayReader",E,[V],0,0,[],Oh,"org.teavm.jso.browser.Window",E,[V,Ne,Ke,Oe],0,0,["Ec",function(b,c){return ZC(this,b,c);},"cc",function(b,c,d){return FJ(this,b,c,d);},"jc",function(b){return QC(this,b);},"Cc",function(b,c){return KE(this, -b,c);},"ze",function(b){return CI(this,b);},"pi",function(){return Ex(this);},"Ce",function(b,c,d){return Fp(this,b,c,d);}],Ad,"org.teavm.flavour.example.todomvc.EscapeComponent",E,[P],0,Ad_$callClinit,["pl",function(){return Vx(this);},"nj",function(b){ZG(this,b);},"d",function(){Gs(this);},"e",function(){QH(this);},"i",function(b){Ch(this,b);}],Mc,"java.util.AbstractList$SubAbstractList",Y,[],0,0,["eb",function(b,c,d){RI(this,b,c,d);},"A",function(){return Pv(this);},"T",function(b){return Ny(this,b);},"v", -function(){return Jp(this);}],Ej,"java.util.AbstractList$SubAbstractListRandomAccess",Mc,[Wb],0,0,["eb",function(b,c,d){FB(this,b,c,d);}],Uc,"java.lang.String",E,[Q,Db,Ld],0,Uc_$callClinit,["ij",function(b){Eh(this,b);},"Bj",function(b,c,d){Pn(this,b,c,d);},"qf",function(b){return Nt(this,b);},"Ch",function(){return C(this);},"G",function(){return DJ(this);},"vd",function(b,c,d,e){D(this,b,c,d,e);},"Fi",function(b,c){return Uv(this,b,c);},"Ui",function(b){return KJ(this,b);},"zc",function(b,c){return Fq(this, -b,c);},"Sd",function(b){return SH(this,b);},"Uf",function(b,c){return PB(this,b,c);},"u",function(){return Kw(this);},"H",function(b){return YF(this,b);},"V",function(){return Ft(this);},"Ki",function(){return G(this);}],Rn,"java.lang.NegativeArraySizeException",L,[],0,0,["a",function(){Cv(this);}],Vj,"org.teavm.flavour.components.standard.OtherwiseClause",E,[],0,0,["a",function(){WL(this);},"U",function(b){Go(this,b);}],Yf,"org.teavm.flavour.templates.Modifier$proxy21",E,[J],0,0,["c",function(b){return Po(this, -b);},"b",function(b){Ax(this,b);}],Zf,"org.teavm.flavour.templates.Modifier$proxy20",E,[J],0,0,["c",function(b){return QD(this,b);},"b",function(b){GA(this,b);}],Kn,"java.nio.charset.impl.UTF8Charset",Ub,[],0,0,["a",function(){KH(this);}],Ag,"org.teavm.flavour.templates.Modifier$proxy23",E,[J],0,0,["c",function(b){return Ar(this,b);},"b",function(b){DC(this,b);}],Ui,"org.teavm.flavour.json.tree.StringNode",R,[],0,0,[],Xf,"org.teavm.flavour.templates.Modifier$proxy22",E,[J],0,0,["c",function(b){return BB(this, -b);},"b",function(b){Vt(this,b);}],Qj,"$$LAMBDA5$$",E,[Ab],0,0,["cd",function(b){Wq(this,b);},"q",function(b){VI(this,b);},"p",function(b){return FK(this,b);}],Fe,"kotlin.collections.EmptyIterator",E,[Zb,Eb],0,Fe_$callClinit,["F",function(){return UC(this);},"gj",function(){return Vp(this);},"z",function(){return Fs(this);},"a",function(){Kh(this);}],Mh,"org.teavm.flavour.templates.Templates$PROXY$2",E,[],0,0,[],Pi,"org.teavm.flavour.json.deserializer.StringDeserializer",T,[],0,0,["a",function(){Yz(this);}, -"E",function(b,c){return Co(this,b,c);}],Me,"org.teavm.flavour.example.todomvc.FocusComponent$isFocused$1",O,[Id],0,Me_$callClinit,["gb",function(){return GG(this);},"mb",function(){return Qo(this);},"a",function(){Vh(this);}],On,"org.teavm.flavour.routing.Routing",E,[],0,0,[],Ff,"java.util.Deque",E,[Ae],0,0,[],Wi,"java.util.ArrayDeque",W,[Ff],0,0,["a",function(){To(this);},"r",function(b){GE(this,b);},"Yd",function(b){FF(this,b);},"bd",function(){return CF(this);},"ic",function(){return DK(this);},"ag",function() -{return VJ(this);},"Ad",function(){return Bx(this);},"hd",function(b){AL(this,b);},"sk",function(){return Sy(this);},"v",function(){return As(this);},"G",function(){return Wt(this);},"D",function(b){FI(this,b);}],Te,"org.teavm.flavour.example.todomvc.EscapeComponent$action$1",E,[Vb],0,Te_$callClinit,["fb",function(){FD(this);},"a",function(){Em(this);}],Dh,"java.lang.IllegalStateException",Z,[],0,0,["a",function(){HB(this);},"f",function(b){Ou(this,b);}],Si,"org.teavm.flavour.components.html.LinkComponent", -E,[P],0,0,["i",function(b){RH(this,b);},"gi",function(b){EL(this,b);},"d",function(){Zo(this);},"e",function(){BK(this);},"dh",function(b){ML(this,b);}],Pg,"java.lang.NullPointerException",L,[],0,0,["a",function(){Rx(this);}],Zm,"kotlin.jvm.internal.TypeIntrinsics",E,[],0,0,[],Om,"java.lang.Math",E,[],0,0,[],Vi,"org.teavm.flavour.components.html.CheckedChangeBinder",E,[P],0,0,["i",function(b){Zp(this,b);},"cb",function(b){Cu(this,b);},"d",function(){PF(this);},"e",function(){Ys(this);}],Cm,"java.util.function.Supplier$proxy10", -E,[K],0,0,["g",function(){return NA(this);},"b",function(b){NG(this,b);}],Zl,"java.util.function.Supplier$proxy13",E,[K],0,0,["g",function(){return Ks(this);},"b",function(b){Kx(this,b);}],Bm,"java.util.function.Supplier$proxy11",E,[K],0,0,["g",function(){return Qp(this);},"b",function(b){BC(this,b);}],Tj,"org.teavm.flavour.components.standard.IfComponent",M,[],0,0,["n",function(b){JL(this,b);},"Gf",function(b){Do(this,b);},"S",function(b){Nq(this,b);},"d",function(){AE(this);},"e",function(){Sz(this);}],Am, -"java.util.function.Supplier$proxy12",E,[K],0,0,["g",function(){return IF(this);},"b",function(b){Xt(this,b);}],Ac,"kotlin.ranges.IntProgression",E,[Dd,Eb],0,Ac_$callClinit,["Bc",function(){return Jw(this);},"A",function(){return Os(this);},"R",function(b,c,d){Xk(this,b,c,d);}],Kc,"kotlin.ranges.IntRange",Ac,[Ze],0,Kc_$callClinit,["Ne",function(b,c){Li(this,b,c);}],Ik,"kotlin.text.CharsKt",Fc,[],0,0,[],Gb,"org.teavm.flavour.templates.ValueChangeListener",E,[],0,0,[],Gk,"org.teavm.flavour.templates.ValueChangeListener$proxy1", -E,[Gb],0,0,["B",function(b){Ut(this,b);},"b",function(b){Yq(this,b);}],Dk,"org.teavm.flavour.templates.ValueChangeListener$proxy0",E,[Gb],0,0,["B",function(b){VL(this,b);},"b",function(b){GF(this,b);}],Ek,"org.teavm.flavour.templates.ValueChangeListener$proxy3",E,[Gb],0,0,["B",function(b){WD(this,b);},"k",function(b){XB(this,b);}],Fk,"org.teavm.flavour.templates.ValueChangeListener$proxy2",E,[Gb],0,0,["B",function(b){Xu(this,b);},"k",function(b){Wv(this,b);}],Kj,"org.teavm.flavour.json.JSON$PROXY$0",E,[],0, -0,[],Ob,"org.teavm.flavour.templates.Slot",Hb,[],0,0,["a",function(){DH(this);},"Sf",function(b){LG(this,b);},"Sh",function(b,c){EH(this,b,c);},"v",function(){return HC(this);},"W",function(b){Lp(this,b);},"M",function(b){Jx(this,b);}],Wk,"org.teavm.flavour.templates.ContainerSlot",Ob,[],0,0,["a",function(){WI(this);}],Gj,"org.teavm.flavour.json.JSON$PROXY$4",E,[],0,0,[],Jj,"org.teavm.flavour.json.JSON$PROXY$5",E,[],0,0,[],Fj,"org.teavm.flavour.components.attributes.ComputedAttribute",E,[P],0,0,["i",function(b) -{Dy(this,b);},"s",function(b){RF(this,b);},"hf",function(b){RC(this,b);},"d",function(){Jv(this);},"e",function(){Tu(this);}],Hj,"org.teavm.flavour.json.JSON$PROXY$7",E,[],0,0,[],Oc,"java.io.InputStream",E,[Gc],0,0,["a",function(){LB(this);}],Mm,"java.lang.ConsoleInputStream",Oc,[],0,0,["a",function(){MG(this);}],Ij,"org.teavm.flavour.json.JSON$PROXY$8",E,[],0,0,[],Zk,"$$LAMBDA0$$",E,[Ef],0,0,["a",function(){UD(this);}],Dm,"org.teavm.flavour.components.html.ValueBinder",E,[P],0,0,["i",function(b){SI(this,b); -},"s",function(b){JA(this,b);},"d",function(){Qq(this);},"e",function(){Iu(this);}],Rk,"org.teavm.flavour.components.events.MouseBinder",Qb,[],0,0,["i",function(b){CG(this,b);}],En,"java.util.HashMap",Rc,[Nb,Q],0,0,["ve",function(b){return AF(this,b);},"a",function(){OA(this);},"r",function(b){Ho(this,b);},"Dg",function(b,c){VH(this,b,c);},"uj",function(){Lx(this);},"nl",function(b){return JF(this,b);},"zi",function(b){return Cr(this,b);},"Yi",function(b,c,d){return YC(this,b,c,d);},"ak",function(){return FL(this); -},"Yf",function(b,c){return Ir(this,b,c);},"sj",function(b,c){return JE(this,b,c);},"Tf",function(b,c,d){return Xw(this,b,c,d);},"Xe",function(b){YD(this,b);},"Rf",function(){Cy(this);}],Oj,"org.teavm.flavour.components.html.EnabledBinder",E,[P],0,0,["i",function(b){NL(this,b);},"s",function(b){Dx(this,b);},"d",function(){Lu(this);},"e",function(){Sx(this);}],Ge,"org.teavm.flavour.example.todomvc.TodoView$all$1",O,[Fb],0,Ge_$callClinit,["x",function(b){return MF(this,b);},"t",function(b){return Pw(this,b);}, -"a",function(){Mj(this);}],Ve,"org.teavm.flavour.example.todomvc.TodoView$completed$1",O,[Fb],0,Ve_$callClinit,["x",function(b){return Xn(this,b);},"t",function(b){return XA(this,b);},"a",function(){Jn(this);}],Jh,"org.teavm.classlib.impl.unicode.UnicodeHelper$Range",E,[],0,0,["Zg",function(b,c,d){CC(this,b,c,d);}],Ci,"java.util.function.Consumer$proxy1",E,[N],0,0,["h",function(b){Rr(this,b);},"j",function(b,c){Qy(this,b,c);}],Zh,"java.util.function.Consumer$proxy0",E,[N],0,0,["h",function(b){Wr(this,b);},"b", -function(b){QJ(this,b);}],Fm,"java.lang.NoClassDefFoundError",Sb,[],0,0,[],Gi,"java.util.function.Consumer$proxy5",E,[N],0,0,["h",function(b){MI(this,b);},"b",function(b){HD(this,b);}],Di,"java.util.function.Consumer$proxy4",E,[N],0,0,["h",function(b){Pt(this,b);},"j",function(b,c){Qs(this,b,c);}],Ei,"java.util.function.Consumer$proxy3",E,[N],0,0,["h",function(b){Gu(this,b);},"j",function(b,c){RK(this,b,c);}],Bi,"java.util.function.Consumer$proxy2",E,[N],0,0,["h",function(b){Yy(this,b);},"j",function(b,c){Ms(this, -b,c);}],Hi,"java.util.function.Consumer$proxy8",E,[N],0,0,["h",function(b){Zt(this,b);},"b",function(b){AH(this,b);}],Ii,"java.util.function.Consumer$proxy7",E,[N],0,0,["h",function(b){Yp(this,b);},"b",function(b){No(this,b);}],Rg,"kotlin.internal.ProgressionUtilKt",E,[],0,0,[],Fi,"java.util.function.Consumer$proxy6",E,[N],0,0,["h",function(b){OL(this,b);},"b",function(b){GI(this,b);}],Gg,"org.teavm.flavour.components.html.ValueChangeBinder",E,[P],0,0,["i",function(b){Iv(this,b);},"cb",function(b){Uy(this,b); -},"d",function(){Sw(this);},"e",function(){UA(this);}],Xj,"java.lang.ConsoleOutputStreamStderr",Cb,[],0,0,["a",function(){HI(this);}],Yk,"org.teavm.flavour.example.todomvc.Todo",E,[],0,0,["Yk",function(){return Es(this);},"Fg",function(b){Yo(this,b);},"bl",function(){return Fr(this);},"qe",function(b){XJ(this,b);},"a",function(){Mq(this);}],Nn,"org.teavm.flavour.example.todomvc.EscapeComponent$Companion",E,[],0,0,["Qc",function(){return Ez(this);},"a",function(){Hx(this);},"w",function(b){Hp(this,b);}],Vk,"org.teavm.flavour.templates.RootSlot", -Ob,[],0,0,["db",function(b){Ow(this,b);}],Dn,"org.teavm.flavour.components.standard.ChooseComponent",M,[],0,0,["n",function(b){PL(this,b);},"Zf",function(b){WH(this,b);},"rg",function(b){Au(this,b);},"d",function(){KK(this);},"e",function(){Kt(this);}],Ih,"java.util.Arrays$ArrayAsList",Y,[Wb],0,0,["ub",function(b){Mw(this,b);},"J",function(b){return Vn(this,b);},"v",function(){return Ot(this);}]]); -$rt_stringPool(["@","#","Wrong route interface: ","main","todos","todo","null","This dispatcher is already attached to a window","$receiver","it","","","null cannot be cast to non-null type kotlin.CharSequence","c","dataSource","args","org.teavm.flavour.example.todomvc.TodoRoute","org.teavm.flavour.example.todomvc.TodoView","Can\'t serialize object of type ","org.teavm.flavour.example.todomvc.Todo","org.teavm.flavour.example.todomvc.TodoList","Don\'t know how to deserialize ","java.lang.String","Can\'t deserialize non-boolean not as a boolean primitive", -"submit","Can\'t deserialize non-array node as a list","click","dblclick","class","blur","elements","predicate","null cannot be cast to non-null type kotlin.collections.MutableIterable","UTF-8","ALL","ACTIVE","COMPLETED"," editing","completed","Can\'t set attribute to root node","Can\'t apply modifier to root node","\n ","li","\n ","div","view","\n ","input","toggle","type","checkbox","label","button","destroy","form","edit","\n ","item left","items left","id","clear-completed", -"Clear completed","\n ","\n","section","todoapp","\n ","header","\n ","h1","todo-form","new-todo","placeholder","What needs to be done?","autofocus","footer","info","p","Double-click to edit a todo","Part of ","a","href","http://todomvc.com","TodoMVC","toggle-all","for","Mark all as complete","ul","todo-list","span","todo-count","strong","filters","All","Active","Completed","/","/active","/completed","Parameter specified as non-null is null: method ",".",", parameter ","target","Can\'t deserialize node ", -" to an instance of ","hashchange","Object has already been serialzied: ","keydown","Can\'t deserialize non-string node as a string"," cannot be cast to ","kotlin.collections.MutableIterable","selected","Step must be non-zero","The given space is already hosted by a slot","Step is zero."]); -GR=SP(4);var main=Jz; -(function(){var c;c=Aj.prototype;c.handleEvent=c.p;c=Sl.prototype;c.handleEvent=c.p;c=Tl.prototype;c.handleEvent=c.p;c=Fn.prototype;c.handleEvent=c.p;c=Qh.prototype;c.handleEvent=c.p;c=Oh.prototype;c.removeEventListener=c.Ec;c.removeEventListener=c.cc;c.dispatchEvent=c.jc;c.getLength=c.pi;c.addEventListener=c.Cc;c.get=c.ze;c.addEventListener=c.Ce;c=Qj.prototype;c.handleEvent=c.p;})(); +function L1(){var $r=new Oc();GC($r);return $r;} +function GC($t){} +function Rm(){Oc.call(this);} +function M1(){var $r=new Rm();MH($r);return $r;} +function MH($t){} +function Mj(){E.call(this);} +function KO(a){a=new Xm;return a;} +function Dl(){E.call(this);} +function N1(){var $r=new Dl();SE($r);return $r;} +function SE($t){} +function Im(){var a=this;E.call(a);a.mj=null;a.Qb=null;a.ok=null;} +function O1(b){var $r=new Im();VJ($r,b);return $r;} +function VJ($t,a){$t.mj=a.hh;} +function EB($t,a){$t.Qb=a;} +function Yq($t){var a,b;a=$t.Qb.g();if(HO(a,$t.ok)==0){$t.ok=a;b=$t.mj;Vc_$callClinit();b.value=$rt_ustr(a===null?GR(10):a);}} +function Tu($t){return;} +function Vk(){Rb.call(this);} +function P1(b){var $r=new Vk();CH($r,b);return $r;} +function CH($t,a){var b;b=new Yl;b.hk=$t;$t.ri=b;$t.ii=a.hh;} +function Jn(){var a=this;Rc.call(a);a.qd=0;a.Ae=null;a.Lk=0;a.ql=0.0;a.Pj=0;} +function Q1(){var $r=new Jn();JB($r);return $r;} +function R1(b){var $r=new Jn();No($r,b);return $r;} +function UU(b,c){var $r=new Jn();XI($r,b,c);return $r;} +function YF($t,a){return AR(Ah,a);} +function JB($t){var a,b;a=16;b=0.75;a=CQ(a);$t.qd=0;$t.Ae=AR(Ah,a);$t.ql=b;$t.Pj=$t.Ae.data.length*$t.ql|0;} +function No($t,a){var b,c;b=0.75;if(a<0){c=new Fd;c.Ce=1;c.gl=1;WQ(c);}a=CQ(a);$t.qd=0;$t.Ae=AR(Ah,a);$t.ql=b;$t.Pj=$t.Ae.data.length*$t.ql|0;} +function CQ(a){var b;if(a>=1073741824){return 1073741824;}if(a==0){return 16;}b=a-1|0;a=b|b>>1;a=a|a>>2;a=a|a>>4;a=a|a>>8;return (a|a>>16)+1|0;} +function XI($t,a,b){var c;if(a>=0&&b>0.0){a=CQ(a);$t.qd=0;$t.Ae=AR(Ah,a);$t.ql=b;$t.Pj=$t.Ae.data.length*$t.ql|0;return;}c=new Fd;c.Ce=1;c.gl=1;WQ(c);} +function By($t){$t.Pj=$t.Ae.data.length*$t.ql|0;} +function HG($t,a){var b,c;if(a===null){b=MM($t);}else{c=Nt(a);b=WD($t,a,c&($t.Ae.data.length-1|0),c);}if(b===null){return null;}return b.pi;} +function Kr($t,a){var b,c;if(a===null){b=MM($t);}else{c=Nt(a);b=WD($t,a,c&($t.Ae.data.length-1|0),c);}return b;} +function WD($t,a,b,c){var d,e;d=$t.Ae.data[b];while(d!==null){if(d.Rc==c){e=d.gg;if((a!==e&&a.I(e)==0?0:1)!=0){break;}}d=d.cg;}return d;} +function MM($t){var a;a=$t.Ae.data[0];while(a!==null){if(a.gg===null){break;}a=a.cg;}return a;} +function Qr($t,a,b){return HF($t,a,b);} +function HF($t,a,b){var c,d,e,f;if(a===null){c=MM($t);if(c===null){$t.Lk=$t.Lk+1|0;d=null;e=0;f=0;c=new Ah;a=null;c.gg=d;c.pi=a;c.Rc=f;c.cg=$t.Ae.data[e];$t.Ae.data[e]=c;e=$t.qd+1|0;$t.qd=e;if(e>$t.Pj){WE($t,$t.Ae.data.length);}}}else{e=a.Y();f=e&($t.Ae.data.length-1|0);c=WD($t,a,f,e);if(c===null){$t.Lk=$t.Lk+1|0;c=new Ah;d=null;c.gg=a;c.pi=d;c.Rc=e;c.cg=$t.Ae.data[f];$t.Ae.data[f]=c;e=$t.qd+1|0;$t.qd=e;if(e>$t.Pj){WE($t,$t.Ae.data.length);}}}d=c.pi;c.pi=b;return d;} +function Nx($t,a,b,c){var d,e;d=new Ah;e=null;d.gg=a;d.pi=e;d.Rc=c;d.cg=$t.Ae.data[b];$t.Ae.data[b]=d;return d;} +function WE($t,a){var b,c,d,e,f,g,h;b=CQ(a==0?1:a<<1);c=AR(Ah,b);d=c.data;e=0;b=b-1|0;while(e<$t.Ae.data.length){f=$t.Ae.data[e];$t.Ae.data[e]=null;while(f!==null){g=f.Rc&b;h=f.cg;f.cg=d[g];d[g]=f;f=h;}e=e+1|0;}$t.Ae=c;$t.Pj=$t.Ae.data.length*$t.ql|0;} +function Uy($t){WE($t,$t.Ae.data.length);} +function RO(a){return a.Y();} +function EO(a,b){return a!==b&&a.I(b)==0?0:1;} +function Sj(){var a=this;E.call(a);a.Vk=null;a.Ze=null;a.ec=false;} +function S1(b){var $r=new Sj();UM($r,b);return $r;} +function UM($t,a){$t.ec=1;$t.Vk=a.hh;} +function Ux($t,a){$t.Ze=a;} +function Wu($t){var a;a=Pq($t.Ze).Kj;if(a!=$t.ec){$t.ec=a;$t.Vk.disabled=!!(a!=0?0:1);}} +function Jy($t){return;} +function Je(){O.call(this);} +var JU=null;function Je_$callClinit(){Je_$callClinit=function(){}; +Bz();} +function T1(){var $r=new Je();Qj($r);return $r;} +function KG($t,a){var b;a=a;b=GR(13);if(a===null){AP(b);}Bc_$callClinit();return FU;} +function Fx($t,a){var b;b=GR(13);if(a===null){AP(b);}return 1;} +function Qj($t){var a;Je_$callClinit();a=1;$t.fd=a;} +function Bz(){var a,b;a=new Je;b=1;a.fd=b;JU=a;} +function Xe(){O.call(this);} +var MU=null;function Xe_$callClinit(){Xe_$callClinit=function(){}; +Lp();} +function U1(){var $r=new Xe();On($r);return $r;} +function Do($t,a){var b,c;a=a;b=GR(13);if(a===null){AP(b);}c=a.Rk;Bc_$callClinit();return c==0?EU:FU;} +function SB($t,a){var b;b=GR(13);if(a===null){AP(b);}return a.Rk;} +function On($t){var a;Xe_$callClinit();a=1;$t.fd=a;} +function Lp(){var a,b;a=new Xe;b=1;a.fd=b;MU=a;} +function Lh(){var a=this;E.call(a);a.qi=0;a.dc=0;a.Bi=null;} +function V1(b,c,d){var $r=new Lh();ZC($r,b,c,d);return $r;} +function ZC($t,a,b,c){$t.qi=a;$t.dc=b;$t.Bi=c;} +function Ei(){var a=this;E.call(a);a.vh=null;a.wh=null;} +function W1(b,c){var $r=new Ei();Jz($r,b,c);return $r;} +function Zr($t,a){var b,c,d;a=$t.vh;b=$t.wh;c=AR(E,1);b=b;b=b.aj;c=c.data;c[0]=b;b=c[0];d=GR(7);if(b===null){AP(d);}a.kl=b;a.Pl=b.Ok;TL();} +function Jz($t,a,b){$t.vh=a;$t.wh=b;} +function Bi(){E.call(this);this.Bh=null;} +function X1(b){var $r=new Bi();VK($r,b);return $r;} +function Es($t,a){Hr($t.Bh);TL();} +function VK($t,a){$t.Bh=a;} +function Km(){Tb.call(this);} +function Ii(){E.call(this);this.gf=null;} +function Y1(b){var $r=new Ii();FE($r,b);return $r;} +function PJ($t,a){var b,c,d;b=AR(E,1).data;b[0]=a;a=b[0];c=GR(17);if(a===null){AP(c);}c=ZQ(Xc);if(c.bh===null){d=c.Xh;d=$rt_str(d.$meta.name);Vc_$callClinit();c.bh=d;}a:{b:{c:{d=c.bh;switch(Nt(d)){case 1344771639:break;case -1064886025:break c;default:break b;}if(XG(d,GR(2))==0){break b;}IP(ZQ(Xc));break a;}if(XG(d,GR(3))!=0){IP(ZQ(Xc));break a;}}}a=a;c=new Nh;c.gi=a;CB(c);TL();} +function FE($t,a){$t.gf=a;} +function Fi(){var a=this;E.call(a);a.Ue=null;a.Te=null;} +function Z1(b,c){var $r=new Fi();Ys($r,b,c);return $r;} +function Yt($t,a){var b,c;a=$t.Ue;b=$t.Te;c=AR(E,1);b=b;b=b.aj;c=c.data;c[0]=b;GB(a,c[0]);TL();} +function Ys($t,a,b){$t.Ue=a;$t.Te=b;} +function Gi(){var a=this;E.call(a);a.Dk=null;a.Ak=null;} +function A2(b,c){var $r=new Gi();YL($r,b,c);return $r;} +function Ru($t,a){var b,c;a=$t.Dk;b=$t.Ak;c=AR(E,1);b=b;b=b.aj;c=c.data;c[0]=b;GB(a,c[0]);TL();} +function YL($t,a,b){$t.Dk=a;$t.Ak=b;} +function Di(){var a=this;E.call(a);a.Qh=null;a.Rh=null;} +function B2(b,c){var $r=new Di();Us($r,b,c);return $r;} +function Rz($t,a){var b,c,d,e,f,g,h,i,j,k;a=$t.Qh;b=$t.Rh;c=AR(E,1);b=b;b=b.aj;c=c.data;c[0]=b;b=c[0];d=GR(7);if(b===null){AP(d);}d=a.He;e=GR(7);if(b===null){AP(e);}f=d.pl;if(f===null){f=new Sm;e=new Pi;g=10;VG(e);e.gk=AR(E,g);f.qj=e;d.pl=f;}e=f.qj;h=e.lj;g=0;a:{b:{while(true){if(g>=h){g= -1;break a;}if(g<0){break;}if(g>=e.lj){break;}c:{i=e.gk.data[g];if(b===null){if(i!==null){break c;}else{break b;}}if((b!==i?0:1)!=0){break b;}}g=g+1|0;}a=new Pc;Fr(a);WQ(a);}}if(g>=0){Zz(e,g);}Ny(d,f);b=a.Tc;c=b.gk;g=0;h=b.lj;d +=null;if(g>h){a=new Fd;KF(a);WQ(a);}while(gj){a=new Fd;KF(a);WQ(a);}while(e0){d=b%c|0;if(d<0){d=d+c|0;}a=a%c|0;if(a<0){a=a+c|0;}a=(d-a|0)%c|0;if(a<0){a=a+c|0;}return b-a|0;}if(c>=0){e=new Fd;f=GR(84);e.Ce=1;e.gl=1;e.Xf=f;WQ(e);}c= -c;d=a%c|0;if(d<0){d=d+c|0;}a=b%c|0;if(a<0){a=a+c|0;}a=(d-a|0)%c|0;if(a<0){a=a+c|0;}return b+a|0;} +function Hi(){E.call(this);this.jk=null;} +function E2(b){var $r=new Hi();IJ($r,b);return $r;} +function VM($t,a){var b,c,d;b=AR(E,1).data;b[0]=a;a=b[0];c=GR(17);if(a===null){AP(c);}c=ZQ(Xc);if(c.bh===null){d=c.Xh;d=$rt_str(d.$meta.name);Vc_$callClinit();c.bh=d;}a:{b:{c:{d=c.bh;switch(Nt(d)){case 1344771639:break;case -1064886025:break c;default:break b;}if(XG(d,GR(2))==0){break b;}IP(ZQ(Xc));break a;}if(XG(d,GR(3))!=0){IP(ZQ(Xc));break a;}}}a=a;c=new Nh;c.gi=a;Vr(c);TL();} +function IJ($t,a){$t.jk=a;} +function Ig(){var a=this;E.call(a);a.Eg=null;a.Kg=null;a.Si=false;} +function F2(b){var $r=new Ig();Vv($r,b);return $r;} +function Vv($t,a){$t.Eg=a;} +function Nz($t,a){$t.Kg=a;} +function Ix($t){if($t.Si==0){$t.Si=1;Fo($t.Eg,$t.Kg);}} +function PB($t){if($t.Si!=0){$t.Si=0;RA($t.Eg,$t.Kg);}} +function Bk(){Cb.call(this);} +function G2(){var $r=new Bk();JJ($r);return $r;} +function JJ($t){} +function Cl(){var a=this;E.call(a);a.Ok=null;a.Rk=false;} +function H2(){var $r=new Cl();Uq($r);return $r;} +function Ms($t){return $t.Ok;} +function Fp($t,a){var b;b=GR(14);if(a===null){AP(b);}$t.Ok=a;} +function Nr($t){return $t.Rk;} +function CL($t,a){$t.Rk=a;} +function Uq($t){$t.Ok=GR(15);} +function Sn(){E.call(this);} +function I2(){var $r=new Sn();Yx($r);return $r;} +function J2(b){var $r=new Sn();Pp($r,b);return $r;} +function Xz($t){Bd_$callClinit();return OY;} +function Yx($t){} +function Pp($t,a){} +function Zk(){Pb.call(this);this.Lf=null;} +function K2(b){var $r=new Zk();Ex($r,b);return $r;} +function Ex($t,a){$t.Lf=a;} +function In(){var a=this;M.call(a);a.cl=null;a.yd=null;a.Hg=null;a.Cb=null;a.qh=false;} +function L2(b){var $r=new In();WM($r,b);return $r;} +function WM($t,a){$t.Wk=a;$t.qh=1;} +function YI($t,a){$t.cl=a;} +function Ku($t,a){$t.yd=a;} +function PL($t){var a,b,c,d,e,f,g;a=null;b=$t.cl;c=0;d=b.ch;e=b.lj;a:{while(true){if((c>=e?0:1)==0){f=a;break a;}if(d=b.lj){break;}f=b.gk.data[c];if(PI(f.ng)!=0){break a;}c=g;}a=new Pc;a.Ce=1;a.gl=1;HD(a);WQ(a);}if(!($t.qh==0&&$t.Cb===f)){if($t.Hg!==null){CK($t.Hg);$t.Hg=null;}$t.Cb=f;if($t.Cb!==null){a=new Og;b=new Vg;a=a;f=new Al;b.Wk=f;b.Zb=a;$t.Hg=b;}else if($t.yd!==null){a=new Mg;b=new Vg;a=a;f=new Al;b.Wk=f;b.Zb=a;$t.Hg=b;}KD($t.Wk,$t.Hg.Wk, +null);$t.qh=0;}if($t.Hg!==null){Sr($t.Hg);}} +function Tt($t){var a,b,c,d,e,f;Qv($t.Wk);if($t.Hg!==null){a:{a=$t.Hg;if(a.Le!==null){b=a.Le;c=0;d=b.ch;e=b.lj;while(true){if((c>=e?0:1)==0){a.Le=null;break a;}if(d=b.lj){break;}b.gk.data[c].e();c=f;}a=new Pc;KF(a);WQ(a);}}Qv(a.Wk);$t.Hg=null;}} +function Kh(){T.call(this);this.xk=null;} +function M2(b){var $r=new Kh();Cx($r,b);return $r;} +function Cx($t,a){$t.xk=a;} +function Ao($t,a){return $t.xk.data[a];} +function Xt($t){return $t.xk.data.length;} +$rt_metadata([E,"java.lang.Object",0,[],0,0,["a",function(){KC(this);},"ai",function(){return Ev(this);},"Y",function(){return Sz(this);},"I",function(b){return Jp(this,b);},"v",function(){return Dx(this);},"xb",function(){return Xo(this);},"ll",function(){return ZL(this);}],V,"org.teavm.flavour.templates.Fragment",E,[],0,0,[],Dh,"org.teavm.flavour.templates.Fragment$proxy6",E,[V],0,0,["l",function(){return RC(this);},"ae",function(b){AE(this,b);}],Sb,"java.lang.Throwable",E,[],0,0,["a",function(){KF(this); +},"f",function(b){LJ(this,b);},"di",function(){return HD(this);},"T",function(){return Sq(this);},"Sh",function(b){TF(this,b);}],Z,"java.lang.Exception",Sb,[],0,0,["a",function(){Kx(this);},"f",function(b){Mp(this,b);}],L,"java.lang.RuntimeException",Z,[],0,0,["a",function(){Fr(this);},"f",function(b){OH(this,b);}],Pc,"java.lang.IndexOutOfBoundsException",L,[],0,0,["a",function(){Ox(this);}],Ch,"org.teavm.flavour.templates.Fragment$proxy5",E,[V],0,0,["l",function(){return HA(this);},"b",function(b){Jv(this, +b);}],Wg,"org.teavm.flavour.templates.Fragment$proxy0",E,[V],0,0,["l",function(){return NA(this);},"b",function(b){EH(this,b);}],Eb,"kotlin.jvm.internal.markers.KMappedMarker",E,[],0,0,[],Yg,"org.teavm.flavour.templates.Fragment$proxy2",E,[V],0,0,["l",function(){return Mt(this);},"Nc",function(b,c){Oo(this,b,c);}],P,"org.teavm.flavour.templates.Renderable",E,[],0,0,[],Ke,"org.teavm.flavour.templates.Component",E,[P],0,0,[],Xg,"org.teavm.flavour.templates.Fragment$proxy1",E,[V],0,0,["l",function(){return OJ(this); +},"b",function(b){HC(this,b);}],Q,"java.io.Serializable",E,[],0,0,[],Tc,"java.lang.Number",E,[Q],0,0,["a",function(){NI(this);}],Db,"java.lang.Comparable",E,[],0,0,[],Dd,"java.lang.Integer",Tc,[Db],0,Dd_$callClinit,["r",function(b){Nk(this,b);},"Nk",function(){return Ht(this);},"v",function(){return SH(this);},"I",function(b){return LK(this,b);}],Bf,"kotlin.ranges.ClosedRange",E,[],0,0,[],Uk,"java.lang.CloneNotSupportedException",Z,[],0,0,["a",function(){ZI(this);}],Ub,"kotlin.Function",E,[],0,0,[],Cf,"kotlin.jvm.internal.FunctionBase", +E,[Ub,Q],0,0,[],Bh,"org.teavm.flavour.templates.Fragment$proxy4",E,[V],0,0,["l",function(){return ZK(this);},"a",function(){Go(this);}],Zg,"org.teavm.flavour.templates.Fragment$proxy3",E,[V],0,0,["l",function(){return XB(this);},"a",function(){Jx(this);}],Qc,"org.teavm.flavour.routing.Route",E,[],0,0,["Rb",function(b){return Rr(this,b);},"Gb",function(b){return FH(this,b);}],Xc,"org.teavm.flavour.example.todomvc.TodoRoute",E,[Qc],0,0,["Rb",function(b){return Rr(this,b);},"Gb",function(b){return FH(this,b);}],Hb, +"org.teavm.flavour.templates.Space",E,[],0,0,["a",function(){Ez(this);},"zc",function(){return Zs(this);},"Db",function(){return VL(this);},"rk",function(){Qv(this);},"gj",function(){return OC(this);}],Fj,"org.teavm.flavour.templates.NodeHolder",Hb,[],0,0,["hb",function(b){UL(this,b);},"eb",function(){return ZM(this);},"N",function(b){RH(this,b);},"db",function(){Co(this);}],W,"org.teavm.jso.JSObject",E,[],0,0,[],Zd,"org.teavm.jso.dom.xml.Node",E,[W],0,0,[],Be,"org.teavm.jso.dom.xml.Document",E,[Zd],0,0,[],Y, +"org.teavm.jso.dom.events.EventTarget",E,[W],0,0,[],El,"org.teavm.jso.dom.html.HTMLDocument",E,[Be,Y],0,0,[],Wb,"java.lang.Runnable",E,[],0,0,[],Jb,"java.lang.Thread",E,[Wb],0,Jb_$callClinit,["f",function(b){Wi(this,b);},"lc",function(b,c){Yj(this,b,c);},"T",function(){return GJ(this);}],Ee,"java.util.Map",E,[],0,0,[],Sc,"org.teavm.jso.core.JSArrayReader",E,[W],0,0,[],Gl,"org.teavm.jso.core.JSArray",E,[Sc],0,0,["ij",function(b){return QL(this,b);},"ui",function(){return Tx(this);}],Gd,"kotlin.text.CharsKt__CharJVMKt", +E,[],0,0,[],Se,"org.teavm.flavour.example.todomvc.TodoDataSource",E,[],0,0,[],Nc,"org.teavm.flavour.example.todomvc.LocalStorageTodoDataSource",E,[Se],0,Nc_$callClinit,["Gi",function(){return GD(this);},"Sf",function(b){FN(this,b);},"Kl",function(b){AI(this,b);},"Ge",function(){MK(this);},"sl",function(){return ZA(this);},"yh",function(b){Ny(this,b);},"a",function(){Ak(this);}],Nd,"java.lang.CharSequence",E,[],0,0,[],Od,"java.lang.Error",Sb,[],0,0,["f",function(b){QA(this,b);}],Tb,"java.lang.LinkageError",Od, +[],0,0,["f",function(b){Kq(this,b);}],He,"org.teavm.jso.dom.events.LoadEventTarget",E,[Y],0,0,[],R,"org.teavm.flavour.json.tree.Node",E,[W],0,0,[],Sk,"org.teavm.flavour.json.tree.ArrayNode",R,[],0,0,[],Fn,"java.lang.StringIndexOutOfBoundsException",Pc,[],0,0,["a",function(){QD(this);}],Ci,"org.teavm.flavour.json.deserializer.JsonDeserializerContext",E,[],0,0,["a",function(){Or(this);}],Zb,"java.util.Iterator",E,[],0,0,[],Dc,"kotlin.collections.IntIterator",E,[Zb,Eb],0,0,["a",function(){MB(this);}],S,"java.lang.AbstractStringBuilder", +E,[Q,Nd],0,S_$callClinit,["a",function(){Ti(this);},"r",function(b){Ih(this,b);},"f",function(b){Hn(this,b);},"Ck",function(b){Fk(this,b);},"Ll",function(b){return Ou(this,b);},"ab",function(b,c){return WA(this,b,c);},"wd",function(b,c){return Ts(this,b,c);},"Ic",function(b,c,d){return RI(this,b,c,d);},"Rj",function(b){return QI(this,b);},"Z",function(b,c){return QC(this,b,c);},"E",function(b){Lv(this,b);},"v",function(){return Br(this);},"Ih",function(b,c){Qs(this,b,c);}],Af,"java.lang.Appendable",E,[],0,0, +[],Sg,"java.lang.StringBuilder",S,[Af],0,0,["a",function(){RJ(this);},"f",function(b){Fq(this,b);},"Fe",function(b){return Cq(this,b);},"wi",function(b){return Mq(this,b);},"pe",function(b,c){return YK(this,b,c);},"Xd",function(b,c){return LL(this,b,c);},"v",function(){return Mw(this);},"E",function(b){XL(this,b);},"Z",function(b,c){return Iq(this,b,c);},"ab",function(b,c){return OM(this,b,c);}],M,"org.teavm.flavour.templates.AbstractComponent",E,[Ke],0,0,["n",function(b){IH(this,b);},"e",function(){FG(this); +},"kd",function(){return Fz(this);}],N,"java.util.function.Consumer",E,[],0,0,[],Hh,"$$LAMBDA2$$",E,[N],0,0,["S",function(b){YM(this,b);},"h",function(b){Xs(this,b);},"fb",function(b){Ut(this,b);}],Tl,"java.util.ConcurrentModificationException",L,[],0,0,["a",function(){NL(this);}],Cc,"kotlin.text.StringsKt__IndentKt",E,[],0,0,[],Hd,"kotlin.text.StringsKt__RegexExtensionsKt",Cc,[],0,0,[],Rk,"org.teavm.flavour.routing.parsing.PathParser$PathParserElement",E,[],0,0,[],Sd,"java.lang.ClassCastException",L,[],0,0, +["f",function(b){Xw(this,b);}],Qf,"kotlin.TypeCastException",Sd,[],0,0,["f",function(b){KE(this,b);}],Ib,"org.teavm.flavour.json.serializer.JsonSerializer",E,[],0,0,[],Wm,"org.teavm.flavour.json.serializer.JsonSerializer$proxy1",E,[Ib],0,0,["A",function(b,c){return MN(this,b,c);},"a",function(){OF(this);}],K,"java.util.function.Supplier",E,[],0,0,[],Vm,"org.teavm.flavour.json.serializer.JsonSerializer$proxy0",E,[Ib],0,0,["A",function(b,c){return PA(this,b,c);},"a",function(){Vs(this);}],Xm,"org.teavm.flavour.json.serializer.JsonSerializer$proxy2", +E,[Ib],0,0,["A",function(b,c){return Cr(this,b,c);},"a",function(){BG(this);}],Of,"org.teavm.flavour.widgets.RouteBinder",E,[],0,0,["a",function(){UB(this);},"S",function(b){Eq(this,b);},"ye",function(b){NE(this,b);},"Ob",function(b){return Ty(this,b);},"m",function(){Wy(this);},"Pd",function(b,c){return So(this,b,c);},"Cj",function(b){AH(this,b);}],Wd,"org.teavm.flavour.json.serializer.NullableSerializer",E,[Ib],0,0,["a",function(){HH(this);},"A",function(b,c){return Ps(this,b,c);}],Tk,"org.teavm.flavour.json.serializer.ListSerializer", +Wd,[],0,0,["yb",function(b){ZD(this,b);},"Yg",function(b,c){return IN(this,b,c);}],Vn,"java.lang.StackTraceElement",E,[Q],0,0,[],Df,"org.teavm.flavour.regex.Matcher",E,[],0,0,["Mj",function(b){return Gs(this,b);}],U,"org.teavm.flavour.json.deserializer.JsonDeserializer",E,[],0,0,["a",function(){Bt(this);}],Oe,"java.io.Flushable",E,[],0,0,[],Mf,"org.teavm.flavour.routing.parsing.PathParserResult",E,[],0,0,["Zk",function(b,c,d){Iv(this,b,c,d);},"Pk",function(){return UF(this);}],Ej,"org.teavm.flavour.example.todomvc.LocalStorageTodoDataSource$Companion", +E,[],0,0,["Aj",function(){return FC(this);},"a",function(){SL(this);},"x",function(b){EL(this,b);}],Wc,"kotlin.text.StringsKt__StringBuilderJVMKt",Hd,[],0,0,[],Zc,"kotlin.text.StringsKt__StringBuilderKt",Wc,[],0,0,[],Ld,"kotlin.text.StringsKt__StringNumberConversionsKt",Zc,[],0,0,[],Id,"kotlin.text.StringsKt__StringsJVMKt",Ld,[],0,0,[],Xd,"kotlin.text.StringsKt__StringsKt",Id,[],0,0,[],Qd,"kotlin.text.StringsKt___StringsKt",Xd,[],0,0,[],Am,"kotlin.text.StringsKt",Qd,[],0,0,[],O,"kotlin.jvm.internal.Lambda", +E,[Cf],0,0,["r",function(b){FJ(this,b);}],Fb,"kotlin.jvm.functions.Function1",E,[Ub],0,0,[],We,"org.teavm.flavour.example.todomvc.TodoView$active$1",O,[Fb],0,We_$callClinit,["z",function(b){return TD(this,b);},"u",function(b){return Pw(this,b);},"a",function(){Ug(this);}],Qb,"java.lang.IncompatibleClassChangeError",Tb,[],0,0,["f",function(b){QF(this,b);}],Zl,"java.lang.NoSuchMethodError",Qb,[],0,0,["f",function(b){Ky(this,b);}],Me,"org.teavm.flavour.routing.emit.PathImplementor",E,[],0,0,[],Qn,"org.teavm.flavour.routing.emit.PathImplementor$proxy0", +E,[Me],0,0,["tl",function(b,c){return HI(this,b,c);},"Ec",function(b){return NB(this,b);},"Cl",function(b){TC(this,b);}],Ok,"org.teavm.flavour.templates.Templates$RootComponent",M,[],0,0,["Eh",function(b,c){Zn(this,b,c);},"d",function(){PM(this);},"e",function(){Mv(this);}],Lc,"org.teavm.flavour.widgets.ApplicationTemplate",E,[Qc],0,0,["a",function(){EI(this);},"Ab",function(b){UH(this,b);},"Rb",function(b){return Rr(this,b);},"Gb",function(b){return FH(this,b);}],Ze,"org.teavm.flavour.example.todomvc.TodoView", +Lc,[Xc],0,Ze_$callClinit,["ki",function(){return FB(this);},"ub",function(){return UD(this);},"Yc",function(){return LF(this);},"Ji",function(b){Uw(this,b);},"sj",function(){return Uv(this);},"Ac",function(){return XJ(this);},"dd",function(){return Rs(this);},"Xk",function(){return Ds(this);},"Mk",function(){return ZB(this);},"Ke",function(){return VI(this);},"wj",function(b){Iu(this,b);},"rg",function(){Hr(this);},"ne",function(b){Kp(this,b);},"Fb",function(b){UK(this,b);},"Jf",function(b){GB(this,b);},"Qj", +function(b){LN(this,b);},"Td",function(){Wz(this);},"L",function(){Sv(this);},"O",function(){YB(this);},"bb",function(){Wr(this);},"Ui",function(b){return ID(this,b);},"al",function(){Dt(this);},"lg",function(b){Nf(this,b);},"Rb",function(b){return Rr(this,b);},"Gb",function(b){return FH(this,b);}],Vh,"org.teavm.flavour.routing.emit.RoutingImpl",E,[],0,0,[],Mi,"org.teavm.flavour.routing.parsing.PathParser",E,[],0,0,["Al",function(b,c){Qo(this,b,c);},"gh",function(b){return KB(this,b);}],Sm,"org.teavm.flavour.example.todomvc.TodoList", +E,[],0,0,["Mb",function(){return Aq(this);},"a",function(){NK(this);}],Th,"java.util.AbstractList$1",E,[Zb],0,0,["Uf",function(b){Yv(this,b);},"s",function(){return Lr(this);},"y",function(){return BF(this);},"jb",function(){DH(this);},"J",function(){Yy(this);}],Dm,"org.teavm.flavour.routing.internal.Matcher0",E,[Df],0,0,["a",function(){Bx(this);},"yg",function(){return Kt(this);},"zb",function(){return SK(this);},"Nl",function(b,c,d,e){return Zo(this,b,c,d,e);},"Mj",function(b){return Gs(this,b);}],Ab,"org.teavm.jso.dom.events.EventListener", +E,[W],0,0,[],Dj,"$$LAMBDA1$$",E,[Ab],0,0,["hl",function(b){VD(this,b);},"q",function(b){Ro(this,b);},"wc",function(b){QE(this,b);},"p",function(b){return Bp(this,b);}],Ai,"java.lang.Runnable$proxy0",E,[Wb],0,0,["kb",function(){Tv(this);},"j",function(b,c){GM(this,b,c);}],Vj,"org.teavm.flavour.json.JSON",E,[],0,0,[],Rh,"kotlin.ranges.IntProgression$Companion",E,[],0,0,["a",function(){RE(this);},"x",function(b){Ko(this,b);}],Jh,"java.lang.reflect.Array",E,[],0,0,[],Ob,"java.util.ListIterator",E,[Zb],0,0,[],J, +"org.teavm.flavour.templates.Modifier",E,[],0,0,[],Jl,"org.teavm.flavour.templates.Modifier$proxy2",E,[J],0,0,["c",function(b){return Xr(this,b);},"b",function(b){Et(this,b);}],Ml,"org.teavm.flavour.templates.Modifier$proxy3",E,[J],0,0,["c",function(b){return JM(this,b);},"b",function(b){OA(this,b);}],Il,"org.teavm.flavour.templates.Modifier$proxy0",E,[J],0,0,["c",function(b){return Aw(this,b);},"b",function(b){Dz(this,b);}],Kl,"org.teavm.flavour.templates.Modifier$proxy1",E,[J],0,0,["c",function(b){return GF(this, +b);},"b",function(b){Sy(this,b);}],Dk,"org.teavm.platform.plugin.ResourceAccessor",E,[],0,0,[],Gk,"org.teavm.flavour.json.deserializer.ListDeserializer",U,[],0,0,["Tk",function(b){Bv(this,b);},"F",function(b,c){return SJ(this,b,c);}],Li,"java.lang.NoSuchFieldError",Qb,[],0,0,["f",function(b){Lx(this,b);}],Yc,"kotlin.collections.CollectionsKt__CollectionsKt",E,[],0,0,[],Sf,"org.teavm.flavour.templates.Modifier$proxy10",E,[J],0,0,["c",function(b){return HL(this,b);},"j",function(b,c){KM(this,b,c);}],Ed,"java.lang.Iterable", +E,[],0,0,[],Kb,"java.util.Collection",E,[Ed],0,0,[],X,"java.util.AbstractCollection",E,[Kb],0,0,["a",function(){VG(this);},"H",function(){return VB(this);},"Ig",function(b){return Vp(this,b);},"Yb",function(b){return DC(this,b);},"Pi",function(b){return Xu(this,b);}],Pl,"org.teavm.flavour.templates.Modifier$proxy8",E,[J],0,0,["c",function(b){return Rw(this,b);},"k",function(b){WK(this,b);}],Rl,"org.teavm.flavour.templates.Modifier$proxy9",E,[J],0,0,["c",function(b){return Ur(this,b);},"j",function(b,c){MD(this, +b,c);}],Nl,"org.teavm.flavour.templates.Modifier$proxy6",E,[J],0,0,["c",function(b){return Mx(this,b);},"D",function(b,c){Pt(this,b,c);}],Vf,"org.teavm.flavour.templates.Modifier$proxy14",E,[J],0,0,["c",function(b){return Op(this,b);},"j",function(b,c){ML(this,b,c);}],Ql,"org.teavm.flavour.templates.Modifier$proxy7",E,[J],0,0,["c",function(b){return Vu(this,b);},"k",function(b){Pr(this,b);}],Wf,"org.teavm.flavour.templates.Modifier$proxy13",E,[J],0,0,["c",function(b){return Ey(this,b);},"k",function(b){Ry(this, +b);}],Ce,"org.teavm.flavour.example.todomvc.TodoView$Companion$main$1",E,[N],0,Ce_$callClinit,["h",function(b){BN(this,b);},"rc",function(b){Ly(this,b);},"a",function(){Ph(this);}],Ll,"org.teavm.flavour.templates.Modifier$proxy4",E,[J],0,0,["c",function(b){return Qq(this,b);},"b",function(b){EM(this,b);}],Xf,"org.teavm.flavour.templates.Modifier$proxy12",E,[J],0,0,["c",function(b){return Jw(this,b);},"k",function(b){FF(this,b);}],Ol,"org.teavm.flavour.templates.Modifier$proxy5",E,[J],0,0,["c",function(b){return RG(this, +b);},"b",function(b){Zq(this,b);}],Rf,"org.teavm.flavour.templates.Modifier$proxy11",E,[J],0,0,["c",function(b){return XH(this,b);},"j",function(b,c){Lt(this,b,c);}],Eg,"org.teavm.flavour.templates.Modifier$proxy18",E,[J],0,0,["c",function(b){return KH(this,b);},"b",function(b){VC(this,b);}],Fg,"org.teavm.flavour.templates.Modifier$proxy17",E,[J],0,0,["c",function(b){return RM(this,b);},"b",function(b){YH(this,b);}],Gg,"org.teavm.flavour.templates.Modifier$proxy16",E,[J],0,0,["c",function(b){return Rq(this, +b);},"D",function(b,c){JG(this,b,c);}],Tf,"org.teavm.flavour.templates.Modifier$proxy15",E,[J],0,0,["c",function(b){return OG(this,b);},"j",function(b,c){Fs(this,b,c);}],Dg,"org.teavm.flavour.templates.Modifier$proxy19",E,[J],0,0,["c",function(b){return At(this,b);},"b",function(b){Gy(this,b);}],Xl,"org.teavm.flavour.components.html.CheckedChangeBinder$1",E,[Ab],0,0,["ge",function(b){Ho(this,b);},"q",function(b){GK(this,b);},"p",function(b){return DL(this,b);}],Yd,"org.teavm.flavour.example.todomvc.TodoView$todoFilter$1", +O,[Fb],0,Yd_$callClinit,["z",function(b){return Lo(this,b);},"u",function(b){return II(this,b);},"a",function(){Pk(this);}],Yh,"org.teavm.flavour.routing.emit.RoutingImpl$PROXY$6",E,[],0,0,[],Wj,"org.teavm.jso.impl.JS",E,[],0,0,[],Zh,"org.teavm.flavour.routing.emit.RoutingImpl$PROXY$3",E,[],0,0,[],Wh,"org.teavm.flavour.routing.emit.RoutingImpl$PROXY$1",E,[],0,0,[],Fc,"kotlin.text.CharsKt__CharKt",Gd,[],0,0,[],Bj,"org.teavm.classlib.impl.unicode.UnicodeHelper",E,[],0,0,[],Fl,"java.util.Objects",E,[],0,0,[],Ic, +"org.teavm.flavour.templates.Templates",E,[],0,Ic_$callClinit,[],Ae,"java.util.Map$Entry",E,[],0,0,[],Nb,"java.lang.Cloneable",E,[],0,0,[],Td,"java.util.MapEntry",E,[Ae,Nb],0,0,["nl",function(b,c){BM(this,b,c);}],Ah,"java.util.HashMap$HashEntry",Td,[],0,0,["Be",function(b,c){Qw(this,b,c);}],Wk,"org.teavm.flavour.components.standard.ForEachComponent",M,[],0,0,["n",function(b){UG(this,b);},"Zc",function(b){BH(this,b);},"ni",function(){return LG(this);},"V",function(b){WC(this,b);},"d",function(){XC(this);},"ed", +function(){return Po(this);},"Zi",function(b,c,d){Hp(this,b,c,d);},"e",function(){Up(this);}],Rd,"kotlin.collections.CollectionsKt__IterablesKt",Yc,[],0,0,[],Ad,"kotlin.collections.CollectionsKt__IteratorsKt",Rd,[],0,0,[],Jc,"kotlin.collections.CollectionsKt__MutableCollectionsKt",Ad,[],0,0,[],Pd,"kotlin.collections.CollectionsKt__ReversedViewsKt",Jc,[],0,0,[],Md,"kotlin.collections.CollectionsKt___CollectionsKt",Pd,[],0,0,[],Mn,"kotlin.collections.CollectionsKt",Md,[],0,0,[],Um,"kotlin.ranges.IntProgressionIterator", +Dc,[],0,0,["s",function(){return Ks(this);},"lk",function(){return Rv(this);},"U",function(b,c,d){Wp(this,b,c,d);}],De,"java.util.Queue",E,[Kb],0,0,[],Yl,"$$LAMBDA4$$",E,[Ab],0,0,["wk",function(b){TB(this,b);},"q",function(b){Sx(this,b);},"p",function(b){return RK(this,b);}],Pj,"org.teavm.flavour.routing.parsing.PathParser$PathParserCase",E,[],0,0,["a",function(){Yz(this);}],Pf,"org.teavm.flavour.json.tree.NullNode",R,[],0,0,[],Le,"org.teavm.flavour.templates.ModifierTarget",E,[],0,0,[],Re,"java.util.Set",E, +[Kb],0,0,[],Cd,"java.util.AbstractSet",X,[Re],0,0,["a",function(){Wx(this);}],Xk,"java.util.HashSet",Cd,[Nb,Q],0,0,["a",function(){EE(this);},"dl",function(b){NF(this,b);},"P",function(b){return FK(this,b);}],Cj,"org.teavm.platform.Platform",E,[],0,0,[],Vb,"java.nio.charset.Charset",E,[Db],0,Vb_$callClinit,["Ei",function(b,c){Rj(this,b,c);}],Rb,"org.teavm.flavour.components.events.BaseEventBinder",E,[P],0,0,["i",function(b){Mr(this,b);},"Fd",function(b){TA(this,b);},"Bg",function(b){ZE(this,b);},"d",function() +{Ep(this);},"e",function(){Zv(this);},"Sg",function(b){RD(this,b);}],Xn,"org.teavm.flavour.components.events.EventBinder",Rb,[],0,0,["i",function(b){IC(this,b);}],Bc,"java.lang.Boolean",E,[Q,Db],0,Bc_$callClinit,["Ni",function(b){Aj(this,b);},"Ch",function(){return XF(this);}],Fd,"java.lang.IllegalArgumentException",L,[],0,0,["a",function(){Gw(this);},"f",function(b){AN(this,b);}],Ek,"java.nio.charset.IllegalCharsetNameException",Fd,[],0,0,["f",function(b){CE(this,b);}],Ye,"org.teavm.flavour.regex.Pattern", +E,[],0,0,[],Ul,"org.teavm.flavour.regex.Pattern$proxy0",E,[Ye],0,0,["Oi",function(){return Gx(this);},"a",function(){GN(this);}],Vd,"java.lang.Enum",E,[Db,Q],0,0,["Q",function(b,c){SG(this,b,c);}],Lb,"org.teavm.flavour.example.todomvc.TodoFilterType",Vd,[],1,Lb_$callClinit,["Q",function(b,c){Lf(this,b,c);}],Rn,"java.util.NoSuchElementException",L,[],0,0,["a",function(){Wq(this);}],Ec,"java.util.List",E,[Kb],0,0,[],T,"java.util.AbstractList",X,[Ec],0,0,["a",function(){AJ(this);},"P",function(b){return Iz(this, +b);},"B",function(){return PC(this);},"fg",function(b){return CF(this,b);},"R",function(){return Yo(this);},"K",function(b){return XA(this,b);},"Tg",function(b,c){return HB(this,b,c);}],Jd,"java.util.AbstractSequentialList",T,[],0,0,["a",function(){LC(this);},"G",function(b){return DB(this,b);},"mb",function(b,c){Fy(this,b,c);}],Ud,"java.util.Deque",E,[De],0,0,[],Ij,"java.util.LinkedList",Jd,[Ud],0,0,["a",function(){KN(this);},"Dl",function(b){Nw(this,b);},"w",function(){return Xy(this);},"R",function(){return Hv(this); +},"K",function(b){return Hy(this,b);},"Jl",function(b){Cv(this,b);}],Hf,"java.lang.AutoCloseable",E,[],0,0,[],Gc,"java.io.Closeable",E,[Hf],0,0,[],Cb,"java.io.OutputStream",E,[Gc,Oe],0,0,["a",function(){Yn(this);}],Hc,"java.io.FilterOutputStream",Cb,[],0,0,["Ki",function(b){Tq(this,b);}],Wl,"java.io.PrintStream",Hc,[],0,0,["Yi",function(b,c){SF(this,b,c);}],Cn,"java.util.function.Supplier$proxy8",E,[K],0,0,["g",function(){return BK(this);},"k",function(b){DF(this,b);}],Ym,"java.util.function.Supplier$proxy9", +E,[K],0,0,["g",function(){return PK(this);},"b",function(b){Jt(this,b);}],An,"java.util.function.Supplier$proxy6",E,[K],0,0,["g",function(){return MG(this);},"k",function(b){WI(this,b);}],Bn,"java.util.function.Supplier$proxy7",E,[K],0,0,["g",function(){return TH(this);},"k",function(b){FL(this,b);}],Hg,"java.util.AbstractList$TListIteratorImpl",E,[Ob],0,0,["dj",function(b,c,d,e){Bu(this,b,c,d,e);},"s",function(){return Cz(this);},"y",function(){return GE(this);},"W",function(){return EA(this);},"ob",function() +{return JC(this);},"M",function(){return JF(this);},"lb",function(){return PH(this);},"J",function(){Ls(this);}],Om,"java.util.function.Supplier$proxy4",E,[K],0,0,["g",function(){return Xx(this);},"b",function(b){QJ(this,b);}],Zm,"java.util.function.Supplier$proxy5",E,[K],0,0,["g",function(){return Tw(this);},"D",function(b,c){OB(this,b,c);}],Mm,"java.util.function.Supplier$proxy2",E,[K],0,0,["g",function(){return BC(this);},"b",function(b){OI(this,b);}],Nm,"java.util.function.Supplier$proxy3",E,[K],0,0,["g", +function(){return GA(this);},"b",function(b){Eo(this,b);}],Qi,"kotlin.jvm.internal.markers.KMutableIterable",E,[Eb],0,0,[],Pm,"java.util.function.Supplier$proxy0",E,[K],0,0,["g",function(){return VF(this);},"b",function(b){Az(this,b);}],Lm,"java.util.function.Supplier$proxy1",E,[K],0,0,["g",function(){return Pq(this);},"b",function(b){XE(this,b);}],Xb,"java.util.RandomAccess",E,[],0,0,[],If,"kotlin.collections.EmptyList",E,[Ec,Q,Xb,Eb],0,If_$callClinit,["B",function(){return EK(this);},"a",function(){Si(this); +}],Qm,"org.teavm.flavour.json.tree.ObjectNode",R,[],0,0,[],Rc,"java.util.AbstractMap",E,[Ee],0,0,["a",function(){VA(this);}],Te,"org.teavm.flavour.templates.DomBuilder",E,[],0,Te_$callClinit,["n",function(b){Kf(this,b);},"rl",function(b){return ZF(this,b);},"Ld",function(b){return FI(this,b);},"eh",function(b,c){return UA(this,b,c);},"lh",function(){return It(this);},"el",function(b){return TG(this,b);},"Md",function(b,c){return Rt(this,b,c);},"De",function(b){return RF(this,b);},"pj",function(b){return BJ(this, +b);},"Di",function(b){JH(this,b);},"Yd",function(){return Bo(this);}],Bb,"org.teavm.flavour.templates.DomComponentHandler",E,[],0,0,[],Kg,"org.teavm.flavour.templates.DomComponentHandler$proxy2",E,[Bb],0,0,["m",function(){CN(this);},"o",function(b){MJ(this,b);},"Qc",function(b,c,d){Oy(this,b,c,d);}],Og,"org.teavm.flavour.templates.DomComponentHandler$proxy3",E,[Bb],0,0,["m",function(){Tz(this);},"o",function(b){FM(this,b);},"a",function(){QB(this);}],Fe,"java.lang.reflect.AnnotatedElement",E,[],0,0,[],Sl,"java.lang.Class", +E,[Fe],0,0,["ze",function(b){BD(this,b);},"Zj",function(){return Av(this);},"yi",function(){return OL(this);},"El",function(){return Cp(this);}],Kn,"$$LAMBDA3$$",E,[Ab],0,0,["cb",function(b){CM(this,b);},"q",function(b){ED(this,b);},"p",function(b){return AM(this,b);}],Mg,"org.teavm.flavour.templates.DomComponentHandler$proxy4",E,[Bb],0,0,["m",function(){WL(this);},"o",function(b){NM(this,b);},"a",function(){LE(this);}],Pg,"org.teavm.flavour.templates.DomComponentHandler$proxy5",E,[Bb],0,0,["m",function(){Rp(this); +},"o",function(b){JD(this,b);},"b",function(b){JE(this,b);}],Gf,"java.util.Comparator",E,[],0,0,[],Ck,"kotlin.ranges.IntRange$Companion",E,[],0,0,["a",function(){JN(this);},"x",function(b){HN(this,b);}],Jg,"org.teavm.flavour.templates.DomComponentHandler$proxy0",E,[Bb],0,0,["m",function(){BL(this);},"o",function(b){Mu(this,b);},"b",function(b){TK(this,b);}],Lg,"org.teavm.flavour.templates.DomComponentHandler$proxy1",E,[Bb],0,0,["m",function(){BA(this);},"o",function(b){BB(this,b);},"b",function(b){TE(this,b); +}],Oi,"java.util.Arrays",E,[],0,0,[],Dn,"java.lang.ConsoleOutputStreamStdout",Cb,[],0,0,["a",function(){Oq(this);}],Yb,"java.lang.System",E,[],0,Yb_$callClinit,[],Sh,"org.teavm.flavour.example.todomvc.EscapeComponent$eventListener$1",E,[Ab],0,0,["q",function(b){Cy(this,b);},"ol",function(b){Zy(this,b);},"Ed",function(b){Zt(this,b);},"p",function(b){return Tr(this,b);}],Ge,"java.util.function.BooleanSupplier",E,[],0,0,[],Vi,"java.util.LinkedList$Entry",E,[],0,0,["a",function(){DD(this);}],Nh,"org.teavm.flavour.example.todomvc.TodoRoute$proxy0", +E,[Xc],0,0,["L",function(){CB(this);},"O",function(){Vr(this);},"bb",function(){Lw(this);},"cb",function(b){St(this,b);},"Rb",function(b){return Rr(this,b);},"Gb",function(b){return FH(this,b);}],Mb,"java.lang.Character",E,[Db],0,Mb_$callClinit,[],Yf,"java.util.function.BooleanSupplier$proxy0",E,[Ge],0,0,["Me",function(){return PI(this);},"b",function(b){IG(this,b);}],Kd,"kotlin.jvm.functions.Function0",E,[Ub],0,0,[],Lk,"kotlin.jvm.functions.Function0$proxy0",E,[Kd],0,0,["nb",function(){return KA(this);},"D", +function(b,c){ZH(this,b,c);}],Vg,"org.teavm.flavour.templates.DomComponentTemplate",M,[],0,0,["Hf",function(b){Vw(this,b);},"d",function(){Sr(this);},"e",function(){CK(this);}],Hl,"org.teavm.flavour.example.todomvc.TodoView$Companion",E,[],0,0,["ef",function(b){DJ(this,b);},"a",function(){Uz(this);},"x",function(b){Xp(this,b);}],Gj,"org.teavm.flavour.components.html.TextComponent",M,[],0,0,["n",function(b){KK(this,b);},"t",function(b){Yr(this,b);},"d",function(){AF(this);}],Jf,"org.teavm.flavour.example.todomvc.LocalStorageTodoDataSource$clearCompleted$1", +O,[Fb],0,Jf_$callClinit,["z",function(b){return CG(this,b);},"u",function(b){return Su(this,b);},"a",function(){Tj(this);}],Nn,"kotlin.jvm.internal.Intrinsics",E,[],0,0,[],Vl,"org.teavm.flavour.example.todomvc.FocusComponent",E,[P],0,0,["Mg",function(b){PE(this,b);},"d",function(){QG(this);},"e",function(){Lq(this);},"i",function(b){YA(this,b);}],Gn,"org.teavm.flavour.components.standard.ChooseClause",E,[],0,0,["a",function(){Zp(this);},"Tf",function(b){Ar(this,b);},"X",function(b){DA(this,b);}],Qk,"org.teavm.flavour.templates.emitting.VariableImpl", +E,[],0,0,["a",function(){ND(this);}],Ln,"org.teavm.flavour.components.html.CheckedBinder",E,[P],0,0,["i",function(b){IE(this,b);},"t",function(b){Kz(this,b);},"d",function(){KI(this);},"e",function(){Ew(this);}],Uh,"$$LAMBDA6$$",E,[N],0,0,["rd",function(b){Uu(this,b);},"h",function(b){Jq(this,b);},"fb",function(b){Bw(this,b);}],Bm,"java.util.AbstractList$SubAbstractList$SubAbstractListIterator",E,[Ob],0,0,["ag",function(b,c,d,e){Qy(this,b,c,d,e);},"s",function(){return Hw(this);},"y",function(){return WH(this); +}],Ng,"org.teavm.flavour.json.deserializer.JsonDeserializer$proxy0",U,[],0,0,["F",function(b,c){return FA(this,b,c);},"a",function(){SM(this);}],Qg,"org.teavm.flavour.json.deserializer.JsonDeserializer$proxy1",U,[],0,0,["F",function(b,c){return CD(this,b,c);},"a",function(){JA(this);}],Uc,"org.teavm.flavour.json.tree.BooleanNode",R,[],0,Uc_$callClinit,[],Yk,"org.teavm.flavour.templates.DomBuilder$Item",E,[Le],0,0,["a",function(){Dr(this);},"Xj",function(){return Qt(this);},"zf",function(b){Ft(this,b);},"bj", +function(b){Fo(this,b);},"Pb",function(b){RA(this,b);},"Vh",function(){KJ(this);},"Mh",function(){return BE(this);},"tk",function(b){Cu(this,b);}],Ue,"org.teavm.jso.dom.events.FocusEventTarget",E,[Y],0,0,[],Ff,"org.teavm.jso.dom.events.MouseEventTarget",E,[Y],0,0,[],Ef,"org.teavm.jso.dom.events.KeyboardEventTarget",E,[Y],0,0,[],Qe,"org.teavm.jso.browser.WindowEventTarget",E,[Y,Ue,Ff,Ef,He],0,0,[],Cm,"org.teavm.flavour.json.serializer.JsonSerializerContext",E,[],0,0,["a",function(){LA(this);},"Og",function(b) +{LD(this,b);}],Pi,"java.util.ArrayList",T,[Nb,Q],0,0,["a",function(){HE(this);},"r",function(b){Ip(this,b);},"E",function(b){Hs(this,b);},"G",function(b){return Hz(this,b);},"w",function(){return Yu(this);},"Cd",function(b,c){return Xq(this,b,c);},"mb",function(b,c){TJ(this,b,c);},"Dj",function(b){return Zz(this,b);},"ld",function(b){return NC(this,b);},"zd",function(){Nv(this);},"kf",function(b){Tp(this,b);},"hd",function(b){AA(this,b);}],Ne,"org.teavm.jso.browser.StorageProvider",E,[],0,0,[],Qh,"org.teavm.jso.browser.Window", +E,[W,Qe,Ne,Sc],0,0,["Oc",function(b,c){return XD(this,b,c);},"mc",function(b,c,d){return JK(this,b,c,d);},"tc",function(b){return OD(this,b);},"Mc",function(b,c){return IF(this,b,c);},"Ne",function(b){return EJ(this,b);},"Li",function(){return Vx(this);},"Se",function(b,c,d){return Np(this,b,c,d);}],Uf,"java.util.LinkedList$SequentialListIterator",E,[Ob],0,0,["il",function(b,c,d,e){Ax(this,b,c,d,e);},"s",function(){return QK(this);},"y",function(){return Lu(this);},"jb",function(){AK(this);},"W",function(){ +return Py(this);},"ob",function(){return Qp(this);},"M",function(){return NJ(this);},"lb",function(){return CI(this);},"sd",function(b){ZG(this,b);},"J",function(){Ot(this);}],Bd,"org.teavm.flavour.example.todomvc.EscapeComponent",E,[P],0,Bd_$callClinit,["Ol",function(){return My(this);},"Nj",function(b){BI(this,b);},"d",function(){Os(this);},"e",function(){SI(this);},"i",function(b){Eh(this,b);}],Mc,"java.util.AbstractList$SubAbstractList",T,[],0,0,["ib",function(b,c,d){UJ(this,b,c,d);},"B",function(){return Cw(this); +},"K",function(b){return Gz(this,b);},"w",function(){return Sp(this);}],Hj,"java.util.AbstractList$SubAbstractListRandomAccess",Mc,[Xb],0,0,["ib",function(b,c,d){AC(this,b,c,d);}],Vc,"java.lang.String",E,[Q,Db,Nd],0,Vc_$callClinit,["Ij",function(b){Gh(this,b);},"ak",function(b,c,d){Un(this,b,c,d);},"Gf",function(b){return Wt(this,b);},"Uh",function(){return C(this);},"H",function(){return HK(this);},"Id",function(b,c,d,e){D(this,b,c,d,e);},"cj",function(b,c){return Iw(this,b,c);},"tj",function(b){return OK(this, +b);},"Jc",function(b,c){return Nq(this,b,c);},"fe",function(b){return UI(this,b);},"kg",function(b,c){return MC(this,b,c);},"v",function(){return Zw(this);},"I",function(b){return XG(this,b);},"Y",function(){return Nt(this);},"hj",function(){return G(this);}],Wn,"java.lang.NegativeArraySizeException",L,[],0,0,["a",function(){Pv(this);}],Zj,"org.teavm.flavour.components.standard.OtherwiseClause",E,[],0,0,["a",function(){EN(this);},"X",function(b){Mo(this,b);}],Ag,"org.teavm.flavour.templates.Modifier$proxy21", +E,[J],0,0,["c",function(b){return Vo(this,b);},"b",function(b){Qx(this,b);}],Bg,"org.teavm.flavour.templates.Modifier$proxy20",E,[J],0,0,["c",function(b){return OE(this,b);},"b",function(b){AB(this,b);}],Pn,"java.nio.charset.impl.UTF8Charset",Vb,[],0,0,["a",function(){MI(this);}],Cg,"org.teavm.flavour.templates.Modifier$proxy23",E,[J],0,0,["c",function(b){return Ir(this,b);},"b",function(b){AD(this,b);}],Xi,"org.teavm.flavour.json.tree.StringNode",R,[],0,0,[],Zf,"org.teavm.flavour.templates.Modifier$proxy22", +E,[J],0,0,["c",function(b){return WB(this,b);},"b",function(b){Eu(this,b);}],Uj,"$$LAMBDA5$$",E,[Ab],0,0,["od",function(b){Er(this,b);},"q",function(b){YJ(this,b);},"p",function(b){return KL(this,b);}],Ie,"kotlin.collections.EmptyIterator",E,[Ob,Eb],0,Ie_$callClinit,["s",function(){return SD(this);},"Gj",function(){return Dq(this);},"y",function(){return Ns(this);},"a",function(){Mh(this);}],Oh,"org.teavm.flavour.templates.Templates$PROXY$2",E,[],0,0,[],Ri,"org.teavm.flavour.json.deserializer.StringDeserializer", +U,[],0,0,["a",function(){SA(this);},"F",function(b,c){return Io(this,b,c);}],Pe,"org.teavm.flavour.example.todomvc.FocusComponent$isFocused$1",O,[Kd],0,Pe_$callClinit,["nb",function(){return GH(this);},"vb",function(){return Wo(this);},"a",function(){Xh(this);}],Tn,"org.teavm.flavour.routing.Routing",E,[],0,0,[],Zi,"java.util.ArrayDeque",X,[Ud],0,0,["a",function(){Ap(this);},"r",function(b){EF(this,b);},"le",function(b){DG(this,b);},"nd",function(){return AG(this);},"sc",function(){return IL(this);},"qg",function() +{return AL(this);},"Nd",function(){return Rx(this);},"ud",function(b){HM(this,b);},"Qk",function(){return Lz(this);},"w",function(){return Is(this);},"H",function(){return Fu(this);},"E",function(b){HJ(this,b);}],Ve,"org.teavm.flavour.example.todomvc.EscapeComponent$action$1",E,[Wb],0,Ve_$callClinit,["kb",function(){DE(this);},"a",function(){Jm(this);}],Fh,"java.lang.IllegalStateException",Z,[],0,0,["a",function(){CC(this);},"f",function(b){Zu(this,b);}],Ui,"org.teavm.flavour.components.html.LinkComponent", +E,[P],0,0,["i",function(b){TI(this,b);},"Ci",function(b){LM(this,b);},"d",function(){Gp(this);},"e",function(){GL(this);},"uh",function(b){TM(this,b);}],Rg,"java.lang.NullPointerException",L,[],0,0,["a",function(){Iy(this);}],En,"kotlin.jvm.internal.TypeIntrinsics",E,[],0,0,[],Tm,"java.lang.Math",E,[],0,0,[],Yi,"org.teavm.flavour.components.html.CheckedChangeBinder",E,[P],0,0,["i",function(b){Hq(this,b);},"gb",function(b){Nu(this,b);},"d",function(){NG(this);},"e",function(){Gt(this);}],Hm,"java.util.function.Supplier$proxy10", +E,[K],0,0,["g",function(){return IB(this);},"b",function(b){NH(this,b);}],Em,"java.util.function.Supplier$proxy13",E,[K],0,0,["g",function(){return Ss(this);},"b",function(b){Ay(this,b);}],Gm,"java.util.function.Supplier$proxy11",E,[K],0,0,["g",function(){return Yp(this);},"b",function(b){YC(this,b);}],Xj,"org.teavm.flavour.components.standard.IfComponent",M,[],0,0,["n",function(b){QM(this,b);},"Wf",function(b){Jo(this,b);},"V",function(b){Vq(this,b);},"d",function(){YE(this);},"e",function(){MA(this);}],Fm, +"java.util.function.Supplier$proxy12",E,[K],0,0,["g",function(){return GG(this);},"b",function(b){Hu(this,b);}],Ac,"kotlin.ranges.IntProgression",E,[Ed,Eb],0,Ac_$callClinit,["Lc",function(){return Yw(this);},"B",function(){return Ws(this);},"U",function(b,c,d){Bl(this,b,c,d);}],Kc,"kotlin.ranges.IntRange",Ac,[Bf],0,Kc_$callClinit,["df",function(b,c){Ni(this,b,c);}],Mk,"kotlin.text.CharsKt",Fc,[],0,0,[],Gb,"org.teavm.flavour.templates.ValueChangeListener",E,[],0,0,[],Kk,"org.teavm.flavour.templates.ValueChangeListener$proxy1", +E,[Gb],0,0,["C",function(b){Du(this,b);},"b",function(b){Gr(this,b);}],Hk,"org.teavm.flavour.templates.ValueChangeListener$proxy0",E,[Gb],0,0,["C",function(b){DN(this,b);},"b",function(b){EG(this,b);}],Ik,"org.teavm.flavour.templates.ValueChangeListener$proxy3",E,[Gb],0,0,["C",function(b){UE(this,b);},"k",function(b){UC(this,b);}],Jk,"org.teavm.flavour.templates.ValueChangeListener$proxy2",E,[Gb],0,0,["C",function(b){Kv(this,b);},"k",function(b){Kw(this,b);}],Oj,"org.teavm.flavour.json.JSON$PROXY$0",E,[],0, +0,[],Pb,"org.teavm.flavour.templates.Slot",Hb,[],0,0,["a",function(){GI(this);},"ig",function(b){LH(this,b);},"Zh",function(b,c){KD(this,b,c);},"eb",function(){return WG(this);},"N",function(b){Fw(this,b);},"db",function(){Gu(this);}],Al,"org.teavm.flavour.templates.ContainerSlot",Pb,[],0,0,["a",function(){ZJ(this);}],Kj,"org.teavm.flavour.json.JSON$PROXY$4",E,[],0,0,[],Nj,"org.teavm.flavour.json.JSON$PROXY$5",E,[],0,0,[],Jj,"org.teavm.flavour.components.attributes.ComputedAttribute",E,[P],0,0,["i",function(b) +{Vy(this,b);},"t",function(b){PG(this,b);},"xf",function(b){PD(this,b);},"d",function(){Wv(this);},"e",function(){Fv(this);}],Lj,"org.teavm.flavour.json.JSON$PROXY$7",E,[],0,0,[],Oc,"java.io.InputStream",E,[Gc],0,0,["a",function(){GC(this);}],Rm,"java.lang.ConsoleInputStream",Oc,[],0,0,["a",function(){MH(this);}],Mj,"org.teavm.flavour.json.JSON$PROXY$8",E,[],0,0,[],Dl,"$$LAMBDA0$$",E,[Gf],0,0,["a",function(){SE(this);}],Im,"org.teavm.flavour.components.html.ValueBinder",E,[P],0,0,["i",function(b){VJ(this,b); +},"t",function(b){EB(this,b);},"d",function(){Yq(this);},"e",function(){Tu(this);}],Vk,"org.teavm.flavour.components.events.MouseBinder",Rb,[],0,0,["i",function(b){CH(this,b);}],Jn,"java.util.HashMap",Rc,[Nb,Q],0,0,["Je",function(b){return YF(this,b);},"a",function(){JB(this);},"r",function(b){No(this,b);},"Vg",function(b,c){XI(this,b,c);},"Uj",function(){By(this);},"Ml",function(b){return HG(this,b);},"Vi",function(b){return Kr(this,b);},"xj",function(b,c,d){return WD(this,b,c,d);},"zk",function(){return MM(this); +},"og",function(b,c){return Qr(this,b,c);},"Sj",function(b,c){return HF(this,b,c);},"jg",function(b,c,d){return Nx(this,b,c,d);},"of",function(b){WE(this,b);},"hg",function(){Uy(this);}],Sj,"org.teavm.flavour.components.html.EnabledBinder",E,[P],0,0,["i",function(b){UM(this,b);},"t",function(b){Ux(this,b);},"d",function(){Wu(this);},"e",function(){Jy(this);}],Je,"org.teavm.flavour.example.todomvc.TodoView$all$1",O,[Fb],0,Je_$callClinit,["z",function(b){return KG(this,b);},"u",function(b){return Fx(this,b);}, +"a",function(){Qj(this);}],Xe,"org.teavm.flavour.example.todomvc.TodoView$completed$1",O,[Fb],0,Xe_$callClinit,["z",function(b){return Do(this,b);},"u",function(b){return SB(this,b);},"a",function(){On(this);}],Lh,"org.teavm.classlib.impl.unicode.UnicodeHelper$Range",E,[],0,0,["rh",function(b,c,d){ZC(this,b,c,d);}],Ei,"java.util.function.Consumer$proxy1",E,[N],0,0,["h",function(b){Zr(this,b);},"j",function(b,c){Jz(this,b,c);}],Bi,"java.util.function.Consumer$proxy0",E,[N],0,0,["h",function(b){Es(this,b);},"b", +function(b){VK(this,b);}],Km,"java.lang.NoClassDefFoundError",Tb,[],0,0,[],Ii,"java.util.function.Consumer$proxy5",E,[N],0,0,["h",function(b){PJ(this,b);},"b",function(b){FE(this,b);}],Fi,"java.util.function.Consumer$proxy4",E,[N],0,0,["h",function(b){Yt(this,b);},"j",function(b,c){Ys(this,b,c);}],Gi,"java.util.function.Consumer$proxy3",E,[N],0,0,["h",function(b){Ru(this,b);},"j",function(b,c){YL(this,b,c);}],Di,"java.util.function.Consumer$proxy2",E,[N],0,0,["h",function(b){Rz(this,b);},"j",function(b,c){Us(this, +b,c);}],Ji,"java.util.function.Consumer$proxy8",E,[N],0,0,["h",function(b){Ju(this,b);},"b",function(b){DI(this,b);}],Ki,"java.util.function.Consumer$proxy7",E,[N],0,0,["h",function(b){Gq(this,b);},"b",function(b){Uo(this,b);}],Tg,"kotlin.internal.ProgressionUtilKt",E,[],0,0,[],Hi,"java.util.function.Consumer$proxy6",E,[N],0,0,["h",function(b){VM(this,b);},"b",function(b){IJ(this,b);}],Ig,"org.teavm.flavour.components.html.ValueChangeBinder",E,[P],0,0,["i",function(b){Vv(this,b);},"gb",function(b){Nz(this,b); +},"d",function(){Ix(this);},"e",function(){PB(this);}],Bk,"java.lang.ConsoleOutputStreamStderr",Cb,[],0,0,["a",function(){JJ(this);}],Cl,"org.teavm.flavour.example.todomvc.Todo",E,[],0,0,["wl",function(){return Ms(this);},"Xg",function(b){Fp(this,b);},"zl",function(){return Nr(this);},"Ee",function(b){CL(this,b);},"a",function(){Uq(this);}],Sn,"org.teavm.flavour.example.todomvc.EscapeComponent$Companion",E,[],0,0,["ad",function(){return Xz(this);},"a",function(){Yx(this);},"x",function(b){Pp(this,b);}],Zk,"org.teavm.flavour.templates.RootSlot", +Pb,[],0,0,["hb",function(b){Ex(this,b);}],In,"org.teavm.flavour.components.standard.ChooseComponent",M,[],0,0,["n",function(b){WM(this,b);},"pg",function(b){YI(this,b);},"Jg",function(b){Ku(this,b);},"d",function(){PL(this);},"e",function(){Tt(this);}],Kh,"java.util.Arrays$ArrayAsList",T,[Xb],0,0,["Eb",function(b){Cx(this,b);},"G",function(b){return Ao(this,b);},"w",function(){return Xt(this);}]]); +$rt_stringPool(["@","#","org.teavm.flavour.example.todomvc.TodoRoute","org.teavm.flavour.example.todomvc.TodoView","Wrong route interface: ","main","todos","todo","$receiver","predicate","null","This dispatcher is already attached to a window","/","it","","","null cannot be cast to non-null type kotlin.CharSequence","c","dataSource","args","org.teavm.flavour.example.todomvc.Todo","org.teavm.flavour.example.todomvc.TodoList","Can\'t serialize object of type ","Don\'t know how to deserialize ","java.lang.String", +"Can\'t deserialize non-boolean not as a boolean primitive","submit","Can\'t deserialize non-array node as a list","click","dblclick","class","target","blur","elements","null cannot be cast to non-null type kotlin.collections.MutableIterable","kotlin.collections.MutableIterable","UTF-8","ALL","ACTIVE","COMPLETED"," editing","completed","Can\'t set attribute to root node","Can\'t apply modifier to root node","view","toggle","type","checkbox","destroy","edit","id","clear-completed","todoapp","header","todo-form", +"new-todo","placeholder","What needs to be done?","autofocus","info","href","http://todomvc.com","toggle-all","for","todo-list","footer","todo-count","filters","/active","/completed","Parameter specified as non-null is null: method ",".",", parameter ","Can\'t deserialize node "," to an instance of ","hashchange","Object has already been serialzied: ","keydown","Can\'t deserialize non-string node as a string"," cannot be cast to ","selected","Step must be non-zero","The given space is already hosted by a slot", +"Successor does not belong to this slot","Step is zero."]); +MS=GR(6);var main=CA; +(function(){var c;c=Gl.prototype;c.get=c.ij;c.getLength=c.ui;c=Dj.prototype;c.handleEvent=c.p;c=Xl.prototype;c.handleEvent=c.p;c=Yl.prototype;c.handleEvent=c.p;c=Kn.prototype;c.handleEvent=c.p;c=Sh.prototype;c.handleEvent=c.p;c=Qh.prototype;c.removeEventListener=c.Oc;c.removeEventListener=c.mc;c.dispatchEvent=c.tc;c.getLength=c.Li;c.addEventListener=c.Mc;c.get=c.Ne;c.addEventListener=c.Se;c=Uj.prototype;c.handleEvent=c.p;})(); main = $rt_mainStarter(main); //# sourceMappingURL=classes.js.map \ No newline at end of file From 050bdabeb8cedf909fb93319415c7b69dbe81a2e Mon Sep 17 00:00:00 2001 From: nin-jin Date: Mon, 20 Nov 2017 15:59:24 +0300 Subject: [PATCH 30/53] Update index.html --- examples/mol/index.html | 270 ---------------------------------------- 1 file changed, 270 deletions(-) diff --git a/examples/mol/index.html b/examples/mol/index.html index cbf84e5d3a..85719493b4 100644 --- a/examples/mol/index.html +++ b/examples/mol/index.html @@ -19,273 +19,3 @@
- - From 61fc375e92bc6d29cce61fe04b487cf4e5aae3df Mon Sep 17 00:00:00 2001 From: nin-jin Date: Mon, 11 Dec 2017 01:19:58 +0300 Subject: [PATCH 31/53] Benchmark improvements: added `complete` step, clicks on different buttons in `clear` step. --- benchmark/index.html | 59 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 51 insertions(+), 8 deletions(-) diff --git a/benchmark/index.html b/benchmark/index.html index f105425281..c3831afe48 100644 --- a/benchmark/index.html +++ b/benchmark/index.html @@ -55,25 +55,40 @@ default : 200 , type : 'number' , precision : 50 , + } , + 'blinks' : { + title : { + 'en' : 'Complete all count' , + 'ru' : 'Число переключений всех' , + }, + default : 50 , + type : 'number' , + precision : 10 , } } , steps : { 'start' : { title : { - 'en' : 'Load and init' , - 'ru' : 'Загрузка и запуск' , + 'en' : 'Load' , + 'ru' : 'Загрузка' , } , } , 'fill' : { title : { - 'en' : 'Tasks creating' , - 'ru' : 'Создание задач' , + 'en' : 'Creating' , + 'ru' : 'Создание' , + } , + } , + 'complete' : { + title : { + 'en' : 'Compliting' , + 'ru' : 'Завершение' , } , } , 'clear' : { title : { - 'en' : 'Tasks removing' , - 'ru' : 'Завершение задач' , + 'en' : 'Removing' , + 'ru' : 'Удаление' , } , } , } , @@ -100,6 +115,7 @@ var selector = { adder : '#new-todo,.new-todo,.todo__new,[mol_app_todomvc_add]' , adderForm : '#todo-form,.todo-form,#header form' , + completer : '.toggle-all,#toggle-all,[mol_app_todomvc_head_complete]' , dropper : '.destroy,[mol_app_todomvc_task_row_drop]' , } @@ -187,13 +203,38 @@ } } + function complete( sample , params ) { + var completer = sandbox.contentDocument.querySelector( selector.completer ) + var i = 1 + var start = Date.now() + + step() + function step() { + completer.click() + + if( ++i <= params.blinks ) setImmediate( step ) + else { + sandbox.addEventListener( 'animationend' , end ) + requestAnimationFrame( function(){ setTimeout( function() { // wait for message processed + sandbox.style.animation = 'measure .001s' + } ) } ) + function end() { // wait for painting ends + done( Date.now() - start + ' ms' ) + sandbox.style.animation = '' + sandbox.removeEventListener( 'animationend' , end ) + } + } + } + } + function clear( sample ) { var start = Date.now() + var index = 0 step() function step() { - var dropper = sandbox.contentDocument.querySelector( selector.dropper ) - if( !dropper ) { + var droppers = sandbox.contentDocument.querySelectorAll( selector.dropper ) + if( !droppers.length ) { sandbox.addEventListener( 'animationend' , end ) requestAnimationFrame( function(){ setTimeout( function() { // wait for message processed sandbox.style.animation = 'measure .001s' @@ -206,6 +247,8 @@ return } + var dropper = droppers[ index++ % droppers.length ] + dropper.dispatchEvent( new Event( 'mousedown' , { bubbles : true } ) ) dropper.dispatchEvent( new Event( 'mouseup' , { bubbles : true } ) ) dropper.dispatchEvent( new Event( 'click' , { bubbles : true } ) ) From b11909835e6bb1df4b3c01e637c9a5db65275a5e Mon Sep 17 00:00:00 2001 From: nin-jin Date: Sun, 17 Dec 2017 13:47:48 +0300 Subject: [PATCH 32/53] Better texts in benchmark. --- benchmark/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/benchmark/index.html b/benchmark/index.html index c3831afe48..5b0358ae99 100644 --- a/benchmark/index.html +++ b/benchmark/index.html @@ -41,8 +41,8 @@ 'ru' : 'ToDoMVC - производительность работы' , } , descr : { - 'en' : 'Sample applications is [ToDoMVC](http://todomvc.com) implementations. Benchmark creates tasks in sequence and then removes them.' , - 'ru' : 'Варианты приложений являются реализациями [ToDoMVC](http://todomvc.com) приложения для управления списком дел. В тесте замеряется время последовательного создания задач с последующим их удалением.' , + 'en' : 'Sample applications is [ToDoMVC](http://todomvc.com) implementations. Benchmark creates tasks in sequence, toggles completeness and then removes them.' , + 'ru' : 'Варианты реализаций [ToDoMVC](http://todomvc.com) приложения для управления списком дел. В тесте замеряется время последовательного создания задач, переключения их завершённости и последующего их удаления.' , } , samples : { } , From 25d2dac6db647f2d8ff4bb7fb4bb63b293ba3af9 Mon Sep 17 00:00:00 2001 From: nin-jin Date: Wed, 20 Dec 2017 11:33:43 +0300 Subject: [PATCH 33/53] Added SvelteJS --- examples/svelte/.gitignore | 5 + examples/svelte/README.md | 5 + examples/svelte/package.json | 46 + examples/svelte/public/index.html | 19 + examples/svelte/public/todomvc-app-css.css | 378 ++ examples/svelte/public/todomvc-common.css | 141 + examples/svelte/public/todomvc-common.js | 249 ++ examples/svelte/rollup.config.js | 26 + examples/svelte/src/TodoMVC.html | 177 + examples/svelte/src/main.js | 5 + examples/svelte/yarn.lock | 1126 +++++ learn.json | 10 + yarn.lock | 4571 ++++++++++++++++++++ 13 files changed, 6758 insertions(+) create mode 100644 examples/svelte/.gitignore create mode 100644 examples/svelte/README.md create mode 100644 examples/svelte/package.json create mode 100644 examples/svelte/public/index.html create mode 100644 examples/svelte/public/todomvc-app-css.css create mode 100644 examples/svelte/public/todomvc-common.css create mode 100644 examples/svelte/public/todomvc-common.js create mode 100644 examples/svelte/rollup.config.js create mode 100644 examples/svelte/src/TodoMVC.html create mode 100644 examples/svelte/src/main.js create mode 100644 examples/svelte/yarn.lock create mode 100644 yarn.lock diff --git a/examples/svelte/.gitignore b/examples/svelte/.gitignore new file mode 100644 index 0000000000..a956c045ed --- /dev/null +++ b/examples/svelte/.gitignore @@ -0,0 +1,5 @@ +.DS_Store +node_modules +npm-debug.log +dist +public/bundle.* \ No newline at end of file diff --git a/examples/svelte/README.md b/examples/svelte/README.md new file mode 100644 index 0000000000..b5933d3423 --- /dev/null +++ b/examples/svelte/README.md @@ -0,0 +1,5 @@ +# svelte-todomvc + +**[svelte-todomvc.surge.sh](http://svelte-todomvc.surge.sh/)** + +[TodoMVC](http://todomvc.com/) implemented in [Svelte](https://github.com/sveltejs/svelte). The entire app weighs 3.0kb zipped. diff --git a/examples/svelte/package.json b/examples/svelte/package.json new file mode 100644 index 0000000000..d8eac8e465 --- /dev/null +++ b/examples/svelte/package.json @@ -0,0 +1,46 @@ +{ + "name": "svelte-todomvc", + "version": "1.0.0", + "description": "TodoMVC implemented in Svelte", + "scripts": { + "copyfiles": "cp node_modules/todomvc-app-css/index.css public/todomvc-app-css.css && cp node_modules/todomvc-common/base.css public/todomvc-common.css && cp node_modules/todomvc-common/base.js public/todomvc-common.js", + "build": "rollup -c --environment production", + "dev": "npm run copyfiles && rollup -c -w", + "deploy": "surge public svelte-todomvc.surge.sh", + "predeploy": "npm run build", + "start": "http-server public & npm run dev & open http://localhost:8080" + }, + "files": [ + "index.html", + "public", + "node_modules/todomvc-app-css/index.css" + ], + "repository": { + "type": "git", + "url": "https://github.com/sveltejs/svelte-todomvc.git" + }, + "keywords": [ + "svelte", + "todomvc" + ], + "author": "Rich Harris", + "license": "MIT", + "bugs": { + "url": "https://github.com/sveltejs/svelte-todomvc/issues" + }, + "homepage": "https://github.com/sveltejs/svelte-todomvc", + "dependencies": { + "todomvc-app-css": "2.0.1", + "todomvc-common": "^1.0.3" + }, + "devDependencies": { + "rollup": "^0.41.6", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-closure-compiler-js": "^1.0.4", + "rollup-plugin-filesize": "^1.2.1", + "rollup-plugin-svelte": "^1.6.1", + "rollup-plugin-uglify": "^1.0.1", + "rollup-watch": "^3.2.2", + "surge": "^0.19.0" + } +} diff --git a/examples/svelte/public/index.html b/examples/svelte/public/index.html new file mode 100644 index 0000000000..6dfa1880b2 --- /dev/null +++ b/examples/svelte/public/index.html @@ -0,0 +1,19 @@ + + + + + Svelte • TodoMVC + + + +
+ + + + + + diff --git a/examples/svelte/public/todomvc-app-css.css b/examples/svelte/public/todomvc-app-css.css new file mode 100644 index 0000000000..ba79a58df3 --- /dev/null +++ b/examples/svelte/public/todomvc-app-css.css @@ -0,0 +1,378 @@ +html, +body { + margin: 0; + padding: 0; +} + +button { + margin: 0; + padding: 0; + border: 0; + background: none; + font-size: 100%; + vertical-align: baseline; + font-family: inherit; + font-weight: inherit; + color: inherit; + -webkit-appearance: none; + appearance: none; + -webkit-font-smoothing: antialiased; + -moz-font-smoothing: antialiased; + font-smoothing: antialiased; +} + +body { + font: 14px 'Helvetica Neue', Helvetica, Arial, sans-serif; + line-height: 1.4em; + background: #f5f5f5; + color: #4d4d4d; + min-width: 230px; + max-width: 550px; + margin: 0 auto; + -webkit-font-smoothing: antialiased; + -moz-font-smoothing: antialiased; + font-smoothing: antialiased; + font-weight: 300; +} + +button, +input[type="checkbox"] { + outline: none; +} + +.hidden { + display: none; +} + +.todoapp { + background: #fff; + margin: 130px 0 40px 0; + position: relative; + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), + 0 25px 50px 0 rgba(0, 0, 0, 0.1); +} + +.todoapp input::-webkit-input-placeholder { + font-style: italic; + font-weight: 300; + color: #e6e6e6; +} + +.todoapp input::-moz-placeholder { + font-style: italic; + font-weight: 300; + color: #e6e6e6; +} + +.todoapp input::input-placeholder { + font-style: italic; + font-weight: 300; + color: #e6e6e6; +} + +.todoapp h1 { + position: absolute; + top: -155px; + width: 100%; + font-size: 100px; + font-weight: 100; + text-align: center; + color: rgba(175, 47, 47, 0.15); + -webkit-text-rendering: optimizeLegibility; + -moz-text-rendering: optimizeLegibility; + text-rendering: optimizeLegibility; +} + +.new-todo, +.edit { + position: relative; + margin: 0; + width: 100%; + font-size: 24px; + font-family: inherit; + font-weight: inherit; + line-height: 1.4em; + border: 0; + outline: none; + color: inherit; + padding: 6px; + border: 1px solid #999; + box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2); + box-sizing: border-box; + -webkit-font-smoothing: antialiased; + -moz-font-smoothing: antialiased; + font-smoothing: antialiased; +} + +.new-todo { + padding: 16px 16px 16px 60px; + border: none; + background: rgba(0, 0, 0, 0.003); + box-shadow: inset 0 -2px 1px rgba(0,0,0,0.03); +} + +.main { + position: relative; + z-index: 2; + border-top: 1px solid #e6e6e6; +} + +label[for='toggle-all'] { + display: none; +} + +.toggle-all { + position: absolute; + top: -55px; + left: -12px; + width: 60px; + height: 34px; + text-align: center; + border: none; /* Mobile Safari */ +} + +.toggle-all:before { + content: '❯'; + font-size: 22px; + color: #e6e6e6; + padding: 10px 27px 10px 27px; +} + +.toggle-all:checked:before { + color: #737373; +} + +.todo-list { + margin: 0; + padding: 0; + list-style: none; +} + +.todo-list li { + position: relative; + font-size: 24px; + border-bottom: 1px solid #ededed; +} + +.todo-list li:last-child { + border-bottom: none; +} + +.todo-list li.editing { + border-bottom: none; + padding: 0; +} + +.todo-list li.editing .edit { + display: block; + width: 506px; + padding: 13px 17px 12px 17px; + margin: 0 0 0 43px; +} + +.todo-list li.editing .view { + display: none; +} + +.todo-list li .toggle { + text-align: center; + width: 40px; + /* auto, since non-WebKit browsers doesn't support input styling */ + height: auto; + position: absolute; + top: 0; + bottom: 0; + margin: auto 0; + border: none; /* Mobile Safari */ + -webkit-appearance: none; + appearance: none; +} + +.todo-list li .toggle:after { + content: url('data:image/svg+xml;utf8,'); +} + +.todo-list li .toggle:checked:after { + content: url('data:image/svg+xml;utf8,'); +} + +.todo-list li label { + white-space: pre; + word-break: break-word; + padding: 15px 60px 15px 15px; + margin-left: 45px; + display: block; + line-height: 1.2; + transition: color 0.4s; +} + +.todo-list li.completed label { + color: #d9d9d9; + text-decoration: line-through; +} + +.todo-list li .destroy { + display: none; + position: absolute; + top: 0; + right: 10px; + bottom: 0; + width: 40px; + height: 40px; + margin: auto 0; + font-size: 30px; + color: #cc9a9a; + margin-bottom: 11px; + transition: color 0.2s ease-out; +} + +.todo-list li .destroy:hover { + color: #af5b5e; +} + +.todo-list li .destroy:after { + content: '×'; +} + +.todo-list li:hover .destroy { + display: block; +} + +.todo-list li .edit { + display: none; +} + +.todo-list li.editing:last-child { + margin-bottom: -1px; +} + +.footer { + color: #777; + padding: 10px 15px; + height: 20px; + text-align: center; + border-top: 1px solid #e6e6e6; +} + +.footer:before { + content: ''; + position: absolute; + right: 0; + bottom: 0; + left: 0; + height: 50px; + overflow: hidden; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), + 0 8px 0 -3px #f6f6f6, + 0 9px 1px -3px rgba(0, 0, 0, 0.2), + 0 16px 0 -6px #f6f6f6, + 0 17px 2px -6px rgba(0, 0, 0, 0.2); +} + +.todo-count { + float: left; + text-align: left; +} + +.todo-count strong { + font-weight: 300; +} + +.filters { + margin: 0; + padding: 0; + list-style: none; + position: absolute; + right: 0; + left: 0; +} + +.filters li { + display: inline; +} + +.filters li a { + color: inherit; + margin: 3px; + padding: 3px 7px; + text-decoration: none; + border: 1px solid transparent; + border-radius: 3px; +} + +.filters li a.selected, +.filters li a:hover { + border-color: rgba(175, 47, 47, 0.1); +} + +.filters li a.selected { + border-color: rgba(175, 47, 47, 0.2); +} + +.clear-completed, +html .clear-completed:active { + float: right; + position: relative; + line-height: 20px; + text-decoration: none; + cursor: pointer; + position: relative; +} + +.clear-completed:hover { + text-decoration: underline; +} + +.info { + margin: 65px auto 0; + color: #bfbfbf; + font-size: 10px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-align: center; +} + +.info p { + line-height: 1; +} + +.info a { + color: inherit; + text-decoration: none; + font-weight: 400; +} + +.info a:hover { + text-decoration: underline; +} + +/* + Hack to remove background from Mobile Safari. + Can't use it globally since it destroys checkboxes in Firefox +*/ +@media screen and (-webkit-min-device-pixel-ratio:0) { + .toggle-all, + .todo-list li .toggle { + background: none; + } + + .todo-list li .toggle { + height: 40px; + } + + .toggle-all { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); + -webkit-appearance: none; + appearance: none; + } +} + +@media (max-width: 430px) { + .footer { + height: 50px; + } + + .filters { + bottom: 10px; + } +} diff --git a/examples/svelte/public/todomvc-common.css b/examples/svelte/public/todomvc-common.css new file mode 100644 index 0000000000..da65968a73 --- /dev/null +++ b/examples/svelte/public/todomvc-common.css @@ -0,0 +1,141 @@ +hr { + margin: 20px 0; + border: 0; + border-top: 1px dashed #c5c5c5; + border-bottom: 1px dashed #f7f7f7; +} + +.learn a { + font-weight: normal; + text-decoration: none; + color: #b83f45; +} + +.learn a:hover { + text-decoration: underline; + color: #787e7e; +} + +.learn h3, +.learn h4, +.learn h5 { + margin: 10px 0; + font-weight: 500; + line-height: 1.2; + color: #000; +} + +.learn h3 { + font-size: 24px; +} + +.learn h4 { + font-size: 18px; +} + +.learn h5 { + margin-bottom: 0; + font-size: 14px; +} + +.learn ul { + padding: 0; + margin: 0 0 30px 25px; +} + +.learn li { + line-height: 20px; +} + +.learn p { + font-size: 15px; + font-weight: 300; + line-height: 1.3; + margin-top: 0; + margin-bottom: 0; +} + +#issue-count { + display: none; +} + +.quote { + border: none; + margin: 20px 0 60px 0; +} + +.quote p { + font-style: italic; +} + +.quote p:before { + content: '“'; + font-size: 50px; + opacity: .15; + position: absolute; + top: -20px; + left: 3px; +} + +.quote p:after { + content: '”'; + font-size: 50px; + opacity: .15; + position: absolute; + bottom: -42px; + right: 3px; +} + +.quote footer { + position: absolute; + bottom: -40px; + right: 0; +} + +.quote footer img { + border-radius: 3px; +} + +.quote footer a { + margin-left: 5px; + vertical-align: middle; +} + +.speech-bubble { + position: relative; + padding: 10px; + background: rgba(0, 0, 0, .04); + border-radius: 5px; +} + +.speech-bubble:after { + content: ''; + position: absolute; + top: 100%; + right: 30px; + border: 13px solid transparent; + border-top-color: rgba(0, 0, 0, .04); +} + +.learn-bar > .learn { + position: absolute; + width: 272px; + top: 8px; + left: -300px; + padding: 10px; + border-radius: 5px; + background-color: rgba(255, 255, 255, .6); + transition-property: left; + transition-duration: 500ms; +} + +@media (min-width: 899px) { + .learn-bar { + width: auto; + padding-left: 300px; + } + + .learn-bar > .learn { + left: 8px; + } +} diff --git a/examples/svelte/public/todomvc-common.js b/examples/svelte/public/todomvc-common.js new file mode 100644 index 0000000000..3c6723f390 --- /dev/null +++ b/examples/svelte/public/todomvc-common.js @@ -0,0 +1,249 @@ +/* global _ */ +(function () { + 'use strict'; + + /* jshint ignore:start */ + // Underscore's Template Module + // Courtesy of underscorejs.org + var _ = (function (_) { + _.defaults = function (object) { + if (!object) { + return object; + } + for (var argsIndex = 1, argsLength = arguments.length; argsIndex < argsLength; argsIndex++) { + var iterable = arguments[argsIndex]; + if (iterable) { + for (var key in iterable) { + if (object[key] == null) { + object[key] = iterable[key]; + } + } + } + } + return object; + } + + // By default, Underscore uses ERB-style template delimiters, change the + // following template settings to use alternative delimiters. + _.templateSettings = { + evaluate : /<%([\s\S]+?)%>/g, + interpolate : /<%=([\s\S]+?)%>/g, + escape : /<%-([\s\S]+?)%>/g + }; + + // When customizing `templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. + var noMatch = /(.)^/; + + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\t': 't', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g; + + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + _.template = function(text, data, settings) { + var render; + settings = _.defaults({}, settings, _.templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = new RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset) + .replace(escaper, function(match) { return '\\' + escapes[match]; }); + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } + if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } + if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + index = offset + match.length; + return match; + }); + source += "';\n"; + + // If a variable is not specified, place data values in local scope. + if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + "return __p;\n"; + + try { + render = new Function(settings.variable || 'obj', '_', source); + } catch (e) { + e.source = source; + throw e; + } + + if (data) return render(data, _); + var template = function(data) { + return render.call(this, data, _); + }; + + // Provide the compiled function source as a convenience for precompilation. + template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}'; + + return template; + }; + + return _; + })({}); + + if (location.hostname === 'todomvc.com') { + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); + ga('create', 'UA-31081062-1', 'auto'); + ga('send', 'pageview'); + } + /* jshint ignore:end */ + + function redirect() { + if (location.hostname === 'tastejs.github.io') { + location.href = location.href.replace('tastejs.github.io/todomvc', 'todomvc.com'); + } + } + + function findRoot() { + var base = location.href.indexOf('examples/'); + return location.href.substr(0, base); + } + + function getFile(file, callback) { + if (!location.host) { + return console.info('Miss the info bar? Run TodoMVC from a server to avoid a cross-origin error.'); + } + + var xhr = new XMLHttpRequest(); + + xhr.open('GET', findRoot() + file, true); + xhr.send(); + + xhr.onload = function () { + if (xhr.status === 200 && callback) { + callback(xhr.responseText); + } + }; + } + + function Learn(learnJSON, config) { + if (!(this instanceof Learn)) { + return new Learn(learnJSON, config); + } + + var template, framework; + + if (typeof learnJSON !== 'object') { + try { + learnJSON = JSON.parse(learnJSON); + } catch (e) { + return; + } + } + + if (config) { + template = config.template; + framework = config.framework; + } + + if (!template && learnJSON.templates) { + template = learnJSON.templates.todomvc; + } + + if (!framework && document.querySelector('[data-framework]')) { + framework = document.querySelector('[data-framework]').dataset.framework; + } + + this.template = template; + + if (learnJSON.backend) { + this.frameworkJSON = learnJSON.backend; + this.frameworkJSON.issueLabel = framework; + this.append({ + backend: true + }); + } else if (learnJSON[framework]) { + this.frameworkJSON = learnJSON[framework]; + this.frameworkJSON.issueLabel = framework; + this.append(); + } + + this.fetchIssueCount(); + } + + Learn.prototype.append = function (opts) { + var aside = document.createElement('aside'); + aside.innerHTML = _.template(this.template, this.frameworkJSON); + aside.className = 'learn'; + + if (opts && opts.backend) { + // Remove demo link + var sourceLinks = aside.querySelector('.source-links'); + var heading = sourceLinks.firstElementChild; + var sourceLink = sourceLinks.lastElementChild; + // Correct link path + var href = sourceLink.getAttribute('href'); + sourceLink.setAttribute('href', href.substr(href.lastIndexOf('http'))); + sourceLinks.innerHTML = heading.outerHTML + sourceLink.outerHTML; + } else { + // Localize demo links + var demoLinks = aside.querySelectorAll('.demo-link'); + Array.prototype.forEach.call(demoLinks, function (demoLink) { + if (demoLink.getAttribute('href').substr(0, 4) !== 'http') { + demoLink.setAttribute('href', findRoot() + demoLink.getAttribute('href')); + } + }); + } + + document.body.className = (document.body.className + ' learn-bar').trim(); + document.body.insertAdjacentHTML('afterBegin', aside.outerHTML); + }; + + Learn.prototype.fetchIssueCount = function () { + var issueLink = document.getElementById('issue-count-link'); + if (issueLink) { + var url = issueLink.href.replace('https://github.com', 'https://api.github.com/repos'); + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.onload = function (e) { + var parsedResponse = JSON.parse(e.target.responseText); + if (parsedResponse instanceof Array) { + var count = parsedResponse.length; + if (count !== 0) { + issueLink.innerHTML = 'This app has ' + count + ' open issues'; + document.getElementById('issue-count').style.display = 'inline'; + } + } + }; + xhr.send(); + } + }; + + redirect(); + getFile('learn.json', Learn); +})(); diff --git a/examples/svelte/rollup.config.js b/examples/svelte/rollup.config.js new file mode 100644 index 0000000000..9956c41c93 --- /dev/null +++ b/examples/svelte/rollup.config.js @@ -0,0 +1,26 @@ +import svelte from 'rollup-plugin-svelte'; +import buble from 'rollup-plugin-buble'; +import closure from 'rollup-plugin-closure-compiler-js'; +import filesize from 'rollup-plugin-filesize'; + +// you can use UglifyJS instead of Closure — the result will be ~3.3kb +// import uglify from 'rollup-plugin-uglify'; + +const plugins = [ svelte() ]; +if ( process.env.production ) { + plugins.push( + buble(), + closure({ + compilationLevel: 'ADVANCED' + }), + filesize() + ); +} + +export default { + entry: 'src/main.js', + dest: 'public/bundle.js', + format: 'iife', + plugins, + sourceMap: true +}; diff --git a/examples/svelte/src/TodoMVC.html b/examples/svelte/src/TodoMVC.html new file mode 100644 index 0000000000..b2cc662eaf --- /dev/null +++ b/examples/svelte/src/TodoMVC.html @@ -0,0 +1,177 @@ +
+

todos

+ +
+ +{{#if items.length > 0}} +
+ + + +
    + {{#each items as item, index}} + {{#if filter(item, currentFilter)}} +
  • +
    + + + +
    + + {{#if editing === index}} + + {{/if}} +
  • + {{/if}} + {{/each}} +
+ +
+ + {{numActive}} {{numActive === 1 ? 'item' : 'items'}} left + + + + + {{#if numCompleted}} + + {{/if}} +
+
+{{/if}} + + diff --git a/examples/svelte/src/main.js b/examples/svelte/src/main.js new file mode 100644 index 0000000000..1ec89abc66 --- /dev/null +++ b/examples/svelte/src/main.js @@ -0,0 +1,5 @@ +import TodoMVC from './TodoMVC.html'; + +window.todomvc = new TodoMVC({ + target: document.querySelector( '.todoapp' ) +}); diff --git a/examples/svelte/yarn.lock b/examples/svelte/yarn.lock new file mode 100644 index 0000000000..7fc4632b87 --- /dev/null +++ b/examples/svelte/yarn.lock @@ -0,0 +1,1126 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +acorn-jsx@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn-object-spread@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/acorn-object-spread/-/acorn-object-spread-1.0.0.tgz#48ead0f4a8eb16995a17a0db9ffc6acaada4ba68" + dependencies: + acorn "^3.1.0" + +acorn@^3.0.4, acorn@^3.1.0, acorn@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + +ansi-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-flatten@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +asn1@0.1.11: + version "0.1.11" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.1.11.tgz#559be18376d08a4ec4dbe80877d27818639b2df7" + +assert-plus@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.1.5.tgz#ee74009413002d84cec7219c6ac811812e723160" + +async@0.2.x, async@~0.2.6, async@~0.2.9: + version "0.2.10" + resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" + +async@~0.1.22: + version "0.1.22" + resolved "https://registry.yarnpkg.com/async/-/async-0.1.22.tgz#0fc1aaa088a0e3ef0ebe2d8831bab0dcf8845061" + +async@~0.9.0: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + +aws-sign2@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.5.0.tgz#c57103f7a17fc037f02d7c2e64b602ea223f7d63" + +balanced-match@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +boom@0.4.x: + version "0.4.2" + resolved "https://registry.yarnpkg.com/boom/-/boom-0.4.2.tgz#7a636e9ded4efcefb19cef4947a3c67dfaee911b" + dependencies: + hoek "0.9.x" + +boxen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-0.2.0.tgz#84f88e2512e2c3eebacee799932fed0226de6dcb" + dependencies: + chalk "^1.1.1" + filled-array "^1.0.0" + object-assign "^4.0.1" + repeating "^2.0.0" + string-width "^1.0.1" + widest-line "^1.0.0" + +brace-expansion@^1.0.0: + version "1.1.6" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" + dependencies: + balanced-match "^0.4.1" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +buble@^0.15.0: + version "0.15.2" + resolved "https://registry.yarnpkg.com/buble/-/buble-0.15.2.tgz#547fc47483f8e5e8176d82aa5ebccb183b02d613" + dependencies: + acorn "^3.3.0" + acorn-jsx "^3.0.1" + acorn-object-spread "^1.0.0" + chalk "^1.1.3" + magic-string "^0.14.0" + minimist "^1.2.0" + os-homedir "^1.0.1" + +buffer-shims@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + +clone@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" + +cloneable-readable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.0.0.tgz#a6290d413f217a61232f95e458ff38418cfb0117" + dependencies: + inherits "^2.0.1" + process-nextick-args "^1.0.6" + through2 "^2.0.1" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +colors@0.6.x: + version "0.6.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-0.6.2.tgz#2423fe6678ac0c5dae8852e5d0e5be08c997abcc" + +colors@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + +combined-stream@~0.0.4: + version "0.0.7" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-0.0.7.tgz#0137e657baa5a7541c57ac37ac5fc07d73b4dc1f" + dependencies: + delayed-stream "0.0.5" + +commander@1.1.x: + version "1.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-1.1.1.tgz#50d1651868ae60eccff0a2d9f34595376bc6b041" + dependencies: + keypress "0.1.x" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +cryptiles@0.2.x: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-0.2.2.tgz#ed91ff1f17ad13d3748288594f8a48a0d26f325c" + dependencies: + boom "0.4.x" + +ctype@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/ctype/-/ctype-0.5.3.tgz#82c18c2461f74114ef16c135224ad0b9144ca12f" + +cycle@1.0.x: + version "1.0.3" + resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2" + +decamelize@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +deep-assign@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/deep-assign/-/deep-assign-2.0.0.tgz#ebe06b1f07f08dae597620e3dd1622f371a1c572" + dependencies: + is-obj "^1.0.0" + +deep-equal@*: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + +delayed-stream@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-0.0.5.tgz#d4b1f43a93e8296dfe02694f4680bc37a313c73f" + +du@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/du/-/du-0.1.0.tgz#f26e340a09c7bc5b6fd69af6dbadea60fa8c6f4d" + dependencies: + async "~0.1.22" + +duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + +escape-string-regexp@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +estree-walker@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e" + +estree-walker@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.3.1.tgz#e6b1a51cf7292524e7237c312e5fe6660c1ce1aa" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +eyes@0.1.x: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + +filename-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" + +filesize@^3.5.6: + version "3.5.6" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.6.tgz#5fd98f3eac94ec9516ef8ed5782fad84a01a0a1a" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +filled-array@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/filled-array/-/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84" + +for-in@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + +forever-agent@~0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.5.2.tgz#6d0e09c4921f94a27f63d3b49c5feff1ea4c5130" + +form-data@~0.1.0: + version "0.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-0.1.4.tgz#91abd788aba9702b1aabfa8bc01031a2ac9e3b12" + dependencies: + async "~0.9.0" + combined-stream "~0.0.4" + mime "~1.2.11" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fstream-ignore@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.2.tgz#18c891db01b782a74a7bff936a0f24997741c7ab" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^2.0.1" + +fstream@0.1.x, fstream@~0.1.28: + version "0.1.31" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-0.1.31.tgz#7337f058fbbbbefa8c9f561a28cab0849202c988" + dependencies: + graceful-fs "~3.0.2" + inherits "~2.0.0" + mkdirp "0.5" + rimraf "2" + +fstream@^1.0.0: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob@^7.0.5: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + +google-closure-compiler-js@>20170000: + version "20170218.0.0" + resolved "https://registry.yarnpkg.com/google-closure-compiler-js/-/google-closure-compiler-js-20170218.0.0.tgz#31637019c15fb14e3d491ec663ee404a1d33da14" + dependencies: + minimist "^1.2.0" + vinyl "^2.0.1" + webpack-core "^0.6.8" + +graceful-fs@^4.1.2: + version "4.1.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.10.tgz#f2d720c22092f743228775c75e3612632501f131" + +graceful-fs@~3.0.2: + version "3.0.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818" + dependencies: + natives "^1.1.0" + +gzip-size@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520" + dependencies: + duplexer "^0.1.1" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +hawk@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-1.1.1.tgz#87cd491f9b46e4e2aeaca335416766885d2d1ed9" + dependencies: + boom "0.4.x" + cryptiles "0.2.x" + hoek "0.9.x" + sntp "0.2.x" + +hoek@0.9.x: + version "0.9.1" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-0.9.1.tgz#3d322462badf07716ea7eb85baf88079cddce505" + +http-signature@~0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-0.10.1.tgz#4fbdac132559aa8323121e540779c0a012b27e66" + dependencies: + asn1 "0.1.11" + assert-plus "^0.1.5" + ctype "0.5.3" + +i@0.3.x: + version "0.3.5" + resolved "https://registry.yarnpkg.com/i/-/i-0.3.5.tgz#1d2b854158ec8169113c6cb7f6b6801e99e211d5" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +is-buffer@^1.0.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b" + +is-domain@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/is-domain/-/is-domain-0.0.1.tgz#7ffb288d5cced6b07c4f2df91c9be9153511348e" + +is-dotfile@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-number@^2.0.2, is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isstream@0.1.x: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +json-stringify-safe@~5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +keypress@0.1.x: + version "0.1.0" + resolved "https://registry.yarnpkg.com/keypress/-/keypress-0.1.0.tgz#4a3188d4291b66b4f65edb99f806aa9ae293592a" + +kind-of@^3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.0.4.tgz#7b8ecf18a4e17f8269d73b501c9f232c96887a74" + dependencies: + is-buffer "^1.0.2" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +magic-string@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.14.0.tgz#57224aef1701caeed273b17a39a956e72b172462" + dependencies: + vlq "^0.2.1" + +micromatch@^2.3.11: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +mime-types@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-1.0.2.tgz#995ae1392ab8affcbfcb2641dd054e943c0d5dce" + +mime@~1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10" + +minimatch@^2.0.1: + version "2.0.10" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" + dependencies: + brace-expansion "^1.0.0" + +minimatch@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" + dependencies: + brace-expansion "^1.0.0" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.1.tgz#1bc2bc71658cdca5712475684363615b0b4f695b" + +minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +mkdirp@0.5, mkdirp@0.x.x, "mkdirp@>=0.5 0": + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +moniker@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/moniker/-/moniker-0.1.2.tgz#872dfba575dcea8fa04a5135b13d5f24beccc97e" + +mute-stream@~0.0.4: + version "0.0.6" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.6.tgz#48962b19e169fd1dfc240b3f1e7317627bbc47db" + +natives@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.0.tgz#e9ff841418a6b2ec7a495e939984f78f163e6e31" + +ncp@0.4.x: + version "0.4.2" + resolved "https://registry.yarnpkg.com/ncp/-/ncp-0.4.2.tgz#abcc6cbd3ec2ed2a729ff6e7c1fa8f01784a8574" + +netrc@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/netrc/-/netrc-0.1.4.tgz#6be94fcaca8d77ade0a9670dc460914c94472444" + +node-uuid@~1.4.0: + version "1.4.7" + resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.7.tgz#6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f" + +normalize-path@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +oauth-sign@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.3.0.tgz#cb540f93bb2b22a7d5941691a288d60e8ea9386e" + +object-assign@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +pkginfo@0.3.x: + version "0.3.1" + resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.3.1.tgz#5b29f6a81f70717142e09e765bbeab97b4f81e21" + +pkginfo@0.x.x: + version "0.4.0" + resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.4.0.tgz#349dbb7ffd38081fcadc0853df687f0c7744cd65" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +process-nextick-args@^1.0.6, process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +progress@1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" + +prompt@~0.2.14: + version "0.2.14" + resolved "https://registry.yarnpkg.com/prompt/-/prompt-0.2.14.tgz#57754f64f543fd7b0845707c818ece618f05ffdc" + dependencies: + pkginfo "0.x.x" + read "1.0.x" + revalidator "0.1.x" + utile "0.2.x" + winston "0.8.x" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +qs@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-1.0.2.tgz#50a93e2b5af6691c31bcea5dae78ee6ea1903768" + +randomatic@^1.1.3: + version "1.1.6" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" + dependencies: + is-number "^2.0.2" + kind-of "^3.0.2" + +read@1.0.5, read@1.0.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/read/-/read-1.0.5.tgz#007a3d169478aa710a491727e453effb92e76203" + dependencies: + mute-stream "~0.0.4" + +readable-stream@^2.1.5: + version "2.2.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.6.tgz#8b43aed76e71483938d12a8d46c6cf1a00b1f816" + dependencies: + buffer-shims "^1.0.0" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +regex-cache@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" + dependencies: + is-equal-shallow "^0.1.3" + is-primitive "^2.0.0" + +remove-trailing-separator@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +replace-ext@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + +request@2.40.0: + version "2.40.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.40.0.tgz#4dd670f696f1e6e842e66b4b5e839301ab9beb67" + dependencies: + forever-agent "~0.5.0" + json-stringify-safe "~5.0.0" + mime-types "~1.0.1" + node-uuid "~1.4.0" + qs "~1.0.0" + optionalDependencies: + aws-sign2 "~0.5.0" + form-data "~0.1.0" + hawk "1.1.1" + http-signature "~0.10.0" + oauth-sign "~0.3.0" + stringstream "~0.0.4" + tough-cookie ">=0.12.0" + tunnel-agent "~0.4.0" + +require-relative@0.8.7: + version "0.8.7" + resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" + +revalidator@0.1.x: + version "0.1.8" + resolved "https://registry.yarnpkg.com/revalidator/-/revalidator-0.1.8.tgz#fece61bfa0c1b52a206bd6b18198184bdd523a3b" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + +rimraf@2, rimraf@2.x.x: + version "2.5.4" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" + dependencies: + glob "^7.0.5" + +rollup-plugin-buble@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-buble/-/rollup-plugin-buble-0.15.0.tgz#83c3e89c7fd2266c7918f41ba3980313519c7fd0" + dependencies: + buble "^0.15.0" + rollup-pluginutils "^1.5.0" + +rollup-plugin-closure-compiler-js@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/rollup-plugin-closure-compiler-js/-/rollup-plugin-closure-compiler-js-1.0.4.tgz#431ff09e13d0f6f6a1ce5ef0e454edcef50b9d00" + dependencies: + google-closure-compiler-js ">20170000" + +rollup-plugin-filesize@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-filesize/-/rollup-plugin-filesize-1.2.1.tgz#2e976a9dc7a7a654ddb8fc5a09358829df87d8ff" + dependencies: + boxen "^0.2.0" + colors "^1.1.2" + deep-assign "^2.0.0" + filesize "^3.5.6" + gzip-size "^3.0.0" + +rollup-plugin-svelte@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-svelte/-/rollup-plugin-svelte-1.6.1.tgz#19e1f602f601fbe8dd45ae8d4d5f4dcaf47dbbcb" + dependencies: + rollup-pluginutils "^2.0.1" + svelte "^1.11.2" + +rollup-plugin-uglify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-uglify/-/rollup-plugin-uglify-1.0.1.tgz#11d0b0c8bcd2d07e6908f74fd16b0152390b922a" + dependencies: + uglify-js "^2.6.1" + +rollup-pluginutils@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408" + dependencies: + estree-walker "^0.2.1" + minimatch "^3.0.2" + +rollup-pluginutils@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz#7ec95b3573f6543a46a6461bd9a7c544525d0fc0" + dependencies: + estree-walker "^0.3.0" + micromatch "^2.3.11" + +rollup-watch@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/rollup-watch/-/rollup-watch-3.2.2.tgz#5e574232e9ef36da9177f46946d8080cb267354b" + dependencies: + require-relative "0.8.7" + +rollup@^0.41.6: + version "0.41.6" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.41.6.tgz#e0d05497877a398c104d816d2733a718a7a94e2a" + dependencies: + source-map-support "^0.4.0" + +sntp@0.2.x: + version "0.2.4" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-0.2.4.tgz#fb885f18b0f3aad189f824862536bceeec750900" + dependencies: + hoek "0.9.x" + +source-list-map@~0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" + +source-map-support@^0.4.0: + version "0.4.6" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.6.tgz#32552aa64b458392a85eab3b0b5ee61527167aeb" + dependencies: + source-map "^0.5.3" + +source-map@^0.5.3, source-map@~0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" + +source-map@~0.4.1: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + +split@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/split/-/split-0.3.1.tgz#cebcf142bf61bbb64b141628e6db482a2914654c" + dependencies: + through "2" + +stack-trace@0.0.x: + version "0.0.9" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.9.tgz#a8f6eaeca90674c333e7c43953f275b451510695" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +stringstream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +surge-ignore@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/surge-ignore/-/surge-ignore-0.2.0.tgz#5a7f8a20a71188cf9e75a2cfe8eb182de90daf3b" + +surge@^0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/surge/-/surge-0.19.0.tgz#ae430df0f2832ba24aa379b7766586fe68b7239c" + dependencies: + du "0.1.0" + fstream-ignore "1.0.2" + is-domain "0.0.1" + minimist "1.1.1" + moniker "0.1.2" + netrc "0.1.4" + progress "1.1.8" + prompt "~0.2.14" + read "1.0.5" + request "2.40.0" + split "0.3.1" + surge-ignore "0.2.0" + tar "1.0.0" + tar.gz "0.1.1" + url-parse-as-address "1.0.0" + +svelte@^1.11.2: + version "1.13.6" + resolved "https://registry.yarnpkg.com/svelte/-/svelte-1.13.6.tgz#716a509f80a6786393883415d79eccff87464881" + +tar.gz@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/tar.gz/-/tar.gz-0.1.1.tgz#e914ce23b2fdc627575fbdb3485a5b228ed59947" + dependencies: + commander "1.1.x" + fstream "0.1.x" + tar "0.1.x" + +tar@0.1.x: + version "0.1.20" + resolved "https://registry.yarnpkg.com/tar/-/tar-0.1.20.tgz#42940bae5b5f22c74483699126f9f3f27449cb13" + dependencies: + block-stream "*" + fstream "~0.1.28" + inherits "2" + +tar@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/tar/-/tar-1.0.0.tgz#36636d76e8ae12b4bc11a940ac606b5ca8a5fe1f" + dependencies: + block-stream "*" + fstream "^1.0.0" + inherits "2" + +through2@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + dependencies: + readable-stream "^2.1.5" + xtend "~4.0.1" + +through@2: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +todomvc-app-css@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/todomvc-app-css/-/todomvc-app-css-2.0.1.tgz#f64d50b744a8a83c1151a08055b88f3aa5ccb052" + +todomvc-common@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/todomvc-common/-/todomvc-common-1.0.3.tgz#cba1868109caa401b908ebf77794cc1014b74873" + +tough-cookie@>=0.12.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" + dependencies: + punycode "^1.4.1" + +tunnel-agent@~0.4.0: + version "0.4.3" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + +uglify-js@^2.6.1: + version "2.7.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.4.tgz#a295a0de12b6a650c031c40deb0dc40b14568bd2" + dependencies: + async "~0.2.6" + source-map "~0.5.1" + uglify-to-browserify "~1.0.0" + yargs "~3.10.0" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +url-parse-as-address@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-as-address/-/url-parse-as-address-1.0.0.tgz#fb80901883f338b3cbed3538f5faa26adaf7f2e7" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +utile@0.2.x: + version "0.2.1" + resolved "https://registry.yarnpkg.com/utile/-/utile-0.2.1.tgz#930c88e99098d6220834c356cbd9a770522d90d7" + dependencies: + async "~0.2.9" + deep-equal "*" + i "0.3.x" + mkdirp "0.x.x" + ncp "0.4.x" + rimraf "2.x.x" + +vinyl@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.0.1.tgz#1c3b4931e7ac4c1efee743f3b91a74c094407bb6" + dependencies: + clone "^1.0.0" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + is-stream "^1.1.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + +vlq@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.1.tgz#14439d711891e682535467f8587c5630e4222a6c" + +webpack-core@^0.6.8: + version "0.6.9" + resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.9.tgz#fc571588c8558da77be9efb6debdc5a3b172bdc2" + dependencies: + source-list-map "~0.1.7" + source-map "~0.4.1" + +widest-line@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c" + dependencies: + string-width "^1.0.1" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +winston@0.8.x: + version "0.8.3" + resolved "https://registry.yarnpkg.com/winston/-/winston-0.8.3.tgz#64b6abf4cd01adcaefd5009393b1d8e8bec19db0" + dependencies: + async "0.2.x" + colors "0.6.x" + cycle "1.0.x" + eyes "0.1.x" + isstream "0.1.x" + pkginfo "0.3.x" + stack-trace "0.0.x" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" diff --git a/learn.json b/learn.json index 0f75fce379..7ddabc5984 100644 --- a/learn.json +++ b/learn.json @@ -2106,6 +2106,16 @@ }] }] }, + "svelte": { + "name": "SvelteJS", + "description": "The magical disappearing UI framework", + "homepage": "https://svelte.technology/", + "examples": [{ + "name": "Example", + "url": "examples/svelte/public" + }], + "link_groups": [] + }, "troopjs": { "name": "TroopJS", "description": "The simple js framework that does as little as possible, then stays out of the way.", diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000000..7e6e5edabf --- /dev/null +++ b/yarn.lock @@ -0,0 +1,4571 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@gulp-sourcemaps/map-sources@1.X": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz#890ae7c5d8c877f6d384860215ace9d7ec945bda" + dependencies: + normalize-path "^2.0.1" + through2 "^2.0.3" + +CSSselect@~0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/CSSselect/-/CSSselect-0.4.1.tgz#f8ab7e1f8418ce63cda6eb7bd778a85d7ec492b2" + dependencies: + CSSwhat "0.4" + domutils "1.4" + +CSSwhat@0.4: + version "0.4.7" + resolved "https://registry.yarnpkg.com/CSSwhat/-/CSSwhat-0.4.7.tgz#867da0ff39f778613242c44cfea83f0aa4ebdf9b" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + +accepts@~1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f" + dependencies: + mime-types "~2.1.16" + negotiator "0.6.1" + +acorn@4.X: + version "4.0.13" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" + +ajv@^5.1.0: + version "5.5.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.1.tgz#b38bb8876d9e86bee994956a04e721e88b248eb2" + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + +ansi-regex@^0.2.0, ansi-regex@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-styles@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansi-styles@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" + dependencies: + color-convert "^1.9.0" + +archive-type@^3.0.0, archive-type@^3.0.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/archive-type/-/archive-type-3.2.0.tgz#9cd9c006957ebe95fadad5bd6098942a813737f6" + dependencies: + file-type "^3.1.0" + +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + +argparse@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-flatten@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +array-differ@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-0.1.0.tgz#12e2c9b706bed47c8b483b57e487473fb0861f3a" + +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + +array-each@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + +array-slice@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" + +array-union@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-0.1.0.tgz#ede98088330665e699e1ebf0227cbc6034e627db" + dependencies: + array-uniq "^0.1.0" + +array-union@^1.0.0, array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-0.1.1.tgz#5861f3ed4e4bb6175597a4e078e8aa78ebe958c7" + +array-uniq@^1.0.0, array-uniq@^1.0.1, array-uniq@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +asn1@0.1.11: + version "0.1.11" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.1.11.tgz#559be18376d08a4ec4dbe80877d27818639b2df7" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert-plus@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.1.5.tgz#ee74009413002d84cec7219c6ac811812e723160" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +async-each-series@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-1.1.0.tgz#f42fd8155d38f21a5b8ea07c28e063ed1700b138" + +async@^0.9.0, async@~0.9.0: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + +async@^2.0.1: + version "2.6.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" + dependencies: + lodash "^4.14.0" + +async@~0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.6.2.tgz#41fd038a3812c0a8bc1842ecf08ba63eb0392bef" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +atob@~1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773" + +autoprefixer-core@^3.0.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/autoprefixer-core/-/autoprefixer-core-3.1.2.tgz#ade5ce9e2d9d71bb7ffc31d696fa5e87aebeb634" + dependencies: + caniuse-db "^1.0.30000006" + postcss "~2.2.5" + +aws-sign2@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.5.0.tgz#c57103f7a17fc037f02d7c2e64b602ea223f7d63" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + +aws4@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +base64url@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/base64url/-/base64url-2.0.0.tgz#eac16e03ea1438eff9423d69baa36262ed1f70bb" + +base64url@~0.0.4: + version "0.0.6" + resolved "https://registry.yarnpkg.com/base64url/-/base64url-0.0.6.tgz#9597b36b330db1c42477322ea87ea8027499b82b" + +base64url@~1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/base64url/-/base64url-1.0.6.tgz#d64d375d68a7c640d912e2358d170dca5bb54681" + dependencies: + concat-stream "~1.4.7" + meow "~2.0.0" + +bcrypt-pbkdf@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + dependencies: + tweetnacl "^0.14.3" + +beeper@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" + +bin-build@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/bin-build/-/bin-build-2.2.0.tgz#11f8dd61f70ffcfa2bdcaa5b46f5e8fedd4221cc" + dependencies: + archive-type "^3.0.1" + decompress "^3.0.0" + download "^4.1.2" + exec-series "^1.0.0" + rimraf "^2.2.6" + tempfile "^1.0.0" + url-regex "^3.0.0" + +bin-check@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/bin-check/-/bin-check-2.0.0.tgz#86f8e6f4253893df60dc316957f5af02acb05930" + dependencies: + executable "^1.0.0" + +bin-version-check@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/bin-version-check/-/bin-version-check-2.1.0.tgz#e4e5df290b9069f7d111324031efc13fdd11a5b0" + dependencies: + bin-version "^1.0.0" + minimist "^1.1.0" + semver "^4.0.3" + semver-truncate "^1.0.0" + +bin-version@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/bin-version/-/bin-version-1.0.4.tgz#9eb498ee6fd76f7ab9a7c160436f89579435d78e" + dependencies: + find-versions "^1.0.0" + +bin-wrapper@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/bin-wrapper/-/bin-wrapper-3.0.2.tgz#67d3306262e4b1a5f2f88ee23464f6a655677aeb" + dependencies: + bin-check "^2.0.0" + bin-version-check "^2.1.0" + download "^4.0.0" + each-async "^1.1.1" + lazy-req "^1.0.0" + os-filter-obj "^1.0.0" + +binaryextensions@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-1.0.1.tgz#1e637488b35b58bda5f4774bf96a5212a8c90755" + +bl@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e" + dependencies: + readable-stream "^2.0.5" + +bl@~0.9.0: + version "0.9.5" + resolved "https://registry.yarnpkg.com/bl/-/bl-0.9.5.tgz#c06b797af085ea00bc527afc8efcf11de2232054" + dependencies: + readable-stream "~1.0.26" + +bl@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.0.3.tgz#fc5421a28fd4226036c3b3891a66a25bc64d226e" + dependencies: + readable-stream "~2.0.5" + +bluebird@^2.9.27: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" + +body-parser@1.18.2: + version "1.18.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" + dependencies: + bytes "3.0.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.1" + http-errors "~1.6.2" + iconv-lite "0.4.19" + on-finished "~2.3.0" + qs "6.5.1" + raw-body "2.3.2" + type-is "~1.6.15" + +boom@0.4.x: + version "0.4.2" + resolved "https://registry.yarnpkg.com/boom/-/boom-0.4.2.tgz#7a636e9ded4efcefb19cef4947a3c67dfaee911b" + dependencies: + hoek "0.9.x" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +boom@4.x.x: + version "4.3.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" + dependencies: + hoek "4.x.x" + +boom@5.x.x: + version "5.2.0" + resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" + dependencies: + hoek "4.x.x" + +brace-expansion@^1.0.0, brace-expansion@^1.1.0, brace-expansion@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +browserify-zlib@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" + dependencies: + pako "~0.2.0" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + +buffer-equal-constant-time@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + +buffer-to-vinyl@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-to-vinyl/-/buffer-to-vinyl-1.1.0.tgz#00f15faee3ab7a1dda2cde6d9121bffdd07b2262" + dependencies: + file-type "^3.1.0" + readable-stream "^2.0.2" + uuid "^2.0.1" + vinyl "^1.0.0" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + +cache-swap@^0.2.0: + version "0.2.3" + resolved "https://registry.yarnpkg.com/cache-swap/-/cache-swap-0.2.3.tgz#53c1dea60c2939af347ef93bb7a86aefc6e6dcb4" + dependencies: + graceful-fs "^4.1.2" + mkdirp "^0.5.1" + object-assign "^4.0.1" + rimraf "^2.4.0" + +camelcase-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-1.0.0.tgz#bd1a11bf9b31a1ce493493a930de1a0baf4ad7ec" + dependencies: + camelcase "^1.0.1" + map-obj "^1.0.0" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^1.0.1, camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + +caniuse-db@^1.0.30000006: + version "1.0.30000782" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000782.tgz#d8815bce1578c350aced1132507301205e0fab53" + +capture-stack-trace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" + +caseless@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + +caseless@~0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.8.0.tgz#5bca2881d41437f54b2407ebe34888c7b9ad4f7d" + +caw@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/caw/-/caw-1.2.0.tgz#ffb226fe7efc547288dc62ee3e97073c212d1034" + dependencies: + get-proxy "^1.0.1" + is-obj "^1.0.0" + object-assign "^3.0.0" + tunnel-agent "^0.4.0" + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chalk@*: + version "2.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + +chalk@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz#663b3a648b68b55d04690d49167aa837858f2174" + dependencies: + ansi-styles "^1.1.0" + escape-string-regexp "^1.0.0" + has-ansi "^0.1.0" + strip-ansi "^0.3.0" + supports-color "^0.2.0" + +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +cheerio@^0.17.0: + version "0.17.0" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.17.0.tgz#fa5ae42cc60121133d296d0b46d983215f7268ea" + dependencies: + CSSselect "~0.4.0" + dom-serializer "~0.0.0" + entities "~1.1.1" + htmlparser2 "~3.7.2" + lodash "~2.4.1" + +clap@^1.0.9: + version "1.2.3" + resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" + dependencies: + chalk "^1.1.3" + +clean-css@^2.2.11: + version "2.2.23" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-2.2.23.tgz#0590b5478b516c4903edc2d89bd3fdbdd286328c" + dependencies: + commander "2.2.x" + +cli@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cli/-/cli-1.0.1.tgz#22817534f24bfa4950c34d532d48ecbc621b8c14" + dependencies: + exit "0.1.2" + glob "^7.1.1" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + +clone-stats@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" + +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + +clone@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" + +clone@^1.0.0, clone@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f" + +clone@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb" + +cloneable-readable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.0.0.tgz#a6290d413f217a61232f95e458ff38418cfb0117" + dependencies: + inherits "^2.0.1" + process-nextick-args "^1.0.6" + through2 "^2.0.1" + +co@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/co/-/co-3.1.0.tgz#4ea54ea5a08938153185e15210c68d9092bc1b78" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +coa@~1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" + dependencies: + q "^1.1.2" + +color-convert@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" + dependencies: + color-name "^1.1.1" + +color-name@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +colors@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" + dependencies: + delayed-stream "~1.0.0" + +combined-stream@~0.0.4, combined-stream@~0.0.5: + version "0.0.7" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-0.0.7.tgz#0137e657baa5a7541c57ac37ac5fc07d73b4dc1f" + dependencies: + delayed-stream "0.0.5" + +commander@2.2.x, commander@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.2.0.tgz#175ad4b9317f3ff615f201c1e57224f55a3e91df" + +commander@^2.9.0: + version "2.12.2" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555" + +commander@~2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" + dependencies: + graceful-readlink ">= 1.0.0" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.0.tgz#53f7d43c51c5e43f81c8fdd03321c631be68d611" + dependencies: + inherits "~2.0.1" + readable-stream "~2.0.0" + typedarray "~0.0.5" + +concat-stream@^1.4.1, concat-stream@^1.4.6, concat-stream@^1.4.7: + version "1.6.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +concat-stream@~1.4.7: + version "1.4.10" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.4.10.tgz#acc3bbf5602cb8cc980c6ac840fa7d8603e3ef36" + dependencies: + inherits "~2.0.1" + readable-stream "~1.1.9" + typedarray "~0.0.5" + +concat-with-sourcemaps@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.0.4.tgz#f55b3be2aeb47601b10a2d5259ccfb70fd2f1dd6" + dependencies: + source-map "^0.5.1" + +console-browserify@1.1.x: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + dependencies: + date-now "^0.1.4" + +console-stream@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/console-stream/-/console-stream-0.1.1.tgz#a095fe07b20465955f2fafd28b5d72bccd949d44" + +content-disposition@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + +convert-source-map@1.X, convert-source-map@^1.1.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +create-error-class@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + dependencies: + capture-stack-trace "^1.0.0" + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cryptiles@0.2.x: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-0.2.2.tgz#ed91ff1f17ad13d3748288594f8a48a0d26f325c" + dependencies: + boom "0.4.x" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +cryptiles@3.x.x: + version "3.1.2" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" + dependencies: + boom "5.x.x" + +css-parse@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b" + +css-stringify@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/css-stringify/-/css-stringify-1.4.1.tgz#252ccbf03f723a009bdd8770fe7eb274171afdfa" + dependencies: + source-map "~0.1.31" + +css@2.X: + version "2.2.1" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.1.tgz#73a4c81de85db664d4ee674f7d47085e3b2d55dc" + dependencies: + inherits "^2.0.1" + source-map "^0.1.38" + source-map-resolve "^0.3.0" + urix "^0.1.0" + +css@~1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/css/-/css-1.6.0.tgz#c06fff0afbb313fce5bce070d76531a6c8d300aa" + dependencies: + css-parse "1.7.0" + css-stringify "1.4.1" + +csso@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" + dependencies: + clap "^1.0.9" + source-map "^0.5.3" + +ctype@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/ctype/-/ctype-0.5.3.tgz#82c18c2461f74114ef16c135224ad0b9144ca12f" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + dependencies: + array-find-index "^1.0.1" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + +dateformat@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" + +debug-fabulous@0.0.X: + version "0.0.4" + resolved "https://registry.yarnpkg.com/debug-fabulous/-/debug-fabulous-0.0.4.tgz#fa071c5d87484685424807421ca4b16b0b1a0763" + dependencies: + debug "2.X" + lazy-debug-legacy "0.0.X" + object-assign "4.1.0" + +debug@0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" + +debug@2.6.9, debug@2.X: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +decamelize@^1.0.0, decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +decompress-tar@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-3.1.0.tgz#217c789f9b94450efaadc5c5e537978fc333c466" + dependencies: + is-tar "^1.0.0" + object-assign "^2.0.0" + strip-dirs "^1.0.0" + tar-stream "^1.1.1" + through2 "^0.6.1" + vinyl "^0.4.3" + +decompress-tarbz2@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-3.1.0.tgz#8b23935681355f9f189d87256a0f8bdd96d9666d" + dependencies: + is-bzip2 "^1.0.0" + object-assign "^2.0.0" + seek-bzip "^1.0.3" + strip-dirs "^1.0.0" + tar-stream "^1.1.1" + through2 "^0.6.1" + vinyl "^0.4.3" + +decompress-targz@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-3.1.0.tgz#b2c13df98166268991b715d6447f642e9696f5a0" + dependencies: + is-gzip "^1.0.0" + object-assign "^2.0.0" + strip-dirs "^1.0.0" + tar-stream "^1.1.1" + through2 "^0.6.1" + vinyl "^0.4.3" + +decompress-unzip@^3.0.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-3.4.0.tgz#61475b4152066bbe3fee12f9d629d15fe6478eeb" + dependencies: + is-zip "^1.0.0" + read-all-stream "^3.0.0" + stat-mode "^0.2.0" + strip-dirs "^1.0.0" + through2 "^2.0.0" + vinyl "^1.0.0" + yauzl "^2.2.1" + +decompress@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/decompress/-/decompress-3.0.0.tgz#af1dd50d06e3bfc432461d37de11b38c0d991bed" + dependencies: + buffer-to-vinyl "^1.0.0" + concat-stream "^1.4.6" + decompress-tar "^3.0.0" + decompress-tarbz2 "^3.0.0" + decompress-targz "^3.0.0" + decompress-unzip "^3.0.0" + stream-combiner2 "^1.1.1" + vinyl-assign "^1.0.1" + vinyl-fs "^2.2.0" + +deep-extend@~0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" + +defaults@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + dependencies: + clone "^1.0.2" + +del@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/del/-/del-0.1.3.tgz#2d724a719b5acf5c0b840b4224715e838406a419" + dependencies: + each-async "^1.0.0" + globby "^0.1.1" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + rimraf "^2.2.8" + +delayed-stream@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-0.0.5.tgz#d4b1f43a93e8296dfe02694f4680bc37a313c73f" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +depd@1.1.1, depd@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" + +deprecated@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/deprecated/-/deprecated-0.0.1.tgz#f9c9af5464afa1e7a971458a8bdef2aa94d5bb19" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + +detect-file@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-0.1.0.tgz#4935dedfd9488648e006b0129566e9386711ea63" + dependencies: + fs-exists-sync "^0.1.0" + +detect-newline@2.X: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + +dom-serializer@0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + +"dom-serializer@git://github.com/azakus/dom-serializer.git#self-closing-svg": + version "0.0.1" + resolved "git://github.com/azakus/dom-serializer.git#0d41a71761704338bece9d1af6b9c4f18cf571e6" + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + +dom-serializer@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.0.1.tgz#9589827f1e32d22c37c829adabd59b3247af8eaf" + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + +domelementtype@1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + +domelementtype@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + +domhandler@2.2: + version "2.2.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.2.1.tgz#59df9dcd227e808b365ae73e1f6684ac3d946fc2" + dependencies: + domelementtype "1" + +domhandler@2.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738" + dependencies: + domelementtype "1" + +domutils@1.4: + version "1.4.3" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.4.3.tgz#0865513796c6b306031850e175516baf80b72a6f" + dependencies: + domelementtype "1" + +domutils@1.5: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + dependencies: + dom-serializer "0" + domelementtype "1" + +download@^4.0.0, download@^4.1.2: + version "4.4.3" + resolved "https://registry.yarnpkg.com/download/-/download-4.4.3.tgz#aa55fdad392d95d4b68e8c2be03e0c2aa21ba9ac" + dependencies: + caw "^1.0.1" + concat-stream "^1.4.7" + each-async "^1.0.0" + filenamify "^1.0.1" + got "^5.0.0" + gulp-decompress "^1.2.0" + gulp-rename "^1.2.0" + is-url "^1.2.0" + object-assign "^4.0.1" + read-all-stream "^3.0.0" + readable-stream "^2.0.2" + stream-combiner2 "^1.1.1" + vinyl "^1.0.0" + vinyl-fs "^2.2.0" + ware "^1.2.0" + +duplexer2@0.0.2, duplexer2@~0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" + dependencies: + readable-stream "~1.1.9" + +duplexer2@^0.1.4, duplexer2@~0.1.0: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + dependencies: + readable-stream "^2.0.2" + +duplexer@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + +duplexify@^3.2.0: + version "3.5.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.1.tgz#4e1516be68838bc90a49994f0b39a6e5960befcd" + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +each-async@^1.0.0, each-async@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/each-async/-/each-async-1.1.1.tgz#dee5229bdf0ab6ba2012a395e1b869abf8813473" + dependencies: + onetime "^1.0.0" + set-immediate-shim "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +ecdsa-sig-formatter@^1.0.0: + version "1.0.9" + resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz#4bc926274ec3b5abb5016e7e1d60921ac262b2a1" + dependencies: + base64url "^2.0.0" + safe-buffer "^5.0.1" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + +encodeurl@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" + +end-of-stream@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206" + dependencies: + once "^1.4.0" + +end-of-stream@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-0.1.5.tgz#8e177206c3c80837d85632e8b9359dfe8b2f6eaf" + dependencies: + once "~1.3.0" + +entities@1.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26" + +entities@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + +error-ex@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + dependencies: + is-arrayish "^0.2.1" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + +escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +esprima@^2.6.0: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + +event-stream@^3.3.1: + version "3.3.4" + resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" + dependencies: + duplexer "~0.1.1" + from "~0" + map-stream "~0.1.0" + pause-stream "0.0.11" + split "0.3" + stream-combiner "~0.0.4" + through "~2.3.1" + +event-stream@~3.0.18: + version "3.0.20" + resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.0.20.tgz#038bbb2ea9ea90385b26fbc1854d0b539f2abea3" + dependencies: + duplexer "~0.1.1" + from "~0" + map-stream "~0.0.3" + pause-stream "0.0.11" + split "0.2" + stream-combiner "~0.0.3" + through "~2.3.1" + +exec-buffer@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/exec-buffer/-/exec-buffer-3.2.0.tgz#b1686dbd904c7cf982e652c1f5a79b1e5573082b" + dependencies: + execa "^0.7.0" + p-finally "^1.0.0" + pify "^3.0.0" + rimraf "^2.5.4" + tempfile "^2.0.0" + +exec-series@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/exec-series/-/exec-series-1.0.3.tgz#6d257a9beac482a872c7783bc8615839fc77143a" + dependencies: + async-each-series "^1.1.0" + object-assign "^4.1.0" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +executable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/executable/-/executable-1.1.0.tgz#877980e9112f3391066da37265de7ad8434ab4d9" + dependencies: + meow "^3.1.0" + +exit@0.1.2, exit@0.1.x: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +expand-tilde@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" + dependencies: + os-homedir "^1.0.1" + +expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + dependencies: + homedir-polyfill "^1.0.1" + +express@^4.10.0: + version "4.16.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c" + dependencies: + accepts "~1.3.4" + array-flatten "1.1.1" + body-parser "1.18.2" + content-disposition "0.5.2" + content-type "~1.0.4" + cookie "0.3.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.1" + encodeurl "~1.0.1" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.1.0" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.2" + path-to-regexp "0.1.7" + proxy-addr "~2.0.2" + qs "6.5.1" + range-parser "~1.2.0" + safe-buffer "5.1.1" + send "0.16.1" + serve-static "1.13.1" + setprototypeof "1.1.0" + statuses "~1.3.1" + type-is "~1.6.15" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + dependencies: + is-extendable "^0.1.0" + +extend@^3.0.0, extend@~3.0.0, extend@~3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extract-zip@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.5.0.tgz#92ccf6d81ef70a9fa4c1747114ccef6d8688a6c4" + dependencies: + concat-stream "1.5.0" + debug "0.7.4" + mkdirp "0.5.0" + yauzl "2.4.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + +fancy-log@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.0.tgz#45be17d02bb9917d60ccffd4995c999e6c8c9948" + dependencies: + chalk "^1.1.1" + time-stamp "^1.0.0" + +fast-deep-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + +fd-slicer@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" + dependencies: + pend "~1.2.0" + +figures@^1.3.5: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +file-type@^3.1.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" + +file-type@^4.1.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-4.4.0.tgz#1b600e5fca1fbdc6e80c0a70c71c8dba5f7906c5" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + +filename-reserved-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz#e61cf805f0de1c984567d0386dc5df50ee5af7e4" + +filenamify@^1.0.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-1.2.1.tgz#a9f2ffd11c503bed300015029272378f1f1365a5" + dependencies: + filename-reserved-regex "^1.0.0" + strip-outer "^1.0.0" + trim-repeated "^1.0.0" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +finalhandler@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" + dependencies: + debug "2.6.9" + encodeurl "~1.0.1" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.3.1" + unpipe "~1.0.0" + +find-index@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-versions@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-1.2.1.tgz#cbde9f12e38575a0af1be1b9a2c5d5fd8f186b62" + dependencies: + array-uniq "^1.0.0" + get-stdin "^4.0.1" + meow "^3.5.0" + semver-regex "^1.0.0" + +findup-sync@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.1.3.tgz#7f3e7a97b82392c653bf06589bd85190e93c3683" + dependencies: + glob "~3.2.9" + lodash "~2.4.1" + +findup-sync@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.4.3.tgz#40043929e7bc60adf0b7f4827c4c6e75a0deca12" + dependencies: + detect-file "^0.1.0" + is-glob "^2.0.1" + micromatch "^2.3.7" + resolve-dir "^0.1.0" + +fined@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fined/-/fined-1.1.0.tgz#b37dc844b76a2f5e7081e884f7c0ae344f153476" + dependencies: + expand-tilde "^2.0.2" + is-plain-object "^2.0.3" + object.defaults "^1.1.0" + object.pick "^1.2.0" + parse-filepath "^1.0.1" + +first-chunk-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" + +flagged-respawn@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-0.3.2.tgz#ff191eddcd7088a675b2610fffc976be9b8074b5" + +flush-write-stream@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.2.tgz#c81b90d8746766f1a609a46809946c45dd8ae417" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.4" + +for-in@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.3, for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + dependencies: + for-in "^1.0.1" + +forever-agent@~0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.5.2.tgz#6d0e09c4921f94a27f63d3b49c5feff1ea4c5130" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +fork-stream@~0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/fork-stream/-/fork-stream-0.0.4.tgz#db849fce77f6708a5f8f386ae533a0907b54ae70" + +form-data@~0.1.0: + version "0.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-0.1.4.tgz#91abd788aba9702b1aabfa8bc01031a2ac9e3b12" + dependencies: + async "~0.9.0" + combined-stream "~0.0.4" + mime "~1.2.11" + +form-data@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-0.2.0.tgz#26f8bc26da6440e299cbdcfb69035c4f77a6e466" + dependencies: + async "~0.9.0" + combined-stream "~0.0.4" + mime-types "~2.0.3" + +form-data@~1.0.0-rc3: + version "1.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-1.0.1.tgz#ae315db9a4907fa065502304a66d7733475ee37c" + dependencies: + async "^2.0.1" + combined-stream "^1.0.5" + mime-types "^2.1.11" + +form-data@~2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + +from@~0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + +fs-exists-sync@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" + +fs-extra@~0.26.4: + version "0.26.7" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.26.7.tgz#9ae1fdd94897798edab76d0918cf42d0c3184fa9" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +gapitoken@~0.1.2: + version "0.1.5" + resolved "https://registry.yarnpkg.com/gapitoken/-/gapitoken-0.1.5.tgz#3577fcfb5426be3a7b8ebada92671229d8cc81ce" + dependencies: + jws "~3.0.0" + request "^2.54.0" + +gaze@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-0.5.2.tgz#40b709537d24d1d45767db5a908689dfe69ac44f" + dependencies: + globule "~0.1.0" + +generate-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" + +generate-object-property@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" + dependencies: + is-property "^1.0.0" + +get-proxy@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-1.1.0.tgz#894854491bc591b0f147d7ae570f5c678b7256eb" + dependencies: + rc "^1.1.2" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + +gifsicle@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/gifsicle/-/gifsicle-3.0.4.tgz#f45cb5ed10165b665dc929e0e9328b6c821dfa3b" + dependencies: + bin-build "^2.0.0" + bin-wrapper "^3.0.0" + logalot "^2.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob-parent@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-stream@^3.1.5: + version "3.1.18" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-3.1.18.tgz#9170a5f12b790306fdfe598f313f8f7954fd143b" + dependencies: + glob "^4.3.1" + glob2base "^0.0.12" + minimatch "^2.0.1" + ordered-read-streams "^0.1.0" + through2 "^0.6.1" + unique-stream "^1.0.0" + +glob-stream@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-4.1.1.tgz#b842df10d688c7eb6bcfcebd846f3852296b3200" + dependencies: + glob "^4.3.1" + glob2base "^0.0.12" + minimatch "^2.0.1" + ordered-read-streams "^0.1.0" + through2 "^0.6.1" + unique-stream "^2.0.2" + +glob-stream@^5.3.2: + version "5.3.5" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-5.3.5.tgz#a55665a9a8ccdc41915a87c701e32d4e016fad22" + dependencies: + extend "^3.0.0" + glob "^5.0.3" + glob-parent "^3.0.0" + micromatch "^2.3.7" + ordered-read-streams "^0.3.0" + through2 "^0.6.0" + to-absolute-glob "^0.1.1" + unique-stream "^2.0.2" + +glob-watcher@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-0.0.6.tgz#b95b4a8df74b39c83298b0c05c978b4d9a3b710b" + dependencies: + gaze "^0.5.1" + +glob-watcher@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-0.0.8.tgz#68aeb661e7e2ce8d3634381b2ec415f00c6bc2a4" + dependencies: + gaze "^0.5.1" + +glob2base@^0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" + dependencies: + find-index "^0.1.1" + +glob@^4.0.2, glob@^4.3.1: + version "4.5.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "^2.0.1" + once "^1.3.0" + +glob@^5.0.3: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.3, glob@^7.0.5, glob@^7.1.1: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@~3.1.21: + version "3.1.21" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd" + dependencies: + graceful-fs "~1.2.0" + inherits "1" + minimatch "~0.2.11" + +glob@~3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d" + dependencies: + inherits "2" + minimatch "0.3" + +global-modules@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" + dependencies: + global-prefix "^0.1.4" + is-windows "^0.2.0" + +global-prefix@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" + dependencies: + homedir-polyfill "^1.0.0" + ini "^1.3.4" + is-windows "^0.2.0" + which "^1.2.12" + +globby@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-0.1.1.tgz#cbec63df724b4bea458b79a16cc0e3b1f2ca8620" + dependencies: + array-differ "^0.1.0" + array-union "^0.1.0" + async "^0.9.0" + glob "^4.0.2" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globule@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5" + dependencies: + glob "~3.1.21" + lodash "~1.0.1" + minimatch "~0.2.11" + +glogg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.0.tgz#7fe0f199f57ac906cf512feead8f90ee4a284fc5" + dependencies: + sparkles "^1.0.0" + +googleapis@^1.0.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/googleapis/-/googleapis-1.1.5.tgz#e10150ac9e8b25fb51799f10ed946c5b9f8064aa" + dependencies: + async "~0.9.0" + gapitoken "~0.1.2" + request "~2.51.0" + string-template "~0.2.0" + +got@^5.0.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35" + dependencies: + create-error-class "^3.0.1" + duplexer2 "^0.1.4" + is-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + node-status-codes "^1.0.0" + object-assign "^4.0.1" + parse-json "^2.1.0" + pinkie-promise "^2.0.0" + read-all-stream "^3.0.0" + readable-stream "^2.0.5" + timed-out "^3.0.0" + unzip-response "^1.0.2" + url-parse-lax "^1.0.0" + +gpagespeed@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/gpagespeed/-/gpagespeed-0.0.8.tgz#4788a5dc5d79cb99ee9fd44a22e39d4f1a70b9ab" + dependencies: + googleapis "^1.0.2" + minimist "^0.2.0" + valid-url "^1.0.9" + +graceful-fs@4.X, graceful-fs@^4.0.0, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +graceful-fs@^3.0.0: + version "3.0.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818" + dependencies: + natives "^1.1.0" + +graceful-fs@~1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364" + +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + +gulp-autoprefixer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gulp-autoprefixer/-/gulp-autoprefixer-1.0.1.tgz#e42b00d59733dda44c3f201dd21e4dcb4da84733" + dependencies: + autoprefixer-core "^3.0.1" + gulp-util "^3.0.0" + object-assign "^1.0.0" + through2 "^0.6.2" + vinyl-sourcemaps-apply "^0.1.3" + +gulp-cache@^0.2.0: + version "0.2.10" + resolved "https://registry.yarnpkg.com/gulp-cache/-/gulp-cache-0.2.10.tgz#19a298a60728c46dd151dd8cdac7cc6e50b306a9" + dependencies: + bluebird "^2.9.27" + cache-swap "^0.2.0" + gulp-util "^3.0.5" + object-assign "^3.0.0" + object.omit "^1.1.0" + object.pick "^1.1.1" + through2 "^0.6.5" + try-json-parse "^0.1.1" + vinyl "^0.5.0" + +gulp-concat@^2.5.2: + version "2.6.1" + resolved "https://registry.yarnpkg.com/gulp-concat/-/gulp-concat-2.6.1.tgz#633d16c95d88504628ad02665663cee5a4793353" + dependencies: + concat-with-sourcemaps "^1.0.0" + through2 "^2.0.0" + vinyl "^2.0.0" + +gulp-decompress@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gulp-decompress/-/gulp-decompress-1.2.0.tgz#8eeb65a5e015f8ed8532cafe28454960626f0dc7" + dependencies: + archive-type "^3.0.0" + decompress "^3.0.0" + gulp-util "^3.0.1" + readable-stream "^2.0.2" + +gulp-if@^1.2.1, gulp-if@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/gulp-if/-/gulp-if-1.2.5.tgz#9bd9c16032ecc28e0154bfb05828d233166f2da9" + dependencies: + gulp-match "~0.2.1" + ternary-stream "^1.2.0" + through2 "~0.6.2" + +gulp-imagemin@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/gulp-imagemin/-/gulp-imagemin-3.0.0.tgz#eeea4d451fbd65659d93343fed9f76aa19763fa6" + dependencies: + chalk "^1.0.0" + gulp-util "^3.0.0" + imagemin "^5.0.0" + plur "^2.0.0" + pretty-bytes "^2.0.1" + through2-concurrent "^1.1.0" + optionalDependencies: + imagemin-gifsicle "^5.0.0" + imagemin-mozjpeg "^6.0.0" + imagemin-optipng "^5.0.0" + imagemin-svgo "^5.0.1" + +gulp-jshint@^1.6.3: + version "1.12.0" + resolved "https://registry.yarnpkg.com/gulp-jshint/-/gulp-jshint-1.12.0.tgz#23fbd1bafdd6fbfe61ea64667a74809a961d03de" + dependencies: + gulp-util "^3.0.0" + jshint "^2.7.0" + lodash "^3.0.1" + minimatch "^2.0.1" + rcloader "0.1.2" + through2 "~0.6.1" + +gulp-load-plugins@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/gulp-load-plugins/-/gulp-load-plugins-0.7.1.tgz#42aef1ef8f4c1ccba864fe28948be7adef6e661e" + dependencies: + findup-sync "^0.1.2" + multimatch "1.0.0" + +gulp-match@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/gulp-match/-/gulp-match-0.2.1.tgz#0bed08da8bd6e89686f89ffb004337f8bad06d22" + dependencies: + minimatch "^1.0.0" + +gulp-rename@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.2.tgz#3ad4428763f05e2764dec1c67d868db275687817" + +gulp-replace@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/gulp-replace/-/gulp-replace-0.4.0.tgz#e22bc9c03e9d051b32881cc589bd3e8c4e54168a" + dependencies: + event-stream "~3.0.18" + istextorbinary "~1.0.0" + replacestream "0.1.3" + +gulp-size@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/gulp-size/-/gulp-size-1.3.0.tgz#8923a07b4ac131a01825d5b482de31737b5f9c90" + dependencies: + chalk "^1.0.0" + gulp-util "^3.0.0" + gzip-size "^1.0.0" + pretty-bytes "^2.0.1" + through2 "^2.0.0" + +gulp-sourcemaps@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz#b86ff349d801ceb56e1d9e7dc7bbcb4b7dee600c" + dependencies: + convert-source-map "^1.1.1" + graceful-fs "^4.1.2" + strip-bom "^2.0.0" + through2 "^2.0.0" + vinyl "^1.0.0" + +gulp-sourcemaps@^1.5.2: + version "1.12.0" + resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.12.0.tgz#786f97c94a0f968492465d70558e04242c679598" + dependencies: + "@gulp-sourcemaps/map-sources" "1.X" + acorn "4.X" + convert-source-map "1.X" + css "2.X" + debug-fabulous "0.0.X" + detect-newline "2.X" + graceful-fs "4.X" + source-map "0.X" + strip-bom "2.X" + through2 "2.X" + vinyl "1.X" + +gulp-uncss@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/gulp-uncss/-/gulp-uncss-0.5.2.tgz#f7a37715b2d03d13bae6dafb8b67dc249f9217a9" + dependencies: + gulp-util "~3.0.1" + object-assign "^2.0.0" + uncss "0.8.1" + +gulp-useref@^1.0.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/gulp-useref/-/gulp-useref-1.3.0.tgz#b3f4692f156b542100a457e1ac1cec4f6ce760fe" + dependencies: + brace-expansion "^1.1.0" + event-stream "^3.3.1" + gulp-concat "^2.5.2" + gulp-if "^1.2.5" + gulp-util "^3.0.1" + is-relative-url "^1.0.0" + lodash "^3.3.1" + multimatch "^2.0.0" + node-useref "^0.3.1" + through2 "^0.6.1" + vinyl-fs "^1.0.0" + +gulp-util@*, gulp-util@^3.0.0, gulp-util@^3.0.1, gulp-util@^3.0.5, gulp-util@~3.0.1: + version "3.0.8" + resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" + dependencies: + array-differ "^1.0.0" + array-uniq "^1.0.2" + beeper "^1.0.0" + chalk "^1.0.0" + dateformat "^2.0.0" + fancy-log "^1.1.0" + gulplog "^1.0.0" + has-gulplog "^0.1.0" + lodash._reescape "^3.0.0" + lodash._reevaluate "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.template "^3.0.0" + minimist "^1.1.0" + multipipe "^0.1.2" + object-assign "^3.0.0" + replace-ext "0.0.1" + through2 "^2.0.0" + vinyl "^0.5.0" + +gulp-vulcanize@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/gulp-vulcanize/-/gulp-vulcanize-1.1.0.tgz#02f7256ec158626329defcea1ba4d87ae49da43b" + dependencies: + gulp-util "^3.0.0" + mkdirp "^0.5.0" + through2 "^0.6.1" + vulcanize "^0.4.2" + +gulp@^3.9.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/gulp/-/gulp-3.9.1.tgz#571ce45928dd40af6514fc4011866016c13845b4" + dependencies: + archy "^1.0.0" + chalk "^1.0.0" + deprecated "^0.0.1" + gulp-util "^3.0.0" + interpret "^1.0.0" + liftoff "^2.1.0" + minimist "^1.1.0" + orchestrator "^0.3.0" + pretty-hrtime "^1.0.0" + semver "^4.1.0" + tildify "^1.0.0" + v8flags "^2.0.2" + vinyl-fs "^0.3.0" + +gulplog@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + dependencies: + glogg "^1.0.0" + +gzip-size@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-1.0.0.tgz#66cf8b101047227b95bace6ea1da0c177ed5c22f" + dependencies: + browserify-zlib "^0.1.4" + concat-stream "^1.4.1" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + +har-validator@~2.0.2: + version "2.0.6" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" + dependencies: + chalk "^1.1.1" + commander "^2.9.0" + is-my-json-valid "^2.12.4" + pinkie-promise "^2.0.0" + +har-validator@~5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" + dependencies: + ajv "^5.1.0" + har-schema "^2.0.0" + +has-ansi@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz#84f265aae8c0e6a88a12d7022894b7568894c62e" + dependencies: + ansi-regex "^0.2.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + +has-gulplog@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" + dependencies: + sparkles "^1.0.0" + +hasha@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/hasha/-/hasha-2.2.0.tgz#78d7cbfc1e6d66303fe79837365984517b2f6ee1" + dependencies: + is-stream "^1.0.1" + pinkie-promise "^2.0.0" + +hawk@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-1.1.1.tgz#87cd491f9b46e4e2aeaca335416766885d2d1ed9" + dependencies: + boom "0.4.x" + cryptiles "0.2.x" + hoek "0.9.x" + sntp "0.2.x" + +hawk@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-1.0.0.tgz#b90bb169807285411da7ffcb8dd2598502d3b52d" + dependencies: + boom "0.4.x" + cryptiles "0.2.x" + hoek "0.9.x" + sntp "0.2.x" + +hawk@~3.1.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +hawk@~6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" + dependencies: + boom "4.x.x" + cryptiles "3.x.x" + hoek "4.x.x" + sntp "2.x.x" + +hoek@0.9.x: + version "0.9.1" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-0.9.1.tgz#3d322462badf07716ea7eb85baf88079cddce505" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +hoek@4.x.x: + version "4.2.0" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" + +homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" + dependencies: + parse-passwd "^1.0.0" + +hosted-git-info@^2.1.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" + +html-comment-regex@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" + +htmlparser2@3.8.x: + version "3.8.3" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068" + dependencies: + domelementtype "1" + domhandler "2.3" + domutils "1.5" + entities "1.0" + readable-stream "1.1" + +htmlparser2@~3.7.2: + version "3.7.3" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.7.3.tgz#6a64c77637c08c6f30ec2a8157a53333be7cb05e" + dependencies: + domelementtype "1" + domhandler "2.2" + domutils "1.5" + entities "1.0" + readable-stream "1.1" + +http-errors@1.6.2, http-errors@~1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" + dependencies: + depd "1.1.1" + inherits "2.0.3" + setprototypeof "1.0.3" + statuses ">= 1.3.1 < 2" + +http-signature@~0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-0.10.1.tgz#4fbdac132559aa8323121e540779c0a012b27e66" + dependencies: + asn1 "0.1.11" + assert-plus "^0.1.5" + ctype "0.5.3" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +iconv-lite@0.4.19: + version "0.4.19" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + +imagemin-gifsicle@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/imagemin-gifsicle/-/imagemin-gifsicle-5.2.0.tgz#3781524c457612ef04916af34241a2b42bfcb40a" + dependencies: + exec-buffer "^3.0.0" + gifsicle "^3.0.0" + is-gif "^1.0.0" + +imagemin-mozjpeg@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/imagemin-mozjpeg/-/imagemin-mozjpeg-6.0.0.tgz#71a32a457aa1b26117a68eeef2d9b190c2e5091e" + dependencies: + exec-buffer "^3.0.0" + is-jpg "^1.0.0" + mozjpeg "^4.0.0" + +imagemin-optipng@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz#d22da412c09f5ff00a4339960b98a88b1dbe8695" + dependencies: + exec-buffer "^3.0.0" + is-png "^1.0.0" + optipng-bin "^3.0.0" + +imagemin-svgo@^5.0.1: + version "5.2.4" + resolved "https://registry.yarnpkg.com/imagemin-svgo/-/imagemin-svgo-5.2.4.tgz#6cd5d342cae4bcd8b483594e5315695df02b9e9b" + dependencies: + is-svg "^2.0.0" + svgo "^0.7.0" + +imagemin@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/imagemin/-/imagemin-5.3.1.tgz#f19c2eee1e71ba6c6558c515f9fc96680189a6d4" + dependencies: + file-type "^4.1.0" + globby "^6.1.0" + make-dir "^1.0.0" + p-pipe "^1.1.0" + pify "^2.3.0" + replace-ext "^1.0.0" + +indent-string@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-1.2.2.tgz#db99bcc583eb6abbb1e48dcbb1999a986041cb6b" + dependencies: + get-stdin "^4.0.1" + minimist "^1.1.0" + repeating "^1.1.0" + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + dependencies: + repeating "^2.0.0" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b" + +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +ini@^1.3.4, ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + +interpret@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" + +ip-regex@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-1.0.3.tgz#dc589076f659f419c222039a33316f1c7387effd" + +ipaddr.js@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.5.2.tgz#d4b505bde9946987ccf0fc58d9010ff9607e3fa0" + +irregular-plurals@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.4.0.tgz#2ca9b033651111855412f16be5d77c62a458a766" + +is-absolute-url@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-1.0.0.tgz#2d7ef0fd0bb2a88dac7e92253c6808a0ace24bfb" + +is-absolute@^0.1.5: + version "0.1.7" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.1.7.tgz#847491119fccb5fb436217cc737f7faad50f603f" + dependencies: + is-relative "^0.1.0" + +is-absolute@^0.2.3: + version "0.2.6" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.2.6.tgz#20de69f3db942ef2d87b9c2da36f172235b1b5eb" + dependencies: + is-relative "^0.2.1" + is-windows "^0.2.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-bzip2@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-bzip2/-/is-bzip2-1.0.0.tgz#5ee58eaa5a2e9c80e21407bedf23ae5ac091b3fc" + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-extglob@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-gif@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-gif/-/is-gif-1.0.0.tgz#a6d2ae98893007bffa97a1d8c01d63205832097e" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + dependencies: + is-extglob "^2.1.0" + +is-gzip@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-gzip/-/is-gzip-1.0.0.tgz#6ca8b07b99c77998025900e555ced8ed80879a83" + +is-jpg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-jpg/-/is-jpg-1.0.0.tgz#2959c17e73430db38264da75b90dd54f2d86da1c" + +is-my-json-valid@^2.12.4: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz#5a846777e2c2620d1e69104e5d3a03b1f6088f11" + dependencies: + generate-function "^2.0.0" + generate-object-property "^1.1.0" + jsonpointer "^4.0.0" + xtend "^4.0.0" + +is-natural-number@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-2.1.1.tgz#7d4c5728377ef386c3e194a9911bf57c6dc335e7" + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + +is-path-in-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + dependencies: + path-is-inside "^1.0.1" + +is-plain-object@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + dependencies: + isobject "^3.0.1" + +is-png@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-png/-/is-png-1.1.0.tgz#d574b12bf275c0350455570b0e5b57ab062077ce" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-property@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + +is-relative-url@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-relative-url/-/is-relative-url-1.0.0.tgz#87a9d35e8a789b49e079b4d7d69d64612e8e0e1f" + dependencies: + is-absolute-url "^1.0.0" + +is-relative@^0.1.0: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.1.3.tgz#905fee8ae86f45b3ec614bc3c15c869df0876e82" + +is-relative@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.2.1.tgz#d27f4c7d516d175fb610db84bbeef23c3bc97aa5" + dependencies: + is-unc-path "^0.1.1" + +is-retry-allowed@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-svg@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" + dependencies: + html-comment-regex "^1.1.0" + +is-tar@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-tar/-/is-tar-1.0.0.tgz#2f6b2e1792c1f5bb36519acaa9d65c0d26fe853d" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-unc-path@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-0.1.2.tgz#6ab053a72573c10250ff416a3814c35178af39b9" + dependencies: + unc-path-regex "^0.1.0" + +is-url@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.2.tgz#498905a593bf47cc2d9e7f738372bbf7696c7f26" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +is-valid-glob@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-0.3.0.tgz#d4b55c69f51886f9b65c70d6c2622d37e29f48fe" + +is-windows@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" + +is-zip@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-zip/-/is-zip-1.0.0.tgz#47b0a8ff4d38a76431ccfd99a8e15a4c86ba2325" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isobject@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-1.0.2.tgz#f0f9b8ce92dd540fa0740882e3835a2e022ec78a" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +istextorbinary@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-1.0.2.tgz#ace19354d1a9a0173efeb1084ce0f87b0ad7decf" + dependencies: + binaryextensions "~1.0.0" + textextensions "~1.0.0" + +js-base64@~2.1.5: + version "2.1.9" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" + +js-yaml@~3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" + dependencies: + argparse "^1.0.7" + esprima "^2.6.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +jshint-stylish@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/jshint-stylish/-/jshint-stylish-1.0.2.tgz#e99f3cc340afb18e2a7702f8798d7400ca31446a" + dependencies: + chalk "^1.0.0" + log-symbols "^1.0.0" + string-length "^1.0.0" + text-table "^0.2.0" + +jshint@^2.7.0: + version "2.9.5" + resolved "https://registry.yarnpkg.com/jshint/-/jshint-2.9.5.tgz#1e7252915ce681b40827ee14248c46d34e9aa62c" + dependencies: + cli "~1.0.0" + console-browserify "1.1.x" + exit "0.1.x" + htmlparser2 "3.8.x" + lodash "3.7.x" + minimatch "~3.0.2" + shelljs "0.3.x" + strip-json-comments "1.0.x" + +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stable-stringify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.0, json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsonpointer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +jwa@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.0.2.tgz#fd79609f1e772e299dce8ddb76d00659dd83511f" + dependencies: + base64url "~0.0.4" + buffer-equal-constant-time "^1.0.1" + ecdsa-sig-formatter "^1.0.0" + +jws@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/jws/-/jws-3.0.0.tgz#da5f267897dd4e9cf8137979db33fc54a3c05418" + dependencies: + base64url "~1.0.4" + jwa "~1.0.0" + +kew@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/kew/-/kew-0.7.0.tgz#79d93d2d33363d6fdd2970b335d9141ad591d79b" + +kind-of@^3.0.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + optionalDependencies: + graceful-fs "^4.1.9" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +lazy-debug-legacy@0.0.X: + version "0.0.1" + resolved "https://registry.yarnpkg.com/lazy-debug-legacy/-/lazy-debug-legacy-0.0.1.tgz#537716c0776e4cf79e3ed1b621f7658c2911b1b1" + +lazy-req@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac" + +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + dependencies: + readable-stream "^2.0.5" + +liftoff@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.3.0.tgz#a98f2ff67183d8ba7cfaca10548bd7ff0550b385" + dependencies: + extend "^3.0.0" + findup-sync "^0.4.2" + fined "^1.0.1" + flagged-respawn "^0.3.2" + lodash.isplainobject "^4.0.4" + lodash.isstring "^4.0.1" + lodash.mapvalues "^4.4.0" + rechoir "^0.6.2" + resolve "^1.1.7" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + +lodash._basetostring@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" + +lodash._basevalues@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + +lodash._reescape@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" + +lodash._reevaluate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + +lodash._root@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + +lodash.clonedeep@^4.3.2: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + +lodash.escape@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" + dependencies: + lodash._root "^3.0.0" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + +lodash.isequal@^4.0.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + +lodash.isplainobject@^4.0.4: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + +lodash.mapvalues@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" + +lodash.restparam@^3.0.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + +lodash.template@^3.0.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" + dependencies: + lodash._basecopy "^3.0.0" + lodash._basetostring "^3.0.0" + lodash._basevalues "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + lodash.keys "^3.0.0" + lodash.restparam "^3.0.0" + lodash.templatesettings "^3.0.0" + +lodash.templatesettings@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + +lodash@3.7.x: + version "3.7.0" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.7.0.tgz#3678bd8ab995057c07ade836ed2ef087da811d45" + +lodash@^3.0.1, lodash@^3.3.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" + +lodash@^4.14.0: + version "4.17.4" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + +lodash@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551" + +lodash@~2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-2.4.2.tgz#fadd834b9683073da179b3eae6d9c0d15053f73e" + +log-symbols@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + dependencies: + chalk "^1.0.0" + +logalot@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/logalot/-/logalot-2.1.0.tgz#5f8e8c90d304edf12530951a5554abb8c5e3f552" + dependencies: + figures "^1.3.5" + squeak "^1.0.0" + +longest@^1.0.0, longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lowercase-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + +lpad-align@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/lpad-align/-/lpad-align-1.1.2.tgz#21f600ac1c3095c3c6e497ee67271ee08481fe9e" + dependencies: + get-stdin "^4.0.1" + indent-string "^2.1.0" + longest "^1.0.0" + meow "^3.3.0" + +lru-cache@2: + version "2.7.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" + +lru-cache@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +make-dir@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.1.0.tgz#19b4369fe48c116f53c2af95ad102c0e39e85d51" + dependencies: + pify "^3.0.0" + +map-cache@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + +map-stream@~0.0.3: + version "0.0.7" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.0.7.tgz#8a1f07896d82b10926bd3744a2420009f88974a8" + +map-stream@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + +meow@^3.1.0, meow@^3.3.0, meow@^3.5.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +meow@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-2.0.0.tgz#8f530a8ecf5d40d3f4b4df93c3472900fba2a8f1" + dependencies: + camelcase-keys "^1.0.0" + indent-string "^1.1.0" + minimist "^1.1.0" + object-assign "^1.0.0" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + +merge-stream@^0.1.7, merge-stream@~0.1.6: + version "0.1.8" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-0.1.8.tgz#48a07b3b4a121d74a3edbfdcdb4b08adbf0240b1" + dependencies: + through2 "^0.6.1" + +merge-stream@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" + dependencies: + readable-stream "^2.0.1" + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + +micromatch@^2.3.7: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +mime-db@~1.12.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.12.0.tgz#3d0c63180f458eb10d325aaa37d7c58ae312e9d7" + +mime-db@~1.30.0: + version "1.30.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" + +mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.17, mime-types@~2.1.7: + version "2.1.17" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" + dependencies: + mime-db "~1.30.0" + +mime-types@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-1.0.2.tgz#995ae1392ab8affcbfcb2641dd054e943c0d5dce" + +mime-types@~2.0.3: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.0.14.tgz#310e159db23e077f8bb22b748dabfa4957140aa6" + dependencies: + mime-db "~1.12.0" + +mime@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + +mime@~1.2.11, mime@~1.2.9: + version "1.2.11" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10" + +minimatch@0.3: + version "0.3.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd" + dependencies: + lru-cache "2" + sigmund "~1.0.0" + +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.4, minimatch@~3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimatch@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-1.0.0.tgz#e0dd2120b49e1b724ce8d714c520822a9438576d" + dependencies: + lru-cache "2" + sigmund "~1.0.0" + +minimatch@^2.0.1: + version "2.0.10" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" + dependencies: + brace-expansion "^1.0.0" + +minimatch@~0.2.11: + version "0.2.14" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" + dependencies: + lru-cache "2" + sigmund "~1.0.0" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.2.0.tgz#4dffe525dae2b864c66c2e23c6271d7afdecefce" + +minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +mkdirp@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12" + dependencies: + minimist "0.0.8" + +mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +mozjpeg@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/mozjpeg/-/mozjpeg-4.1.1.tgz#859030b24f689a53db9b40f0160d89195b88fd50" + dependencies: + bin-build "^2.0.0" + bin-wrapper "^3.0.0" + logalot "^2.0.0" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +multimatch@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-1.0.0.tgz#dcdf749896f51480e0e1c48dab9cba41edf464ab" + dependencies: + array-differ "^1.0.0" + array-union "^1.0.0" + minimatch "^1.0.0" + +multimatch@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" + dependencies: + array-differ "^1.0.0" + array-union "^1.0.1" + arrify "^1.0.0" + minimatch "^3.0.0" + +multipipe@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" + dependencies: + duplexer2 "0.0.2" + +natives@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.1.tgz#011acce1f7cbd87f7ba6b3093d6cd9392be1c574" + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + +node-phantom-simple@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/node-phantom-simple/-/node-phantom-simple-1.2.0.tgz#999a5510780ffe68011c69697e1fb063fcb20ae5" + +node-status-codes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" + +node-useref@^0.3.1: + version "0.3.15" + resolved "https://registry.yarnpkg.com/node-useref/-/node-useref-0.3.15.tgz#a8c5dc137458f15775ee7137b2a6ed87c7f081e5" + +node-uuid@~1.4.0, node-uuid@~1.4.7: + version "1.4.8" + resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" + +nopt@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +oauth-sign@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.3.0.tgz#cb540f93bb2b22a7d5941691a288d60e8ea9386e" + +oauth-sign@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.5.0.tgz#d767f5169325620eab2e087ef0c472e773db6461" + +oauth-sign@~0.8.0, oauth-sign@~0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +object-assign@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" + +object-assign@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-1.0.0.tgz#e65dc8766d3b47b4b8307465c8311da030b070a6" + +object-assign@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" + +object-assign@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" + +object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object.defaults@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" + dependencies: + array-each "^1.0.1" + array-slice "^1.0.0" + for-own "^1.0.0" + isobject "^3.0.0" + +object.omit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-1.1.0.tgz#9d17ea16778e5057deba7752c6f55f1496829e94" + dependencies: + for-own "^0.1.3" + isobject "^1.0.0" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +object.pick@^1.1.1, object.pick@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + dependencies: + isobject "^3.0.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + dependencies: + ee-first "1.1.1" + +once@^1.3.0, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +once@~1.3.0: + version "1.3.3" + resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" + dependencies: + wrappy "1" + +onetime@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + +optipng-bin@^3.0.0: + version "3.1.4" + resolved "https://registry.yarnpkg.com/optipng-bin/-/optipng-bin-3.1.4.tgz#95d34f2c488704f6fd70606bfea0c659f1d95d84" + dependencies: + bin-build "^2.0.0" + bin-wrapper "^3.0.0" + logalot "^2.0.0" + +orchestrator@^0.3.0: + version "0.3.8" + resolved "https://registry.yarnpkg.com/orchestrator/-/orchestrator-0.3.8.tgz#14e7e9e2764f7315fbac184e506c7aa6df94ad7e" + dependencies: + end-of-stream "~0.1.5" + sequencify "~0.0.7" + stream-consume "~0.1.0" + +ordered-read-streams@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz#fd565a9af8eb4473ba69b6ed8a34352cb552f126" + +ordered-read-streams@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz#7137e69b3298bb342247a1bbee3881c80e2fd78b" + dependencies: + is-stream "^1.0.1" + readable-stream "^2.0.1" + +os-filter-obj@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/os-filter-obj/-/os-filter-obj-1.0.3.tgz#5915330d90eced557d2d938a31c6dd214d9c63ad" + +os-homedir@^1.0.0, os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-tmpdir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + +p-pipe@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" + +pako@~0.2.0: + version "0.2.9" + resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + +parse-filepath@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.1.tgz#159d6155d43904d16c10ef698911da1e91969b73" + dependencies: + is-absolute "^0.2.3" + map-cache "^0.2.0" + path-root "^0.1.1" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.1.0, parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + +parseurl@~1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-is-inside@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + +path-root-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" + +path-root@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" + dependencies: + path-root-regex "^0.1.0" + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +pause-stream@0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + dependencies: + through "~2.3" + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + +phantomjs@~1.9.7-1: + version "1.9.20" + resolved "https://registry.yarnpkg.com/phantomjs/-/phantomjs-1.9.20.tgz#4424aca20e14d255c0b0889af6f6b8973da10e0d" + dependencies: + extract-zip "~1.5.0" + fs-extra "~0.26.4" + hasha "^2.2.0" + kew "~0.7.0" + progress "~1.1.8" + request "~2.67.0" + request-progress "~2.0.1" + which "~1.2.2" + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +plur@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a" + dependencies: + irregular-plurals "^1.0.0" + +postcss@~2.2.5: + version "2.2.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-2.2.6.tgz#c04344e2449e4586b955fbe4a74f77080d84571f" + dependencies: + js-base64 "~2.1.5" + source-map "~0.1.40" + +prepend-http@^1.0.0, prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +pretty-bytes@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-1.0.4.tgz#0a22e8210609ad35542f8c8d5d2159aff0751c84" + dependencies: + get-stdin "^4.0.1" + meow "^3.1.0" + +pretty-bytes@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-2.0.1.tgz#155ec4d0036f41391e7045d6dbe4963d525d264f" + dependencies: + get-stdin "^4.0.1" + meow "^3.1.0" + number-is-nan "^1.0.0" + +pretty-hrtime@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + +process-nextick-args@^1.0.6, process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +progress@~1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" + +proxy-addr@~2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.2.tgz#6571504f47bb988ec8180253f85dd7e14952bdec" + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.5.2" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +psi@^0.1.1: + version "0.1.6" + resolved "https://registry.yarnpkg.com/psi/-/psi-0.1.6.tgz#d2639c5901eaf9b6d14dea9f909556bc88289bae" + dependencies: + chalk "^0.5.1" + gpagespeed "0.0.8" + minimist "^1.1.0" + prepend-http "^1.0.0" + pretty-bytes "^1.0.1" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + +qs@6.5.1, qs@~6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" + +qs@~0.6.0: + version "0.6.6" + resolved "https://registry.yarnpkg.com/qs/-/qs-0.6.6.tgz#6e015098ff51968b8a3c819001d5f2c89bc4b107" + +qs@~2.3.1: + version "2.3.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-2.3.3.tgz#e9e85adbe75da0bbe4c8e0476a086290f863b404" + +qs@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-5.2.1.tgz#801fee030e0b9450d6385adc48a4cc55b44aedfc" + +randomatic@^1.1.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +range-parser@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + +raw-body@2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" + dependencies: + bytes "3.0.0" + http-errors "1.6.2" + iconv-lite "0.4.19" + unpipe "1.0.0" + +rc@^1.1.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.2.tgz#d8ce9cb57e8d64d9c7badd9876c7c34cbe3c7077" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +rcfinder@~0.1.6: + version "0.1.9" + resolved "https://registry.yarnpkg.com/rcfinder/-/rcfinder-0.1.9.tgz#f3e80f387ddf9ae80ae30a4100329642eae81115" + dependencies: + lodash.clonedeep "^4.3.2" + +rcloader@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/rcloader/-/rcloader-0.1.2.tgz#a0963a6437d09ef8cb92d932d2dad497b0d1736c" + dependencies: + lodash "~2.4.1" + rcfinder "~0.1.6" + +read-all-stream@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" + dependencies: + pinkie-promise "^2.0.0" + readable-stream "^2.0.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +readable-stream@1.1: + version "1.1.13" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.26: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + +readable-stream@~1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@~2.0.0, readable-stream@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + dependencies: + resolve "^1.1.6" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + dependencies: + is-equal-shallow "^0.1.3" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-1.1.3.tgz#3d4114218877537494f97f77f9785fab810fa4ac" + dependencies: + is-finite "^1.0.0" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +replace-ext@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" + +replace-ext@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + +replacestream@0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/replacestream/-/replacestream-0.1.3.tgz#e018d3a37724600ccd0c005990d8a21b7b54ff34" + dependencies: + through "~2.3.4" + +request-progress@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-2.0.1.tgz#5d36bb57961c673aa5b788dbc8141fdf23b44e08" + dependencies: + throttleit "^1.0.0" + +request@^2.54.0: + version "2.83.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.6.0" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.1" + forever-agent "~0.6.1" + form-data "~2.3.1" + har-validator "~5.0.3" + hawk "~6.0.2" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.17" + oauth-sign "~0.8.2" + performance-now "^2.1.0" + qs "~6.5.1" + safe-buffer "^5.1.1" + stringstream "~0.0.5" + tough-cookie "~2.3.3" + tunnel-agent "^0.6.0" + uuid "^3.1.0" + +request@~2.34.0: + version "2.34.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.34.0.tgz#b5d8b9526add4a2d4629f4d417124573996445ae" + dependencies: + forever-agent "~0.5.0" + json-stringify-safe "~5.0.0" + mime "~1.2.9" + node-uuid "~1.4.0" + qs "~0.6.0" + optionalDependencies: + aws-sign2 "~0.5.0" + form-data "~0.1.0" + hawk "~1.0.0" + http-signature "~0.10.0" + oauth-sign "~0.3.0" + tough-cookie ">=0.12.0" + tunnel-agent "~0.3.0" + +request@~2.51.0: + version "2.51.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.51.0.tgz#35d00bbecc012e55f907b1bd9e0dbd577bfef26e" + dependencies: + aws-sign2 "~0.5.0" + bl "~0.9.0" + caseless "~0.8.0" + combined-stream "~0.0.5" + forever-agent "~0.5.0" + form-data "~0.2.0" + hawk "1.1.1" + http-signature "~0.10.0" + json-stringify-safe "~5.0.0" + mime-types "~1.0.1" + node-uuid "~1.4.0" + oauth-sign "~0.5.0" + qs "~2.3.1" + stringstream "~0.0.4" + tough-cookie ">=0.12.0" + tunnel-agent "~0.4.0" + +request@~2.67.0: + version "2.67.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.67.0.tgz#8af74780e2bf11ea0ae9aa965c11f11afd272742" + dependencies: + aws-sign2 "~0.6.0" + bl "~1.0.0" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~1.0.0-rc3" + har-validator "~2.0.2" + hawk "~3.1.0" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + node-uuid "~1.4.7" + oauth-sign "~0.8.0" + qs "~5.2.0" + stringstream "~0.0.4" + tough-cookie "~2.2.0" + tunnel-agent "~0.4.1" + +resolve-dir@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" + dependencies: + expand-tilde "^1.2.2" + global-modules "^0.2.3" + +resolve-url@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + +resolve@^1.1.6, resolve@^1.1.7: + version "1.5.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" + dependencies: + path-parse "^1.0.5" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + +rimraf@^2.2.6, rimraf@^2.2.8, rimraf@^2.4.0, rimraf@^2.5.4: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + +run-sequence@^1.0.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/run-sequence/-/run-sequence-1.2.2.tgz#5095a0bebe98733b0140bd08dd80ec030ddacdeb" + dependencies: + chalk "*" + gulp-util "*" + +safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + +sax@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + +seek-bzip@^1.0.3: + version "1.0.5" + resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" + dependencies: + commander "~2.8.1" + +semver-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-1.0.0.tgz#92a4969065f9c70c694753d55248fc68f8f652c9" + +semver-truncate@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/semver-truncate/-/semver-truncate-1.1.2.tgz#57f41de69707a62709a7e0104ba2117109ea47e8" + dependencies: + semver "^5.3.0" + +"semver@2 || 3 || 4 || 5", semver@^5.3.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" + +semver@^4.0.3, semver@^4.1.0: + version "4.3.6" + resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" + +send@0.16.1: + version "0.16.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz#a70e1ca21d1382c11d0d9f6231deb281080d7ab3" + dependencies: + debug "2.6.9" + depd "~1.1.1" + destroy "~1.0.4" + encodeurl "~1.0.1" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.6.2" + mime "1.4.1" + ms "2.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.3.1" + +sequencify@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/sequencify/-/sequencify-0.0.7.tgz#90cff19d02e07027fd767f5ead3e7b95d1e7380c" + +serve-favicon@^2.3.0: + version "2.4.5" + resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.4.5.tgz#49d9a46863153a9240691c893d2b0e7d85d6d436" + dependencies: + etag "~1.8.1" + fresh "0.5.2" + ms "2.0.0" + parseurl "~1.3.2" + safe-buffer "5.1.1" + +serve-static@1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.1.tgz#4c57d53404a761d8f2e7c1e8a18a47dbf278a719" + dependencies: + encodeurl "~1.0.1" + escape-html "~1.0.3" + parseurl "~1.3.2" + send "0.16.1" + +set-immediate-shim@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +setprototypeof@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +shelljs@0.3.x: + version "0.3.0" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.3.0.tgz#3596e6307a781544f591f37da618360f31db57b1" + +sigmund@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +sntp@0.2.x: + version "0.2.4" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-0.2.4.tgz#fb885f18b0f3aad189f824862536bceeec750900" + dependencies: + hoek "0.9.x" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +sntp@2.x.x: + version "2.1.0" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" + dependencies: + hoek "4.x.x" + +source-map-resolve@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.3.1.tgz#610f6122a445b8dd51535a2a71b783dfc1248761" + dependencies: + atob "~1.1.0" + resolve-url "~0.2.1" + source-map-url "~0.3.0" + urix "~0.1.0" + +source-map-url@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9" + +source-map@0.X: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + +source-map@^0.1.38, source-map@^0.1.39, source-map@~0.1.31, source-map@~0.1.40: + version "0.1.43" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" + dependencies: + amdefine ">=0.0.4" + +source-map@^0.5.1, source-map@^0.5.3, source-map@~0.5.1: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +sparkles@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" + +spdx-correct@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + dependencies: + spdx-license-ids "^1.0.2" + +spdx-expression-parse@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + +spdx-license-ids@^1.0.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + +split@0.2: + version "0.2.10" + resolved "https://registry.yarnpkg.com/split/-/split-0.2.10.tgz#67097c601d697ce1368f418f06cd201cf0521a57" + dependencies: + through "2" + +split@0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" + dependencies: + through "2" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +squeak@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/squeak/-/squeak-1.3.0.tgz#33045037b64388b567674b84322a6521073916c3" + dependencies: + chalk "^1.0.0" + console-stream "^0.1.1" + lpad-align "^1.0.1" + +sshpk@^1.7.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +stat-mode@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.2.2.tgz#e6c80b623123d7d80cf132ce538f346289072502" + +"statuses@>= 1.3.1 < 2": + version "1.4.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + +statuses@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + +stream-combiner2@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" + dependencies: + duplexer2 "~0.1.0" + readable-stream "^2.0.2" + +stream-combiner@~0.0.3, stream-combiner@~0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" + dependencies: + duplexer "~0.1.1" + +stream-consume@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.0.tgz#a41ead1a6d6081ceb79f65b061901b6d8f3d1d0f" + +stream-shift@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + +string-length@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz#56970fb1c38558e9e70b728bf3de269ac45adfac" + dependencies: + strip-ansi "^3.0.0" + +string-template@~0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + dependencies: + safe-buffer "~5.1.0" + +stringstream@~0.0.4, stringstream@~0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz#25f48ea22ca79187f3174a4db8759347bb126220" + dependencies: + ansi-regex "^0.2.1" + +strip-ansi@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-bom-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz#e7144398577d51a6bed0fa1994fa05f43fd988ee" + dependencies: + first-chunk-stream "^1.0.0" + strip-bom "^2.0.0" + +strip-bom@2.X, strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz#85b8862f3844b5a6d5ec8467a93598173a36f794" + dependencies: + first-chunk-stream "^1.0.0" + is-utf8 "^0.2.0" + +strip-dirs@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-1.1.1.tgz#960bbd1287844f3975a4558aa103a8255e2456a0" + dependencies: + chalk "^1.0.0" + get-stdin "^4.0.1" + is-absolute "^0.1.5" + is-natural-number "^2.0.0" + minimist "^1.1.0" + sum-up "^1.0.1" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + dependencies: + get-stdin "^4.0.1" + +strip-json-comments@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +strip-outer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.0.tgz#aac0ba60d2e90c5d4f275fd8869fd9a2d310ffb8" + dependencies: + escape-string-regexp "^1.0.2" + +sum-up@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sum-up/-/sum-up-1.0.3.tgz#1c661f667057f63bcb7875aa1438bc162525156e" + dependencies: + chalk "^1.0.0" + +supports-color@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^4.0.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" + dependencies: + has-flag "^2.0.0" + +svgo@^0.7.0: + version "0.7.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" + dependencies: + coa "~1.0.1" + colors "~1.1.2" + csso "~2.3.1" + js-yaml "~3.7.0" + mkdirp "~0.5.1" + sax "~1.2.1" + whet.extend "~0.9.9" + +tar-stream@^1.1.1: + version "1.5.5" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.5.tgz#5cad84779f45c83b1f2508d96b09d88c7218af55" + dependencies: + bl "^1.0.0" + end-of-stream "^1.0.0" + readable-stream "^2.0.0" + xtend "^4.0.0" + +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + +tempfile@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-1.1.1.tgz#5bcc4eaecc4ab2c707d8bc11d99ccc9a2cb287f2" + dependencies: + os-tmpdir "^1.0.0" + uuid "^2.0.1" + +tempfile@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-2.0.0.tgz#6b0446856a9b1114d1856ffcbe509cccb0977265" + dependencies: + temp-dir "^1.0.0" + uuid "^3.0.1" + +ternary-stream@^1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/ternary-stream/-/ternary-stream-1.2.3.tgz#f1969f83847f9642261bc142e17ee200aada83fd" + dependencies: + duplexer2 "~0.0.2" + fork-stream "~0.0.4" + merge-stream "~0.1.6" + through2 "~0.6.3" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +textextensions@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-1.0.2.tgz#65486393ee1f2bb039a60cbba05b0b68bd9501d2" + +throttleit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" + +through2-concurrent@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/through2-concurrent/-/through2-concurrent-1.1.1.tgz#11cb4ea4c9e31bca6e4c1e6dba48d1c728c3524b" + dependencies: + through2 "^2.0.0" + +through2-filter@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-2.0.0.tgz#60bc55a0dacb76085db1f9dae99ab43f83d622ec" + dependencies: + through2 "~2.0.0" + xtend "~4.0.0" + +through2@2.X, through2@^2.0.0, through2@^2.0.1, through2@^2.0.3, through2@~2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + dependencies: + readable-stream "^2.1.5" + xtend "~4.0.1" + +through2@^0.6.0, through2@^0.6.1, through2@^0.6.2, through2@^0.6.5, through2@~0.6.1, through2@~0.6.2, through2@~0.6.3: + version "0.6.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" + dependencies: + readable-stream ">=1.0.33-1 <1.1.0-0" + xtend ">=4.0.0 <4.1.0-0" + +through@2, through@~2.3, through@~2.3.1, through@~2.3.4: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +tildify@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz#dcec03f55dca9b7aa3e5b04f21817eb56e63588a" + dependencies: + os-homedir "^1.0.0" + +time-stamp@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + +timed-out@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217" + +to-absolute-glob@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz#1cdfa472a9ef50c239ee66999b662ca0eb39937f" + dependencies: + extend-shallow "^2.0.1" + +tough-cookie@>=0.12.0, tough-cookie@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" + dependencies: + punycode "^1.4.1" + +tough-cookie@~2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.2.2.tgz#c83a1830f4e5ef0b93ef2a3488e724f8de016ac7" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + +trim-repeated@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" + dependencies: + escape-string-regexp "^1.0.2" + +try-json-parse@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/try-json-parse/-/try-json-parse-0.1.1.tgz#8db01622e877e51b83140caee7c80864ad390c82" + +tunnel-agent@^0.4.0, tunnel-agent@~0.4.0, tunnel-agent@~0.4.1: + version "0.4.3" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +tunnel-agent@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.3.0.tgz#ad681b68f5321ad2827c4cfb1b7d5df2cfe942ee" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +type-is@~1.6.15: + version "1.6.15" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" + dependencies: + media-typer "0.3.0" + mime-types "~2.1.15" + +typedarray@^0.0.6, typedarray@~0.0.5: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +uglify-js@^2.4.15: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +unc-path-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + +uncss@0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/uncss/-/uncss-0.8.1.tgz#2bb5aa8e77af342178adf36f69b18ae2cc551063" + dependencies: + async "~0.6.2" + commander "~2.2.0" + css "~1.6.0" + node-phantom-simple "~1.2.0" + phantomjs "~1.9.7-1" + request "~2.34.0" + underscore "~1.6.0" + +underscore@~1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" + +unique-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-1.0.0.tgz#d59a4a75427447d9aa6c91e70263f8d26a4b104b" + +unique-stream@^2.0.2: + version "2.2.1" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.2.1.tgz#5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369" + dependencies: + json-stable-stringify "^1.0.0" + through2-filter "^2.0.0" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + +unzip-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" + +urix@^0.1.0, urix@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + dependencies: + prepend-http "^1.0.1" + +url-regex@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/url-regex/-/url-regex-3.2.0.tgz#dbad1e0c9e29e105dd0b1f09f6862f7fdb482724" + dependencies: + ip-regex "^1.0.1" + +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + +uuid@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" + +uuid@^3.0.1, uuid@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" + +v8flags@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" + dependencies: + user-home "^1.1.1" + +vali-date@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/vali-date/-/vali-date-1.0.0.tgz#1b904a59609fb328ef078138420934f6b86709a6" + +valid-url@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200" + +validate-npm-package-license@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + dependencies: + spdx-correct "~1.0.0" + spdx-expression-parse "~1.0.0" + +value-or-function@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-1.2.1.tgz#89c4f74ef3cd1340145f8c487510e26cf8bd3c85" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vinyl-assign@^1.0.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/vinyl-assign/-/vinyl-assign-1.2.1.tgz#4d198891b5515911d771a8cd9c5480a46a074a45" + dependencies: + object-assign "^4.0.1" + readable-stream "^2.0.0" + +vinyl-fs@^0.3.0: + version "0.3.14" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-0.3.14.tgz#9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6" + dependencies: + defaults "^1.0.0" + glob-stream "^3.1.5" + glob-watcher "^0.0.6" + graceful-fs "^3.0.0" + mkdirp "^0.5.0" + strip-bom "^1.0.0" + through2 "^0.6.1" + vinyl "^0.4.0" + +vinyl-fs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-1.0.0.tgz#d15752e68c2dad74364e7e853473735354692edf" + dependencies: + duplexify "^3.2.0" + glob-stream "^4.0.1" + glob-watcher "^0.0.8" + graceful-fs "^3.0.0" + merge-stream "^0.1.7" + mkdirp "^0.5.0" + object-assign "^2.0.0" + strip-bom "^1.0.0" + through2 "^0.6.1" + vinyl "^0.4.0" + +vinyl-fs@^2.2.0: + version "2.4.4" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-2.4.4.tgz#be6ff3270cb55dfd7d3063640de81f25d7532239" + dependencies: + duplexify "^3.2.0" + glob-stream "^5.3.2" + graceful-fs "^4.0.0" + gulp-sourcemaps "1.6.0" + is-valid-glob "^0.3.0" + lazystream "^1.0.0" + lodash.isequal "^4.0.0" + merge-stream "^1.0.0" + mkdirp "^0.5.0" + object-assign "^4.0.0" + readable-stream "^2.0.4" + strip-bom "^2.0.0" + strip-bom-stream "^1.0.0" + through2 "^2.0.0" + through2-filter "^2.0.0" + vali-date "^1.0.0" + vinyl "^1.0.0" + +"vinyl-fs@github:gulpjs/vinyl-fs#59386ca": + version "2.4.3" + resolved "https://codeload.github.com/gulpjs/vinyl-fs/tar.gz/59386caa67b191c3615ea2358bdc7d3611712a3d" + dependencies: + duplexify "^3.2.0" + flush-write-stream "^1.0.0" + glob-stream "^5.3.2" + graceful-fs "^4.0.0" + gulp-sourcemaps "^1.5.2" + is-valid-glob "^0.3.0" + lazystream "^1.0.0" + lodash.isequal "^4.0.0" + merge-stream "^1.0.0" + object-assign "^4.0.0" + strip-bom "^2.0.0" + strip-bom-stream "^1.0.0" + through2 "^2.0.0" + through2-filter "^2.0.0" + vali-date "^1.0.0" + value-or-function "^1.2.0" + vinyl "^1.0.0" + +vinyl-sourcemaps-apply@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.1.4.tgz#c5fcbd43e2f238423c2dc98bddd6f79b72bc345b" + dependencies: + source-map "^0.1.39" + +vinyl@1.X, vinyl@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +vinyl@^0.4.0, vinyl@^0.4.3: + version "0.4.6" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847" + dependencies: + clone "^0.2.0" + clone-stats "^0.0.1" + +vinyl@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +vinyl@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.1.0.tgz#021f9c2cf951d6b939943c89eb5ee5add4fd924c" + dependencies: + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + +vulcanize@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/vulcanize/-/vulcanize-0.4.3.tgz#098c3af4291bee83d73b1ec94e94829c563793ef" + dependencies: + cheerio "^0.17.0" + clean-css "^2.2.11" + dom-serializer "git://github.com/azakus/dom-serializer.git#self-closing-svg" + nopt "^3.0.1" + uglify-js "^2.4.15" + +ware@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/ware/-/ware-1.3.0.tgz#d1b14f39d2e2cb4ab8c4098f756fe4b164e473d4" + dependencies: + wrap-fn "^0.1.0" + +whet.extend@~0.9.9: + version "0.9.9" + resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" + +which@^1.2.12, which@^1.2.9: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + +which@~1.2.2: + version "1.2.14" + resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" + dependencies: + isexe "^2.0.0" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wrap-fn@^0.1.0: + version "0.1.5" + resolved "https://registry.yarnpkg.com/wrap-fn/-/wrap-fn-0.1.5.tgz#f21b6e41016ff4a7e31720dbc63a09016bdf9845" + dependencies: + co "3.1.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" + +yauzl@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" + dependencies: + fd-slicer "~1.0.1" + +yauzl@^2.2.1: + version "2.9.1" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.9.1.tgz#a81981ea70a57946133883f029c5821a89359a7f" + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.0.1" From 70baeaa33f5d483ce140cb223f0741fe837c562b Mon Sep 17 00:00:00 2001 From: nin-jin Date: Wed, 20 Dec 2017 11:38:06 +0300 Subject: [PATCH 34/53] Added SvelteJS bundles. --- examples/svelte/.gitignore | 5 ----- examples/svelte/public/bundle.js | 19 +++++++++++++++++++ examples/svelte/public/bundle.js.map | 1 + 3 files changed, 20 insertions(+), 5 deletions(-) delete mode 100644 examples/svelte/.gitignore create mode 100644 examples/svelte/public/bundle.js create mode 100644 examples/svelte/public/bundle.js.map diff --git a/examples/svelte/.gitignore b/examples/svelte/.gitignore deleted file mode 100644 index a956c045ed..0000000000 --- a/examples/svelte/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -.DS_Store -node_modules -npm-debug.log -dist -public/bundle.* \ No newline at end of file diff --git a/examples/svelte/public/bundle.js b/examples/svelte/public/bundle.js new file mode 100644 index 0000000000..630a192415 --- /dev/null +++ b/examples/svelte/public/bundle.js @@ -0,0 +1,19 @@ +(function(){function y(a){a.parentNode.removeChild(a)}function I(a,d,b){for(b=b||0;b -1 ) {\n\t\tvar message = \"The first argument to component.observe(...) must be the name of a top-level property\";\n\t\tif ( c > 0 ) message += \", i.e. '\" + key.slice( 0, c ) + \"' rather than '\" + key + \"'\";\n\n\t\tthrow new Error( message );\n\t}\n\n\tvar group = ( options && options.defer ) ? this._observers.pre : this._observers.post;\n\n\t( group[ key ] || ( group[ key ] = [] ) ).push( callback );\n\n\tif ( !options || options.init !== false ) {\n\t\tcallback.__calling = true;\n\t\tcallback.call( this, this._state[ key ] );\n\t\tcallback.__calling = false;\n\t}\n\n\treturn {\n\t\tcancel: function () {\n\t\t\tvar index = group[ key ].indexOf( callback );\n\t\t\tif ( ~index ) group[ key ].splice( index, 1 );\n\t\t}\n\t};\n}\n\nfunction on ( eventName, handler ) {\n\tif ( eventName === 'teardown' ) return this.on( 'destroy', handler );\n\n\tvar handlers = this._handlers[ eventName ] || ( this._handlers[ eventName ] = [] );\n\thandlers.push( handler );\n\n\treturn {\n\t\tcancel: function () {\n\t\t\tvar index = handlers.indexOf( handler );\n\t\t\tif ( ~index ) handlers.splice( index, 1 );\n\t\t}\n\t};\n}\n\nfunction onDev ( eventName, handler ) {\n\tif ( eventName === 'teardown' ) {\n\t\tconsole.warn( \"Use component.on('destroy', ...) instead of component.on('teardown', ...) which has been deprecated and will be unsupported in Svelte 2\" );\n\t\treturn this.on( 'destroy', handler );\n\t}\n\n\tvar handlers = this._handlers[ eventName ] || ( this._handlers[ eventName ] = [] );\n\thandlers.push( handler );\n\n\treturn {\n\t\tcancel: function () {\n\t\t\tvar index = handlers.indexOf( handler );\n\t\t\tif ( ~index ) handlers.splice( index, 1 );\n\t\t}\n\t};\n}\n\nfunction set ( newState ) {\n\tthis._set( newState );\n\t( this._root || this )._flush();\n}\n\nfunction _flush () {\n\tif ( !this._renderHooks ) return;\n\n\twhile ( this._renderHooks.length ) {\n\t\tvar hook = this._renderHooks.pop();\n\t\thook.fn.call( hook.context );\n\t}\n}\n\nvar proto = {\n\tget: get,\n\tfire: fire,\n\tobserve: observe,\n\ton: on,\n\tset: set,\n\t_flush: _flush\n};\n\nvar protoDev = {\n\tget: get,\n\tfire: fire,\n\tobserve: observeDev,\n\ton: onDev,\n\tset: set,\n\t_flush: _flush\n};\n\nfunction noop () {}\n\nfunction assign ( target ) {\n\tfor ( var i = 1; i < arguments.length; i += 1 ) {\n\t\tvar source = arguments[i];\n\t\tfor ( var k in source ) target[k] = source[k];\n\t}\n\n\treturn target;\n}\n\nfunction differs ( a, b ) {\n\treturn ( a !== b ) || ( a && ( typeof a === 'object' ) || ( typeof a === 'function' ) );\n}\n\nfunction dispatchObservers ( component, group, newState, oldState ) {\n\tfor ( var key in group ) {\n\t\tif ( !( key in newState ) ) continue;\n\n\t\tvar newValue = newState[ key ];\n\t\tvar oldValue = oldState[ key ];\n\n\t\tif ( newValue === oldValue && typeof newValue !== 'object' ) continue;\n\n\t\tvar callbacks = group[ key ];\n\t\tif ( !callbacks ) continue;\n\n\t\tfor ( var i = 0; i < callbacks.length; i += 1 ) {\n\t\t\tvar callback = callbacks[i];\n\t\t\tif ( callback.__calling ) continue;\n\n\t\t\tcallback.__calling = true;\n\t\t\tcallback.call( component, newValue, oldValue );\n\t\t\tcallback.__calling = false;\n\t\t}\n\t}\n}\n\nexport { noop, assign, differs, dispatchObservers, appendNode, insertNode, detachNode, detachBetween, teardownEach, createElement, createSvgElement, createText, createComment, addEventListener, removeEventListener, setAttribute, setXlinkAttribute, getBindingGroupValue, get, fire, observe, observeDev, on, onDev, set, _flush, proto, protoDev };\n","
\n\t

todos

\n\t\n
\n\n{{#if items.length > 0}}\n\t
\n\t\t\n\t\t\n\n\t\t
    \n\t\t\t{{#each items as item, index}}\n\t\t\t\t{{#if filter(item, currentFilter)}}\n\t\t\t\t\t
  • \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\n\t\t\t\t\t\t{{#if editing === index}}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{{/if}}\n\t\t\t\t\t
  • \n\t\t\t\t{{/if}}\n\t\t\t{{/each}}\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t{{numActive}} {{numActive === 1 ? 'item' : 'items'}} left\n\t\t\t\n\n\t\t\t\n\n\t\t\t{{#if numCompleted}}\n\t\t\t\t\n\t\t\t{{/if}}\n\t\t
\n\t
\n{{/if}}\n\n\n","import TodoMVC from './TodoMVC.html';\n\nwindow.todomvc = new TodoMVC({\n\ttarget: document.querySelector( '.todoapp' )\n});\n"],"names":["detachNode","node","parentNode","removeChild","teardownEach","iterations","detach","start","i","length","teardown","createElement","name","document","createText","data","createTextNode","noop","assign","target","arguments","source","k","differs","a","b","dispatchObservers","component","group","newState","oldState","key","newValue","oldValue","callbacks","callback","__calling","call","appendChild","value","createComment","insertBefore","checked","addEventListener","removeEventListener","item","completed","index","description","keyEvent","code","keydownHandler","event","which","let","items","JSON","parse","localStorage","getItem","err","currentFilter","computed","numActive","filter","numCompleted","helpers","oncreate","updateView","window","location","hash","this","methods","blur","cancel","set","editing","clearCompleted","const","get","setItem","stringify","edit","newTodo","push","refs","remove","splice","submit","toggleAll","forEach","events","enter","ENTER_KEY","escape","ESCAPE_KEY","proto","_state","fire","eventName","handlers","_handlers","slice","observe","options","defer","_observers","pre","post","init","indexOf","on","handler","_set","_flush","_root","_renderHooks","hook","fn","context","todomvc","TodoMVC","querySelector"],"mappings":"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"} \ No newline at end of file From e9a24cebe8594b4f3c3f51df02c2d6ac5396ab8d Mon Sep 17 00:00:00 2001 From: nin-jin Date: Thu, 21 Dec 2017 14:58:09 +0300 Subject: [PATCH 35/53] New $mol impl. --- examples/mol/-/web.css | 49 +- examples/mol/-/web.css.map | 16 +- examples/mol/-/web.deps.json | 1 + examples/mol/-/web.js | 3859 ++++++++++++----------------- examples/mol/-/web.js.map | 2 +- examples/mol/-/web.locale=en.json | 10 - 6 files changed, 1538 insertions(+), 2399 deletions(-) create mode 100644 examples/mol/-/web.deps.json delete mode 100644 examples/mol/-/web.locale=en.json diff --git a/examples/mol/-/web.css b/examples/mol/-/web.css index 073fa26e37..ab7c930d87 100644 --- a/examples/mol/-/web.css +++ b/examples/mol/-/web.css @@ -14,8 +14,7 @@ height: 100%; box-sizing: border-box; font: 1rem/1.5 "-apple-system", BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; - background: #fcfcfc; - touch-action: manipulation + background: #fcfcfc } [mol_view][mol_view_error]:not([mol_view_error="$mol_atom_wait"]) { background-image: repeating-linear-gradient( @@ -41,14 +40,14 @@ background-position: 0 0 } to { - background-position: 28px 0 + background-position: -28px 0 } } [mol_view][mol_view_error="$mol_atom_wait"] { background-image: repeating-linear-gradient( 45deg, - rgba(58, 140, 203, 0.025), - rgba(58, 140, 203, 0.025) 9px, + rgba(58, 140, 203, 0.05), + rgba(58, 140, 203, 0.05) 9px, rgba(255, 255, 255, .015) 10px, rgba(255, 255, 255, .015) 20px ); @@ -92,10 +91,6 @@ display: none } [mol_button] { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; border: none; font: inherit; background-color: none; @@ -118,7 +113,7 @@ align-items: center; vertical-align: middle; text-align: center; - padding: .5rem; + padding: .5rem 1rem; border-radius: 2px } [mol_button_typed][disabled] { @@ -204,11 +199,16 @@ box-sizing: border-box; will-change: scroll-position; transform: translateZ(0); + /* enforce gpu scroll in all agents */ box-shadow: 0 0 0 1px rgba(230, 230, 230, .75); max-height: 100%; max-width: 100%; -webkit-overflow-scrolling: touch } +/* prevent large gpu layer */ +[mol_scroll][mol_scroll] { + background: none +} [mol_scroll] > * { transform: translateZ(0) } @@ -317,6 +317,7 @@ height: 4rem } [mol_app_todomvc_title] { + word-break: normal; display: block; padding: .25rem; font-size: 7rem; @@ -388,33 +389,5 @@ [mol_app_todomvc_sweep]:focus { text-decoration: underline } -[mol_demo] { - max-height: 75vh; - max-width: 100%; - overflow: hidden; - box-shadow: 0 0 0 1px rgba(230, 230, 230, .75); - background: white; - color: rgba(0, 0, 0, .9); - position: relative; - flex: 1 0 auto; - display: flex; - align-items: stretch; - box-sizing: border-box -} -[mol_demo_large] { - height: 75vh; - max-height: 75vh; - max-width: 100%; - overflow: hidden; - box-shadow: 0 0 0 1px rgba(230, 230, 230, .75); - background: white; - color: rgba(0, 0, 0, .9); - position: relative; - flex: 1 0 auto; - display: flex; - align-items: stretch; - box-sizing: border-box; - align-self: stretch -} /*# sourceMappingURL=web.css.map */ \ No newline at end of file diff --git a/examples/mol/-/web.css.map b/examples/mol/-/web.css.map index 8ad9136d51..ab50ab22bc 100644 --- a/examples/mol/-/web.css.map +++ b/examples/mol/-/web.css.map @@ -9,24 +9,20 @@ "../../../scroll/scroll.view.css", "../../../list/list.view.css", "../../../bar/bar.view.css", - "../todomvc.css", - "../../../demo/demo.view.css", - "../../../demo/large/large.view.css" + "../todomvc.css" ], "names": [], - "mappings": "AAAA;IACC,8GAA8G;IAC9G,yBAAyB;IACzB,yBAAyB;IACzB,sBAAuB;CACvB;AAED;IACC,mBAAoB;CACpB;AAED;IACC,UAAU;IACV,WAAW;IACX,YAAY;IACZ,aAAa;IACb,uBAAuB;IACvB,qGAA2B;IAC3B,oBAAkC;IAClC,0BAA2B;CAC3B;AAED;IACC;;;;;;GAME;IACF,2BAA2B;IAC3B,YAAa;CACb;AACD;IACC,gBAAiB;CACjB;AAED;IACC;QACC,gBAAiB;KACjB;CACD;AAED;IACC;QACC,wBAAyB;KACzB;IACD;QACC,2BAA4B;KAC5B;CACD;AAED;IACC;;;;;;GAME;IACF,2BAA2B;IAC3B,qFAAsF;CACtF;AAED;IACC,gBAAiB;CACjB;AClED;IACC,uBAAuB;IACvB,+CAA0C;IAC1C,kBAAkB;IAClB,aAAa;IACb,mBAAqC;IACrC,oBAAoB;IACpB,iBAAiB;IACjB,oBAAoB;IACpB,iBAAiB;IACjB,mBAAmB;IACnB,WAAW;IACX,cAAc;IACd,eAAe;IACf,YAAY;IACZ,iBAAoC;IACpC,yBAAkC;IAClC,SAAU;CACV;AAED;IACC,iBAAiC;CACjC;AAED;;IAEC,cAAc;IACd,UAAW;CACX;AAED;IACC,uCAA0C;CAC1C;AAED;IACC,aAAc;CACd;ACpCD;IACC,0BAAkB;OAAlB,uBAAkB;QAAlB,sBAAkB;YAAlB,kBAAkB;IAClB,aAAa;IACb,cAAc;IACd,uBAAuB;IACvB,qBAAqB;IACrB,eAAe;IACf,yBAAyB;IACzB,eAAe;IACf,gBAAgB;IAChB,mBAAmB;IACnB,uBAAuB;IACvB,mBAAmB;IACnB,eAAgB;CAChB;AACD;IACC,aAAc;CACd;AAED;IACC,wBAAwB;IACxB,sBAAsB;IACtB,oBAAoB;IACpB,uBAAuB;IACvB,mBAAmB;IACnB,eAAe;IACf,kBAAqC;CACrC;AAED;IACC,yBAAoC;IACpC,iBAAiB;IACjB,oBAAqB;CACrB;AAED;IACC,+CAA0C;IAC1C,0BAAwC;IACxC,wBAAkC;CAClC;AAED;IACC,mCAAyC;IACzC,0BAAmC;IACnC,8CAA0C;CAC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", + "mappings": "AAAA;IACC,8GAA8G;IAC9G,yBAAyB;IACzB,yBAAyB;IACzB,sBAAuB;CACvB;AAED;IACC,mBAAoB;CACpB;AAED;IACC,UAAU;IACV,WAAW;IACX,YAAY;IACZ,aAAa;IACb,uBAAuB;IACvB,qGAA2B;IAC3B,mBAAkC;CAClC;AAED;IACC;;;;;;GAME;IACF,2BAA2B;IAC3B,YAAa;CACb;AACD;IACC,gBAAiB;CACjB;AAED;IACC;QACC,gBAAiB;KACjB;CACD;AAED;IACC;QACC,wBAAyB;KACzB;IACD;QACC,4BAA6B;KAC7B;CACD;AAED;IACE;;;;;;GAMC;IACF,2BAA2B;IAC3B,qFAAsF;CACtF;AAED;IACE,gBAAiB;CAClB;ACjED;IACC,uBAAuB;IACvB,+CAA0C;IAC1C,kBAAkB;IAClB,aAAa;IACb,mBAAqC;IACrC,oBAAoB;IACpB,iBAAiB;IACjB,oBAAoB;IACpB,iBAAiB;IACjB,mBAAmB;IACnB,WAAW;IACX,cAAc;IACd,eAAe;IACf,YAAY;IACZ,iBAAoC;IACpC,yBAAkC;IAClC,SAAU;CACV;AAED;IACC,iBAAiC;CACjC;AAED;;IAEC,cAAc;IACd,UAAW;CACX;AAED;IACC,uCAA0C;CAC1C;AAED;IACC,aAAc;CACd;ACpCD;IACC,aAAa;IACb,cAAc;IACd,uBAAuB;IACvB,qBAAqB;IACrB,eAAe;IACf,yBAAyB;IACzB,eAAe;IACf,gBAAgB;IAChB,mBAAmB;IACnB,uBAAuB;IACvB,mBAAmB;IACnB,eAAgB;CAChB;AACD;IACC,aAAc;CACd;AAED;IACC,wBAAwB;IACxB,sBAAsB;IACtB,oBAAoB;IACpB,uBAAuB;IACvB,mBAAmB;IACnB,oBAAoB;IACpB,kBAAqC;CACrC;AAED;IACC,yBAAoC;IACpC,iBAAiB;IACjB,oBAAqB;CACrB;AAED;IACC,+CAA0C;IAC1C,0BAAwC;IACxC,wBAAkC;CAClC;AAED;IACC,mCAAyC;IACzC,0BAAmC;IACnC,8CAA0C;CAC1C;AAED;IACC,yCAAuC;IACvC,YAAiC;CACjC;AAED;;IAEC,gBAAgB;IAChB,oCAAwC;CACxC;AAED;;IAEC,qCAA8C;IAC9C,wBAAkC;CAClC;AAED;;IAEC,kCAA+C;CAC/C;AAED;;IAEC,yCAA6C;CAC7C;ACvED;IACC,sBAAsB;IACtB,eAAe;IACf,gBAAgB;IAChB,mBAAqC;IACrC,eAAe;IACf,uBAAuB;IACvB,kBAAmB;CACnB;AAED;IACC,oCAAwC;CACxC;AAED;IACC,qCAAwC;IACxC,gDAAiD;CACjD;AAED;IACC,0BAA0C;IAC1C,YAAoC;CACpC;AAED;IACC,aAAc;CACd;AC1BD;IACC,eAAe;IACf,4BAA4B;IAC5B,sBAAsB;IACtB,wBAAwB;IACxB,aAAa;IACb,qBAAqB;IACrB,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,qBAAqB;IACrB,kBAAkB;IAClB,cAAe;CACf;ACbD;IACC,eAAe;IACf,eAAe;IACf,eAAe;IACf,4BAAoB;QAApB,oBAAoB;IACpB,uBAAuB;IACvB,6BAA6B;IAC7B,yBAAyB;IAAC,sCAAsC;IAChE,+CAA0C;IAC1C,iBAAiB;IACjB,gBAAgB;IAChB,iCAAkC;CAClC;AAED,6BAA6B;AAC7B;IACC,gBAAiB;CACjB;AAED;IACC,wBAAyB;CACzB;AAED;IACC;QACC,iBAAkB;KAClB;CACD;AAED;IACC,mBAAmB;IACnB,eAAe;IACf,aAAa;IACb,aAAa;IACb,WAAW;IACX,gBAAiB;CACjB;ACpCD;IACC,sBAAsB;IACtB,cAAe;CACf;ACHD;IACC,cAAc;IACd,+CAA0C;IAC1C,kBAAqC;CACrC;AAED;IACC,gBAAiB;CACjB;AAED;IACC,4BAA8C;IAC9C,8BAAiD;CACjD;AAED;IACC,gBAAiB;CACjB;AAED;IACC,6BAA+C;IAC/C,+BAAkD;CAClD;ACtBD;IACC,4BAAoB;QAApB,oBAAoB;IACpB,YAAY;IACZ,0BAA0B;IAC1B,UAAU;IACV,gBAAiB;CACjB;AAED;;;;;;;;;IASC,iBAAiB;IACjB,6BAA8B;CAC9B;AAED;IACC,YAAa;CACb;AAED;;IAEC,0BAA2B;CAC3B;AAED;IACC,eAAe;IACf,2BAA2B;IAC3B,oBAAoB;IACpB,YAAY;IACZ,WAAW;IACX,uBAAwB;CACxB;AACD;IACC,kBAAmB;CACnB;AACD;IACC,UAAW;CACX;AAED;IACC,WAAW;IACX,cAAe;CACf;AAED;IACC,kBAAkB;IAClB,gBAAiB;CACjB;AAED;IACC,eAAe;IACf,gBAAiB;CACjB;AAED;IACC,2EAA6E;IAC7E,iBAAiB;IACjB,wBAAwB;IACxB,cAAc;IACd,uBAAuB;IACvB,oBAAoB;IACpB,gBAAiB;CACjB;AAED;IACC,kBAAkB;IAClB,WAAW;IACX,cAAc;IACd,YAAa;CACb;AAED;IACC,mBAAmB;IACnB,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;IACjB,mBAAmB;IACnB,8BAA+B;IAC/B,mCAAmC;IACnC,yBAA0B;CAC1B;AAED;IACC,cAAc;IACd,wBAAwB;IACxB,+BAA+B;IAC/B,YAAa;CACb;AAED;IACC,eAAe;IACf,cAAc;IACd,6EAA8E;CAC9E;AACD;IACC,gFAAiF;CACjF;AAED;IACC,WAAW;IACX,cAAe;CACf;AAED;IACC,eAAe;IACf,6BAA8B;CAC9B;AAED;IACC,mBAAmB;IACnB,aAAe;CACf;AACD;IACC,WAAW;IACX,cAAe;CACf;AAED;IACC,cAAc;IACd,gBAAgB;IAChB,sBAAsB;IACtB,oBAAoB;IACpB,YAAY;IACZ,kBAAkB;IAClB,8BAA8B;IAC9B,yJAA6J;CAC7J;AAED;IACC,gBAAgB;IAChB,cAAe;CACf;AAED;IACC,iBAAiB;IACjB,cAAc;IACd,wBAAwB;IACxB,eAAe;IACf,gBAAiB;CACjB;AAED;IACC,eAAe;IACf,eAAgB;CAChB;AACD;IACC,kBAAmB;CACnB;AAED;;IAEC,0BAA2B;CAC3B", "file": "web.css", "sourcesContent": [ - "[mol_view] {\n\ttransition-property: background-color, height, width, min-height, min-width, max-width, max-height, transform;\n\ttransition-duration: .2s;\n\t-webkit-appearance: none;\n\tword-break: break-word;\n}\n\n[mol_view] > * {\n\tword-break: inherit;\n}\n\n[mol_view_root] {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\theight: 100%;\n\tbox-sizing: border-box;\n\tfont: var(--mol_skin_font);\n\tbackground: var(--mol_skin_light);\n\ttouch-action: manipulation;\n}\n\n[mol_view][mol_view_error]:not([mol_view_error=\"$mol_atom_wait\"]) {\n\tbackground-image: repeating-linear-gradient(\n\t\t135deg,\n\t\trgba(255,220,220,1),\n\t\trgba(255,220,220,1) 11px,\n\t\trgba(255,255,220,1) 10px,\n\t\trgba(255,255,220,1) 20px\n\t);\n\tbackground-size: 28px 28px;\n\tcolor: black;\n}\n[mol_view][mol_view_error] * {\n\tbackground: none;\n}\n\n@keyframes mol_view_wait_show {\n\tfrom {\n\t\tbackground: none;\n\t}\n}\n\n@keyframes mol_view_wait_move {\n\tfrom {\n\t\tbackground-position: 0 0;\n\t}\n\tto {\n\t\tbackground-position: 28px 0;\n\t}\n}\n\n[mol_view][mol_view_error=\"$mol_atom_wait\"] {\n\tbackground-image: repeating-linear-gradient(\n\t\t45deg,\n\t\tcolor( var(--mol_skin_base) alpha(.025) ),\n\t\tcolor( var(--mol_skin_base) alpha(.025) ) 9px,\n\t\trgba(255,255,255,.015) 10px,\n\t\trgba(255,255,255,.015) 20px\n\t);\n\tbackground-size: 28px 28px;\n\tanimation: mol_view_wait_show .5s ease-in , mol_view_wait_move .25s steps(6) infinite;\n}\n\n[mol_view][mol_view_error=\"$mol_atom_wait\"] * {\n\tbackground: none;\n}\n", + "[mol_view] {\n\ttransition-property: background-color, height, width, min-height, min-width, max-width, max-height, transform;\n\ttransition-duration: .2s;\n\t-webkit-appearance: none;\n\tword-break: break-word;\n}\n\n[mol_view] > * {\n\tword-break: inherit;\n}\n\n[mol_view_root] {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\theight: 100%;\n\tbox-sizing: border-box;\n\tfont: var(--mol_skin_font);\n\tbackground: var(--mol_skin_light);\n}\n\n[mol_view][mol_view_error]:not([mol_view_error=\"$mol_atom_wait\"]) {\n\tbackground-image: repeating-linear-gradient(\n\t\t135deg,\n\t\trgba(255,220,220,1),\n\t\trgba(255,220,220,1) 11px,\n\t\trgba(255,255,220,1) 10px,\n\t\trgba(255,255,220,1) 20px\n\t);\n\tbackground-size: 28px 28px;\n\tcolor: black;\n}\n[mol_view][mol_view_error] * {\n\tbackground: none;\n}\n\n@keyframes mol_view_wait_show {\n\tfrom {\n\t\tbackground: none;\n\t}\n}\n\n@keyframes mol_view_wait_move {\n\tfrom {\n\t\tbackground-position: 0 0;\n\t}\n\tto {\n\t\tbackground-position: -28px 0;\n\t}\n}\n\n[mol_view][mol_view_error=\"$mol_atom_wait\"] {\n\t\tbackground-image: repeating-linear-gradient(\n\t\t45deg,\n\t\tcolor( var(--mol_skin_base) alpha(.05) ),\n\t\tcolor( var(--mol_skin_base) alpha(.05) ) 9px,\n\t\trgba(255,255,255,.015) 10px,\n\t\trgba(255,255,255,.015) 20px\n\t);\n\tbackground-size: 28px 28px;\n\tanimation: mol_view_wait_show .5s ease-in , mol_view_wait_move .25s steps(6) infinite;\n}\n\n[mol_view][mol_view_error=\"$mol_atom_wait\"] * {\n\t\tbackground: none;\n}\n", "[mol_string] {\n\tbox-sizing: border-box;\n\tbox-shadow: var(--mol_skin_light_outline);\n\toutline-offset: 0;\n\tborder: none;\n\tborder-radius: var(--mol_skin_round);\n\twhite-space: nowrap;\n\toverflow: hidden;\n\tpadding: .5rem 1rem;\n\ttext-align: left;\n\tposition: relative;\n\tz-index: 0;\n\tfont: inherit;\n\tflex: 0 1 auto;\n\twidth: 100%;\n\tbackground: var(--mol_skin_passive);\n\tcolor: var(--mol_skin_light_text);\n\tmargin: 0;\n}\n\n[mol_string]:enabled {\n\tbackground: var(--mol_skin_card);\n}\n\n[mol_string]:enabled:hover ,\n[mol_string]:focus {\n\toutline: none;\n\tz-index: 1;\n}\n\n[mol_string]:focus {\n\tbox-shadow: var(--mol_skin_focus_outline);\n}\n\n[mol_string]::-ms-clear {\n\tdisplay: none;\n}\n", - "[mol_button] {\n\tuser-select: none;\n\tborder: none;\n\tfont: inherit;\n\tbackground-color: none;\n\tdisplay: inline-flex;\n\tflex-shrink: 0;\n\ttext-decoration: inherit;\n\tcolor: inherit;\n\tcursor: inherit;\n\tposition: relative;\n\tbox-sizing: border-box;\n\tword-break: normal;\n\tcursor: default;\n}\n[mol_button]:focus {\n\toutline: none;\n}\n\n[mol_button_typed] {\n\tjustify-content: center;\n\talign-content: center;\n\talign-items: center;\n\tvertical-align: middle;\n\ttext-align: center;\n\tpadding: .5rem;\n\tborder-radius: var(--mol_skin_round);\n}\n\n[mol_button_typed][disabled] {\n\tcolor: var(--mol_skin_passive_text);\n\tbackground: none;\n\tpointer-events: none;\n}\n\n[mol_button_minor] {\n\tbox-shadow: var(--mol_skin_light_outline);\n\tbackground-color: var(--mol_skin_light);\n\tcolor: var(--mol_skin_light_text);\n}\n\n[mol_button_major] {\n\tbackground-color: var(--mol_skin_accent);\n\tcolor: var(--mol_skin_accent_text);\n\tbox-shadow: var(--mol_skin_light_outline);\n}\n\n[mol_button_danger] {\n\tbackground-color: var(--mol_skin_warn);\n\tcolor: var(--mol_skin_warn_text);\n}\n\n[mol_button_typed]:hover ,\n[mol_button_typed]:focus {\n\tcursor: pointer;\n\tbackground-color: var(--mol_skin_hover);\n}\n\n[mol_button_minor]:hover ,\n[mol_button_minor]:focus {\n\tbackground-color: var(--mol_skin_light_hover);\n\tcolor: var(--mol_skin_light_text);\n}\n\n[mol_button_major]:hover ,\n[mol_button_major]:focus {\n\tbackground-color: var(--mol_skin_accent_hover);\n}\n\n[mol_button_danger]:hover ,\n[mol_button_danger]:focus {\n\tbackground-color: var(--mol_skin_warn_hover);\n}\n", + "[mol_button] {\n\tborder: none;\n\tfont: inherit;\n\tbackground-color: none;\n\tdisplay: inline-flex;\n\tflex-shrink: 0;\n\ttext-decoration: inherit;\n\tcolor: inherit;\n\tcursor: inherit;\n\tposition: relative;\n\tbox-sizing: border-box;\n\tword-break: normal;\n\tcursor: default;\n}\n[mol_button]:focus {\n\toutline: none;\n}\n\n[mol_button_typed] {\n\tjustify-content: center;\n\talign-content: center;\n\talign-items: center;\n\tvertical-align: middle;\n\ttext-align: center;\n\tpadding: .5rem 1rem;\n\tborder-radius: var(--mol_skin_round);\n}\n\n[mol_button_typed][disabled] {\n\tcolor: var(--mol_skin_passive_text);\n\tbackground: none;\n\tpointer-events: none;\n}\n\n[mol_button_minor] {\n\tbox-shadow: var(--mol_skin_light_outline);\n\tbackground-color: var(--mol_skin_light);\n\tcolor: var(--mol_skin_light_text);\n}\n\n[mol_button_major] {\n\tbackground-color: var(--mol_skin_accent);\n\tcolor: var(--mol_skin_accent_text);\n\tbox-shadow: var(--mol_skin_light_outline);\n}\n\n[mol_button_danger] {\n\tbackground-color: var(--mol_skin_warn);\n\tcolor: var(--mol_skin_warn_text);\n}\n\n[mol_button_typed]:hover ,\n[mol_button_typed]:focus {\n\tcursor: pointer;\n\tbackground-color: var(--mol_skin_hover);\n}\n\n[mol_button_minor]:hover ,\n[mol_button_minor]:focus {\n\tbackground-color: var(--mol_skin_light_hover);\n\tcolor: var(--mol_skin_light_text);\n}\n\n[mol_button_major]:hover ,\n[mol_button_major]:focus {\n\tbackground-color: var(--mol_skin_accent_hover);\n}\n\n[mol_button_danger]:hover ,\n[mol_button_danger]:focus {\n\tbackground-color: var(--mol_skin_warn_hover);\n}\n", "[mol_link] {\n\ttext-decoration: none;\n\tcolor: inherit;\n\tcursor: pointer;\n\tborder-radius: var(--mol_skin_round);\n\tpadding: .5rem;\n\tbox-sizing: border-box;\n\tposition: relative;\n}\n\n[mol_link]:not([mol_link_current]):hover {\n\tbackground-color: var(--mol_skin_hover);\n}\n\n[mol_link]:not([mol_link_current]):focus {\n\tbackground-color: var(--mol_skin_hover);\n\tbox-shadow: 0 0 0 1px var(--mol_skin_hover_line);\n}\n\n[mol_link_current] {\n\tbackground-color: var(--mol_skin_current);\n\tcolor: var(--mol_skin_current_text);\n}\n\n[mol_link]:focus {\n\toutline: none;\n}\n", "[mol_check] {\n\tflex: 0 0 auto;\n\tjustify-content: flex-start;\n\talign-content: center;\n\talign-items: flex-start;\n\tborder: none;\n\tfont-weight: inherit;\n\tbox-shadow: none;\n\ttext-align: left;\n\tpadding: .5rem;\n\tdisplay: inline-flex;\n\tflex-wrap: nowrap;\n\tcolor: inherit;\n}\n", - "[mol_scroll] {\n\tdisplay: block;\n\toverflow: auto;\n\tflex: 1 1 auto;\n\talign-self: stretch;\n\tbox-sizing: border-box;\n\twill-change: scroll-position;\n\ttransform: translateZ(0);\n\tbox-shadow: var(--mol_skin_light_outline);\n\tmax-height: 100%;\n\tmax-width: 100%;\n\t-webkit-overflow-scrolling: touch;\n}\n\n[mol_scroll] > * {\n\ttransform: translateZ(0);\n}\n\n@media print {\n\t[mol_scroll] {\n\t\toverflow: visible;\n\t}\n}\n\n[mol_scroll_strut] {\n\tposition: absolute;\n\tdisplay: block;\n\tpadding: 1px;\n\tmargin: -1px;\n\tz-index: 0; \n\ttransition: none;\n}\n", + "[mol_scroll] {\n\tdisplay: block;\n\toverflow: auto;\n\tflex: 1 1 auto;\n\talign-self: stretch;\n\tbox-sizing: border-box;\n\twill-change: scroll-position;\n\ttransform: translateZ(0); /* enforce gpu scroll in all agents */\n\tbox-shadow: var(--mol_skin_light_outline);\n\tmax-height: 100%;\n\tmax-width: 100%;\n\t-webkit-overflow-scrolling: touch;\n}\n\n/* prevent large gpu layer */\n[mol_scroll][mol_scroll] {\n\tbackground: none;\n}\n\n[mol_scroll] > * {\n\ttransform: translateZ(0);\n}\n\n@media print {\n\t[mol_scroll] {\n\t\toverflow: visible;\n\t}\n}\n\n[mol_scroll_strut] {\n\tposition: absolute;\n\tdisplay: block;\n\tpadding: 1px;\n\tmargin: -1px;\n\tz-index: 0; \n\ttransition: none;\n}\n", "[mol_list] {\n\twill-change: contents;\n\tdisplay: block;\n}\n", "[mol_bar] {\n\tdisplay: flex;\n\tbox-shadow: var(--mol_skin_light_outline);\n\tborder-radius: var(--mol_skin_round);\n}\n\n[mol_bar] > * {\n\tborder-radius: 0;\n}\n\n[mol_bar] > *:first-child {\n\tborder-top-left-radius: var(--mol_skin_round);\n\tborder-bottom-left-radius: var(--mol_skin_round);\n}\n\n[mol_bar] > *:not(:first-child) {\n\tmargin-left: 1px;\n}\n\n[mol_bar] > *:last-child {\n\tborder-top-right-radius: var(--mol_skin_round);\n\tborder-bottom-right-radius: var(--mol_skin_round);\n}\n", - "[mol_app_todomvc] {\n\talign-self: stretch;\n\twidth: 100%;\n\tbackground-color: #f5f5f5;\n\tmargin: 0;\n\ttransition: none;\n}\n\n[mol_app_todomvc] [mol_string] ,\n[mol_app_todomvc] [mol_string]:focus ,\n[mol_app_todomvc] [mol_string]:hover ,\n[mol_app_todomvc] [mol_button] ,\n[mol_app_todomvc] [mol_button]:focus ,\n[mol_app_todomvc] [mol_button]:hover ,\n[mol_app_todomvc] [mol_link] ,\n[mol_app_todomvc] [mol_link]:focus ,\n[mol_app_todomvc] [mol_link]:hover {\n\tbox-shadow: none;\n\tbackground-color: transparent;\n}\n\n[mol_app_todomvc] [mol_link_current] {\n\tcolor: black;\n}\n\n[mol_app_todomvc] [mol_link]:not([mol_link_current]):hover ,\n[mol_app_todomvc] [mol_link]:not([mol_link_current]):focus {\n\ttext-decoration: underline;\n}\n\n[mol_app_todomvc_head_complete] {\n\tflex: 0 0 4rem;\n\ttransform: rotate( 90deg );\n\talign-items: center;\n\topacity: .5;\n\tpadding: 0;\n\tjustify-content: center;\n}\n[mol_app_todomvc_head_complete]:disabled {\n\tvisibility: hidden;\n}\n[mol_app_todomvc_head_complete][mol_check_checked] {\n\topacity: 1;\n}\n\n[mol_app_todomvc_add] {\n\tpadding: 0;\n\tflex: 1 1 auto;\n}\n\n[mol_app_todomvc_list] {\n\tfont-size: 1.5rem;\n\ttransition: none;\n}\n\n[mol_app_todomvc_page] {\n\tflex: 1 1 auto;\n\ttransition: none;\n}\n\n[mol_app_todomvc_panel] {\n\tbox-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1);\n\tmax-width: 38rem;\n\tbackground-color: white;\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 0 auto 2rem;\n\ttransition: none;\n}\n\n[mol_app_todomvc_head] {\n\tfont-size: 1.5rem;\n\tpadding: 0;\n\tdisplay: flex;\n\theight: 4rem;\n}\n\n[mol_app_todomvc_title] {\n\tdisplay: block;\n\tpadding: .25rem;\n\tfont-size: 7rem;\n\tfont-weight: 100;\n\ttext-align: center;\n\tcolor: rgba(175, 47, 47, 0.15);\n\ttext-rendering: optimizeLegibility;\n\ttext-transform: lowercase;\n}\n\n[mol_app_todomvc_task_row] {\n\tdisplay: flex;\n\tbackground-color: white;\n\tbox-shadow: 0 -1px 0 0 #ededed;\n\theight: 4rem;\n}\n\n[mol_app_todomvc_task_row_complete] {\n\tflex: 0 0 4rem;\n\tpadding: 1rem;\n\tbackground: no-repeat center center url('mol/app/todomvc/todomvc_active.svg');\n}\n[mol_app_todomvc_task_row_complete][mol_check_checked] {\n\tbackground: no-repeat center center url('mol/app/todomvc/todomvc_completed.svg');\n}\n\n[mol_app_todomvc_task_row_title] {\n\tpadding: 0;\n\tflex: 1 1 auto;\n}\n\n[mol_app_todomvc_task_row_completed] [mol_app_todomvc_task_row_title] {\n\tcolor: #d9d9d9;\n\ttext-decoration: line-through;\n}\n\n[mol_app_todomvc_task_row_drop] {\n\tfont-size: 1.25rem;\n\tflex: 0 04rem;\n}\n[mol_app_todomvc_task_row]:not(:hover) [mol_app_todomvc_task_row_drop]:not(:focus) {\n\topacity: 0;\n\tcolor: #cc9a9a;\n}\n\n[mol_app_todomvc_foot] {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: baseline;\n\tpadding: .5rem 1rem;\n\tcolor: #777;\n\tfont-size: .85rem;\n\tborder-top: 1px solid #ededed;\n\tbox-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2);\n}\n\n[mol_app_todomvc_pending] {\n\tpadding: .25rem;\n\tflex: 0 1 6rem;\n}\n\n[mol_app_todomvc_filter] {\n\tflex: 1 100 auto;\n\tdisplay: flex;\n\tjustify-content: center;\n\tmargin: .25rem;\n\tbox-shadow: none;\n}\n\n[mol_app_todomvc_sweep] {\n\tflex: 0 1 auto;\n\tpadding: .25rem;\n}\n[mol_app_todomvc_sweep][disabled] {\n\tvisibility: hidden;\n}\n\n[mol_app_todomvc_sweep]:hover ,\n[mol_app_todomvc_sweep]:focus {\n\ttext-decoration: underline;\n}\n", - "[mol_demo] {\n\tmax-height: 75vh;\n\tmax-width: 100%;\n\toverflow: hidden;\n\tbox-shadow: var(--mol_skin_light_outline);\n\tbackground: var(--mol_skin_card);\n\tcolor: var(--mol_skin_light_text);\n\tposition: relative;\n\tflex: 1 0 auto;\n\tdisplay: flex;\n\talign-items: stretch;\n\tbox-sizing: border-box;\n}\n", - "[mol_demo_large] {\n\theight: 75vh;\n\tmax-height: 75vh;\n\tmax-width: 100%;\n\toverflow: hidden;\n\tbox-shadow: var(--mol_skin_light_outline);\n\tbackground: var(--mol_skin_card);\n\tcolor: var(--mol_skin_light_text);\n\tposition: relative;\n\tflex: 1 0 auto;\n\tdisplay: flex;\n\talign-items: stretch;\n\tbox-sizing: border-box;\n\talign-self: stretch;\n}\n" + "[mol_app_todomvc] {\n\talign-self: stretch;\n\twidth: 100%;\n\tbackground-color: #f5f5f5;\n\tmargin: 0;\n\ttransition: none;\n}\n\n[mol_app_todomvc] [mol_string] ,\n[mol_app_todomvc] [mol_string]:focus ,\n[mol_app_todomvc] [mol_string]:hover ,\n[mol_app_todomvc] [mol_button] ,\n[mol_app_todomvc] [mol_button]:focus ,\n[mol_app_todomvc] [mol_button]:hover ,\n[mol_app_todomvc] [mol_link] ,\n[mol_app_todomvc] [mol_link]:focus ,\n[mol_app_todomvc] [mol_link]:hover {\n\tbox-shadow: none;\n\tbackground-color: transparent;\n}\n\n[mol_app_todomvc] [mol_link_current] {\n\tcolor: black;\n}\n\n[mol_app_todomvc] [mol_link]:not([mol_link_current]):hover ,\n[mol_app_todomvc] [mol_link]:not([mol_link_current]):focus {\n\ttext-decoration: underline;\n}\n\n[mol_app_todomvc_head_complete] {\n\tflex: 0 0 4rem;\n\ttransform: rotate( 90deg );\n\talign-items: center;\n\topacity: .5;\n\tpadding: 0;\n\tjustify-content: center;\n}\n[mol_app_todomvc_head_complete]:disabled {\n\tvisibility: hidden;\n}\n[mol_app_todomvc_head_complete][mol_check_checked] {\n\topacity: 1;\n}\n\n[mol_app_todomvc_add] {\n\tpadding: 0;\n\tflex: 1 1 auto;\n}\n\n[mol_app_todomvc_list] {\n\tfont-size: 1.5rem;\n\ttransition: none;\n}\n\n[mol_app_todomvc_page] {\n\tflex: 1 1 auto;\n\ttransition: none;\n}\n\n[mol_app_todomvc_panel] {\n\tbox-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1);\n\tmax-width: 38rem;\n\tbackground-color: white;\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 0 auto 2rem;\n\ttransition: none;\n}\n\n[mol_app_todomvc_head] {\n\tfont-size: 1.5rem;\n\tpadding: 0;\n\tdisplay: flex;\n\theight: 4rem;\n}\n\n[mol_app_todomvc_title] {\n\tword-break: normal;\n\tdisplay: block;\n\tpadding: .25rem;\n\tfont-size: 7rem;\n\tfont-weight: 100;\n\ttext-align: center;\n\tcolor: rgba(175, 47, 47, 0.15);\n\ttext-rendering: optimizeLegibility;\n\ttext-transform: lowercase;\n}\n\n[mol_app_todomvc_task_row] {\n\tdisplay: flex;\n\tbackground-color: white;\n\tbox-shadow: 0 -1px 0 0 #ededed;\n\theight: 4rem;\n}\n\n[mol_app_todomvc_task_row_complete] {\n\tflex: 0 0 4rem;\n\tpadding: 1rem;\n\tbackground: no-repeat center center url('mol/app/todomvc/todomvc_active.svg');\n}\n[mol_app_todomvc_task_row_complete][mol_check_checked] {\n\tbackground: no-repeat center center url('mol/app/todomvc/todomvc_completed.svg');\n}\n\n[mol_app_todomvc_task_row_title] {\n\tpadding: 0;\n\tflex: 1 1 auto;\n}\n\n[mol_app_todomvc_task_row_completed] [mol_app_todomvc_task_row_title] {\n\tcolor: #d9d9d9;\n\ttext-decoration: line-through;\n}\n\n[mol_app_todomvc_task_row_drop] {\n\tfont-size: 1.25rem;\n\tflex: 0 04rem;\n}\n[mol_app_todomvc_task_row]:not(:hover) [mol_app_todomvc_task_row_drop]:not(:focus) {\n\topacity: 0;\n\tcolor: #cc9a9a;\n}\n\n[mol_app_todomvc_foot] {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: baseline;\n\tpadding: .5rem 1rem;\n\tcolor: #777;\n\tfont-size: .85rem;\n\tborder-top: 1px solid #ededed;\n\tbox-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2);\n}\n\n[mol_app_todomvc_pending] {\n\tpadding: .25rem;\n\tflex: 0 1 6rem;\n}\n\n[mol_app_todomvc_filter] {\n\tflex: 1 100 auto;\n\tdisplay: flex;\n\tjustify-content: center;\n\tmargin: .25rem;\n\tbox-shadow: none;\n}\n\n[mol_app_todomvc_sweep] {\n\tflex: 0 1 auto;\n\tpadding: .25rem;\n}\n[mol_app_todomvc_sweep][disabled] {\n\tvisibility: hidden;\n}\n\n[mol_app_todomvc_sweep]:hover ,\n[mol_app_todomvc_sweep]:focus {\n\ttext-decoration: underline;\n}\n" ] } \ No newline at end of file diff --git a/examples/mol/-/web.deps.json b/examples/mol/-/web.deps.json new file mode 100644 index 0000000000..c066bf9593 --- /dev/null +++ b/examples/mol/-/web.deps.json @@ -0,0 +1 @@ +{"files":["mol/CNAME","mol/index.html","mol/LICENSE","mol/manifest.json","mol/mol.jam.js","mol/readme.md","mol/skin/skin.view.css","mol/func/name/name.ts","mol/object/object.ts","mol/object/readme.md","mol/conform/conform.ts","mol/conform/index.html","mol/log/log.ts","mol/log/log_context.ts","mol/log/log_debug.web.ts","mol/log/log_filter.web.ts","mol/log/log_group.ts","mol/defer/defer.ts","mol/defer/readme.md","mol/state/stack/stack.ts","mol/atom/atom.ie.web.js","mol/atom/atom.ts","mol/atom/index.html","mol/atom/readme.md","mol/mem/mem.ts","mol/mem/readme.md","mol/window/window.web.ts","mol/dom/context/context.ts","mol/dom/context/context.web.ts","mol/dom/render/render.ts","mol/view/readme.md","mol/view/view.css","mol/view/view.ts","mol/view/view.web.ts","mol/view/selection/selection.ts","mol/view/selection/selection.web.ts","mol/string/string.view.tree","mol/keyboard/code.ts","mol/string/readme.md","mol/string/string.css","mol/string/-view.tree/string.view.tree.ts","mol/string/-view.tree/string.view.tree.locale=en.json","mol/string/string.view.ts","mol/button/button.view.tree","mol/button/button.css","mol/button/-view.tree/button.view.tree.ts","mol/button/-view.tree/button.view.tree.locale=en.json","mol/button/button.view.ts","mol/button/-view.tree/button_types.view.tree.ts","mol/button/-view.tree/button_types.view.tree.locale=en.json","mol/button/button_types.view.tree","mol/button/readme.md","mol/link/link.view.tree","mol/merge/dict/dict.ts","mol/state/arg/arg.web.ts","mol/state/arg/readme.md","mol/link/link.view.css","mol/link/-view.tree/link.view.tree.ts","mol/link/-view.tree/link.view.tree.locale=en.json","mol/link/link.view.ts","mol/link/readme.md","mol/check/check.view.tree","mol/check/check.css","mol/check/-view.tree/check.view.tree.ts","mol/check/-view.tree/check.view.tree.locale=en.json","mol/check/check.view.ts","mol/check/readme.md","mol/scroll/scroll.view.tree","mol/scroll/readme.md","mol/scroll/scroll.view.css","mol/scroll/-view.tree/scroll.view.tree.ts","mol/scroll/-view.tree/scroll.view.tree.locale=en.json","mol/scroll/scroll.view.ts","mol/state/local/local.ts","mol/state/local/local.web.ts","mol/const/const.ts","mol/const/readme.md","mol/maybe/maybe.ts","mol/http/http.ts","mol/http/readme.md","mol/deprecated/deprecated.ts","mol/http/resource/resource.ts","mol/file/file.web.ts","mol/locale/locale.ts","mol/list/list.view.tree","mol/list/list.view.css","mol/list/-view.tree/list.view.tree.ts","mol/list/-view.tree/list.view.tree.locale=en.json","mol/list/list.view.ts","mol/list/readme.md","mol/bar/bar.view.css","mol/bar/-view.tree/bar.view.tree.ts","mol/bar/-view.tree/bar.view.tree.locale=en.json","mol/bar/bar.view.tree","mol/bar/readme.md","mol/app/todomvc/todomvc.view.tree","mol/app/todomvc/index.html","mol/app/todomvc/todomvc.css","mol/app/todomvc/todomvc.meta.tree","mol/app/todomvc/-view.tree/todomvc.view.tree.ts","mol/app/todomvc/-view.tree/todomvc.view.tree.locale=en.json","mol/app/todomvc/todomvc.view.ts","mol/app/todomvc/todomvc_active.svg","mol/app/todomvc/todomvc_completed.svg"],"edgesIn":{"mol/app":{"mol/app/todomvc":{"priority":0}},"mol":{"mol/app":{"priority":0},"mol/string":{"priority":0},"mol/skin":{"priority":0},"mol/view":{"priority":-1},"mol/object":{"priority":0},"mol/func":{"priority":0},"mol/window":{"priority":0},"mol/mem":{"priority":0},"mol/atom":{"priority":0},"mol/conform":{"priority":0},"mol/log":{"priority":0},"mol/defer":{"priority":0},"mol/state":{"priority":0},"mol/dom":{"priority":0},"mol/keyboard":{"priority":0},"mol/button":{"priority":0},"mol/link":{"priority":0},"mol/merge":{"priority":0},"mol/check":{"priority":0},"mol/scroll":{"priority":0},"mol/locale":{"priority":0},"mol/file":{"priority":0},"mol/const":{"priority":0},"mol/http":{"priority":0},"mol/maybe":{"priority":0},"mol/deprecated":{"priority":0},"mol/list":{"priority":0},"mol/bar":{"priority":0}},"mol/string":{"mol/app/todomvc":{"priority":0}},"mol/skin":{"mol/string":{"priority":-1},"mol/view":{"priority":-2},"mol/button":{"priority":-1},"mol/link":{"priority":-1},"mol/scroll":{"priority":-1},"mol/bar":{"priority":-1}},"mol/view":{"mol/string":{"priority":0},"mol/view/selection":{"priority":0},"mol/button":{"priority":0},"mol/link":{"priority":0},"mol/check":{"priority":-2},"mol/scroll":{"priority":-3},"mol/list":{"priority":-3},"mol/app/todomvc":{"priority":0},"mol/bar":{"priority":0}},"mol/object":{"mol/view":{"priority":-1},"mol/window":{"priority":-1},"mol/atom":{"priority":-1},"mol/defer":{"priority":-1},"mol/mem":{"priority":-5},"mol/view/selection":{"priority":-1},"mol/state/arg":{"priority":-1},"mol/locale":{"priority":-1},"mol/state/local":{"priority":-1},"mol/file":{"priority":-1},"mol/http":{"priority":-1}},"mol/func/name":{"mol/object":{"priority":-3},"mol/view":{"priority":-4}},"mol/func":{"mol/func/name":{"priority":0}},"mol/window":{"mol/view":{"priority":-2},"mol/scroll":{"priority":-4}},"mol/mem":{"mol/window":{"priority":-2},"mol/view":{"priority":-2},"mol/view/selection":{"priority":-2},"mol/string":{"priority":-1},"mol/button":{"priority":-1},"mol/link":{"priority":-1},"mol/state/arg":{"priority":-2},"mol/check":{"priority":-1},"mol/scroll":{"priority":-1},"mol/locale":{"priority":-2},"mol/state/local":{"priority":-2},"mol/file":{"priority":-2},"mol/http":{"priority":-2},"mol/app/todomvc":{"priority":-1},"mol/list":{"priority":-2}},"mol/atom":{"mol/mem":{"priority":-2},"mol/window":{"priority":-2},"mol/view/selection":{"priority":-2},"mol/view":{"priority":-4},"mol/string":{"priority":-1},"mol/button":{"priority":-1},"mol/link":{"priority":-1},"mol/state/arg":{"priority":-2},"mol/check":{"priority":-1},"mol/scroll":{"priority":-1},"mol/state/local":{"priority":-2},"mol/file":{"priority":-2},"mol/http":{"priority":-3},"mol/locale":{"priority":-4},"mol/app/todomvc":{"priority":-1}},"mol/conform":{"mol/atom":{"priority":-3}},"mol/log":{"mol/atom":{"priority":-4},"mol/window":{"priority":-1},"mol/view/selection":{"priority":-2},"mol/dom/render":{"priority":-3},"mol/view":{"priority":-1},"mol/string":{"priority":-3},"mol/state/arg":{"priority":-1},"mol/link":{"priority":-3},"mol/scroll":{"priority":-3},"mol/http":{"priority":-3}},"mol/defer":{"mol/atom":{"priority":-3},"mol/view/selection":{"priority":-3},"mol/view":{"priority":-2},"mol/scroll":{"priority":-3},"mol/http":{"priority":-4}},"mol/state/stack":{"mol/atom":{"priority":-1}},"mol/state":{"mol/state/stack":{"priority":0},"mol/state/arg":{"priority":0},"mol/state/local":{"priority":0}},"mol/dom/context":{"mol/view":{"priority":-1},"mol/view/selection":{"priority":-1},"mol/dom/render":{"priority":-5},"mol/state/arg":{"priority":-3},"mol/state/local":{"priority":-4},"mol/locale":{"priority":-3},"mol/http":{"priority":-3}},"mol/dom":{"mol/dom/context":{"priority":0},"mol/dom/render":{"priority":0}},"mol/view/selection":{"mol/view":{"priority":-3}},"mol/dom/render":{"mol/view":{"priority":-3}},"mol/string/string.view.tree":{"mol/string":{"priority":0}},"mol/keyboard":{"mol/string":{"priority":-3},"mol/button":{"priority":-3},"mol/app/todomvc":{"priority":-4}},"mol/button":{"mol/app/todomvc":{"priority":-2},"mol/check":{"priority":0}},"mol/button/button.view.tree":{"mol/button":{"priority":0}},"mol/link":{"mol/app/todomvc":{"priority":0}},"mol/link/link.view.tree":{"mol/link":{"priority":0}},"mol/state/arg":{"mol/link":{"priority":-3},"mol/app/todomvc":{"priority":-3}},"mol/merge/dict":{"mol/state/arg":{"priority":-3},"mol/app/todomvc":{"priority":-3}},"mol/merge":{"mol/merge/dict":{"priority":0}},"mol/check":{"mol/app/todomvc":{"priority":-2}},"mol/check/check.view.tree":{"mol/check":{"priority":0}},"mol/scroll":{"mol/app/todomvc":{"priority":0}},"mol/scroll/scroll.view.tree":{"mol/scroll":{"priority":0}},"mol/locale":{"mol/app/todomvc":{"priority":-2}},"mol/state/local":{"mol/locale":{"priority":-3},"mol/app/todomvc":{"priority":-3}},"mol/file":{"mol/locale":{"priority":-3}},"mol/const":{"mol/file":{"priority":-4},"mol/http":{"priority":-4}},"mol/http/resource":{"mol/file":{"priority":-3}},"mol/http":{"mol/http/resource":{"priority":-1}},"mol/maybe":{"mol/http":{"priority":-3}},"mol/deprecated":{"mol/http/resource":{"priority":-2}},"mol/list":{"mol/app/todomvc":{"priority":-2}},"mol/list/list.view.tree":{"mol/list":{"priority":0}},"mol/bar":{"mol/app/todomvc":{"priority":-2}},"mol/app/todomvc/todomvc.view.tree":{"mol/app/todomvc":{"priority":0}}},"edgesOut":{"mol/app/todomvc":{"mol/app":{"priority":0},"mol/string":{"priority":0},"mol/button":{"priority":-2},"mol/link":{"priority":0},"mol/check":{"priority":-2},"mol/scroll":{"priority":0},"mol/locale":{"priority":-2},"mol/mem":{"priority":-1},"mol/list":{"priority":-2},"mol/view":{"priority":0},"mol/atom":{"priority":-1},"mol/bar":{"priority":-2},"mol/app/todomvc/todomvc.view.tree":{"priority":0},"mol/keyboard":{"priority":-4},"mol/state/local":{"priority":-3},"mol/state/arg":{"priority":-3},"mol/merge/dict":{"priority":-3}},"mol/app":{"mol":{"priority":0}},"mol/string":{"mol":{"priority":0},"mol/skin":{"priority":-1},"mol/view":{"priority":0},"mol/mem":{"priority":-1},"mol/atom":{"priority":-1},"mol/string/string.view.tree":{"priority":0},"mol/log":{"priority":-3},"mol/keyboard":{"priority":-3}},"mol/skin":{"mol":{"priority":0}},"mol/view":{"mol":{"priority":-1},"mol/skin":{"priority":-2},"mol/object":{"priority":-1},"mol/window":{"priority":-2},"mol/mem":{"priority":-2},"mol/dom/context":{"priority":-1},"mol/view/selection":{"priority":-3},"mol/dom/render":{"priority":-3},"mol/atom":{"priority":-4},"mol/defer":{"priority":-2},"mol/func/name":{"priority":-4},"mol/log":{"priority":-1}},"mol/object":{"mol":{"priority":0},"mol/func/name":{"priority":-3}},"mol/func/name":{"mol/func":{"priority":0}},"mol/func":{"mol":{"priority":0}},"mol/window":{"mol":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2},"mol/atom":{"priority":-2},"mol/log":{"priority":-1}},"mol/mem":{"mol":{"priority":0},"mol/atom":{"priority":-2},"mol/object":{"priority":-5}},"mol/atom":{"mol":{"priority":0},"mol/object":{"priority":-1},"mol/conform":{"priority":-3},"mol/log":{"priority":-4},"mol/defer":{"priority":-3},"mol/state/stack":{"priority":-1}},"mol/conform":{"mol":{"priority":0}},"mol/log":{"mol":{"priority":0}},"mol/defer":{"mol":{"priority":0},"mol/object":{"priority":-1}},"mol/state/stack":{"mol/state":{"priority":0}},"mol/state":{"mol":{"priority":0}},"mol/dom/context":{"mol/dom":{"priority":0}},"mol/dom":{"mol":{"priority":0}},"mol/view/selection":{"mol/view":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2},"mol/atom":{"priority":-2},"mol/defer":{"priority":-3},"mol/dom/context":{"priority":-1},"mol/log":{"priority":-2}},"mol/dom/render":{"mol/dom":{"priority":0},"mol/dom/context":{"priority":-5},"mol/log":{"priority":-3}},"mol/keyboard":{"mol":{"priority":0}},"mol/button":{"mol":{"priority":0},"mol/skin":{"priority":-1},"mol/view":{"priority":0},"mol/mem":{"priority":-1},"mol/atom":{"priority":-1},"mol/button/button.view.tree":{"priority":0},"mol/keyboard":{"priority":-3}},"mol/link":{"mol":{"priority":0},"mol/skin":{"priority":-1},"mol/view":{"priority":0},"mol/mem":{"priority":-1},"mol/atom":{"priority":-1},"mol/link/link.view.tree":{"priority":0},"mol/state/arg":{"priority":-3},"mol/log":{"priority":-3}},"mol/state/arg":{"mol/state":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2},"mol/atom":{"priority":-2},"mol/dom/context":{"priority":-3},"mol/merge/dict":{"priority":-3},"mol/log":{"priority":-1}},"mol/merge/dict":{"mol/merge":{"priority":0}},"mol/merge":{"mol":{"priority":0}},"mol/check":{"mol":{"priority":0},"mol/button":{"priority":0},"mol/mem":{"priority":-1},"mol/atom":{"priority":-1},"mol/view":{"priority":-2},"mol/check/check.view.tree":{"priority":0}},"mol/scroll":{"mol":{"priority":0},"mol/skin":{"priority":-1},"mol/view":{"priority":-3},"mol/mem":{"priority":-1},"mol/atom":{"priority":-1},"mol/scroll/scroll.view.tree":{"priority":0},"mol/defer":{"priority":-3},"mol/log":{"priority":-3},"mol/window":{"priority":-4}},"mol/locale":{"mol":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2},"mol/state/local":{"priority":-3},"mol/dom/context":{"priority":-3},"mol/file":{"priority":-3},"mol/atom":{"priority":-4}},"mol/state/local":{"mol/state":{"priority":0},"mol/object":{"priority":-1},"mol/dom/context":{"priority":-4},"mol/mem":{"priority":-2},"mol/atom":{"priority":-2}},"mol/file":{"mol":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2},"mol/const":{"priority":-4},"mol/atom":{"priority":-2},"mol/http/resource":{"priority":-3}},"mol/const":{"mol":{"priority":0}},"mol/http/resource":{"mol/http":{"priority":-1},"mol/deprecated":{"priority":-2}},"mol/http":{"mol":{"priority":0},"mol/object":{"priority":-1},"mol/dom/context":{"priority":-3},"mol/mem":{"priority":-2},"mol/const":{"priority":-4},"mol/log":{"priority":-3},"mol/atom":{"priority":-3},"mol/defer":{"priority":-4},"mol/maybe":{"priority":-3}},"mol/maybe":{"mol":{"priority":0}},"mol/deprecated":{"mol":{"priority":0}},"mol/list":{"mol":{"priority":0},"mol/view":{"priority":-3},"mol/list/list.view.tree":{"priority":0},"mol/mem":{"priority":-2}},"mol/bar":{"mol":{"priority":0},"mol/skin":{"priority":-1},"mol/view":{"priority":0}}},"deps":{"mol/app/todomvc":{"..":0,"/mol/app/todomvc":0,"/mol/string":0,"/mol/button":0,"/mol/link":0,"/mol/link/current":0,"/mol/app/todomvc/head/complete":0,"/mol/check/checked":0,"/mol/app/todomvc/add":0,"/mol/app/todomvc/list":0,"/mol/app/todomvc/page":0,"/mol/app/todomvc/panel":0,"/mol/app/todomvc/head":0,"/mol/app/todomvc/title":0,"/mol/app/todomvc/task/row":0,"/mol/app/todomvc/task/row/complete":0,"/mol/app/todomvc/task/row/title":0,"/mol/app/todomvc/task/row/completed":0,"/mol/app/todomvc/task/row/drop":0,"/mol/app/todomvc/foot":0,"/mol/app/todomvc/pending":0,"/mol/app/todomvc/filter":0,"/mol/app/todomvc/sweep":0,"/mol/scroll":0,"/mol/locale/text":-2,"/mol/mem":-1,"/mol/list":-2,"/mol/view":0,"/mol/check":-2,"/mol/atom/force":-1,"/mol/app/todomvc/pending/message":-2,"/mol/bar":-2,"/mol/app/todomvc/filter/all/label":-2,"/mol/app/todomvc/filter/active/label":-2,"/mol/app/todomvc/filter/completed/label":-2,"/mol/button/minor":-2,"/mol/app/todomvc/sweep/label":-2,"/mol/mem/key":-1,"/mol/app/todomvc/add/hint":-2,"/mol/app/todomvc/task/row/title/hint":-2,"/mol/button/typed":-2,"todomvc.view.tree":0,"/mol/app/todomvc/task":0,"/mol/keyboard/code/enter":-4,"/mol/state/local/value":-3,"/mol/state/arg/value":-3,"/mol/merge/dict":-3},"mol/app":{"..":0},"mol":{"..":0,"/mol":0},"mol/string":{"..":0,"/mol/string":0,"/mol/skin/light/outline":-1,"/mol/skin/round":-1,"/mol/skin/passive":-1,"/mol/skin/light/text":-1,"/mol/skin/card":-1,"/mol/skin/focus/outline":-1,"/mol/view":0,"/mol/mem":-1,"/mol/atom/force":-1,"string.view.tree":0,"/mol/log/group":-3,"/mol/keyboard/code/enter":-3},"mol/skin":{"..":0,"/mol/skin/font":-1,"/mol/skin/font/monospace":-1,"/mol/skin/base":-1,"/mol/skin/base/text":-1,"/mol/skin/current":-1,"/mol/skin/current/text":-1,"/mol/skin/current/line":-1,"/mol/skin/button":-1,"/mol/skin/card":-1,"/mol/skin/hover":-1,"/mol/skin/round":-1,"/mol/skin/focus/line":-1,"/mol/skin/focus/outline":-1,"/mol/skin/float":-1,"/mol/skin/passive":-1,"/mol/skin/passive/text":-1,"/mol/skin/light":-1,"/mol/skin/light/line":-1,"/mol/skin/light/text":-1,"/mol/skin/light/hover":-1,"/mol/skin/light/outline":-1,"/mol/skin/card/text":-1,"/mol/skin/accent":-1,"/mol/skin/accent/text":-1,"/mol/skin/accent/hover":-1,"/mol/skin/warn":-1,"/mol/skin/warn/text":-1,"/mol/skin/warn/hover":-1,"/mol/skin/good":-1,"/mol/skin/good/text":-1,"/mol/skin/bad":-1,"/mol/skin/bad/text":-1},"mol/view":{"..":0,"/mol/view":0,"/mol/view/root":0,"/mol/skin/font":-1,"/mol/skin/light":-1,"/mol/view/error":0,"/mol/skin/base":-2,"/mol":-1,"/mol/view/context":-1,"/mol/object/context":-1,"/mol/view/visible/width":-1,"/mol/window/size":-2,"/mol/view/visible/height":-1,"/mol/view/state/key":-1,"/mol/object":-1,"/mol/mem/key":-2,"/mol/mem":-2,"/mol/dom/context/document/querySelectorAll":-3,"/mol/view/selection/focused":-3,"/mol/dom/context/document/createElementNS":-3,"/mol/dom/render/attributes":-3,"/mol/dom/render/events":-3,"/mol/dom/render/events/async":-3,"/mol/atom/wait":-4,"/mol/atom/catched":-4,"/mol/dom/render/children":-3,"/mol/dom/render/styles":-3,"/mol/dom/render/fields":-3,"/mol/defer":-3,"/mol/func/name":-4,"/mol/dom/context/document/addEventListener":-1,"/mol/log/group":-1,"/mol/view/autobind":-2,"/mol/defer/run":-2},"mol/object":{"..":0,"/mol/object/context":-1,"/mol/object":-1,"/mol/func/name":-3},"mol/func/name":{"..":0,"/mol/func/name/dict":-1,"/mol/func/name":-1,"/mol/func/name/dict/get":-2,"/mol/func/name/dict/set":-2},"mol/func":{"..":0},"mol/window":{"..":0,"/mol/window":-1,"/mol/object":-1,"/mol/mem":-2,"/mol/atom/force":-2,"/mol/log/group":-1,"/mol/window/size":-2,"/mol/atom/force/cache":-2},"mol/mem":{"..":0,"/mol/mem":-1,"/mol/atom/force":-2,"/mol/atom":-2,"/mol/mem/value":-2,"/mol/object":-5,"/mol/mem/key":-1,"/mol/mem/key/value":-2},"mol/atom":{"..":0,"/mol/atom/status":-1,"/mol/atom":-1,"/mol/object":-1,"/mol/atom/status/obsolete":-2,"/mol/atom/force":-1,"/mol/atom/status/actual":-3,"/mol/atom/stack":-1,"/mol/atom/status/pulling":-3,"/mol/atom/status/checking":-3,"/mol/atom/catched":-4,"/mol/atom/wait":-1,"/mol/conform":-3,"/mol/log":-3,"/mol/atom/actualize":-3,"/mol/atom/unreap":-4,"/mol/atom/reap":-4,"/mol/atom/force/cache":-1,"/mol/atom/force/update":-1,"/mol/atom/updating/push":-3,"/mol/atom/schedule":-3,"/mol/atom/reaping/add":-3,"/mol/atom/reaping/delete":-3,"/mol/defer":-3,"/mol/log/group":-4,"/mol/atom/sync":-4,"/mol/state/stack/set":-1,"/mol/atom/current":-1},"mol/conform":{"..":0,"/mol/conform":-1,"/mol/conform/handlers/get":-2,"/mol/conform/handlers":-1,"/mol/conform/handler":-1,"/mol/conform/handlers/set":-2},"mol/log":{"..":0,"/mol/log":-1,"/mol/log/filter":-1,"/mol/log/context":-1,"/mol/log/debug":-1,"/mol/log/group":-1,"/mol/log/group/wrapper":-2},"mol/defer":{"..":0,"/mol/defer":-1,"/mol/object":-1,"/mol/defer/add":-3,"/mol/defer/drop":-3},"mol/state/stack":{"..":0,"/mol/state/stack":-1},"mol/state":{"..":0},"mol/dom/context":{"..":0,"/mol/dom/context":-1},"mol/dom":{"..":0},"mol/view/selection":{"..":0,"/mol/view/selection":-1,"/mol/object":-1,"/mol/mem":-2,"/mol/atom/force":-2,"/mol/atom/current":-3,"/mol/defer":-3,"/mol/dom/context/document/getElementById":-4,"/mol/dom/context/document/getSelection":-4,"/mol/atom/force/cache":-2,"/mol/log/group":-2,"/mol/dom/context/document/addEventListener":-1,"/mol/view/selection/position":-2,"/mol/view/selection/onFocus":-2,"/mol/view/selection/onBlur":-2},"mol/dom/render":{"..":0,"/mol/dom/render/fields":-1,"/mol/dom/render/children":-1,"/mol/dom/context/Node":-3,"/mol/dom/context/document/createTextNode":-5,"/mol/dom/render/attributes":-1,"/mol/dom/render/styles":-1,"/mol/dom/render/events":-1,"/mol/log/group":-3,"/mol/dom/render/events/async":-1},"mol/string/string.view.tree":{},"mol/keyboard":{"..":0,"/mol/keyboard/code":-0.5},"mol/button":{"..":0,"/mol/button":0,"/mol/button/typed":0,"/mol/skin/round":-1,"/mol/skin/passive/text":-1,"/mol/button/minor":0,"/mol/skin/light/outline":-1,"/mol/skin/light":-1,"/mol/skin/light/text":-1,"/mol/button/major":0,"/mol/skin/accent":-1,"/mol/skin/accent/text":-1,"/mol/button/danger":0,"/mol/skin/warn":-1,"/mol/skin/warn/text":-1,"/mol/skin/hover":-1,"/mol/skin/light/hover":-1,"/mol/skin/accent/hover":-1,"/mol/skin/warn/hover":-1,"/mol/view":0,"/mol/mem":-1,"/mol/atom/force":-1,"button.view.tree":0,"/mol/keyboard/code/enter":-3},"mol/button/button.view.tree":{},"mol/link":{"..":0,"/mol/link":0,"/mol/skin/round":-1,"/mol/link/current":0,"/mol/skin/hover":-1,"/mol/skin/hover/line":-1,"/mol/skin/current":-1,"/mol/skin/current/text":-1,"/mol/view":0,"/mol/mem":-1,"/mol/atom/force":-1,"link.view.tree":0,"/mol/state/arg":-3,"/mol/state/arg/link":-3,"/mol/log/group":-3},"mol/link/link.view.tree":{},"mol/state/arg":{"..":0,"/mol/state/arg":-1,"/mol/object":-1,"/mol/mem":-2,"/mol/atom/force":-2,"/mol/dom/context/document/title":-3,"/mol/mem/key":-2,"/mol/merge/dict":-3,"/mol/state/arg/value":-3,"/mol/state/arg/link":-3,"/mol/log/group":-1,"/mol/state/arg/href":-2,"/mol/atom/force/cache":-2},"mol/merge/dict":{"..":0,"/mol/merge/dict":-1},"mol/merge":{"..":0},"mol/check":{"..":0,"/mol/check":0,"/mol/button/typed":0,"/mol/mem":-1,"/mol/atom/force":-1,"/mol/view":-2,"check.view.tree":0},"mol/check/check.view.tree":{},"mol/scroll":{"..":0,"/mol/scroll":0,"/mol/skin/light/outline":-1,"/mol/scroll/strut":0,"/mol/view":0,"/mol/mem":-1,"/mol/atom/force":-1,"scroll.view.tree":0,"/mol/scroll/top":-1,"/mol/scroll/left":-1,"/mol/scroll/moving":-1,"/mol/scroll/moving/vert":-1,"/mol/scroll/moving/hor":-1,"/mol/defer":-3,"/mol/log/group":-3,"/mol/view/visible/height":-3,"/mol/window/size":-4,"/mol/view/visible/width":-3},"mol/scroll/scroll.view.tree":{},"mol/locale":{"..":0,"/mol/locale/dict":-1,"/mol/locale":-1,"/mol/object":-1,"/mol/mem":-2,"/mol/state/local/value":-3,"/mol/dom/context/navigator/language/replace":-3,"/mol/mem/key":-2,"/mol/file/relative":-3,"/mol/atom/wait":-4},"mol/state/local":{"..":0,"/mol/state/local":-1,"/mol/object":-1,"/mol/dom/context/localStorage":-4,"/mol/mem/key":-2,"/mol/atom/force":-2,"/mol/state/local/value":-2,"/mol/atom/force/cache":-2},"mol/file":{"..":0,"/mol/file":-1,"/mol/object":-1,"/mol/mem/key":-2,"/mol/file/make":-3,"/mol/const":-4,"/mol/mem":-2,"/mol/atom/force":-2,"/mol/http/resource":-3},"mol/const":{"..":0,"/mol/const":-1},"mol/http/resource":{"..":0,"/mol/http/resource":-1,"/mol/http":-1,"/mol/deprecated":-2,"/mol/http/resource/json":-1},"mol/http":{"..":0,"/mol/http":-1,"/mol/object":-1,"/mol/dom/context/document/createElement":-3,"/mol/mem/key":-2,"/mol/http/make":-3,"/mol/const":-4,"/mol/dom/context/XMLHttpRequest":-3,"/mol/log/group":-3,"/mol/atom/force/cache":-5,"/mol/defer":-4,"/mol/mem":-2,"/mol/atom/force":-2,"/mol/maybe":-3,"/mol/atom/wait":-3},"mol/maybe":{"..":0,"/mol/maybe":-1},"mol/deprecated":{"..":0,"/mol/deprecated":-1,"/mol/deprecated/wrapper":-3},"mol/list":{"..":0,"/mol/list":0,"/mol/view":0,"list.view.tree":0,"/mol/mem":-2,"/mol/view/visible/height":-3,"/mol/mem/key":-2},"mol/list/list.view.tree":{},"mol/bar":{"..":0,"/mol/bar":0,"/mol/skin/light/outline":-1,"/mol/skin/round":-1,"/mol/view":0},"mol/app/todomvc/todomvc.view.tree":{}}} \ No newline at end of file diff --git a/examples/mol/-/web.js b/examples/mol/-/web.js index 8a968e8eb8..0c90a3e941 100644 --- a/examples/mol/-/web.js +++ b/examples/mol/-/web.js @@ -1,3 +1,4 @@ +"use strict" /// Fake namespace for optional overrides /// /// namespace $ { export var x = 1 , y = 1 } // defaults @@ -9,179 +10,293 @@ var $ = this.$ $.$$ = $ $.$mol = $ // deprecated -console.warn( 'namespace $.$mol is deprecated. Use namespace $.$$ instead.' ) ; -//mol.js.map -; +"use strict"; var $; (function ($) { $.$mol_func_name_dict = new WeakMap(); function $mol_func_name(func) { - var name = $.$mol_func_name_dict.get(func); + let name = $.$mol_func_name_dict.get(func); if (name != null) return name; - name = func.name || Function.prototype.toString.call(func).match(/^function ([a-z0-9_$]*)/)[1]; + name = func.name || Function.prototype.toString.call(func).match(/([a-z0-9_$]*) ?(\(|\{|extends)/)[1]; $.$mol_func_name_dict.set(func, name); return name; } $.$mol_func_name = $mol_func_name; })($ || ($ = {})); -//func.js.map +//name.js.map ; +"use strict"; var $; -(function ($) { - var $mol_object = (function () { - function $mol_object() { +(function ($_1) { + let $$; + (function ($$) { + let $; + })($$ = $_1.$$ || ($_1.$$ = {})); + class $mol_object { + get $() { + const owner = this.object_owner(); + return (owner && owner.$ || $); } - $mol_object.make = function (config) { - var instance = new this; - for (var key in config) + static make(config) { + const instance = new this; + for (let key in config) instance[key] = config[key]; return instance; - }; - $mol_object.toString = function () { - return $.$mol_func_name(this); - }; - $mol_object.prototype.object_owner = function (next) { + } + static toString() { + return $_1.$mol_func_name(this); + } + object_owner(next) { return this['object_owner()'] || (this['object_owner()'] = next); - }; - $mol_object.prototype.object_host = function (next) { + } + object_host(next) { return this['object_host()'] || (this['object_host()'] = next); - }; - $mol_object.prototype.object_field = function (next) { + } + object_field(next) { return this['object_field()'] || (this['object_field()'] = next) || ''; - }; - $mol_object.prototype.object_id = function (next) { + } + object_id(next) { return this['object_id()'] || (this['object_id()'] = next) || ''; - }; - $mol_object.prototype.toString = function () { + } + toString() { return this.object_id(); - }; - $mol_object.prototype.toJSON = function () { + } + toJSON() { return this.toString(); - }; - $mol_object.prototype.destructor = function () { }; - return $mol_object; - }()); - $.$mol_object = $mol_object; + } + destructor() { } + } + $_1.$mol_object = $mol_object; })($ || ($ = {})); //object.js.map ; +"use strict"; var $; (function ($) { - function $mol_log(path) { - var values = []; - for (var _i = 1; _i < arguments.length; _i++) { - values[_i - 1] = arguments[_i]; + const cache = new WeakMap(); + function $mol_conform(target, source, stack = []) { + if (target === source) + return source; + if (!target || typeof target !== 'object') + return target; + if (!source || typeof source !== 'object') + return target; + if (target instanceof Error) + return target; + if (source instanceof Error) + return target; + if (target.constructor !== source.constructor) + return target; + if (cache.get(target)) + return target; + cache.set(target, true); + const conform = $.$mol_conform_handlers.get(target.constructor); + if (!conform) + return target; + if (stack.indexOf(target) !== -1) + return target; + stack.push(target); + const res = conform(target, source, stack); + stack.pop(); + return res; + } + $.$mol_conform = $mol_conform; + $.$mol_conform_handlers = new WeakMap(); + function $mol_conform_handler(cl, handler) { + $.$mol_conform_handlers.set(cl, handler); + } + $.$mol_conform_handler = $mol_conform_handler; + $mol_conform_handler(Array, (target, source, stack) => { + let equal = target.length === source.length; + for (let i = 0; i < target.length; ++i) { + const conformed = target[i] = $mol_conform(target[i], source[i], stack); + if (equal && conformed !== source[i]) + equal = false; + } + return equal ? source : target; + }); + $mol_conform_handler(Object, (target, source, stack) => { + let count = 0; + let equal = true; + for (let key in target) { + const conformed = target[key] = $mol_conform(target[key], source[key], stack); + if (equal && conformed !== source[key]) + equal = false; + ++count; } - var filter = $mol_log.filter(); - if (filter == null) + for (let key in source) + if (--count < 0) + break; + return (equal && count === 0) ? source : target; + }); + $mol_conform_handler(Date, (target, source) => (target.getTime() === source.getTime()) ? source : target); + $mol_conform_handler(RegExp, (target, source) => (target.toString() === source.toString()) ? source : target); +})($ || ($ = {})); +//conform.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_log(path, ...values) { + if ($.$mol_log_filter() == null) return; path = String(path); - if (path.indexOf(filter) === -1) + if (path.indexOf($.$mol_log_filter()) === -1) return; - console.debug.apply(console, [path].concat(values)); - var debug = $mol_log.debug(); - if (debug == null) + if ($.$mol_log_context()) + $.$mol_log_context()(); + console.debug(path, ...values.map(val => val instanceof Error ? Object.assign({}, val) : val)); + if ($.$mol_log_debug() == null) return; - if (path.indexOf(debug) === -1) + if (path.indexOf($.$mol_log_debug()) === -1) return; debugger; } $.$mol_log = $mol_log; - (function ($mol_log) { - var _filter; - function filter(next) { - if (next !== void 0) { - if (next == null) { - sessionStorage.removeItem('$mol_log.filter()'); - } - else { - sessionStorage.setItem('$mol_log.filter()', next); - } - _filter = next; +})($ || ($ = {})); +//log.js.map +; +"use strict"; +var $; +(function ($) { + let context = null; + function $mol_log_context(next = context) { + return context = next; + } + $.$mol_log_context = $mol_log_context; +})($ || ($ = {})); +//log_context.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_log_debug(next) { + if (next !== undefined) { + if (next == null) { + sessionStorage.removeItem('$mol_log_debug()'); + } + else { + sessionStorage.setItem('$mol_log_debug()', next); } - if (_filter !== void 0) - return _filter; - return _filter = sessionStorage.getItem('$mol_log.filter()'); } - $mol_log.filter = filter; - var _debug; - function debug(next) { - if (next === void 0) { next = _debug; } - return _debug = next; + return sessionStorage.getItem('$mol_log_debug()'); + } + $.$mol_log_debug = $mol_log_debug; +})($ || ($ = {})); +//log_debug.web.js.map +; +"use strict"; +var $; +(function ($) { + let filter; + function $mol_log_filter(next) { + if (next !== undefined) { + if (next == null) { + sessionStorage.removeItem('$mol_log_filter()'); + } + else { + sessionStorage.setItem('$mol_log_filter()', next); + } + filter = next; } - $mol_log.debug = debug; - })($mol_log = $.$mol_log || ($.$mol_log = {})); + if (filter !== undefined) + return filter; + return filter = sessionStorage.getItem('$mol_log_filter()'); + } + $.$mol_log_filter = $mol_log_filter; })($ || ($ = {})); -//log.web.js.map +//log_filter.web.js.map ; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); +"use strict"; var $; (function ($) { - var $mol_defer = (function (_super) { - __extends($mol_defer, _super); - function $mol_defer(run) { - var _this = _super.call(this) || this; - _this.run = run; - $mol_defer.add(_this); - return _this; - } - $mol_defer.prototype.destructor = function () { - $mol_defer.drop(this); + function $mol_log_group(name, task) { + return function $mol_log_group_wrapper(...args) { + const filter = $.$mol_log_filter(); + if (filter == null) + return task.apply(this, args); + let started = false; + let prev = $.$mol_log_context(); + $.$mol_log_context(() => { + if (prev) + prev(); + started = true; + if (filter) + console.group(name); + else + console.groupCollapsed(name); + $.$mol_log_context(prev = null); + }); + try { + return task.apply(this, args); + } + finally { + if (started) + console.groupEnd(); + $.$mol_log_context(prev); + } }; - $mol_defer.schedule = function () { - var _this = this; + } + $.$mol_log_group = $mol_log_group; +})($ || ($ = {})); +//log_group.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_defer extends $.$mol_object { + constructor(run) { + super(); + this.run = run; + $mol_defer.add(this); + } + destructor() { + $mol_defer.drop(this); + } + static schedule() { if (this.timer) return; - this.timer = this.scheduleNative(function () { - _this.timer = 0; - _this.run(); + this.timer = this.scheduleNative(() => { + this.timer = 0; + this.run(); }); - }; - $mol_defer.unschedule = function () { + } + static unschedule() { if (!this.timer) return; cancelAnimationFrame(this.timer); this.timer = 0; - }; - $mol_defer.add = function (defer) { + } + static add(defer) { this.all.push(defer); this.schedule(); - }; - $mol_defer.drop = function (defer) { + } + static drop(defer) { var index = this.all.indexOf(defer); if (index >= 0) this.all.splice(index, 1); - }; - $mol_defer.run = function () { + } + static run() { if (this.all.length === 0) return; this.schedule(); - for (var defer; defer = this.all.pop();) + for (var defer; defer = this.all.shift();) defer.run(); - }; - $mol_defer.all = []; - $mol_defer.timer = 0; - $mol_defer.scheduleNative = (typeof requestAnimationFrame == 'function') - ? function (handler) { return requestAnimationFrame(handler); } - : function (handler) { return setTimeout(handler, 16); }; - return $mol_defer; - }($.$mol_object)); + } + } + $mol_defer.all = []; + $mol_defer.timer = 0; + $mol_defer.scheduleNative = (typeof requestAnimationFrame == 'function') + ? handler => requestAnimationFrame(handler) + : handler => setTimeout(handler, 16); $.$mol_defer = $mol_defer; })($ || ($ = {})); //defer.js.map ; +"use strict"; var $; (function ($) { $.$mol_state_stack = new Map(); @@ -217,76 +332,63 @@ void function() { }() ; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); +"use strict"; var $; (function ($) { - var $mol_atom_status; + let $mol_atom_status; (function ($mol_atom_status) { $mol_atom_status["obsolete"] = "obsolete"; $mol_atom_status["checking"] = "checking"; $mol_atom_status["pulling"] = "pulling"; $mol_atom_status["actual"] = "actual"; })($mol_atom_status = $.$mol_atom_status || ($.$mol_atom_status = {})); - var $mol_atom = (function (_super) { - __extends($mol_atom, _super); - function $mol_atom(id, handler) { - if (handler === void 0) { handler = function () { return undefined; }; } - var _this = _super.call(this) || this; - _this.masters = null; - _this.slaves = null; - _this.status = $mol_atom_status.obsolete; - _this.object_id(id); - _this.handler = handler; - return _this; - } - $mol_atom.prototype.destructor = function () { + class $mol_atom extends $.$mol_object { + constructor(id, handler = next => next) { + super(); + this.masters = null; + this.slaves = null; + this.status = $mol_atom_status.obsolete; + this.object_id(id); + this.handler = handler; + } + destructor() { this.unlink(); this.status = $mol_atom_status.actual; - var value = this['value()']; + const value = this['value()']; if (value instanceof $.$mol_object) { if (value.object_owner() === this) value.destructor(); } this['value()'] = undefined; - }; - $mol_atom.prototype.unlink = function () { + } + unlink() { this.disobey_all(); this.check_slaves(); - }; - $mol_atom.prototype.get = function (force) { - if (this.status === $mol_atom_status.pulling) { - throw new Error("Cyclic atom dependency of " + this); - } - this.actualize(force); - var slave = $mol_atom.stack[0]; + } + get(force) { + const slave = $mol_atom.stack[0]; if (slave) { this.lead(slave); slave.obey(this); } - var value = this['value()']; - if (typeof Proxy !== 'function' && value instanceof Error) { + this.actualize(force); + const value = this['value()']; + if (value instanceof Error) { throw value; } return value; - }; - $mol_atom.prototype.actualize = function (force) { - var _this = this; + } + actualize(force) { + if (this.status === $mol_atom_status.pulling) { + throw new Error(`Cyclic atom dependency of ${this}`); + } if (!force && this.status === $mol_atom_status.actual) return; - var slave = $mol_atom.stack[0]; + const slave = $mol_atom.stack[0]; $mol_atom.stack[0] = this; if (!force && this.status === $mol_atom_status.checking) { - this.masters.forEach(function (master) { - if (_this.status !== $mol_atom_status.checking) + this.masters.forEach(master => { + if (this.status !== $mol_atom_status.checking) return; master.actualize(); }); @@ -295,19 +397,24 @@ var $; } } if (force || this.status !== $mol_atom_status.actual) { - var oldMasters = this.masters; + const oldMasters = this.masters; this.masters = null; if (oldMasters) - oldMasters.forEach(function (master) { - master.dislead(_this); + oldMasters.forEach(master => { + master.dislead(this); }); this.status = $mol_atom_status.pulling; - var next = this.pull(force); - this.push(next); + const next = this.pull(force); + if (next === undefined) { + this.status = $mol_atom_status.actual; + } + else { + this.push(next); + } } $mol_atom.stack[0] = slave; - }; - $mol_atom.prototype.pull = function (force) { + } + pull(force) { try { return this.handler(this._next, force); } @@ -323,36 +430,18 @@ var $; error['$mol_atom_catched'] = true; return error; } - }; - $mol_atom.prototype.set = function (next) { - var next_normal = this.normalize(next, this._next); - if (next_normal === this._next) - return this.get(); - if (next_normal === this['value()']) - return this.get(); - this._next = next_normal; - this.obsolete(); - return this.get(); - }; - $mol_atom.prototype.normalize = function (next, prev) { - if (next === prev) - return next; - if ((next instanceof Array) && (prev instanceof Array) && (next.length === prev.length)) { - for (var i = 0; i < next.length; ++i) { - if (next[i] !== prev[i]) - return next; - } - return prev; + } + set(next) { + return this.value(next); + } + push(next_raw) { + if (!(next_raw instanceof $mol_atom_wait)) { + this._ignore = this._next; + this._next = undefined; } - return next; - }; - $mol_atom.prototype.push = function (next_raw) { - this._next = undefined; - this.status = $mol_atom_status.actual; - var prev = this['value()']; - if (next_raw === undefined) - return prev; - var next = (next_raw instanceof Error) ? next_raw : this.normalize(next_raw, prev); + this.status = next_raw === undefined ? $mol_atom_status.obsolete : $mol_atom_status.actual; + const prev = this['value()']; + let next = (next_raw instanceof Error || prev instanceof Error) ? next_raw : $.$mol_conform(next_raw, prev); if (next === prev) return prev; if (prev instanceof $.$mol_object) { @@ -362,55 +451,45 @@ var $; if (next instanceof $.$mol_object) { next.object_owner(this); } - if ((typeof Proxy === 'function') && (next instanceof Error)) { - next = new Proxy(next, { - get: function (target) { - throw target.valueOf(); - }, - ownKeys: function (target) { - throw target.valueOf(); - }, - }); - } this['value()'] = next; $.$mol_log(this, prev, '➔', next); this.obsolete_slaves(); return next; - }; - $mol_atom.prototype.obsolete_slaves = function () { + } + obsolete_slaves() { if (!this.slaves) return; - this.slaves.forEach(function (slave) { return slave.obsolete(); }); - }; - $mol_atom.prototype.check_slaves = function () { + this.slaves.forEach(slave => slave.obsolete()); + } + check_slaves() { if (this.slaves) { - this.slaves.forEach(function (slave) { return slave.check(); }); + this.slaves.forEach(slave => slave.check()); } else { $mol_atom.actualize(this); } - }; - $mol_atom.prototype.check = function () { + } + check() { if (this.status === $mol_atom_status.actual) { this.status = $mol_atom_status.checking; this.check_slaves(); } - }; - $mol_atom.prototype.obsolete = function () { + } + obsolete() { if (this.status === $mol_atom_status.obsolete) return; this.status = $mol_atom_status.obsolete; this.check_slaves(); return; - }; - $mol_atom.prototype.lead = function (slave) { + } + lead(slave) { if (!this.slaves) { this.slaves = new Set(); $mol_atom.unreap(this); } this.slaves.add(slave); - }; - $mol_atom.prototype.dislead = function (slave) { + } + dislead(slave) { if (!this.slaves) return; if (this.slaves.size === 1) { @@ -420,66 +499,74 @@ var $; else { this.slaves.delete(slave); } - }; - $mol_atom.prototype.obey = function (master) { + } + obey(master) { if (!this.masters) this.masters = new Set(); this.masters.add(master); - }; - $mol_atom.prototype.disobey = function (master) { + } + disobey(master) { if (!this.masters) return; this.masters.delete(master); - }; - $mol_atom.prototype.disobey_all = function () { - var _this = this; + } + disobey_all() { if (!this.masters) return; - this.masters.forEach(function (master) { return master.dislead(_this); }); + this.masters.forEach(master => master.dislead(this)); this.masters = null; - }; - $mol_atom.prototype.value = function (next, force) { - if (next === undefined) { - return this.get(force); - } - else { - if (force) { + } + cache(next) { + if (next === undefined) + return this['value()']; + return this['value()'] = next; + } + value(next, force) { + if (force === $mol_atom_force_cache) + return this.push(next); + if (next !== undefined) { + if (force === $mol_atom_force) return this.push(next); + let next_normal = $.$mol_conform(next, this._ignore); + if (next_normal === this._ignore) + return this.get(force); + if (!(this['value()'] instanceof Error)) { + next_normal = $.$mol_conform(next, this['value()']); + if (next_normal === this['value()']) + return this.get(force); } - else { - return this.set(next); - } + this._next = next_normal; + this._ignore = next_normal; + force = $mol_atom_force_update; } - }; - $mol_atom.actualize = function (atom) { + return this.get(force); + } + static actualize(atom) { $mol_atom.updating.push(atom); $mol_atom.schedule(); - }; - $mol_atom.reap = function (atom) { + } + static reap(atom) { $mol_atom.reaping.add(atom); $mol_atom.schedule(); - }; - $mol_atom.unreap = function (atom) { + } + static unreap(atom) { $mol_atom.reaping.delete(atom); - }; - $mol_atom.schedule = function () { - var _this = this; + } + static schedule() { if (this.scheduled) return; - new $.$mol_defer(function () { - if (!_this.scheduled) + new $.$mol_defer($.$mol_log_group('$mol_atom.sync()', () => { + if (!this.scheduled) return; - _this.scheduled = false; - _this.sync(); - }); + this.scheduled = false; + this.sync(); + })); this.scheduled = true; - }; - $mol_atom.sync = function () { - var _this = this; - $.$mol_log(this, 'sync'); + } + static sync() { this.schedule(); while (true) { - var atom = this.updating.shift(); + const atom = this.updating.shift(); if (!atom) break; if (this.reaping.has(atom)) @@ -488,22 +575,21 @@ var $; atom.get(); } while (this.reaping.size) { - this.reaping.forEach(function (atom) { - _this.reaping.delete(atom); + this.reaping.forEach(atom => { + this.reaping.delete(atom); if (!atom.slaves) atom.destructor(); }); } this.scheduled = false; - }; - $mol_atom.prototype.then = function (done, fail) { - var _this = this; - var prev; - var next; - var atom = new $mol_atom(this + ".then(" + done + ")", function () { + } + then(done, fail) { + let prev; + let next; + const atom = new $mol_atom(`${this}.then(${done})`, () => { try { if (prev == undefined) { - var val = _this.get(); + const val = this.get(); if (val instanceof $mol_atom_wait) return val; if (val) @@ -511,7 +597,7 @@ var $; prev = val; } if (next == undefined) { - var val = done(prev); + const val = done(prev); if (val instanceof $mol_atom_wait) return val; if (val) @@ -530,70 +616,68 @@ var $; }); $mol_atom.actualize(atom); return atom; - }; - $mol_atom.prototype.catch = function (fail) { - return this.then(function (next) { return next; }, fail); - }; - $mol_atom.stack = []; - $mol_atom.updating = []; - $mol_atom.reaping = new Set(); - $mol_atom.scheduled = false; - return $mol_atom; - }($.$mol_object)); + } + catch(fail) { + return this.then(next => next, fail); + } + } + $mol_atom.stack = []; + $mol_atom.updating = []; + $mol_atom.reaping = new Set(); + $mol_atom.scheduled = false; $.$mol_atom = $mol_atom; $.$mol_state_stack.set('$mol_atom.stack', $mol_atom.stack); - var $mol_atom_wait = (function (_super) { - __extends($mol_atom_wait, _super); - function $mol_atom_wait(message) { - var _newTarget = this.constructor; - if (message === void 0) { message = 'Wait...'; } - var _this = _super.call(this, message) || this; - _this.name = '$mol_atom_wait'; - _this['__proto__'] = _newTarget.prototype; - return _this; - } - return $mol_atom_wait; - }(Error)); - $.$mol_atom_wait = $mol_atom_wait; - var $mol_atom_force = (function (_super) { - __extends($mol_atom_force, _super); - function $mol_atom_force() { - return _super !== null && _super.apply(this, arguments) || this; + function $mol_atom_current() { + return $mol_atom.stack[0]; + } + $.$mol_atom_current = $mol_atom_current; + class $mol_atom_wait extends Error { + constructor() { + super(...arguments); + this.name = '$mol_atom_wait'; } - return $mol_atom_force; - }(Object)); + } + $.$mol_atom_wait = $mol_atom_wait; + class $mol_atom_force extends Object { + static toString() { return this.name; } + } $.$mol_atom_force = $mol_atom_force; + class $mol_atom_force_cache extends $mol_atom_force { + } + $.$mol_atom_force_cache = $mol_atom_force_cache; + class $mol_atom_force_update extends $mol_atom_force { + } + $.$mol_atom_force_update = $mol_atom_force_update; })($ || ($ = {})); //atom.js.map ; +"use strict"; var $; (function ($) { function $mol_mem(obj, name, descr) { - var value = descr.value; - var store = new WeakMap(); - descr.value = function (next, force) { - var host = this; - var atom = store.get(host); + const value = descr.value; + const store = new WeakMap(); + descr.value = function $mol_mem_value(next, force) { + const host = this; + let atom = store.get(host); if (!atom) { - if (force && (next === undefined)) - return next; - var id_1 = host + "." + name + "()"; - atom = new $.$mol_atom(id_1, function () { - var v = value.apply(host, arguments); + const id = `${host}.${name}()`; + atom = new $.$mol_atom(id, function () { + const v = value.apply(host, arguments); if (v instanceof $.$mol_object) { if (!v.object_host()) { v.object_host(host); v.object_field(name); - v.object_id(id_1); + v.object_id(id); } } return v; }); atom.object_owner(host); - var destructor_1 = atom.destructor; - atom.destructor = function () { + const destructor = atom.destructor; + atom.destructor = () => { store.delete(host); - destructor_1.call(atom); + destructor.call(atom); }; store.set(host, atom); } @@ -605,38 +689,32 @@ var $; } $.$mol_mem = $mol_mem; function $mol_mem_key(obj, name, descr) { - var value = descr.value; - var store = new WeakMap(); - descr.value = function (key, next, force) { - var host = this; - var key_str = JSON.stringify(key); - var dict = store.get(host); + const value = descr.value; + const store = new WeakMap(); + descr.value = function $mol_mem_key_value(key, next, force) { + const host = this; + const key_str = JSON.stringify(key); + let dict = store.get(host); if (!dict) store.set(host, dict = {}); - var atom = dict[key_str]; + let atom = dict[key_str]; if (!atom) { - if (force && (next === undefined)) - return next; - var id_2 = host + "." + name + "(" + key_str + ")"; - atom = new $.$mol_atom(id_2, function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var v = value.apply(host, [key].concat(args)); + const id = `${host}.${name}(${key_str})`; + atom = new $.$mol_atom(id, function (...args) { + const v = value.apply(host, [key, ...args]); if (v instanceof $.$mol_object) { if (!v.object_host()) { v.object_host(host); v.object_field(name); - v.object_id(id_2); + v.object_id(id); } } return v; }); - var destructor_2 = atom.destructor; - atom.destructor = function () { + const destructor = atom.destructor; + atom.destructor = () => { delete dict[key_str]; - destructor_2.call(atom); + destructor.call(atom); }; dict[key_str] = atom; } @@ -650,16 +728,7 @@ var $; })($ || ($ = {})); //mem.js.map ; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); +"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -668,45 +737,43 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, }; var $; (function ($) { - var $mol_window = (function (_super) { - __extends($mol_window, _super); - function $mol_window() { - return _super !== null && _super.apply(this, arguments) || this; - } - $mol_window.size = function (next) { + class $mol_window extends $.$mol_object { + static size(next, force) { return next || { width: window.innerWidth, height: window.innerHeight, }; - }; - __decorate([ - $.$mol_mem - ], $mol_window, "size", null); - return $mol_window; - }($.$mol_object)); + } + } + __decorate([ + $.$mol_mem + ], $mol_window, "size", null); $.$mol_window = $mol_window; - window.addEventListener('resize', function () { - $mol_window.size(null); - }); + window.addEventListener('resize', $.$mol_log_group(`$mol_window resize`, () => { + $mol_window.size(undefined, $.$mol_atom_force_cache); + })); })($ || ($ = {})); //window.web.js.map ; +"use strict"; var $; (function ($) { })($ || ($ = {})); //context.js.map ; +"use strict"; var $; (function ($) { $.$mol_dom_context = window; })($ || ($ = {})); //context.web.js.map ; +"use strict"; var $; (function ($) { function $mol_dom_render_fields(el, fields) { - for (var key in fields) { - var val = fields[key]; + for (let key in fields) { + const val = fields[key]; if (val === undefined) continue; if (el[key] === val) @@ -716,24 +783,25 @@ var $; } $.$mol_dom_render_fields = $mol_dom_render_fields; function $mol_dom_render_children(el, childNodes) { - var nodes = []; - for (var i = 0; i < childNodes.length; ++i) { - var node = childNodes[i]; + const node_list = []; + const node_set = new Set(); + for (let i = 0; i < childNodes.length; ++i) { + let node = childNodes[i]; if (node == null) continue; if (Object(node) === node) { if (node['dom_tree']) node = node['dom_tree'](); - nodes.push(node); + node_list.push(node); + node_set.add(node); } else { - nodes.push(String(node)); + node_list.push(String(node)); } } - var nextNode = el.firstChild; - for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) { - var view_ = nodes_1[_i]; - var view = view_.valueOf(); + let nextNode = el.firstChild; + for (let view_ of node_list) { + const view = view_.valueOf(); if (view instanceof $.$mol_dom_context.Node) { while (true) { if (!nextNode) { @@ -745,15 +813,15 @@ var $; break; } else { - if (nodes.indexOf(nextNode) === -1) { - var nn = nextNode.nextSibling; - el.removeChild(nextNode); - nextNode = nn; - } - else { + if (node_set.has(nextNode)) { el.insertBefore(view, nextNode); break; } + else { + const nn = nextNode.nextSibling; + el.removeChild(nextNode); + nextNode = nn; + } } } } @@ -763,74 +831,59 @@ var $; nextNode = nextNode.nextSibling; } else { - var textNode = $.$mol_dom_context.document.createTextNode(String(view)); + const textNode = $.$mol_dom_context.document.createTextNode(String(view)); el.insertBefore(textNode, nextNode); } } } while (nextNode) { - var currNode = nextNode; + const currNode = nextNode; nextNode = currNode.nextSibling; el.removeChild(currNode); } } $.$mol_dom_render_children = $mol_dom_render_children; function $mol_dom_render_attributes(el, attrs) { - for (var name_1 in attrs) { - var val = attrs[name_1]; + for (let name in attrs) { + let val = attrs[name]; if (val === null || val === false) - el.removeAttribute(name_1); + el.removeAttribute(name); else - el.setAttribute(name_1, String(val)); + el.setAttribute(name, String(val)); } } $.$mol_dom_render_attributes = $mol_dom_render_attributes; function $mol_dom_render_styles(el, styles) { - for (var name_2 in styles) { - var val = styles[name_2]; - var style = el.style; - var cur = style[name_2]; + for (let name in styles) { + let val = styles[name]; + const style = el.style; + const cur = style[name]; if (typeof val === 'number') { if (parseFloat(cur) == val) continue; - style[name_2] = val + "px"; + style[name] = `${val}px`; } if (cur !== val) - style[name_2] = val; + style[name] = val; } } $.$mol_dom_render_styles = $mol_dom_render_styles; function $mol_dom_render_events(el, events) { - for (var name_3 in events) { - el.addEventListener(name_3, events[name_3], { passive: false }); + for (let name in events) { + el.addEventListener(name, $.$mol_log_group(el.id + ' ' + name, events[name]), { passive: false }); } } $.$mol_dom_render_events = $mol_dom_render_events; function $mol_dom_render_events_async(el, events) { - for (var name_4 in events) { - el.addEventListener(name_4, events[name_4], { passive: true }); + for (let name in events) { + el.addEventListener(name, $.$mol_log_group(el.id + ' ' + name, events[name]), { passive: true }); } } $.$mol_dom_render_events_async = $mol_dom_render_events_async; - function $mol_dom_render_events_detach(el, events) { - for (var name_5 in events) { - el.removeEventListener(name_5, events[name_5], { passive: false }); - } - } - $.$mol_dom_render_events_detach = $mol_dom_render_events_detach; })($ || ($ = {})); //render.js.map ; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); +"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -839,13 +892,13 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, }; var $; (function ($) { - var $$; + let $$; (function ($$_1) { - var $$; + let $$; })($$ = $.$$ || ($.$$ = {})); - var $mol; + let $mol; (function ($mol_1) { - var $mol; + let $mol; })($mol = $.$mol || ($.$mol = {})); function $mol_view_visible_width() { return $.$mol_window.size().width; @@ -859,102 +912,109 @@ var $; return suffix; } $.$mol_view_state_key = $mol_view_state_key; - var $mol_view = (function (_super) { - __extends($mol_view, _super); - function $mol_view() { - return _super !== null && _super.apply(this, arguments) || this; - } - $mol_view.Root = function (id) { + class $mol_view extends $.$mol_object { + static Root(id) { return new this; - }; - $mol_view.prototype.title = function () { + } + static autobind() { + const nodes = $.$mol_dom_context.document.querySelectorAll('[mol_view_root]'); + for (let i = nodes.length - 1; i >= 0; --i) { + const name = nodes.item(i).getAttribute('mol_view_root'); + const View = $[name]; + if (!View) { + console.error(`Can not attach view. Class not found: ${name}`); + continue; + } + const view = View.Root(i); + view.dom_tree(nodes.item(i)); + document.title = view.title(); + } + } + title() { return this.constructor.toString(); - }; - $mol_view.prototype.focused = function (next) { - var node = this.dom_node(); - var value = $.$mol_view_selection.focused(next === undefined ? undefined : next ? [node] : []); + } + focused(next) { + let node = this.dom_node(); + const value = $.$mol_view_selection.focused(next === undefined ? undefined : next ? [node] : []) || []; return value.indexOf(node) !== -1; - }; - $mol_view.prototype.context = function (next) { + } + context(next) { return next || $; - }; - Object.defineProperty($mol_view.prototype, "$", { - get: function () { - return this.context(); - }, - set: function (next) { - this.context(next); - }, - enumerable: true, - configurable: true - }); - $mol_view.prototype.context_sub = function () { + } + get $() { return this.context(); - }; - $mol_view.prototype.state_key = function (suffix) { - if (suffix === void 0) { suffix = ''; } + } + set $(next) { + this.context(next); + } + context_sub() { + return this.context(); + } + state_key(suffix = '') { return this.$.$mol_view_state_key(suffix); - }; - $mol_view.prototype.dom_name = function () { + } + dom_name() { return this.constructor.toString().replace('$', ''); - }; - $mol_view.prototype.dom_name_space = function () { return 'http://www.w3.org/1999/xhtml'; }; - $mol_view.prototype.sub = function () { + } + dom_name_space() { return 'http://www.w3.org/1999/xhtml'; } + sub() { return null; - }; - $mol_view.prototype.sub_visible = function () { - var sub = this.sub(); + } + sub_visible() { + const sub = this.sub(); if (!sub) return sub; - var context = this.context_sub(); - sub.forEach(function (child) { + const context = this.context_sub(); + sub.forEach(child => { if (child instanceof $mol_view) { - child.context(context); + child.$ = context; } }); return sub; - }; - $mol_view.prototype.minimal_width = function () { - var sub = this.sub(); + } + minimal_width() { + const sub = this.sub(); if (!sub) return 0; - var min = 0; - sub.forEach(function (view) { + let min = 0; + sub.forEach(view => { if (view instanceof $mol_view) { min = Math.max(min, view.minimal_width()); } }); return min; - }; - $mol_view.prototype.minimal_height = function () { + } + minimal_height() { return this.content_height(); - }; - $mol_view.prototype.content_height = function () { - var sub = this.sub(); + } + content_height() { + const sub = this.sub(); if (!sub) return 0; - var min = 0; - sub.forEach(function (view) { + let min = 0; + sub.forEach(view => { if (view instanceof $mol_view) { min = Math.max(min, view.minimal_height()); } }); return min; - }; - $mol_view.prototype.dom_node = function (next) { - var node = next || this.$.$mol_dom_context.document.createElementNS(this.dom_name_space(), this.dom_name()); + } + dom_id() { + return this.toString(); + } + dom_node(next) { + const node = next || this.$.$mol_dom_context.document.createElementNS(this.dom_name_space(), this.dom_name()); + node.setAttribute('id', this.dom_id()); $.$mol_dom_render_attributes(node, this.attr_static()); $.$mol_dom_render_events(node, this.event()); $.$mol_dom_render_events_async(node, this.event_async()); return node; - }; - $mol_view.prototype.dom_tree = function () { - var node = this.dom_node(); + } + dom_tree(next) { + const node = this.dom_node(next); try { - for (var _i = 0, _a = this.plugins(); _i < _a.length; _i++) { - var plugin = _a[_i]; + for (let plugin of this.plugins()) plugin.render(); - } this.render(); } catch (error) { @@ -971,24 +1031,22 @@ var $; error['$mol_atom_catched'] = true; } return node; - }; - $mol_view.prototype.render = function () { - var node = this.dom_node(); - var sub = this.sub_visible(); + } + render() { + const node = this.dom_node(); + const sub = this.sub_visible(); if (sub) $.$mol_dom_render_children(node, sub); $.$mol_dom_render_attributes(node, this.attr()); $.$mol_dom_render_styles(node, this.style()); - var fields = this.field(); + const fields = this.field(); $.$mol_dom_render_fields(node, fields); - new $.$mol_defer(function () { return $.$mol_dom_render_fields(node, fields); }); - if (!this.object_host()) - this.$.$mol_dom_context.document.title = this.title(); - }; - $mol_view.view_classes = function () { - var proto = this.prototype; - var current = proto; - var classes = []; + new $.$mol_defer(() => $.$mol_dom_render_fields(node, fields)); + } + static view_classes() { + const proto = this.prototype; + let current = proto; + const classes = []; while (current) { classes.push(current.constructor); if (!(current instanceof $mol_view)) @@ -996,136 +1054,111 @@ var $; current = Object.getPrototypeOf(current); } return classes; - }; - $mol_view.prototype.view_names_owned = function () { - var names = []; - var owner = this.object_host(); + } + view_names_owned() { + const names = []; + let owner = this.object_host(); if (owner instanceof $mol_view) { - var suffix = this.object_field(); - var suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1); - for (var _i = 0, _a = owner.constructor.view_classes(); _i < _a.length; _i++) { - var Class = _a[_i]; + const suffix = this.object_field(); + const suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1); + for (let Class of owner.constructor.view_classes()) { if (suffix in Class.prototype) names.push($.$mol_func_name(Class) + suffix2); else break; } - for (var _b = 0, _c = owner.view_names_owned(); _b < _c.length; _b++) { - var prefix = _c[_b]; + for (let prefix of owner.view_names_owned()) { names.push(prefix + suffix2); } } return names; - }; - $mol_view.prototype.view_names = function () { - var names = []; - for (var _i = 0, _a = this.view_names_owned(); _i < _a.length; _i++) { - var name_1 = _a[_i]; - if (names.indexOf(name_1) < 0) - names.push(name_1); - } - for (var _b = 0, _c = this.constructor.view_classes(); _b < _c.length; _b++) { - var Class = _c[_b]; - var name_2 = $.$mol_func_name(Class); - if (names.indexOf(name_2) < 0) - names.push(name_2); + } + view_names() { + const names = []; + for (let name of this.view_names_owned()) { + if (names.indexOf(name) < 0) + names.push(name); } - return names; - }; - $mol_view.prototype.attr_static = function () { - var attrs = { - 'mol_view_error': false, - 'id': this.toString(), - }; - for (var _i = 0, _a = this.view_names(); _i < _a.length; _i++) { - var name_3 = _a[_i]; - attrs[name_3.replace(/\$/g, '').toLowerCase()] = ''; + for (let Class of this.constructor.view_classes()) { + const name = $.$mol_func_name(Class); + if (names.indexOf(name) < 0) + names.push(name); } + return names; + } + attr_static() { + let attrs = {}; + for (let name of this.view_names()) + attrs[name.replace(/\$/g, '').toLowerCase()] = ''; return attrs; - }; - $mol_view.prototype.attr = function () { + } + attr() { return { 'mol_view_error': false, }; - }; - $mol_view.prototype.style = function () { + } + style() { return {}; - }; - $mol_view.prototype.field = function () { + } + field() { return {}; - }; - $mol_view.prototype.event = function () { + } + event() { return {}; - }; - $mol_view.prototype.event_async = function () { + } + event_async() { return {}; - }; - $mol_view.prototype.plugins = function () { + } + plugins() { return []; - }; - __decorate([ - $.$mol_mem - ], $mol_view.prototype, "focused", null); - __decorate([ - $.$mol_mem - ], $mol_view.prototype, "context", null); - __decorate([ - $.$mol_mem - ], $mol_view.prototype, "minimal_width", null); - __decorate([ - $.$mol_mem - ], $mol_view.prototype, "content_height", null); - __decorate([ - $.$mol_mem - ], $mol_view.prototype, "dom_node", null); - __decorate([ - $.$mol_mem - ], $mol_view.prototype, "dom_tree", null); - __decorate([ - $.$mol_mem - ], $mol_view.prototype, "view_names", null); - __decorate([ - $.$mol_mem_key - ], $mol_view, "Root", null); - __decorate([ - $.$mol_mem - ], $mol_view, "view_classes", null); - return $mol_view; - }($.$mol_object)); + } + } + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "focused", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "context", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "minimal_width", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "content_height", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "dom_node", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "dom_tree", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "view_names", null); + __decorate([ + $.$mol_mem_key + ], $mol_view, "Root", null); + __decorate([ + $.$mol_mem + ], $mol_view, "autobind", null); + __decorate([ + $.$mol_mem + ], $mol_view, "view_classes", null); $.$mol_view = $mol_view; })($ || ($ = {})); //view.js.map ; +"use strict"; var $; (function ($) { - $.$mol_dom_context.document.addEventListener(window.cordova ? 'deviceready' : 'DOMContentLoaded', function (event) { - var nodes = $.$mol_dom_context.document.querySelectorAll('[mol_view_root]'); - for (var i = nodes.length - 1; i >= 0; --i) { - var name_1 = nodes.item(i).getAttribute('mol_view_root'); - var View = $[name_1]; - if (!View) { - console.error("Can not attach view. Class not found: " + name_1); - continue; - } - var view = View.Root(i); - view.dom_node(nodes.item(i)); - view.dom_tree(); - } + const event_name = window.cordova ? 'deviceready' : 'DOMContentLoaded'; + $.$mol_dom_context.document.addEventListener(event_name, $.$mol_log_group(`$mol_view ${event_name}`, (event) => { + $.$mol_view.autobind(); $.$mol_defer.run(); - }); + })); })($ || ($ = {})); //view.web.js.map ; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); +"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -1134,36 +1167,29 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, }; var $; (function ($) { - var $mol_view_selection = (function (_super) { - __extends($mol_view_selection, _super); - function $mol_view_selection() { - return _super !== null && _super.apply(this, arguments) || this; - } - $mol_view_selection.focused = function (next, force) { - var _this = this; + class $mol_view_selection extends $.$mol_object { + static focused(next, force) { if (next === undefined) return []; - var node = next[0]; - new $.$mol_defer(function () { + const node = next[0]; + const atom = $.$mol_atom_current(); + new $.$mol_defer(() => { if (node) - node.focus(); - else if (_this['focused()']['value()'][0]) - _this['focused()']['value()'][0].blur(); + return node.focus(); + const el = atom.cache()[0]; + if (el) + el.blur(); }); return undefined; - }; - $mol_view_selection.position = function () { - var diff = []; - for (var _i = 0; _i < arguments.length; _i++) { - diff[_i] = arguments[_i]; - } + } + static position(...diff) { if (diff.length) { if (!diff[0]) return diff[0]; var start = diff[0].start; var end = diff[0].end; if (!(start <= end)) - throw new Error("Wrong offsets (" + start + "," + end + ")"); + throw new Error(`Wrong offsets (${start},${end})`); var root = $.$mol_dom_context.document.getElementById(diff[0].id); root.focus(); var range = new Range; @@ -1228,172 +1254,50 @@ var $; var endOffset = meter.toString().length; return { id: el.id, start: startOffset, end: endOffset }; } - }; - $mol_view_selection.onFocus = function (event) { - var parents = []; - var element = event.target; + } + static onFocus(event) { + const parents = []; + let element = event.target; while (element) { parents.push(element); element = element.parentNode; } - this.focused(parents, $.$mol_atom_force); - }; - $mol_view_selection.onBlur = function (event) { - var _this = this; - var focused = this.focused(); - setTimeout(function () { - if (focused !== _this.focused()) + this.focused(parents, $.$mol_atom_force_cache); + } + static onBlur(event) { + const focused = this.focused(); + setTimeout($.$mol_log_group('$mol_view_selection blur', () => { + if (focused !== this.focused()) return; - _this.focused([], $.$mol_atom_force); - }); - }; - __decorate([ - $.$mol_mem - ], $mol_view_selection, "focused", null); - __decorate([ - $.$mol_mem - ], $mol_view_selection, "position", null); - return $mol_view_selection; - }($.$mol_object)); + this.focused([], $.$mol_atom_force_cache); + })); + } + } + __decorate([ + $.$mol_mem + ], $mol_view_selection, "focused", null); + __decorate([ + $.$mol_mem + ], $mol_view_selection, "position", null); $.$mol_view_selection = $mol_view_selection; })($ || ($ = {})); //selection.js.map ; +"use strict"; var $; (function ($) { - $.$mol_dom_context.document.addEventListener('selectionchange', function (event) { - $.$mol_view_selection.position(undefined, $.$mol_atom_force); + $.$mol_dom_context.document.addEventListener('selectionchange', event => { + $.$mol_view_selection.position(undefined, $.$mol_atom_force_cache); }); - $.$mol_dom_context.document.addEventListener('focus', function (event) { return $.$mol_view_selection.onFocus(event); }, true); - $.$mol_dom_context.document.addEventListener('blur', function (event) { return $.$mol_view_selection.onBlur(event); }, true); + $.$mol_dom_context.document.addEventListener('focus', $.$mol_log_group('$mol_view_selection focus', (event) => $.$mol_view_selection.onFocus(event)), true); + $.$mol_dom_context.document.addEventListener('blur', (event) => $.$mol_view_selection.onBlur(event), true); })($ || ($ = {})); //selection.web.js.map ; -var $; -(function ($) { - var $mol_keyboard_code; - (function ($mol_keyboard_code) { - $mol_keyboard_code[$mol_keyboard_code["backspace"] = 8] = "backspace"; - $mol_keyboard_code[$mol_keyboard_code["tab"] = 9] = "tab"; - $mol_keyboard_code[$mol_keyboard_code["enter"] = 13] = "enter"; - $mol_keyboard_code[$mol_keyboard_code["shift"] = 16] = "shift"; - $mol_keyboard_code[$mol_keyboard_code["ctrl"] = 17] = "ctrl"; - $mol_keyboard_code[$mol_keyboard_code["alt"] = 18] = "alt"; - $mol_keyboard_code[$mol_keyboard_code["pause"] = 19] = "pause"; - $mol_keyboard_code[$mol_keyboard_code["capsLock"] = 20] = "capsLock"; - $mol_keyboard_code[$mol_keyboard_code["escape"] = 27] = "escape"; - $mol_keyboard_code[$mol_keyboard_code["space"] = 32] = "space"; - $mol_keyboard_code[$mol_keyboard_code["pageUp"] = 33] = "pageUp"; - $mol_keyboard_code[$mol_keyboard_code["pageDown"] = 34] = "pageDown"; - $mol_keyboard_code[$mol_keyboard_code["end"] = 35] = "end"; - $mol_keyboard_code[$mol_keyboard_code["home"] = 36] = "home"; - $mol_keyboard_code[$mol_keyboard_code["left"] = 37] = "left"; - $mol_keyboard_code[$mol_keyboard_code["up"] = 38] = "up"; - $mol_keyboard_code[$mol_keyboard_code["right"] = 39] = "right"; - $mol_keyboard_code[$mol_keyboard_code["down"] = 40] = "down"; - $mol_keyboard_code[$mol_keyboard_code["insert"] = 45] = "insert"; - $mol_keyboard_code[$mol_keyboard_code["delete"] = 46] = "delete"; - $mol_keyboard_code[$mol_keyboard_code["key0"] = 48] = "key0"; - $mol_keyboard_code[$mol_keyboard_code["key1"] = 49] = "key1"; - $mol_keyboard_code[$mol_keyboard_code["key2"] = 50] = "key2"; - $mol_keyboard_code[$mol_keyboard_code["key3"] = 51] = "key3"; - $mol_keyboard_code[$mol_keyboard_code["key4"] = 52] = "key4"; - $mol_keyboard_code[$mol_keyboard_code["key5"] = 53] = "key5"; - $mol_keyboard_code[$mol_keyboard_code["key6"] = 54] = "key6"; - $mol_keyboard_code[$mol_keyboard_code["key7"] = 55] = "key7"; - $mol_keyboard_code[$mol_keyboard_code["key8"] = 56] = "key8"; - $mol_keyboard_code[$mol_keyboard_code["key9"] = 57] = "key9"; - $mol_keyboard_code[$mol_keyboard_code["A"] = 65] = "A"; - $mol_keyboard_code[$mol_keyboard_code["B"] = 66] = "B"; - $mol_keyboard_code[$mol_keyboard_code["C"] = 67] = "C"; - $mol_keyboard_code[$mol_keyboard_code["D"] = 68] = "D"; - $mol_keyboard_code[$mol_keyboard_code["E"] = 69] = "E"; - $mol_keyboard_code[$mol_keyboard_code["F"] = 70] = "F"; - $mol_keyboard_code[$mol_keyboard_code["G"] = 71] = "G"; - $mol_keyboard_code[$mol_keyboard_code["H"] = 72] = "H"; - $mol_keyboard_code[$mol_keyboard_code["I"] = 73] = "I"; - $mol_keyboard_code[$mol_keyboard_code["J"] = 74] = "J"; - $mol_keyboard_code[$mol_keyboard_code["K"] = 75] = "K"; - $mol_keyboard_code[$mol_keyboard_code["L"] = 76] = "L"; - $mol_keyboard_code[$mol_keyboard_code["M"] = 77] = "M"; - $mol_keyboard_code[$mol_keyboard_code["N"] = 78] = "N"; - $mol_keyboard_code[$mol_keyboard_code["O"] = 79] = "O"; - $mol_keyboard_code[$mol_keyboard_code["P"] = 80] = "P"; - $mol_keyboard_code[$mol_keyboard_code["Q"] = 81] = "Q"; - $mol_keyboard_code[$mol_keyboard_code["R"] = 82] = "R"; - $mol_keyboard_code[$mol_keyboard_code["S"] = 83] = "S"; - $mol_keyboard_code[$mol_keyboard_code["T"] = 84] = "T"; - $mol_keyboard_code[$mol_keyboard_code["U"] = 85] = "U"; - $mol_keyboard_code[$mol_keyboard_code["V"] = 86] = "V"; - $mol_keyboard_code[$mol_keyboard_code["W"] = 87] = "W"; - $mol_keyboard_code[$mol_keyboard_code["X"] = 88] = "X"; - $mol_keyboard_code[$mol_keyboard_code["Y"] = 89] = "Y"; - $mol_keyboard_code[$mol_keyboard_code["Z"] = 90] = "Z"; - $mol_keyboard_code[$mol_keyboard_code["metaLeft"] = 91] = "metaLeft"; - $mol_keyboard_code[$mol_keyboard_code["metaRight"] = 92] = "metaRight"; - $mol_keyboard_code[$mol_keyboard_code["select"] = 93] = "select"; - $mol_keyboard_code[$mol_keyboard_code["numpad0"] = 96] = "numpad0"; - $mol_keyboard_code[$mol_keyboard_code["numpad1"] = 97] = "numpad1"; - $mol_keyboard_code[$mol_keyboard_code["numpad2"] = 98] = "numpad2"; - $mol_keyboard_code[$mol_keyboard_code["numpad3"] = 99] = "numpad3"; - $mol_keyboard_code[$mol_keyboard_code["numpad4"] = 100] = "numpad4"; - $mol_keyboard_code[$mol_keyboard_code["numpad5"] = 101] = "numpad5"; - $mol_keyboard_code[$mol_keyboard_code["numpad6"] = 102] = "numpad6"; - $mol_keyboard_code[$mol_keyboard_code["numpad7"] = 103] = "numpad7"; - $mol_keyboard_code[$mol_keyboard_code["numpad8"] = 104] = "numpad8"; - $mol_keyboard_code[$mol_keyboard_code["numpad9"] = 105] = "numpad9"; - $mol_keyboard_code[$mol_keyboard_code["multiply"] = 106] = "multiply"; - $mol_keyboard_code[$mol_keyboard_code["add"] = 107] = "add"; - $mol_keyboard_code[$mol_keyboard_code["subtract"] = 109] = "subtract"; - $mol_keyboard_code[$mol_keyboard_code["decimal"] = 110] = "decimal"; - $mol_keyboard_code[$mol_keyboard_code["divide"] = 111] = "divide"; - $mol_keyboard_code[$mol_keyboard_code["F1"] = 112] = "F1"; - $mol_keyboard_code[$mol_keyboard_code["F2"] = 113] = "F2"; - $mol_keyboard_code[$mol_keyboard_code["F3"] = 114] = "F3"; - $mol_keyboard_code[$mol_keyboard_code["F4"] = 115] = "F4"; - $mol_keyboard_code[$mol_keyboard_code["F5"] = 116] = "F5"; - $mol_keyboard_code[$mol_keyboard_code["F6"] = 117] = "F6"; - $mol_keyboard_code[$mol_keyboard_code["F7"] = 118] = "F7"; - $mol_keyboard_code[$mol_keyboard_code["F8"] = 119] = "F8"; - $mol_keyboard_code[$mol_keyboard_code["F9"] = 120] = "F9"; - $mol_keyboard_code[$mol_keyboard_code["F10"] = 121] = "F10"; - $mol_keyboard_code[$mol_keyboard_code["F11"] = 122] = "F11"; - $mol_keyboard_code[$mol_keyboard_code["F12"] = 123] = "F12"; - $mol_keyboard_code[$mol_keyboard_code["numLock"] = 144] = "numLock"; - $mol_keyboard_code[$mol_keyboard_code["scrollLock"] = 145] = "scrollLock"; - $mol_keyboard_code[$mol_keyboard_code["semicolon"] = 186] = "semicolon"; - $mol_keyboard_code[$mol_keyboard_code["equals"] = 187] = "equals"; - $mol_keyboard_code[$mol_keyboard_code["comma"] = 188] = "comma"; - $mol_keyboard_code[$mol_keyboard_code["dash"] = 189] = "dash"; - $mol_keyboard_code[$mol_keyboard_code["period"] = 190] = "period"; - $mol_keyboard_code[$mol_keyboard_code["forwardSlash"] = 191] = "forwardSlash"; - $mol_keyboard_code[$mol_keyboard_code["graveAccent"] = 192] = "graveAccent"; - $mol_keyboard_code[$mol_keyboard_code["bracketOpen"] = 219] = "bracketOpen"; - $mol_keyboard_code[$mol_keyboard_code["slashBack"] = 220] = "slashBack"; - $mol_keyboard_code[$mol_keyboard_code["bracketClose"] = 221] = "bracketClose"; - $mol_keyboard_code[$mol_keyboard_code["quoteSingle"] = 222] = "quoteSingle"; - })($mol_keyboard_code = $.$mol_keyboard_code || ($.$mol_keyboard_code = {})); -})($ || ($ = {})); +"use strict"; //code.js.map ; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __assign = (this && this.__assign) || Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; -}; +"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -1402,136 +1306,107 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, }; var $; (function ($) { - var $mol_string = (function (_super) { - __extends($mol_string, _super); - function $mol_string() { - return _super !== null && _super.apply(this, arguments) || this; - } - $mol_string.prototype.dom_name = function () { + class $mol_string extends $.$mol_view { + dom_name() { return "input"; - }; - $mol_string.prototype.enabled = function () { + } + enabled() { return true; - }; - $mol_string.prototype.debounce = function () { + } + debounce() { return 200; - }; - $mol_string.prototype.minimal_height = function () { + } + minimal_height() { return 40; - }; - $mol_string.prototype.field = function () { - return (__assign({}, _super.prototype.field.call(this), { "disabled": this.disabled(), "value": this.value_changed(), "placeholder": this.hint(), "type": this.type() })); - }; - $mol_string.prototype.disabled = function () { + } + field() { + return (Object.assign({}, super.field(), { "disabled": this.disabled(), "value": this.value_changed(), "placeholder": this.hint(), "type": this.type() })); + } + disabled() { return false; - }; - $mol_string.prototype.value_changed = function (val, force) { + } + value_changed(val, force) { return this.value(val); - }; - $mol_string.prototype.value = function (val, force) { + } + value(val, force) { return (val !== void 0) ? val : ""; - }; - $mol_string.prototype.hint = function () { + } + hint() { return ""; - }; - $mol_string.prototype.type = function (val, force) { + } + type(val, force) { return (val !== void 0) ? val : "text"; - }; - $mol_string.prototype.event = function () { - var _this = this; - return (__assign({}, _super.prototype.event.call(this), { "input": function (event) { return _this.event_change(event); }, "keypress": function (event) { return _this.event_key_press(event); } })); - }; - $mol_string.prototype.event_change = function (event, force) { + } + attr() { + return (Object.assign({}, super.attr(), { "maxlength": this.length_max() })); + } + length_max() { + return Infinity; + } + event() { + return (Object.assign({}, super.event(), { "input": (event) => this.event_change(event), "keypress": (event) => this.event_key_press(event) })); + } + event_change(event, force) { return (event !== void 0) ? event : null; - }; - $mol_string.prototype.event_key_press = function (event, force) { + } + event_key_press(event, force) { return (event !== void 0) ? event : null; - }; - __decorate([ - $.$mol_mem - ], $mol_string.prototype, "value_changed", null); - __decorate([ - $.$mol_mem - ], $mol_string.prototype, "value", null); - __decorate([ - $.$mol_mem - ], $mol_string.prototype, "type", null); - __decorate([ - $.$mol_mem - ], $mol_string.prototype, "event_change", null); - __decorate([ - $.$mol_mem - ], $mol_string.prototype, "event_key_press", null); - return $mol_string; - }($.$mol_view)); + } + } + __decorate([ + $.$mol_mem + ], $mol_string.prototype, "value_changed", null); + __decorate([ + $.$mol_mem + ], $mol_string.prototype, "value", null); + __decorate([ + $.$mol_mem + ], $mol_string.prototype, "type", null); + __decorate([ + $.$mol_mem + ], $mol_string.prototype, "event_change", null); + __decorate([ + $.$mol_mem + ], $mol_string.prototype, "event_key_press", null); $.$mol_string = $mol_string; })($ || ($ = {})); //string.view.tree.js.map ; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); +"use strict"; var $; (function ($) { var $$; (function ($$) { - var $mol_string = (function (_super) { - __extends($mol_string, _super); - function $mol_string() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this._timer = 0; - return _this; - } - $mol_string.prototype.event_change = function (next) { - var _this = this; + class $mol_string extends $.$mol_string { + constructor() { + super(...arguments); + this._timer = 0; + } + event_change(next) { if (!next) return; - var val = next.target.value.trim(); clearTimeout(this._timer); - this._timer = setTimeout(function () { return _this.value(val); }, this.debounce()); - }; - $mol_string.prototype.event_key_press = function (next) { + this._timer = setTimeout($.$mol_log_group(`${this}.event_change()`, () => { + this.value(next.target.value); + }), this.debounce()); + } + event_key_press(next) { if (!next) return; - if (next.keyCode === $.$mol_keyboard_code.enter) { - this.value(next.target.value.trim()); + if (next.keyCode === 13) { + this.value(next.target.value); } - }; - $mol_string.prototype.disabled = function () { + } + disabled() { return !this.enabled(); - }; - return $mol_string; - }($.$mol_string)); + } + } $$.$mol_string = $mol_string; })($$ = $.$$ || ($.$$ = {})); })($ || ($ = {})); //string.view.js.map ; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __assign = (this && this.__assign) || Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; -}; +"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -1540,164 +1415,123 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, }; var $; (function ($) { - var $mol_button = (function (_super) { - __extends($mol_button, _super); - function $mol_button() { - return _super !== null && _super.apply(this, arguments) || this; - } - $mol_button.prototype.enabled = function () { + class $mol_button extends $.$mol_view { + enabled() { return true; - }; - $mol_button.prototype.minimal_height = function () { + } + minimal_height() { return 40; - }; - $mol_button.prototype.event = function () { - var _this = this; - return (__assign({}, _super.prototype.event.call(this), { "click": function (event) { return _this.event_activate(event); }, "keypress": function (event) { return _this.event_key_press(event); } })); - }; - $mol_button.prototype.event_activate = function (event, force) { - return this.event_click(event); - }; - $mol_button.prototype.event_click = function (event, force) { + } + click(event, force) { return (event !== void 0) ? event : null; - }; - $mol_button.prototype.event_key_press = function (event, force) { + } + event_click(event, force) { return (event !== void 0) ? event : null; - }; - $mol_button.prototype.attr = function () { - return (__assign({}, _super.prototype.attr.call(this), { "disabled": this.disabled(), "role": "button", "tabindex": this.tab_index(), "title": this.hint() })); - }; - $mol_button.prototype.disabled = function () { + } + event() { + return (Object.assign({}, super.event(), { "click": (event) => this.event_activate(event), "keypress": (event) => this.event_key_press(event) })); + } + event_activate(event, force) { + return (event !== void 0) ? event : null; + } + event_key_press(event, force) { + return (event !== void 0) ? event : null; + } + attr() { + return (Object.assign({}, super.attr(), { "disabled": this.disabled(), "role": "button", "tabindex": this.tab_index(), "title": this.hint() })); + } + disabled() { return false; - }; - $mol_button.prototype.tab_index = function () { + } + tab_index() { return 0; - }; - $mol_button.prototype.hint = function () { + } + hint() { return ""; - }; - $mol_button.prototype.sub = function () { + } + sub() { return [].concat(this.title()); - }; - __decorate([ - $.$mol_mem - ], $mol_button.prototype, "event_activate", null); - __decorate([ - $.$mol_mem - ], $mol_button.prototype, "event_click", null); - __decorate([ - $.$mol_mem - ], $mol_button.prototype, "event_key_press", null); - return $mol_button; - }($.$mol_view)); + } + } + __decorate([ + $.$mol_mem + ], $mol_button.prototype, "click", null); + __decorate([ + $.$mol_mem + ], $mol_button.prototype, "event_click", null); + __decorate([ + $.$mol_mem + ], $mol_button.prototype, "event_activate", null); + __decorate([ + $.$mol_mem + ], $mol_button.prototype, "event_key_press", null); $.$mol_button = $mol_button; })($ || ($ = {})); //button.view.tree.js.map ; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); +"use strict"; var $; (function ($) { var $$; (function ($$) { - var $mol_button = (function (_super) { - __extends($mol_button, _super); - function $mol_button() { - return _super !== null && _super.apply(this, arguments) || this; - } - $mol_button.prototype.disabled = function () { + class $mol_button extends $.$mol_button { + disabled() { return !this.enabled(); - }; - $mol_button.prototype.event_activate = function (next) { + } + event_activate(next) { if (!next) return; if (!this.enabled()) return; this.event_click(next); - }; - $mol_button.prototype.event_key_press = function (event) { - if (event.keyCode === $.$mol_keyboard_code.enter) { + this.click(next); + } + event_key_press(event) { + if (event.keyCode === 13) { return this.event_activate(event); } - }; - $mol_button.prototype.tab_index = function () { - return this.enabled() ? _super.prototype.tab_index.call(this) : null; - }; - return $mol_button; - }($.$mol_button)); + } + tab_index() { + return this.enabled() ? super.tab_index() : null; + } + } $$.$mol_button = $mol_button; })($$ = $.$$ || ($.$$ = {})); })($ || ($ = {})); //button.view.js.map ; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); +"use strict"; var $; (function ($) { - var $mol_button_typed = (function (_super) { - __extends($mol_button_typed, _super); - function $mol_button_typed() { - return _super !== null && _super.apply(this, arguments) || this; - } - return $mol_button_typed; - }($.$mol_button)); + class $mol_button_typed extends $.$mol_button { + } $.$mol_button_typed = $mol_button_typed; })($ || ($ = {})); (function ($) { - var $mol_button_major = (function (_super) { - __extends($mol_button_major, _super); - function $mol_button_major() { - return _super !== null && _super.apply(this, arguments) || this; - } - return $mol_button_major; - }($.$mol_button_typed)); + class $mol_button_major extends $.$mol_button_typed { + } $.$mol_button_major = $mol_button_major; })($ || ($ = {})); (function ($) { - var $mol_button_minor = (function (_super) { - __extends($mol_button_minor, _super); - function $mol_button_minor() { - return _super !== null && _super.apply(this, arguments) || this; - } - return $mol_button_minor; - }($.$mol_button_typed)); + class $mol_button_minor extends $.$mol_button_typed { + } $.$mol_button_minor = $mol_button_minor; })($ || ($ = {})); (function ($) { - var $mol_button_danger = (function (_super) { - __extends($mol_button_danger, _super); - function $mol_button_danger() { - return _super !== null && _super.apply(this, arguments) || this; - } - return $mol_button_danger; - }($.$mol_button_typed)); + class $mol_button_danger extends $.$mol_button_typed { + } $.$mol_button_danger = $mol_button_danger; })($ || ($ = {})); //button_types.view.tree.js.map ; +"use strict"; var $; (function ($) { function $mol_merge_dict(target, source) { - var result = {}; - for (var key in target) + let result = {}; + for (let key in target) result[key] = target[key]; - for (var key in source) + for (let key in source) result[key] = source[key]; return result; } @@ -1705,16 +1539,7 @@ var $; })($ || ($ = {})); //dict.js.map ; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); +"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -1723,97 +1548,80 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, }; var $; (function ($) { - var $mol_state_arg = (function (_super) { - __extends($mol_state_arg, _super); - function $mol_state_arg(prefix) { - if (prefix === void 0) { prefix = ''; } - var _this = _super.call(this) || this; - _this.prefix = prefix; - return _this; - } - $mol_state_arg.href = function (next, force) { + class $mol_state_arg extends $.$mol_object { + constructor(prefix = '') { + super(); + this.prefix = prefix; + } + static href(next, force) { if (next) - history.replaceState(history.state, $.$mol_dom_context.document.title, "" + next); + history.replaceState(history.state, $.$mol_dom_context.document.title, `${next}`); return window.location.search + window.location.hash; - }; - $mol_state_arg.dict = function (next) { + } + static dict(next) { var href = this.href(next && this.make_link(next)); var chunks = href.split(/[\/\?#&;]/g); var params = {}; - chunks.forEach(function (chunk) { + chunks.forEach(chunk => { if (!chunk) return; var vals = chunk.split('=').map(decodeURIComponent); params[vals.shift()] = vals.join('='); }); return params; - }; - $mol_state_arg.value = function (key, next) { - var nextDict = (next === void 0) ? void 0 : $.$mol_merge_dict(this.dict(), (_a = {}, _a[key] = next, _a)); - var next2 = this.dict(nextDict)[key]; + } + static value(key, next) { + const nextDict = (next === void 0) ? void 0 : $.$mol_merge_dict(this.dict(), { [key]: next }); + const next2 = this.dict(nextDict)[key]; return (next2 == null) ? null : next2; - var _a; - }; - $mol_state_arg.link = function (next) { + } + static link(next) { return this.make_link($.$mol_merge_dict(this.dict(), next)); - }; - $mol_state_arg.make_link = function (next) { - var chunks = []; - for (var key in next) { + } + static make_link(next) { + const chunks = []; + for (let key in next) { if (null == next[key]) continue; - chunks.push([key].concat(next[key] ? next[key] : []).map(encodeURIComponent).join('=')); + chunks.push([key].concat(next[key] ? next[key] : []).map(this.encode).join('=')); } - return '#' + chunks.join('/'); - }; - $mol_state_arg.prototype.value = function (key, next) { + return new URL('#' + chunks.join('/'), window.location.href).toString(); + } + static encode(str) { + return encodeURIComponent(str).replace(/\(/g, '%28').replace(/\)/g, '%29'); + } + value(key, next) { return $mol_state_arg.value(this.prefix + key, next); - }; - $mol_state_arg.prototype.sub = function (postfix) { + } + sub(postfix) { return new $mol_state_arg(this.prefix + postfix + '.'); - }; - $mol_state_arg.prototype.link = function (next) { + } + link(next) { var prefix = this.prefix; var dict = {}; for (var key in next) { dict[prefix + key] = next[key]; } return $mol_state_arg.link(dict); - }; - __decorate([ - $.$mol_mem - ], $mol_state_arg, "href", null); - __decorate([ - $.$mol_mem - ], $mol_state_arg, "dict", null); - __decorate([ - $.$mol_mem_key - ], $mol_state_arg, "value", null); - return $mol_state_arg; - }($.$mol_object)); + } + } + __decorate([ + $.$mol_mem + ], $mol_state_arg, "href", null); + __decorate([ + $.$mol_mem + ], $mol_state_arg, "dict", null); + __decorate([ + $.$mol_mem_key + ], $mol_state_arg, "value", null); $.$mol_state_arg = $mol_state_arg; - window.addEventListener('hashchange', function (event) { return $mol_state_arg.href(undefined, $.$mol_atom_force); }); + window.addEventListener('hashchange', $.$mol_log_group('$mol_state_arg hashchange', (event) => { + $mol_state_arg.href(undefined, $.$mol_atom_force_cache); + })); })($ || ($ = {})); //arg.web.js.map ; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __assign = (this && this.__assign) || Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; -}; +"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -1822,64 +1630,58 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, }; var $; (function ($) { - var $mol_link = (function (_super) { - __extends($mol_link, _super); - function $mol_link() { - return _super !== null && _super.apply(this, arguments) || this; - } - $mol_link.prototype.minimal_height = function () { + class $mol_link extends $.$mol_view { + minimal_height() { return 40; - }; - $mol_link.prototype.dom_name = function () { + } + dom_name() { return "a"; - }; - $mol_link.prototype.attr = function () { - return (__assign({}, _super.prototype.attr.call(this), { "href": this.uri(), "title": this.hint(), "target": this.target(), "mol_link_current": this.current() })); - }; - $mol_link.prototype.uri = function () { + } + attr() { + return (Object.assign({}, super.attr(), { "href": this.uri(), "title": this.hint(), "target": this.target(), "download": this.file_name(), "mol_link_current": this.current() })); + } + uri() { return ""; - }; - $mol_link.prototype.hint = function () { + } + hint() { return ""; - }; - $mol_link.prototype.target = function () { + } + target() { return "_self"; - }; - $mol_link.prototype.current = function () { + } + file_name() { + return ""; + } + current() { return false; - }; - $mol_link.prototype.sub = function () { + } + sub() { return [].concat(this.title()); - }; - $mol_link.prototype.arg = function () { + } + arg() { return ({}); - }; - $mol_link.prototype.event = function () { - var _this = this; - return (__assign({}, _super.prototype.event.call(this), { "click": function (val) { return _this.event_click(val); } })); - }; - $mol_link.prototype.event_click = function (val, force) { - return (val !== void 0) ? val : null; - }; - __decorate([ - $.$mol_mem - ], $mol_link.prototype, "event_click", null); - return $mol_link; - }($.$mol_view)); + } + event() { + return (Object.assign({}, super.event(), { "click": (event) => this.click(event) })); + } + click(event, force) { + return this.event_click(event); + } + event_click(event, force) { + return (event !== void 0) ? event : null; + } + } + __decorate([ + $.$mol_mem + ], $mol_link.prototype, "click", null); + __decorate([ + $.$mol_mem + ], $mol_link.prototype, "event_click", null); $.$mol_link = $mol_link; })($ || ($ = {})); //link.view.tree.js.map ; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); +"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -1890,49 +1692,29 @@ var $; (function ($) { var $$; (function ($$) { - var $mol_link = (function (_super) { - __extends($mol_link, _super); - function $mol_link() { - return _super !== null && _super.apply(this, arguments) || this; - } - $mol_link.prototype.uri = function () { + class $mol_link extends $.$mol_link { + uri() { return new $.$mol_state_arg(this.state_key()).link(this.arg()); - }; - $mol_link.prototype.current = function () { + } + current() { return this.uri() === $.$mol_state_arg.link({}); - }; - $mol_link.prototype.event_click = function (event) { - var _this = this; - setTimeout(function () { return _this.focused(false); }, 200); - }; - __decorate([ - $.$mol_mem - ], $mol_link.prototype, "uri", null); - return $mol_link; - }($.$mol_link)); + } + event_click(event) { + setTimeout($.$mol_log_group(`${this}.event_click()`, () => this.focused(false)), 200); + } + file_name() { + return null; + } + } + __decorate([ + $.$mol_mem + ], $mol_link.prototype, "uri", null); $$.$mol_link = $mol_link; })($$ = $.$$ || ($.$$ = {})); })($ || ($ = {})); //link.view.js.map ; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __assign = (this && this.__assign) || Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; -}; +"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -1941,97 +1723,60 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, }; var $; (function ($) { - var $mol_check = (function (_super) { - __extends($mol_check, _super); - function $mol_check() { - return _super !== null && _super.apply(this, arguments) || this; + class $mol_check extends $.$mol_button_typed { + attr() { + return (Object.assign({}, super.attr(), { "mol_check_checked": this.checked(), "aria-checked": this.checked(), "role": "checkbox" })); } - $mol_check.prototype.attr = function () { - return (__assign({}, _super.prototype.attr.call(this), { "mol_check_checked": this.checked(), "aria-checked": this.checked(), "role": "checkbox" })); - }; - $mol_check.prototype.checked = function (val, force) { + checked(val, force) { return (val !== void 0) ? val : false; - }; - $mol_check.prototype.sub = function () { + } + sub() { return [].concat(this.Icon(), this.label()); - }; - $mol_check.prototype.Icon = function () { + } + Icon() { return null; - }; - $mol_check.prototype.label = function () { + } + label() { return [].concat(this.Title()); - }; - $mol_check.prototype.Title = function () { - var _this = this; - return (function (obj) { - obj.sub = function () { return [].concat(_this.title()); }; + } + Title() { + return ((obj) => { + obj.sub = () => [].concat(this.title()); return obj; })(new this.$.$mol_view); - }; - $mol_check.prototype.title = function () { + } + title() { return ""; - }; - __decorate([ - $.$mol_mem - ], $mol_check.prototype, "checked", null); - __decorate([ - $.$mol_mem - ], $mol_check.prototype, "Title", null); - return $mol_check; - }($.$mol_button_typed)); + } + } + __decorate([ + $.$mol_mem + ], $mol_check.prototype, "checked", null); + __decorate([ + $.$mol_mem + ], $mol_check.prototype, "Title", null); $.$mol_check = $mol_check; })($ || ($ = {})); //check.view.tree.js.map ; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); +"use strict"; var $; (function ($) { var $$; (function ($$) { - var $mol_check = (function (_super) { - __extends($mol_check, _super); - function $mol_check() { - return _super !== null && _super.apply(this, arguments) || this; - } - $mol_check.prototype.event_click = function (next) { + class $mol_check extends $.$mol_check { + event_click(next) { this.checked(!this.checked()); if (next) next.preventDefault(); - }; - return $mol_check; - }($.$mol_check)); + } + } $$.$mol_check = $mol_check; })($$ = $.$$ || ($.$$ = {})); })($ || ($ = {})); //check.view.js.map ; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __assign = (this && this.__assign) || Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; -}; +"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -2040,82 +1785,78 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, }; var $; (function ($) { - var $mol_scroll = (function (_super) { - __extends($mol_scroll, _super); - function $mol_scroll() { - return _super !== null && _super.apply(this, arguments) || this; - } - $mol_scroll.prototype.minimal_height = function () { + class $mol_scroll extends $.$mol_view { + minimal_height() { return 0; - }; - $mol_scroll.prototype.field = function () { - return (__assign({}, _super.prototype.field.call(this), { "scrollTop": this.scroll_top(), "scrollLeft": this.scroll_left(), "scrollBottom": this.scroll_bottom(), "scrollRight": this.scroll_right() })); - }; - $mol_scroll.prototype.scroll_top = function (val, force) { + } + moving_hor(val, force) { + return (val !== void 0) ? val : false; + } + moving_vert(val, force) { + return (val !== void 0) ? val : false; + } + field() { + return (Object.assign({}, super.field(), { "scrollTop": this.scroll_top(), "scrollLeft": this.scroll_left(), "scrollBottom": this.scroll_bottom(), "scrollRight": this.scroll_right() })); + } + scroll_top(val, force) { return (val !== void 0) ? val : 0; - }; - $mol_scroll.prototype.scroll_left = function (val, force) { + } + scroll_left(val, force) { return (val !== void 0) ? val : 0; - }; - $mol_scroll.prototype.scroll_bottom = function (val, force) { + } + scroll_bottom(val, force) { return (val !== void 0) ? val : 0; - }; - $mol_scroll.prototype.scroll_right = function (val, force) { + } + scroll_right(val, force) { return (val !== void 0) ? val : 0; - }; - $mol_scroll.prototype.event_async = function () { - var _this = this; - return (__assign({}, _super.prototype.event_async.call(this), { "scroll": function (event) { return _this.event_scroll(event); } })); - }; - $mol_scroll.prototype.event_scroll = function (event, force) { + } + event_async() { + return (Object.assign({}, super.event_async(), { "scroll": (event) => this.event_scroll(event) })); + } + event_scroll(event, force) { return (event !== void 0) ? event : null; - }; - $mol_scroll.prototype.Strut = function () { - var _this = this; - return (function (obj) { - obj.style = function () { return ({ - "transform": _this.strut_transform(), - }); }; + } + Strut() { + return ((obj) => { + obj.style = () => ({ + "transform": this.strut_transform(), + }); return obj; })(new this.$.$mol_view); - }; - $mol_scroll.prototype.strut_transform = function () { + } + strut_transform() { return ""; - }; - __decorate([ - $.$mol_mem - ], $mol_scroll.prototype, "scroll_top", null); - __decorate([ - $.$mol_mem - ], $mol_scroll.prototype, "scroll_left", null); - __decorate([ - $.$mol_mem - ], $mol_scroll.prototype, "scroll_bottom", null); - __decorate([ - $.$mol_mem - ], $mol_scroll.prototype, "scroll_right", null); - __decorate([ - $.$mol_mem - ], $mol_scroll.prototype, "event_scroll", null); - __decorate([ - $.$mol_mem - ], $mol_scroll.prototype, "Strut", null); - return $mol_scroll; - }($.$mol_view)); + } + } + __decorate([ + $.$mol_mem + ], $mol_scroll.prototype, "moving_hor", null); + __decorate([ + $.$mol_mem + ], $mol_scroll.prototype, "moving_vert", null); + __decorate([ + $.$mol_mem + ], $mol_scroll.prototype, "scroll_top", null); + __decorate([ + $.$mol_mem + ], $mol_scroll.prototype, "scroll_left", null); + __decorate([ + $.$mol_mem + ], $mol_scroll.prototype, "scroll_bottom", null); + __decorate([ + $.$mol_mem + ], $mol_scroll.prototype, "scroll_right", null); + __decorate([ + $.$mol_mem + ], $mol_scroll.prototype, "event_scroll", null); + __decorate([ + $.$mol_mem + ], $mol_scroll.prototype, "Strut", null); $.$mol_scroll = $mol_scroll; })($ || ($ = {})); //scroll.view.tree.js.map ; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); +"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -2138,544 +1879,131 @@ var $; return false; } $$.$mol_scroll_moving = $mol_scroll_moving; - var $mol_scroll = (function (_super) { - __extends($mol_scroll, _super); - function $mol_scroll() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this._moving_task_timer = 0; - return _this; - } - $mol_scroll.prototype.scroll_bottom = function (next) { + function $mol_scroll_moving_vert() { + return false; + } + $$.$mol_scroll_moving_vert = $mol_scroll_moving_vert; + function $mol_scroll_moving_hor() { + return false; + } + $$.$mol_scroll_moving_hor = $mol_scroll_moving_hor; + class $mol_scroll extends $.$mol_scroll { + constructor() { + super(...arguments); + this._moving_task_timer = 0; + } + scroll_bottom(next) { return next || 0; - }; - $mol_scroll.prototype.scroll_right = function (next) { + } + scroll_right(next) { return next || 0; - }; - $mol_scroll.prototype.event_scroll = function (next) { - var _this = this; - this.moving(true); + } + event_scroll(next) { + this.moving_vert(this.scroll_top() !== this.dom_node().scrollTop); + this.moving_hor(this.scroll_left() !== this.dom_node().scrollLeft); this.moving_task_stop(); - new $.$mol_defer(function () { - var el = _this.dom_node(); - var top = Math.max(0, el.scrollTop); - var left = Math.max(0, el.scrollLeft); - _this.scroll_top(top); - _this.scroll_left(left); - _this.scroll_bottom(Math.max(0, el.scrollHeight - top - el.offsetHeight)); - _this.scroll_right(Math.max(0, el.scrollWidth - left - el.offsetWidth)); - }); - }; - $mol_scroll.prototype.event_repos = function (next) { - var _this = this; - new $.$mol_defer(function () { - var el = _this.dom_node(); - _this.scroll_bottom(Math.max(0, el.scrollHeight - _this.scroll_top() - el.offsetHeight)); - _this.scroll_right(Math.max(0, el.scrollWidth - _this.scroll_left() - el.offsetWidth)); + new $.$mol_defer($.$mol_log_group(`${this}.event_scroll()`, () => { + const el = this.dom_node(); + const top = Math.max(0, el.scrollTop); + const left = Math.max(0, el.scrollLeft); + this.scroll_top(top); + this.scroll_left(left); + this.scroll_bottom(Math.max(0, el.scrollHeight - top - el.offsetHeight)); + this.scroll_right(Math.max(0, el.scrollWidth - left - el.offsetWidth)); + })); + } + event_repos(next) { + new $.$mol_defer(() => { + const el = this.dom_node(); + this.scroll_bottom(Math.max(0, el.scrollHeight - this.scroll_top() - el.offsetHeight)); + this.scroll_right(Math.max(0, el.scrollWidth - this.scroll_left() - el.offsetWidth)); }); - }; - $mol_scroll.prototype.moving_task_stop = function () { - var _this = this; + } + moving_task_stop() { clearTimeout(this._moving_task_timer); - this._moving_task_timer = setTimeout(function () { return _this.moving(false); }, 50); - }; - $mol_scroll.prototype.moving = function (next) { - return next || false; - }; - $mol_scroll.prototype.context_sub = function () { - var _this = this; - var context = this.context(); - var subContext = Object.create(context); - subContext.$mol_view_visible_height = function () { - var sizeWin = $.$mol_window.size(); - var limit = context.$mol_view_visible_height(); - return _this.scroll_top() + Math.min(sizeWin.height, limit); + this._moving_task_timer = setTimeout($.$mol_log_group(`${this}.moving_task_stop()`, () => { + this.moving_vert(false); + this.moving_hor(false); + }), 50); + } + moving() { + return this.moving_hor() || this.moving_vert(); + } + context_sub() { + const context = this.context(); + const subContext = Object.create(context); + subContext.$mol_view_visible_height = () => { + const sizeWin = $.$mol_window.size(); + const limit = context.$mol_view_visible_height(); + return this.scroll_top() + Math.min(sizeWin.height, limit); }; - subContext.$mol_view_visible_width = function () { - var sizeWin = $.$mol_window.size(); - var limit = context.$mol_view_visible_width(); - return _this.scroll_left() + Math.min(sizeWin.width, limit); + subContext.$mol_view_visible_width = () => { + const sizeWin = $.$mol_window.size(); + const limit = context.$mol_view_visible_width(); + return this.scroll_left() + Math.min(sizeWin.width, limit); }; - subContext.$mol_scroll_top = function () { return _this.scroll_top(); }; - subContext.$mol_scroll_left = function () { return _this.scroll_left(); }; - subContext.$mol_scroll_moving = function () { return _this.moving(); }; + subContext.$mol_scroll_top = () => this.scroll_top(); + subContext.$mol_scroll_left = () => this.scroll_left(); + subContext.$mol_scroll_moving = () => this.moving(); + subContext.$mol_scroll_moving_vert = () => this.moving_vert(); + subContext.$mol_scroll_moving_hor = () => this.moving_hor(); return subContext; - }; - $mol_scroll.prototype.strut_transform = function () { - return "translate3d( 0 , " + this.content_height() + "px , 0 )"; - }; - $mol_scroll.prototype.sub_visible = function () { - var sub = [ - this.Strut() - ].concat(this.sub()); - var context = this.context_sub(); - sub.forEach(function (child) { + } + strut_transform() { + try { + return `translate3d( 0 , ${this.content_height()}px , 0 )`; + } + catch (error) { + return ''; + } + } + sub_visible() { + const sub = [ + this.Strut(), + ...(this.sub() || []), + ]; + const context = this.context_sub(); + sub.forEach(child => { if (child instanceof $.$mol_view) { - child.context(context); + child.$ = context; } }); return sub; - }; - __decorate([ - $.$mol_mem - ], $mol_scroll.prototype, "scroll_bottom", null); - __decorate([ - $.$mol_mem - ], $mol_scroll.prototype, "scroll_right", null); - __decorate([ - $.$mol_mem - ], $mol_scroll.prototype, "moving", null); - __decorate([ - $.$mol_mem - ], $mol_scroll.prototype, "context_sub", null); - return $mol_scroll; - }($.$mol_scroll)); - $$.$mol_scroll = $mol_scroll; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); -//scroll.view.js.map -; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var $; -(function ($) { - var $mol_state_local = (function (_super) { - __extends($mol_state_local, _super); - function $mol_state_local() { - return _super !== null && _super.apply(this, arguments) || this; - } - $mol_state_local.native = function () { - if (this['native()']) - return this['native()']; - check: try { - var native = $.$mol_dom_context.localStorage; - if (!native) - break check; - native.setItem('', ''); - native.removeItem(''); - return this['native()'] = native; - } - catch (error) { - console.warn(error); } - return this['native()'] = { - getItem: function (key) { - return this[':' + key]; - }, - setItem: function (key, value) { - this[':' + key] = value; - }, - removeItem: function (key) { - this[':' + key] = void 0; - } - }; - }; - $mol_state_local.value = function (key, next, force) { - if (next === void 0) - return JSON.parse(this.native().getItem(key) || 'null'); - if (next === null) - this.native().removeItem(key); - else - this.native().setItem(key, JSON.stringify(next)); - return next; - }; - $mol_state_local.prototype.prefix = function () { return ''; }; - $mol_state_local.prototype.value = function (key, next) { - return $mol_state_local.value(this.prefix() + '.' + key, next); - }; - __decorate([ - $.$mol_mem_key - ], $mol_state_local, "value", null); - return $mol_state_local; - }($.$mol_object)); - $.$mol_state_local = $mol_state_local; -})($ || ($ = {})); -//local.js.map -; -var $; -(function ($) { - window.addEventListener('storage', function (event) { - $.$mol_state_local.value(event.key, void 0, $.$mol_atom_force); - }); -})($ || ($ = {})); -//local.web.js.map -; -var $; -(function ($) { - function $mol_const(value) { - var getter = (function () { return value; }); - getter['()'] = value; - return getter; - } - $.$mol_const = $mol_const; -})($ || ($ = {})); -//const.js.map -; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var $; -(function ($) { - var $mol_http = (function (_super) { - __extends($mol_http, _super); - function $mol_http() { - return _super !== null && _super.apply(this, arguments) || this; - } - $mol_http.resource = function (uri) { - var resolver = $.$mol_dom_context.document.createElement('a'); - resolver.href = uri; - return this.resource_absolute(resolver.href); - }; - $mol_http.resource_absolute = function (uri) { - return $mol_http.make({ - uri: $.$mol_const(uri) - }); - }; - $mol_http.prototype.uri = function () { return ''; }; - $mol_http.prototype.method_get = function () { return 'Get'; }; - $mol_http.prototype.method_put = function () { return 'Put'; }; - $mol_http.prototype.credentials = function () { - return null; - }; - $mol_http.prototype.headers = function () { - return {}; - }; - $mol_http.prototype.request = function () { - var _this = this; - if (this['request()']) - return this['request()']; - var next = this['request()'] = new $.$mol_dom_context.XMLHttpRequest; - next.withCredentials = Boolean(this.credentials()); - next.onload = function (event) { - if ((next.status === 0) || (Math.floor(next.status / 100) === 2)) { - _this.response(next, $.$mol_atom_force); - } - else { - _this.response(new Error(next.statusText || next.responseText), $.$mol_atom_force); - } - }; - next.onerror = function (event) { - _this.response(event.error || new Error('Unknown HTTP error'), $.$mol_atom_force); - }; - return next; - }; - $mol_http.prototype.destructor = function () { - var native = this['request()']; - if (native) - native.abort(); - }; - $mol_http.prototype.response = function (next, force) { - var creds = this.credentials(); - var native = this.request(); - var method = (next === void 0) ? this.method_get() : this.method_put(); - var uri = this.uri(); - native.open(method, uri, true, creds && creds.login, creds && creds.password); - var headers = this.headers(); - for (var name_1 in headers) - native.setRequestHeader(name_1, headers[name_1]); - native.send.apply(native, next || []); - throw new $.$mol_atom_wait(method + " " + uri); - }; - $mol_http.prototype.text = function (next, force) { - return this.response(next, force).responseText; - }; - $mol_http.prototype.json = function (next, force) { - var next2 = next && JSON.stringify(next, null, '\t'); - return JSON.parse(this.text(next2, force)); - }; - __decorate([ - $.$mol_mem - ], $mol_http.prototype, "response", null); - __decorate([ - $.$mol_mem - ], $mol_http.prototype, "json", null); - __decorate([ - $.$mol_mem_key - ], $mol_http, "resource_absolute", null); - return $mol_http; - }($.$mol_object)); - $.$mol_http = $mol_http; -})($ || ($ = {})); -//http.js.map -; -var $; -(function ($) { - function $mol_deprecated(message) { - return function (host, field, descr) { - var value = descr.value; - descr.value = function $mol_deprecated_wrapper() { - console.warn(host.constructor + "::" + field + " is deprecated. " + message); - return value.apply(this, arguments); - }; - }; - } - $.$mol_deprecated = $mol_deprecated; -})($ || ($ = {})); -//deprecated.js.map -; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var $; -(function ($) { - var $mol_http_resource = (function (_super) { - __extends($mol_http_resource, _super); - function $mol_http_resource() { - return _super !== null && _super.apply(this, arguments) || this; } - $mol_http_resource.item = function (uri) { - return $.$mol_http.resource(uri); - }; - __decorate([ - $.$mol_deprecated('Use $mol_http.resource insted.') - ], $mol_http_resource, "item", null); - return $mol_http_resource; - }($.$mol_http)); - $.$mol_http_resource = $mol_http_resource; - var $mol_http_resource_json = (function () { - function $mol_http_resource_json() { - } - $mol_http_resource_json.item = function (uri) { - return $.$mol_http.resource(uri); - }; - __decorate([ - $.$mol_deprecated('Use $mol_http.resource insted.') - ], $mol_http_resource_json, "item", null); - return $mol_http_resource_json; - }()); - $.$mol_http_resource_json = $mol_http_resource_json; -})($ || ($ = {})); -//resource.js.map -; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var $; -(function ($) { - var $mol_file = (function (_super) { - __extends($mol_file, _super); - function $mol_file() { - return _super !== null && _super.apply(this, arguments) || this; - } - $mol_file.absolute = function (path) { - return $mol_file.make({ - path: $.$mol_const(path) - }); - }; - $mol_file.relative = function (path) { - var resolver = $.$mol_dom_context.document.createElement('a'); - resolver.href = path; - return this.absolute(resolver.href); - }; - $mol_file.prototype.path = function () { - return '.'; - }; - $mol_file.prototype.parent = function () { - return this.resolve('..'); - }; - $mol_file.prototype.name = function () { - return this.path().replace(/^.*\//, ''); - }; - $mol_file.prototype.ext = function () { - var match = /((?:\.\w+)+)$/.exec(this.path()); - return match && match[1].substring(1); - }; - $mol_file.prototype.content = function (next, force) { - return $.$mol_http.resource(this.path()).text(next); - }; - $mol_file.prototype.resolve = function (path) { - var res = this.path() + '/' + path; - while (true) { - var prev = res; - res = res.replace(/\/[^\/.]+\/\.\.\//, '/'); - if (prev === res) - break; - } - return this.constructor.absolute(res); - }; - $mol_file.prototype.relate = function (base) { - if (base === void 0) { base = this.constructor.relative('.'); } - throw new Error('Not implemented yet'); - }; __decorate([ $.$mol_mem - ], $mol_file.prototype, "content", null); - __decorate([ - $.$mol_mem_key - ], $mol_file, "absolute", null); - return $mol_file; - }($.$mol_object)); - $.$mol_file = $mol_file; -})($ || ($ = {})); -//file.web.js.map -; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var $; -(function ($) { - var $mol_locale = (function (_super) { - __extends($mol_locale, _super); - function $mol_locale() { - return _super !== null && _super.apply(this, arguments) || this; - } - $mol_locale.lang_default = function () { - return 'en'; - }; - $mol_locale.lang = function (next) { - return $.$mol_state_local.value('locale', next) || $.$mol_dom_context.navigator.language.replace(/-.*/, '') || this.lang_default(); - }; - $mol_locale.source = function (lang) { - return JSON.parse($.$mol_file.relative("-/web.locale=" + lang + ".json").content()); - }; - $mol_locale.texts = function (lang, next) { - if (next) - return next; - try { - return this.source(lang).valueOf(); - } - catch (error) { - var def = this.lang_default(); - if (lang === def) - throw error; - return this.source(def); - } - }; - $mol_locale.text = function (key) { - for (var _i = 0, _a = [this.lang(), 'en']; _i < _a.length; _i++) { - var lang = _a[_i]; - var text = this.texts(lang)[key]; - if (text) - return text; - console.warn("Not translated to \"" + lang + "\": " + key); - } - return "<" + key + ">"; - }; + ], $mol_scroll.prototype, "scroll_bottom", null); __decorate([ $.$mol_mem - ], $mol_locale, "lang_default", null); + ], $mol_scroll.prototype, "scroll_right", null); __decorate([ $.$mol_mem - ], $mol_locale, "lang", null); - __decorate([ - $.$mol_mem_key - ], $mol_locale, "source", null); - __decorate([ - $.$mol_mem_key - ], $mol_locale, "texts", null); - return $mol_locale; - }($.$mol_object)); - $.$mol_locale = $mol_locale; + ], $mol_scroll.prototype, "context_sub", null); + $$.$mol_scroll = $mol_scroll; + })($$ = $.$$ || ($.$$ = {})); })($ || ($ = {})); -//locale.js.map +//scroll.view.js.map ; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); +"use strict"; var $; (function ($) { - var $mol_list = (function (_super) { - __extends($mol_list, _super); - function $mol_list() { - return _super !== null && _super.apply(this, arguments) || this; - } - $mol_list.prototype.sub = function () { + class $mol_list extends $.$mol_view { + sub() { return this.rows(); - }; - $mol_list.prototype.rows = function () { + } + rows() { return []; - }; - $mol_list.prototype.Empty = function () { + } + Empty() { return null; - }; - return $mol_list; - }($.$mol_view)); + } + } $.$mol_list = $mol_list; })($ || ($ = {})); //list.view.tree.js.map ; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); +"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -2686,24 +2014,19 @@ var $; (function ($) { var $$; (function ($$) { - var $mol_list = (function (_super) { - __extends($mol_list, _super); - function $mol_list() { - return _super !== null && _super.apply(this, arguments) || this; - } - $mol_list.prototype.sub = function () { - var rows = this.rows(); + class $mol_list extends $.$mol_list { + sub() { + const rows = this.rows(); return (rows.length === 0) ? [this.Empty()] : rows; - }; - $mol_list.prototype.row_offsets = function () { + } + row_offsets() { var sub = this.sub(); if (!sub) return null; - var heightLimit = this.$.$mol_view_visible_height(); + let heightLimit = this.$.$mol_view_visible_height(); var offset = 0; var next = []; - for (var _i = 0, sub_1 = sub; _i < sub_1.length; _i++) { - var child = sub_1[_i]; + for (let child of sub) { next.push(offset); if (child instanceof $.$mol_view) { offset += child.minimal_height(); @@ -2712,105 +2035,72 @@ var $; break; } return next; - }; - $mol_list.prototype.row_context = function (index) { - var _this = this; - var context = this.context(); - var next = Object.create(context); - next.$mol_view_visible_height = function () { - var limit = context.$mol_view_visible_height(); - return limit - _this.row_offsets()[index]; + } + row_context(index) { + let context = this.context(); + let next = Object.create(context); + next.$mol_view_visible_height = () => { + const limit = context.$mol_view_visible_height(); + return limit - this.row_offsets()[index]; }; return next; - }; - $mol_list.prototype.sub_visible = function () { + } + sub_visible() { var sub = this.sub(); if (!sub) return sub; var limit = this.row_offsets().length; var next = []; - for (var i = 0; i < limit; ++i) { - var child = sub[i]; + for (let i = 0; i < limit; ++i) { + const child = sub[i]; if (child == null) continue; if (child instanceof $.$mol_view) { - child.context(this.row_context(i)); + child.$ = this.row_context(i); } next.push(child); } return next; - }; - $mol_list.prototype.minimal_height = function () { + } + minimal_height() { var height = 0; var sub = this.sub(); if (sub) - sub.forEach(function (child) { + sub.forEach(child => { if (child instanceof $.$mol_view) { height += child.minimal_height(); } }); return height; - }; - __decorate([ - $.$mol_mem - ], $mol_list.prototype, "row_offsets", null); - __decorate([ - $.$mol_mem_key - ], $mol_list.prototype, "row_context", null); - __decorate([ - $.$mol_mem - ], $mol_list.prototype, "sub_visible", null); - __decorate([ - $.$mol_mem - ], $mol_list.prototype, "minimal_height", null); - return $mol_list; - }($.$mol_list)); + } + } + __decorate([ + $.$mol_mem + ], $mol_list.prototype, "row_offsets", null); + __decorate([ + $.$mol_mem_key + ], $mol_list.prototype, "row_context", null); + __decorate([ + $.$mol_mem + ], $mol_list.prototype, "sub_visible", null); + __decorate([ + $.$mol_mem + ], $mol_list.prototype, "minimal_height", null); $$.$mol_list = $mol_list; })($$ = $.$$ || ($.$$ = {})); })($ || ($ = {})); //list.view.js.map ; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); +"use strict"; var $; (function ($) { - var $mol_bar = (function (_super) { - __extends($mol_bar, _super); - function $mol_bar() { - return _super !== null && _super.apply(this, arguments) || this; - } - return $mol_bar; - }($.$mol_view)); + class $mol_bar extends $.$mol_view { + } $.$mol_bar = $mol_bar; })($ || ($ = {})); //bar.view.tree.js.map ; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __assign = (this && this.__assign) || Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; -}; +"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -2819,380 +2109,403 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, }; var $; (function ($) { - var $mol_app_todomvc = (function (_super) { - __extends($mol_app_todomvc, _super); - function $mol_app_todomvc() { - return _super !== null && _super.apply(this, arguments) || this; - } - $mol_app_todomvc.prototype.title = function () { - return $.$mol_locale.text("$mol_app_todomvc_title"); - }; - $mol_app_todomvc.prototype.sub = function () { - return [].concat(this.Page()); - }; - $mol_app_todomvc.prototype.Page = function () { - var _this = this; - return (function (obj) { - obj.rows = function () { return [].concat(_this.Title(), _this.Panel()); }; - return obj; - })(new this.$.$mol_list); - }; - $mol_app_todomvc.prototype.Title = function () { - var _this = this; - return (function (obj) { - obj.minimal_height = function () { return 176; }; - obj.sub = function () { return [].concat(_this.title()); }; + class $mol_state_local extends $.$mol_object { + static native() { + if (this['native()']) + return this['native()']; + check: try { + const native = $.$mol_dom_context.localStorage; + if (!native) + break check; + native.setItem('', ''); + native.removeItem(''); + return this['native()'] = native; + } + catch (error) { + console.warn(error); + } + return this['native()'] = { + getItem(key) { + return this[':' + key]; + }, + setItem(key, value) { + this[':' + key] = value; + }, + removeItem(key) { + this[':' + key] = void 0; + } + }; + } + static value(key, next, force) { + if (next === void 0) + return JSON.parse(this.native().getItem(key) || 'null'); + if (next === null) + this.native().removeItem(key); + else + this.native().setItem(key, JSON.stringify(next)); + return next; + } + prefix() { return ''; } + value(key, next) { + return $mol_state_local.value(this.prefix() + '.' + key, next); + } + } + __decorate([ + $.$mol_mem_key + ], $mol_state_local, "value", null); + $.$mol_state_local = $mol_state_local; +})($ || ($ = {})); +//local.js.map +; +"use strict"; +var $; +(function ($) { + window.addEventListener('storage', event => { + $.$mol_state_local.value(event.key, void 0, $.$mol_atom_force_cache); + }); +})($ || ($ = {})); +//local.web.js.map +; +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var $; +(function ($) { + class $mol_app_todomvc extends $.$mol_scroll { + title() { + return "Todos"; + } + sub() { + return [].concat(this.Page()); + } + Page() { + return ((obj) => { + obj.rows = () => [].concat(this.Title(), this.Panel()); + return obj; + })(new this.$.$mol_list); + } + Title() { + return ((obj) => { + obj.minimal_height = () => 176; + obj.sub = () => [].concat(this.title()); return obj; })(new this.$.$mol_view); - }; - $mol_app_todomvc.prototype.Panel = function () { - var _this = this; - return (function (obj) { - obj.rows = function () { return _this.panels(); }; + } + Panel() { + return ((obj) => { + obj.rows = () => this.panels(); return obj; })(new this.$.$mol_list); - }; - $mol_app_todomvc.prototype.panels = function () { + } + panels() { return [].concat(this.Head(), this.List(), this.Foot()); - }; - $mol_app_todomvc.prototype.Head = function () { - var _this = this; - return (function (obj) { - obj.minimal_height = function () { return 64; }; - obj.sub = function () { return _this.Head_content(); }; + } + Head() { + return ((obj) => { + obj.minimal_height = () => 64; + obj.sub = () => this.Head_content(); return obj; })(new this.$.$mol_view); - }; - $mol_app_todomvc.prototype.Head_content = function () { + } + Head_content() { return [].concat(this.Head_complete(), this.Add()); - }; - $mol_app_todomvc.prototype.Head_complete = function () { - var _this = this; - return (function (obj) { - obj.enabled = function () { return _this.head_complete_enabled(); }; - obj.checked = function (val) { return _this.completed_all(val); }; - obj.title = function () { return "❯"; }; + } + Head_complete() { + return ((obj) => { + obj.enabled = () => this.head_complete_enabled(); + obj.checked = (val) => this.completed_all(val); + obj.title = () => "❯"; return obj; })(new this.$.$mol_check); - }; - $mol_app_todomvc.prototype.head_complete_enabled = function () { + } + head_complete_enabled() { return false; - }; - $mol_app_todomvc.prototype.completed_all = function (val, force) { + } + completed_all(val, force) { return (val !== void 0) ? val : false; - }; - $mol_app_todomvc.prototype.Add = function () { - var _this = this; - return (function (obj) { - obj.value = function (val) { return _this.task_title_new(val); }; - obj.event_done = function (event) { return _this.event_add(event); }; + } + Add() { + return ((obj) => { + obj.value = (val) => this.task_title_new(val); + obj.event_done = (event) => this.event_add(event); return obj; })(new this.$.$mol_app_todomvc_add); - }; - $mol_app_todomvc.prototype.task_title_new = function (val, force) { + } + task_title_new(val, force) { return (val !== void 0) ? val : ""; - }; - $mol_app_todomvc.prototype.event_add = function (event, force) { + } + event_add(event, force) { return (event !== void 0) ? event : null; - }; - $mol_app_todomvc.prototype.List = function () { - var _this = this; - return (function (obj) { - obj.rows = function () { return _this.task_rows(); }; + } + List() { + return ((obj) => { + obj.rows = () => this.task_rows(); return obj; })(new this.$.$mol_list); - }; - $mol_app_todomvc.prototype.task_rows = function () { + } + task_rows() { return []; - }; - $mol_app_todomvc.prototype.Foot = function () { - var _this = this; - return (function (obj) { - obj.sub = function () { return _this.foot_content(); }; + } + Foot() { + return ((obj) => { + obj.sub = () => this.foot_content(); return obj; })(new this.$.$mol_view); - }; - $mol_app_todomvc.prototype.foot_content = function () { + } + foot_content() { return [].concat(this.Pending(), this.Filter(), this.Sweep()); - }; - $mol_app_todomvc.prototype.Pending = function () { - var _this = this; - return (function (obj) { - obj.sub = function () { return [].concat(_this.pending_message()); }; + } + Pending() { + return ((obj) => { + obj.sub = () => [].concat(this.pending_message()); return obj; })(new this.$.$mol_view); - }; - $mol_app_todomvc.prototype.pending_message = function () { - return $.$mol_locale.text("$mol_app_todomvc_pending_message"); - }; - $mol_app_todomvc.prototype.Filter = function () { - var _this = this; - return (function (obj) { - obj.sub = function () { return _this.filterOptions(); }; + } + pending_message() { + return "0 items left "; + } + Filter() { + return ((obj) => { + obj.sub = () => this.filterOptions(); return obj; })(new this.$.$mol_bar); - }; - $mol_app_todomvc.prototype.filterOptions = function () { + } + filterOptions() { return [].concat(this.Filter_all(), this.Filter_active(), this.Filter_completed()); - }; - $mol_app_todomvc.prototype.Filter_all = function () { - var _this = this; - return (function (obj) { - obj.sub = function () { return [].concat(_this.filter_all_label()); }; - obj.arg = function () { return ({ + } + Filter_all() { + return ((obj) => { + obj.sub = () => [].concat(this.filter_all_label()); + obj.arg = () => ({ "completed": null, - }); }; + }); return obj; })(new this.$.$mol_link); - }; - $mol_app_todomvc.prototype.filter_all_label = function () { - return $.$mol_locale.text("$mol_app_todomvc_filter_all_label"); - }; - $mol_app_todomvc.prototype.Filter_active = function () { - var _this = this; - return (function (obj) { - obj.sub = function () { return [].concat(_this.filter_active_label()); }; - obj.arg = function () { return ({ + } + filter_all_label() { + return "All"; + } + Filter_active() { + return ((obj) => { + obj.sub = () => [].concat(this.filter_active_label()); + obj.arg = () => ({ "completed": "false", - }); }; + }); return obj; })(new this.$.$mol_link); - }; - $mol_app_todomvc.prototype.filter_active_label = function () { - return $.$mol_locale.text("$mol_app_todomvc_filter_active_label"); - }; - $mol_app_todomvc.prototype.Filter_completed = function () { - var _this = this; - return (function (obj) { - obj.sub = function () { return [].concat(_this.filter_completed_label()); }; - obj.arg = function () { return ({ + } + filter_active_label() { + return "Active"; + } + Filter_completed() { + return ((obj) => { + obj.sub = () => [].concat(this.filter_completed_label()); + obj.arg = () => ({ "completed": "true", - }); }; + }); return obj; })(new this.$.$mol_link); - }; - $mol_app_todomvc.prototype.filter_completed_label = function () { - return $.$mol_locale.text("$mol_app_todomvc_filter_completed_label"); - }; - $mol_app_todomvc.prototype.Sweep = function () { - var _this = this; - return (function (obj) { - obj.enabled = function () { return _this.sweep_enabled(); }; - obj.event_click = function (event) { return _this.event_sweep(event); }; - obj.sub = function () { return [].concat(_this.sweep_label()); }; + } + filter_completed_label() { + return "Completed"; + } + Sweep() { + return ((obj) => { + obj.enabled = () => this.sweep_enabled(); + obj.event_click = (event) => this.event_sweep(event); + obj.sub = () => [].concat(this.sweep_label()); return obj; })(new this.$.$mol_button_minor); - }; - $mol_app_todomvc.prototype.sweep_enabled = function () { + } + sweep_enabled() { return true; - }; - $mol_app_todomvc.prototype.event_sweep = function (event, force) { + } + event_sweep(event, force) { return (event !== void 0) ? event : null; - }; - $mol_app_todomvc.prototype.sweep_label = function () { - return $.$mol_locale.text("$mol_app_todomvc_sweep_label"); - }; - $mol_app_todomvc.prototype.Task_row = function (id) { - var _this = this; - return (function (obj) { - obj.completed = function (val) { return _this.task_completed(id, val); }; - obj.title = function (val) { return _this.task_title(id, val); }; - obj.event_drop = function (event) { return _this.event_task_drop(id, event); }; + } + sweep_label() { + return "Clear completed"; + } + Task_row(id) { + return ((obj) => { + obj.completed = (val) => this.task_completed(id, val); + obj.title = (val) => this.task_title(id, val); + obj.event_drop = (event) => this.event_task_drop(id, event); return obj; })(new this.$.$mol_app_todomvc_task_row); - }; - $mol_app_todomvc.prototype.task_completed = function (id, val, force) { + } + task_completed(id, val, force) { return (val !== void 0) ? val : false; - }; - $mol_app_todomvc.prototype.task_title = function (id, val, force) { + } + task_title(id, val, force) { return (val !== void 0) ? val : ""; - }; - $mol_app_todomvc.prototype.event_task_drop = function (id, event, force) { + } + event_task_drop(id, event, force) { return (event !== void 0) ? event : null; - }; - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Page", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Title", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Panel", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Head", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Head_complete", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "completed_all", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Add", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "task_title_new", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "event_add", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "List", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Foot", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Pending", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Filter", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Filter_all", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Filter_active", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Filter_completed", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Sweep", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "event_sweep", null); - __decorate([ - $.$mol_mem_key - ], $mol_app_todomvc.prototype, "Task_row", null); - __decorate([ - $.$mol_mem_key - ], $mol_app_todomvc.prototype, "task_completed", null); - __decorate([ - $.$mol_mem_key - ], $mol_app_todomvc.prototype, "task_title", null); - __decorate([ - $.$mol_mem_key - ], $mol_app_todomvc.prototype, "event_task_drop", null); - return $mol_app_todomvc; - }($.$mol_scroll)); + } + } + __decorate([ + $.$mol_mem + ], $mol_app_todomvc.prototype, "Page", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc.prototype, "Title", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc.prototype, "Panel", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc.prototype, "Head", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc.prototype, "Head_complete", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc.prototype, "completed_all", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc.prototype, "Add", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc.prototype, "task_title_new", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc.prototype, "event_add", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc.prototype, "List", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc.prototype, "Foot", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc.prototype, "Pending", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc.prototype, "Filter", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc.prototype, "Filter_all", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc.prototype, "Filter_active", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc.prototype, "Filter_completed", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc.prototype, "Sweep", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc.prototype, "event_sweep", null); + __decorate([ + $.$mol_mem_key + ], $mol_app_todomvc.prototype, "Task_row", null); + __decorate([ + $.$mol_mem_key + ], $mol_app_todomvc.prototype, "task_completed", null); + __decorate([ + $.$mol_mem_key + ], $mol_app_todomvc.prototype, "task_title", null); + __decorate([ + $.$mol_mem_key + ], $mol_app_todomvc.prototype, "event_task_drop", null); $.$mol_app_todomvc = $mol_app_todomvc; })($ || ($ = {})); (function ($) { - var $mol_app_todomvc_add = (function (_super) { - __extends($mol_app_todomvc_add, _super); - function $mol_app_todomvc_add() { - return _super !== null && _super.apply(this, arguments) || this; + class $mol_app_todomvc_add extends $.$mol_string { + hint() { + return "What needs to be done?"; } - $mol_app_todomvc_add.prototype.hint = function () { - return $.$mol_locale.text("$mol_app_todomvc_add_hint"); - }; - $mol_app_todomvc_add.prototype.event = function () { - var _this = this; - return (__assign({}, _super.prototype.event.call(this), { "keyup": function (event) { return _this.event_press(event); } })); - }; - $mol_app_todomvc_add.prototype.event_press = function (event, force) { + event() { + return (Object.assign({}, super.event(), { "keyup": (event) => this.event_press(event) })); + } + event_press(event, force) { return (event !== void 0) ? event : null; - }; - $mol_app_todomvc_add.prototype.event_done = function (event, force) { + } + event_done(event, force) { return (event !== void 0) ? event : null; - }; - __decorate([ - $.$mol_mem - ], $mol_app_todomvc_add.prototype, "event_press", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc_add.prototype, "event_done", null); - return $mol_app_todomvc_add; - }($.$mol_string)); + } + } + __decorate([ + $.$mol_mem + ], $mol_app_todomvc_add.prototype, "event_press", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc_add.prototype, "event_done", null); $.$mol_app_todomvc_add = $mol_app_todomvc_add; })($ || ($ = {})); (function ($) { - var $mol_app_todomvc_task_row = (function (_super) { - __extends($mol_app_todomvc_task_row, _super); - function $mol_app_todomvc_task_row() { - return _super !== null && _super.apply(this, arguments) || this; - } - $mol_app_todomvc_task_row.prototype.minimal_height = function () { + class $mol_app_todomvc_task_row extends $.$mol_view { + minimal_height() { return 64; - }; - $mol_app_todomvc_task_row.prototype.sub = function () { + } + sub() { return [].concat(this.Complete(), this.Title(), this.Drop()); - }; - $mol_app_todomvc_task_row.prototype.Complete = function () { - var _this = this; - return (function (obj) { - obj.checked = function (val) { return _this.completed(val); }; + } + Complete() { + return ((obj) => { + obj.checked = (val) => this.completed(val); return obj; })(new this.$.$mol_check); - }; - $mol_app_todomvc_task_row.prototype.completed = function (val, force) { + } + completed(val, force) { return (val !== void 0) ? val : false; - }; - $mol_app_todomvc_task_row.prototype.Title = function () { - var _this = this; - return (function (obj) { - obj.hint = function () { return _this.title_hint(); }; - obj.value = function (val) { return _this.title(val); }; + } + Title() { + return ((obj) => { + obj.hint = () => this.title_hint(); + obj.value = (val) => this.title(val); return obj; })(new this.$.$mol_string); - }; - $mol_app_todomvc_task_row.prototype.title_hint = function () { - return $.$mol_locale.text("$mol_app_todomvc_task_row_title_hint"); - }; - $mol_app_todomvc_task_row.prototype.title = function (val, force) { + } + title_hint() { + return "Task title"; + } + title(val, force) { return (val !== void 0) ? val : ""; - }; - $mol_app_todomvc_task_row.prototype.Drop = function () { - var _this = this; - return (function (obj) { - obj.sub = function () { return [].concat("✖"); }; - obj.event_click = function (event) { return _this.event_drop(event); }; + } + Drop() { + return ((obj) => { + obj.sub = () => [].concat("✖"); + obj.event_click = (event) => this.event_drop(event); return obj; })(new this.$.$mol_button_typed); - }; - $mol_app_todomvc_task_row.prototype.event_drop = function (event, force) { + } + event_drop(event, force) { return (event !== void 0) ? event : null; - }; - $mol_app_todomvc_task_row.prototype.attr = function () { - return (__assign({}, _super.prototype.attr.call(this), { "mol_app_todomvc_task_row_completed": this.completed() })); - }; - __decorate([ - $.$mol_mem - ], $mol_app_todomvc_task_row.prototype, "Complete", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc_task_row.prototype, "completed", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc_task_row.prototype, "Title", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc_task_row.prototype, "title", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc_task_row.prototype, "Drop", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc_task_row.prototype, "event_drop", null); - return $mol_app_todomvc_task_row; - }($.$mol_view)); + } + attr() { + return (Object.assign({}, super.attr(), { "mol_app_todomvc_task_row_completed": this.completed() })); + } + } + __decorate([ + $.$mol_mem + ], $mol_app_todomvc_task_row.prototype, "Complete", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc_task_row.prototype, "completed", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc_task_row.prototype, "Title", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc_task_row.prototype, "title", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc_task_row.prototype, "Drop", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc_task_row.prototype, "event_drop", null); $.$mol_app_todomvc_task_row = $mol_app_todomvc_task_row; })($ || ($ = {})); //todomvc.view.tree.js.map ; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); +"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -3203,40 +2516,30 @@ var $; (function ($) { var $$; (function ($$) { - var $mol_app_todomvc_add = (function (_super) { - __extends($mol_app_todomvc_add, _super); - function $mol_app_todomvc_add() { - return _super !== null && _super.apply(this, arguments) || this; - } - $mol_app_todomvc_add.prototype.event_press = function (next) { + class $mol_app_todomvc_add extends $.$mol_app_todomvc_add { + event_press(next) { switch (next.keyCode) { - case $.$mol_keyboard_code.enter: return this.event_done(next); + case 13: return this.event_done(next); } - }; - return $mol_app_todomvc_add; - }($.$mol_app_todomvc_add)); - $$.$mol_app_todomvc_add = $mol_app_todomvc_add; - var $mol_app_todomvc = (function (_super) { - __extends($mol_app_todomvc, _super); - function $mol_app_todomvc() { - return _super !== null && _super.apply(this, arguments) || this; } - $mol_app_todomvc.prototype.task_ids = function (next) { + } + $$.$mol_app_todomvc_add = $mol_app_todomvc_add; + class $mol_app_todomvc extends $.$mol_app_todomvc { + task_ids(next) { return $.$mol_state_local.value(this.state_key('mol-todos'), next) || []; - }; - $mol_app_todomvc.prototype.arg_completed = function () { + } + arg_completed() { return $.$mol_state_arg.value(this.state_key('completed')); - }; - $mol_app_todomvc.prototype.groups_completed = function () { + } + groups_completed() { var groups = { 'true': [], 'false': [] }; - for (var _i = 0, _a = this.task_ids(); _i < _a.length; _i++) { - var id = _a[_i]; + for (let id of this.task_ids()) { var task = this.task(id); groups[String(task.completed)].push(id); } return groups; - }; - $mol_app_todomvc.prototype.tasks_filtered = function () { + } + task_ids_filtered() { var completed = this.arg_completed(); if (completed) { return this.groups_completed()[completed] || []; @@ -3244,229 +2547,105 @@ var $; else { return this.task_ids(); } - }; - $mol_app_todomvc.prototype.completed_all = function (next) { + } + completed_all(next) { if (next === void 0) return this.groups_completed()['false'].length === 0; - for (var _i = 0, _a = this.groups_completed()[String(!next)]; _i < _a.length; _i++) { - var id = _a[_i]; + for (let id of this.groups_completed()[String(!next)]) { var task = this.task(id); this.task(id, { title: task.title, completed: next }); } return next; - }; - $mol_app_todomvc.prototype.head_complete_enabled = function () { + } + head_complete_enabled() { return this.task_ids().length > 0; - }; - $mol_app_todomvc.prototype.pending_message = function () { - var count = this.groups_completed()['false'].length; - return (count === 1) ? '1 item left' : count + " items left"; - }; - $mol_app_todomvc.prototype.new_id = function () { - return Math.max(1, 1 + Math.max.apply(Math, this.task_ids())); - }; - $mol_app_todomvc.prototype.event_add = function (next) { + } + pending_message() { + let count = this.groups_completed()['false'].length; + return (count === 1) ? '1 item left' : `${count} items left`; + } + new_id() { + return Math.max(1, 1 + Math.max(...this.task_ids())); + } + event_add(next) { var title = this.task_title_new(); if (!title) return; var id = this.new_id(); - var task = { completed: false, title: title }; + var task = { completed: false, title }; this.task(id, task); this.task_ids(this.task_ids().concat(id)); this.task_title_new(''); - }; - $mol_app_todomvc.prototype.task_rows = function () { - var _this = this; - return this.tasks_filtered().map(function (id, index) { return _this.Task_row(index); }); - }; - $mol_app_todomvc.prototype.task = function (id, next) { - var key = this.state_key("mol-todos-" + id); + } + task_rows() { + return this.task_ids_filtered().map(id => this.Task_row(id)); + } + task(id, next) { + const key = this.state_key(`mol-todos-${id}`); if (next === void 0) { return $.$mol_state_local.value(key) || { title: '', completed: false }; } $.$mol_state_local.value(key, next); return next || void 0; - }; - $mol_app_todomvc.prototype.task_completed = function (index, next) { - var id = this.tasks_filtered()[index]; - if (next === void 0) - return this.task(id).completed; - this.task(id, $.$mol_merge_dict(this.task(id), { completed: next })); - return next; - }; - $mol_app_todomvc.prototype.task_title = function (index, next) { - var id = this.tasks_filtered()[index]; - if (next === void 0) - return this.task(id).title; - this.task(id, $.$mol_merge_dict(this.task(id), { title: next })); - return next; - }; - $mol_app_todomvc.prototype.event_task_drop = function (index, next) { - var id = this.tasks_filtered()[index]; + } + task_completed(id, next) { + return this.task(id, next === undefined ? undefined : Object.assign({}, this.task(id), { completed: next })).completed; + } + task_title(id, next) { + return this.task(id, next === undefined ? undefined : Object.assign({}, this.task(id), { title: next })).title; + } + event_task_drop(id, next) { this.task(id, null); - this.task_ids(this.task_ids().filter(function (id2) { return id !== id2; })); - }; - $mol_app_todomvc.prototype.event_sweep = function () { - var _this = this; - this.task_ids(this.task_ids().filter(function (id) { - if (!_this.task(id).completed) + this.task_ids(this.task_ids().filter(id2 => id !== id2)); + } + event_sweep() { + this.task_ids(this.task_ids().filter(id => { + if (!this.task(id).completed) return true; - _this.task(id, null); + this.task(id, null); return false; })); - }; - $mol_app_todomvc.prototype.panels = function () { + } + panels() { return [ this.Head(), - this.List() - ].concat(this.foot_visible() ? [this.Foot()] : []); - }; - $mol_app_todomvc.prototype.foot_visible = function () { + this.List(), + ...this.foot_visible() ? [this.Foot()] : [], + ]; + } + foot_visible() { return this.task_ids().length > 0; - }; - $mol_app_todomvc.prototype.sweep_enabled = function () { + } + sweep_enabled() { return this.groups_completed()['true'].length > 0; - }; - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "groups_completed", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "tasks_filtered", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "completed_all", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "pending_message", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "new_id", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "task_rows", null); - __decorate([ - $.$mol_mem_key - ], $mol_app_todomvc.prototype, "task_completed", null); - __decorate([ - $.$mol_mem_key - ], $mol_app_todomvc.prototype, "task_title", null); - return $mol_app_todomvc; - }($.$mol_app_todomvc)); - $$.$mol_app_todomvc = $mol_app_todomvc; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); -//todomvc.view.js.map -; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var $; -(function ($) { - var $mol_demo_large = (function (_super) { - __extends($mol_demo_large, _super); - function $mol_demo_large() { - return _super !== null && _super.apply(this, arguments) || this; - } - return $mol_demo_large; - }($.$mol_view)); - $.$mol_demo_large = $mol_demo_large; -})($ || ($ = {})); -//large.view.tree.js.map -; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var $; -(function ($) { - var $$; - (function ($$) { - var $mol_demo_large = (function (_super) { - __extends($mol_demo_large, _super); - function $mol_demo_large() { - return _super !== null && _super.apply(this, arguments) || this; - } - $mol_demo_large.prototype.context_sub = function () { - var _this = this; - var context = this.context(); - var subContext = Object.create(context); - subContext.$mol_view_visible_height = function () { return _this.minimal_height(); }; - subContext.$mol_view_visible_width = function () { return _this.minimal_width(); }; - return subContext; - }; - $mol_demo_large.prototype.minimal_height = function () { - return $.$mol_window.size().height * .75; - }; - $mol_demo_large.prototype.minimal_width = function () { - return this.$.$mol_window.size().width; - }; - __decorate([ - $.$mol_mem - ], $mol_demo_large.prototype, "context_sub", null); - return $mol_demo_large; - }($.$mol_demo_large)); - $$.$mol_demo_large = $mol_demo_large; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); -//large.view.js.map -; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var $; -(function ($) { - var $mol_app_todomvc_demo = (function (_super) { - __extends($mol_app_todomvc_demo, _super); - function $mol_app_todomvc_demo() { - return _super !== null && _super.apply(this, arguments) || this; + } } - $mol_app_todomvc_demo.prototype.sub = function () { - return [].concat(this.App()); - }; - $mol_app_todomvc_demo.prototype.App = function () { - return (function (obj) { - return obj; - })(new this.$.$mol_app_todomvc); - }; __decorate([ $.$mol_mem - ], $mol_app_todomvc_demo.prototype, "App", null); - return $mol_app_todomvc_demo; - }($.$mol_demo_large)); - $.$mol_app_todomvc_demo = $mol_app_todomvc_demo; + ], $mol_app_todomvc.prototype, "groups_completed", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc.prototype, "task_ids_filtered", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc.prototype, "completed_all", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc.prototype, "pending_message", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc.prototype, "new_id", null); + __decorate([ + $.$mol_mem + ], $mol_app_todomvc.prototype, "task_rows", null); + __decorate([ + $.$mol_mem_key + ], $mol_app_todomvc.prototype, "task_completed", null); + __decorate([ + $.$mol_mem_key + ], $mol_app_todomvc.prototype, "task_title", null); + $$.$mol_app_todomvc = $mol_app_todomvc; + })($$ = $.$$ || ($.$$ = {})); })($ || ($ = {})); -//demo.view.tree.js.map +//todomvc.view.js.map //# sourceMappingURL=web.js.map \ No newline at end of file diff --git a/examples/mol/-/web.js.map b/examples/mol/-/web.js.map index 5c53156771..ca0db5a276 100644 --- a/examples/mol/-/web.js.map +++ b/examples/mol/-/web.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../mol.jam.js","mol.ts","../../../func/func.ts","../../../object/object.ts","../../../log/log.web.ts","../../../defer/defer.ts","../../../state/stack/stack.ts","../../../atom/atom.ie.web.js","../../../atom/atom.ts","../../../mem/mem.ts","../../../window/window.web.ts","../../../dom/context/context.ts","../../../dom/context/context.web.ts","../../../dom/render/render.ts","../../../view/view.ts","../../../view/view.web.ts","../../../view/selection/selection.ts","../../../view/selection/selection.web.ts","../../../keyboard/code.ts","../../../string/-view.tree/string.view.tree.ts","../../../string/string.view.ts","../../../button/-view.tree/button.view.tree.ts","../../../button/button.view.ts","../../../button/-view.tree/button_types.view.tree.ts","../../../merge/dict/dict.ts","../../../state/arg/arg.web.ts","../../../link/-view.tree/link.view.tree.ts","../../../link/link.view.ts","../../../check/-view.tree/check.view.tree.ts","../../../check/check.view.ts","../../../scroll/-view.tree/scroll.view.tree.ts","../../../scroll/scroll.view.ts","../../../state/local/local.ts","../../../state/local/local.web.ts","../../../const/const.ts","../../../http/http.ts","../../../deprecated/deprecated.ts","../../../http/resource/resource.ts","../../../file/file.web.ts","../../../locale/locale.ts","../../../list/-view.tree/list.view.tree.ts","../../../list/list.view.ts","../../../bar/-view.tree/bar.view.tree.ts","../-view.tree/todomvc.view.tree.ts","../todomvc.view.ts","../../../demo/large/-view.tree/large.view.tree.ts","../../../demo/large/large.view.ts","../demo/-view.tree/demo.view.tree.ts"],"names":[],"mappings":"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","file":"web.js","sourcesContent":[null,"declare class WeakMap< Key , Value > {\n\tdelete( key : Key ) : boolean\n\tget( key : Key ) : Value\n\thas( key : Key ) : boolean\n\tset( key : Key , value : Value ) : Map< Key , Value >\n}\n\ndeclare class Map< Key , Value > {\n\tclear(): void\n\tdelete( key : Key ) : boolean\n\tforEach< Context = any >( handler : ( this : Context , value : Value , key : Key , map : Map< Key , Value > ) => void , context? : Context ) : void\n\tget( key : Key ) : Value\n\thas( key : Key ) : boolean\n\tset( key : Key , value : Value ) : Map< Key , Value >\n\tsize : number\n}\n\ndeclare class Set< Value > {\n\tadd( value : Value ) : Set< Value >\n\tclear() : void\n\tdelete( value : Value ) : boolean\n\tforEach< Context = any >( handler : ( this : Context , value : Value , key : Value , map : Set< Value > ) => void , context? : Context ) : void\n\thas( value : Value ) : boolean\n\tsize : number\n}\n","interface Function {\n\tname : string\n}\n\nnamespace $ {\n\t\n\texport var $mol_func_name_dict = new WeakMap< Function , string >()\n\n\texport function $mol_func_name( func : Function ) : string {\n\t\tlet name = $mol_func_name_dict.get( func )\n\t\tif( name != null ) return name\n\t\t\n\t\tname = func.name || Function.prototype.toString.call( func ).match( /^function ([a-z0-9_$]*)/ )[ 1 ]\n\t\t$mol_func_name_dict.set( func , name )\n\t\t\n\t\treturn name\n\t}\n\n}\n","namespace $ {\n\t\n\texport class $mol_object {\n\t\t\n\t\tpublic static make< Instance >( this : { new() : Instance } , config : Partial< Instance > ) : Instance {\n\t\t\tconst instance = new this\n\t\t\tfor( let key in config ) instance[ key ] = config[ key ]\n\t\t\treturn instance\n\t\t}\n\t\t\n\t\tstatic toString() : string {\n\t\t\treturn $mol_func_name( this )\n\t\t}\n\t\t\n\t\t'object_owner()' : any\n\t\tobject_owner( next? : any ) {\n\t\t\treturn this[ 'object_owner()' ] || ( this[ 'object_owner()' ] = next )\n\t\t}\n\t\t\n\t\t'object_host()' : any\n\t\tobject_host( next? : any ) {\n\t\t\treturn this[ 'object_host()' ] || ( this[ 'object_host()' ] = next )\n\t\t}\n\t\t\n\t\t'object_field()' : string\n\t\tobject_field( next? : string ) {\n\t\t\treturn this[ 'object_field()' ] || ( this[ 'object_field()' ] = next ) || ''\n\t\t}\n\t\t\n\t\t'object_id()' : string\n\t\tobject_id( next? : string ) {\n\t\t\treturn this[ 'object_id()' ] || ( this[ 'object_id()' ] = next ) || ''\n\t\t}\n\n\t\ttoString() {\n\t\t\treturn this.object_id()\n\t\t}\n\t\t\n\t\ttoJSON() {\n\t\t\treturn this.toString()\n\t\t}\n\t\t\n\t\tdestructor() { }\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_log( path : any , ... values : any[] ) {\n\t\t\n\t\tvar filter = $mol_log.filter()\n\t\tif( filter == null ) return\n\t\t\n\t\tpath = String( path )\n\t\tif( path.indexOf( filter ) === -1 ) return\n\t\t\n\t\tconsole.debug( path , ... values )\n\n\t\tvar debug = $mol_log.debug()\n\t\tif( debug == null ) return\n\t\tif( path.indexOf( debug ) === -1 ) return\n\t\t\n\t\tdebugger\n\t}\n\t\n\texport namespace $mol_log {\n\t\t\n\t\tvar _filter : string\n\t\t\n\t\texport function filter( next? : string ) {\n\t\t\tif( next !== void 0 ) {\n\t\t\t\tif( next == null ) {\n\t\t\t\t\tsessionStorage.removeItem( '$mol_log.filter()' )\n\t\t\t\t} else {\n\t\t\t\t\tsessionStorage.setItem( '$mol_log.filter()' , next )\n\t\t\t\t}\n\t\t\t\t_filter = next\n\t\t\t}\n\t\t\t\n\t\t\tif( _filter !== void 0 ) return _filter\n\t\t\t\n\t\t\treturn _filter = sessionStorage.getItem( '$mol_log.filter()' )\n\t\t}\n\n\t\tvar _debug : string\n\n\t\texport function debug( next = _debug ) {\n\t\t\treturn _debug = next\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_defer extends $mol_object {\n\t\t\n\t\tconstructor( public run : ()=> void ) {\n\t\t\tsuper()\n\t\t\t$mol_defer.add( this )\n\t\t}\n\t\t\n\t\tdestructor() {\n\t\t\t$mol_defer.drop( this )\n\t\t}\n\t\t\n\t\tstatic all : $mol_defer[] = []\n\t\tstatic timer = 0\n\t\t\n\t\tstatic scheduleNative : ( handler : ()=> void ) => number = ( typeof requestAnimationFrame == 'function' )\n\t\t\t? handler => requestAnimationFrame( handler )\n\t\t\t: handler => setTimeout( handler , 16 )\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.timer ) return\n\t\t\t\n\t\t\tthis.timer = this.scheduleNative(\n\t\t\t\t()=> {\n\t\t\t\t\tthis.timer = 0\n\t\t\t\t\tthis.run()\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t\t\n\t\tstatic unschedule() {\n\t\t\tif( !this.timer ) return\n\t\t\t\n\t\t\tcancelAnimationFrame( this.timer )\n\t\t\tthis.timer = 0\n\t\t}\n\t\t\n\t\tstatic add( defer : $mol_defer ) {\n\t\t\tthis.all.push( defer )\n\t\t\tthis.schedule()\n\t\t}\n\t\t\n\t\tstatic drop( defer : $mol_defer ) {\n\t\t\tvar index = this.all.indexOf( defer )\n\t\t\tif( index >= 0 ) this.all.splice( index , 1 )\n\t\t}\n\t\t\n\t\tstatic run() {\n\t\t\tif( this.all.length === 0 ) return\n\t\t\tthis.schedule()\n\t\t\tfor( var defer : $mol_defer ; defer = this.all.pop() ; ) defer.run()\n\t\t\t//this.unschedule()\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\t/// Global storage of temporary state\n\texport var $mol_state_stack = new Map< string , any >()\n\t\n}\n",null,"declare var Proxy : any\n\nnamespace $ {\n\t\n\texport enum $mol_atom_status {\n\t\tobsolete = 'obsolete' ,\n\t\tchecking = 'checking' ,\n\t\tpulling = 'pulling' ,\n\t\tactual = 'actual' ,\n\t}\n\t\n\texport class $mol_atom< Value = null > extends $mol_object {\n\t\t\n\t\tmasters : Set< $mol_atom > | null = null\n\t\tslaves : Set< $mol_atom > | null = null\n\t\t\n\t\tstatus = $mol_atom_status.obsolete\n\t\t\n\t\treadonly handler : ( next? : Value|Error , force? : $mol_atom_force )=> Value|void\n\n\t\t'value()' : Value|Error\n\t\t\n\t\tconstructor(\n\t\t\tid : string ,\n\t\t\thandler : ( next? : Value , force? : $mol_atom_force )=> Value|void = ()=> undefined,\n\t\t) {\n\t\t\tsuper()\n\t\t\t\n\t\t\tthis.object_id( id )\n\t\t\tthis.handler = handler\n\t\t}\n\t\t\n\t\tdestructor() {\n\t\t\tthis.unlink()\n\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\n\t\t\tconst value = this['value()']\n\t\t\t\n\t\t\tif( value instanceof $mol_object ) {\n\t\t\t\tif( value.object_owner() === this ) value.destructor();\n\t\t\t}\n\n\t\t\tthis['value()'] = undefined\n\t\t}\n\t\t\n\t\tunlink() {\n\t\t\tthis.disobey_all()\n\t\t\tthis.check_slaves()\n\t\t}\n\t\t\n\t\tget( force? : $mol_atom_force ) {\n\t\t\tif( this.status === $mol_atom_status.pulling ) {\n\t\t\t\tthrow new Error( `Cyclic atom dependency of ${ this }` )\n\t\t\t}\n\t\t\t\n\t\t\tthis.actualize( force )\n\t\t\t\n\t\t\tconst slave = $mol_atom.stack[0]\n\t\t\tif( slave ) {\n\t\t\t\tthis.lead( slave )\n\t\t\t\tslave.obey( this )\n\t\t\t}\n\t\t\t\n\t\t\tconst value = this['value()'] as Value\n\t\t\t\n\t\t\tif( typeof Proxy !== 'function' && value instanceof Error ) {\n\t\t\t\tthrow value\n\t\t\t}\n\t\t\t\n\t\t\treturn value as Value\n\t\t}\n\t\t\n\t\tactualize( force? : $mol_atom_force ) {\n\t\t\t\n\t\t\t//this.log([ 'actualize' ])\n\t\t\t\n\t\t\tif( !force && this.status === $mol_atom_status.actual ) return\n\t\t\t\n\t\t\tconst slave = $mol_atom.stack[0]\n\t\t\t$mol_atom.stack[0] = this\n\t\t\t\n\t\t\tif( !force && this.status === $mol_atom_status.checking ) {\n\t\t\t\t\n\t\t\t\tthis.masters!.forEach(\n\t\t\t\t\tmaster => {\n\t\t\t\t\t\tif( this.status !== $mol_atom_status.checking ) return\n\t\t\t\t\t\tmaster.actualize()\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tif( this.status === $mol_atom_status.checking ) {\n\t\t\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif( force || this.status !== $mol_atom_status.actual ) {\n\t\t\t\t\n\t\t\t\tconst oldMasters = this.masters\n\t\t\t\tthis.masters = null\n\t\t\t\t\n\t\t\t\tif( oldMasters ) oldMasters.forEach(\n\t\t\t\t\tmaster => {\n\t\t\t\t\t\tmaster.dislead( this )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tthis.status = $mol_atom_status.pulling\n\t\t\t\tconst next = this.pull( force )\n\t\t\t\t\n\t\t\t\tthis.push( next )\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t$mol_atom.stack[0] = slave\n\t\t}\n\t\t\n\t\tpull( force? : $mol_atom_force ) {\n\t\t\ttry {\n\t\t\t\treturn this.handler( this._next , force )\n\t\t\t} catch( error ) {\n\t\t\t\tif( error[ '$mol_atom_catched' ] ) return error\n\t\t\t\tif( error instanceof $mol_atom_wait ) return error\n\t\t\t\t\n\t\t\t\tconsole.error( error.stack || error )\n\t\t\t\t\n\t\t\t\tif(!( error instanceof Error )) {\n\t\t\t\t\terror = new Error( error.stack || error )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\terror['$mol_atom_catched'] = true\n\t\t\t\treturn error\n\t\t\t}\n\t\t}\n\t\t\n\t\t_next? : Value|Error\n\t\t\n\t\tset( next : Value ) : Value {\n\t\t\tconst next_normal = this.normalize( next , this._next )\n\t\t\tif( next_normal === this._next ) return this.get()\n\t\t\tif( next_normal === this['value()'] ) return this.get()\n\t\t\t\n\t\t\tthis._next = next_normal\n\t\t\tthis.obsolete()\n\t\t\treturn this.get()\n\t\t}\n\t\t\n\t\tnormalize( next : Value , prev? : Value|Error ) : Value {\n\t\t\tif( next === prev ) return next\n\t\t\t\n\t\t\tif( ( next instanceof Array ) && ( prev instanceof Array ) && ( next.length === prev.length ) ) {\n\t\t\t\tfor( let i = 0 ; i < next.length ; ++i ) {\n\t\t\t\t\tif( next[ i ] !== prev[ i ] ) return next as any\n\t\t\t\t}\n\t\t\t\treturn prev as any\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tpush( next_raw? : Value|Error ) : Value {\n\t\t\tthis._next = undefined\n\t\t\t\n\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\n\t\t\tconst prev = this['value()']\n\t\t\t\n\t\t\tif( next_raw === undefined ) return prev as Value\n\t\t\t\n\t\t\tlet next = ( next_raw instanceof Error ) ? next_raw : this.normalize( next_raw , prev )\n\t\t\t\n\t\t\tif( next === prev ) return prev as Value\n\t\t\t\n\t\t\tif( prev instanceof $mol_object ) {\n\t\t\t\tif( prev.object_owner() === this ) prev.destructor()\n\t\t\t}\n\t\t\t\n\t\t\tif( next instanceof $mol_object ) {\n\t\t\t\tnext.object_owner( this )\n\t\t\t}\n\t\t\t\n\t\t\tif(( typeof Proxy === 'function' )&&( next instanceof Error )) {\n\t\t\t\tnext = new Proxy( next , {\n\t\t\t\t\tget( target : Error ) {\n\t\t\t\t\t\tthrow target.valueOf()\n\t\t\t\t\t} ,\n\t\t\t\t\townKeys( target : Error ) {\n\t\t\t\t\t\tthrow target.valueOf()\n\t\t\t\t\t} ,\n\t\t\t\t} )\n\t\t\t}\n\t\t\t\n\t\t\tthis['value()'] = next\n\t\t\t$mol_log( this , prev , '➔' , next )\n\t\t\t\n\t\t\tthis.obsolete_slaves()\n\t\t\t\n\t\t\treturn next as Value\n\t\t}\n\t\t\n\t\tobsolete_slaves() {\n\t\t\tif( !this.slaves ) return\n\t\t\t\n\t\t\tthis.slaves.forEach( slave => slave.obsolete() )\n\t\t}\n\t\t\n\t\tcheck_slaves() {\n\t\t\tif( this.slaves ) {\n\t\t\t\tthis.slaves.forEach( slave => slave.check() )\n\t\t\t} else {\n\t\t\t\t$mol_atom.actualize( this )\n\t\t\t}\n\t\t}\n\t\t\n\t\tcheck() {\n\t\t\t//if( this.status === $mol_atom_status.pulling ) {\n\t\t\t//\tthrow new Error( `May be obsolated while pulling ${ this }` )\n\t\t\t//}\n\t\t\t\n\t\t\tif( this.status === $mol_atom_status.actual ) {\n\t\t\t\t//this.log([ 'checking' ])\n\t\t\t\tthis.status = $mol_atom_status.checking\n\t\t\t\t\n\t\t\t\tthis.check_slaves()\n\t\t\t}\n\t\t}\n\t\t\n\t\tobsolete() {\n\t\t\tif( this.status === $mol_atom_status.obsolete ) return\n\t\t\t\n\t\t\t//if( this.status === $mol_atom_status.pulling ) {\n\t\t\t//\tthrow new Error( `Obsolated while pulling ${ this }` )\n\t\t\t//} \n\t\t\t\n\t\t\t// this.log( [ 'obsolete' ] )\n\t\t\t\n\t\t\tthis.status = $mol_atom_status.obsolete\n\t\t\t\n\t\t\tthis.check_slaves()\n\t\t\t\n\t\t\treturn\n\t\t}\n\t\t\n\t\tlead( slave : $mol_atom ) {\n\t\t\tif( !this.slaves ) {\n\t\t\t\tthis.slaves = new Set<$mol_atom>()\n\t\t\t\t$mol_atom.unreap( this )\n\t\t\t}\n\t\t\tthis.slaves.add( slave )\n\t\t}\n\t\t\n\t\tdislead( slave : $mol_atom ) {\n\t\t\tif( !this.slaves ) return\n\t\t\t\n\t\t\tif( this.slaves.size === 1 ) {\n\t\t\t\tthis.slaves = null\n\t\t\t\t$mol_atom.reap( this )\n\t\t\t} else {\n\t\t\t\tthis.slaves.delete( slave )\n\t\t\t}\n\t\t}\n\t\t\n\t\tobey( master : $mol_atom ) {\n\t\t\tif( !this.masters ) this.masters = new Set< $mol_atom >()\n\t\t\tthis.masters.add( master )\n\t\t}\n\t\t\n\t\tdisobey( master : $mol_atom ) {\n\t\t\tif( !this.masters ) return\n\t\t\tthis.masters.delete( master )\n\t\t}\n\t\t\n\t\tdisobey_all() {\n\t\t\tif( !this.masters ) return\n\t\t\t\n\t\t\tthis.masters.forEach( master => master.dislead( this ) )\n\t\t\t\n\t\t\tthis.masters = null\n\t\t}\n\t\t\n\t\tvalue( next? : Value , force? : $mol_atom_force ) : Value {\n\t\t\tif( next === undefined ) {\n\t\t\t\treturn this.get( force )\n\t\t\t} else {\n\t\t\t\tif( force ) {\n\t\t\t\t\treturn this.push( next )\n\t\t\t\t} else {\n\t\t\t\t\treturn this.set( next )\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic stack = [] as $mol_atom[]\n\t\tstatic updating : $mol_atom[] = []\n\t\tstatic reaping = new Set< $mol_atom >()\n\t\tstatic scheduled = false\n\t\t\n\t\tstatic actualize( atom : $mol_atom ) {\n\t\t\t$mol_atom.updating.push( atom )\n\t\t\t$mol_atom.schedule()\n\t\t}\n\t\t\n\t\tstatic reap( atom : $mol_atom ) {\n\t\t\t$mol_atom.reaping.add( atom )\n\t\t\t$mol_atom.schedule()\n\t\t}\n\t\t\n\t\tstatic unreap( atom : $mol_atom ) {\n\t\t\t$mol_atom.reaping.delete( atom )\n\t\t}\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.scheduled ) return\n\t\t\t\n\t\t\tnew $mol_defer(\n\t\t\t\t() => {\n\t\t\t\t\tif( !this.scheduled ) return\n\t\t\t\t\tthis.scheduled = false\n\t\t\t\t\tthis.sync()\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\tthis.scheduled = true\n\t\t}\n\t\t\n\t\tstatic sync() {\n\t\t\t$mol_log( this , 'sync' )\n\t\t\tthis.schedule()\n\t\t\t\n\t\t\twhile( true ) {\n\t\t\t\tconst atom = this.updating.shift()\n\t\t\t\tif( !atom ) break\n\t\t\t\tif( this.reaping.has( atom ) ) continue\n\t\t\t\tif( atom.status !== $mol_atom_status.actual ) atom.get()\n\t\t\t}\n\t\t\t\n\t\t\twhile( this.reaping.size ) {\n\t\t\t\tthis.reaping.forEach(\n\t\t\t\t\tatom => {\n\t\t\t\t\t\tthis.reaping.delete( atom )\n\t\t\t\t\t\tif( !atom.slaves ) atom.destructor()\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\t\n\t\t\tthis.scheduled = false\n\t\t}\n\t\t\n\t\tthen< Next >( done : ( prev? : Value )=> Next , fail? : ( error : Error )=> Next ) {\n\t\t\t\n\t\t\tlet prev : Value\n\t\t\tlet next : Next\n\t\t\t\n\t\t\tconst atom = new $mol_atom(\n\t\t\t\t`${ this }.then(${ done })` ,\n\t\t\t\t() => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( prev == undefined ) {\n\t\t\t\t\t\t\tconst val = this.get()\n\t\t\t\t\t\t\tif( val instanceof $mol_atom_wait ) return val\n\t\t\t\t\t\t\tif( val ) val.valueOf()\n\t\t\t\t\t\t\tprev = val\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( next == undefined ) {\n\t\t\t\t\t\t\tconst val = done( prev )\n\t\t\t\t\t\t\tif( val instanceof $mol_atom_wait ) return val\n\t\t\t\t\t\t\tif( val ) val.valueOf()\n\t\t\t\t\t\t\tnext = val\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn next\n\n\t\t\t\t\t} catch( error ) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( error instanceof $mol_atom_wait ) return error\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( fail ) return fail( error )\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn error\n\t\t\t\t\t}\n\n\t\t\t\t} ,\n\t\t\t)\n\t\t\t\n\t\t\t$mol_atom.actualize( atom )\n\t\t\t\n\t\t\treturn atom\n\t\t}\n\t\t\n\t\tcatch( fail : ( error : Error )=> Value ) {\n\t\t\treturn this.then( next => next , fail )\n\t\t}\n\t\t\n\t}\n\t\n\t$mol_state_stack.set( '$mol_atom.stack' , $mol_atom.stack )\n\t\n\texport class $mol_atom_wait extends Error {\n\t\tname = '$mol_atom_wait'\n\t\t\n\t\tconstructor( message = 'Wait...' ) {\n\t\t\tsuper( message )\n\t\t\tthis['__proto__'] = new.target.prototype\n\t\t}\n\t}\n\t\n\texport class $mol_atom_force extends Object {\n\t\t$mol_atom_force : boolean\n\t\tstatic $mol_atom_force : boolean\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_mem< Host , Value >(\n\t\tobj? : Host ,\n\t\tname? : string ,\n\t\tdescr? : TypedPropertyDescriptor< ( next? : Value , force? : $mol_atom_force )=> Value >\n\t) {\n\n\t\tconst value = descr.value\n\t\tconst store = new WeakMap< Object , $mol_atom >()\n\t\t\n\t\tdescr.value = function( next? : Value , force? : $mol_atom_force ) {\n\t\t\tconst host : any = this\n\t\t\n\t\t\tlet atom : $mol_atom = store.get( host )\n\t\t\tif( !atom ) {\n\t\t\t\tif( force && ( next === undefined ) ) return next\n\t\t\t\t\n\t\t\t\tconst id = `${ host }.${ name }()`\n\t\t\t\tatom = new $mol_atom( id , function() {\n\t\t\t\t\tconst v = value.apply( host , arguments )\n\t\t\t\t\tif( v instanceof $mol_object ) {\n\t\t\t\t\t\tif( !v.object_host() ) {\n\t\t\t\t\t\t\tv.object_host( host )\n\t\t\t\t\t\t\tv.object_field( name )\n\t\t\t\t\t\t\tv.object_id( id )\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn v\n\t\t\t\t} )\n\n\t\t\t\tatom.object_owner( host )\n\t\t\t\t\n\t\t\t\tconst destructor = atom.destructor\n\t\t\t\tatom.destructor = ()=> {\n\t\t\t\t\tstore.delete( host )\n\t\t\t\t\tdestructor.call( atom )\n\t\t\t\t}\n\n\t\t\t\tstore.set( host , atom )\n\t\t\t}\n\t\t\t\n\t\t\treturn atom.value( next , force )\n\t\t}\n\t\t\n\t\tObject.defineProperty( obj , name + \"()\" , { get : function() { return store.get( this ) } } )\n\n\t\tdescr.value[ 'value' ] = value\n\n\t\treturn descr\n\t}\n\t\n\texport function $mol_mem_key< Host , Key , Value >(\n\t\tobj : Host ,\n\t\tname : string ,\n\t\tdescr : TypedPropertyDescriptor< ( key : Key , next? : Value , force? : $mol_atom_force )=> Value >\n\t) {\n\t\tconst value = descr.value\n\t\tconst store = new WeakMap< Object , { [ key : string ] : $mol_atom } >()\n\t\t\n\t\tdescr.value = function( key : Key , next : Value , force? : $mol_atom_force ) {\n\t\t\tconst host : any = this\n\t\t\tconst key_str = JSON.stringify( key )\n\t\t\t\n\t\t\tlet dict = store.get( host )\n\t\t\tif( !dict ) store.set( host , dict = {} )\n\t\t\t\n\t\t\tlet atom : $mol_atom = dict[ key_str ]\n\t\t\tif( !atom ) {\n\t\t\t\tif( force && ( next === undefined ) ) return next\n\t\t\t\t\n\t\t\t\tconst id = `${ host }.${ name }(${ key_str })`\n\t\t\t\tatom = new $mol_atom( id , function( ... args: any[] ) {\n\t\t\t\t\tconst v = value.apply( host , [ key , ... args ] )\n\t\t\t\t\tif( v instanceof $mol_object ) {\n\t\t\t\t\t\tif( !v.object_host() ) {\n\t\t\t\t\t\t\tv.object_host( host )\n\t\t\t\t\t\t\tv.object_field( name )\n\t\t\t\t\t\t\tv.object_id( id )\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn v\n\t\t\t\t} )\n\n\t\t\t\tconst destructor = atom.destructor\n\t\t\t\tatom.destructor = ()=> {\n\t\t\t\t\tdelete dict[ key_str ]\n\t\t\t\t\tdestructor.call( atom )\n\t\t\t\t}\n\n\t\t\t\tdict[ key_str ] = atom\n\n\t\t\t}\n\t\t\t\n\t\t\treturn atom.value( next , force )\n\t\t}\n\t\t\n\t\tObject.defineProperty( obj , name + \"()\" , { get : function() { return store.get( this ) } } )\n\t\tvoid( ( descr.value as any )[ 'value' ] = value )\n\n\t\treturn descr\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_window extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic size( next? : {\n\t\t\twidth : number\n\t\t\theight : number\n\t\t} ) {\n\t\t\treturn next || {\n\t\t\t\twidth : window.innerWidth ,\n\t\t\t\theight : window.innerHeight ,\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\twindow.addEventListener( 'resize' , ()=> {\n\t\t$mol_window.size( null )\n\t} )\n\t\n}\n","namespace $ {\n\t\n\texport var $mol_dom_context : Window & {\n\t\tNode : typeof Node\n\t\tElement : typeof Element\n\t\tHTMLElement : typeof HTMLElement\n\t\tXMLHttpRequest : typeof XMLHttpRequest\n\t}\n\t\n}\n","namespace $ {\n\t\n\t$mol_dom_context = window as any\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_dom_render_fields (\n\t\tel : Element ,\n\t\tfields : { [ key : string ] : any }\n\t) {\n\t\tfor( let key in fields ) {\n\t\t\t\n\t\t\tconst val : any = fields[ key ]\n\t\t\t\n\t\t\tif( val === undefined ) continue\n\t\t\tif( el[ key ] === val ) continue\n\t\t\t\n\t\t\tel[ key ] = val\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_children (\n\t\tel : Element ,\n\t\tchildNodes : NodeList | Array< Node | string | number | boolean | { dom_tree : ()=> Node } >\n\t) {\n\t\tconst nodes = [] as ( Node | string )[]\n\t\t\n\t\tfor( let i = 0 ; i < childNodes.length ; ++i ) {\n\t\t\tlet node = childNodes[ i ] as any\n\t\t\tif( node == null ) continue\n\t\t\tif( Object( node ) === node ) {\n\t\t\t\tif( node[ 'dom_tree' ] ) node = node[ 'dom_tree' ]()\n\t\t\t\tnodes.push( node )\n\t\t\t} else {\n\t\t\t\tnodes.push( String( node ) )\n\t\t\t}\n\t\t}\n\t\t\n\t\tlet nextNode = el.firstChild\n\t\tfor( let view_ of nodes ) {\n\t\t\tconst view = view_.valueOf() as Node\n\t\t\t\n\t\t\tif( view instanceof $mol_dom_context.Node ) {\n\t\t\t\t\n\t\t\t\twhile( true ) {\n\t\t\t\t\tif( !nextNode ) {\n\t\t\t\t\t\tel.appendChild( view )\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tif( nextNode == view ) {\n\t\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t\t\tbreak\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif( nodes.indexOf( nextNode ) === -1 ) {\n\t\t\t\t\t\t\tconst nn = nextNode.nextSibling\n\t\t\t\t\t\t\tel.removeChild( nextNode )\n\t\t\t\t\t\t\tnextNode = nn\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tel.insertBefore( view , nextNode )\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\tif( nextNode && nextNode.nodeName === '#text' ) {\n\t\t\t\t\tnextNode.nodeValue = String( view )\n\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t} else {\n\t\t\t\t\tconst textNode = $mol_dom_context.document.createTextNode( String( view ) )\n\t\t\t\t\tel.insertBefore( textNode , nextNode )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\twhile( nextNode ) {\n\t\t\tconst currNode = nextNode\n\t\t\tnextNode = currNode.nextSibling\n\t\t\tel.removeChild( currNode )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_attributes (\n\t\tel : Element ,\n\t\tattrs : { [ key : string ] : string|number|boolean }\n\t) {\n\t\tfor( let name in attrs ) {\n\t\t\tlet val = attrs[ name ] as any\n\t\t\tif( val === null || val === false ) el.removeAttribute( name )\n\t\t\telse el.setAttribute( name , String( val ) )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_styles (\n\t\tel : Element ,\n\t\tstyles : { [ key : string ] : string|number }\n\t) {\n\t\tfor( let name in styles ) {\n\t\t\tlet val = styles[ name ]\n\t\t\t\n\t\t\tconst style = ( el as HTMLElement ).style as any\n\t\t\tconst cur = style[ name ]\n\t\t\t\n\t\t\tif( typeof val === 'number' ) {\n\t\t\t\tif( parseFloat( cur ) == val ) continue\n\t\t\t\tstyle[ name ] = `${ val }px`\n\t\t\t}\n\t\t\t\n\t\t\tif( cur !== val ) style[ name ] = val\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_events (\n\t\tel : Element ,\n\t\tevents : { [ key : string ] : ( event : Event )=> any }\n\t) {\n\t\tfor( let name in events ) {\n\t\t\tel.addEventListener( name , events[ name ] , { passive : false } as any )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_events_async (\n\t\tel : Element ,\n\t\tevents : { [ key : string ] : ( event : Event )=> any }\n\t) {\n\t\tfor( let name in events ) {\n\t\t\tel.addEventListener( name , events[ name ] , { passive : true } as any )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_events_detach (\n\t\tel : Element ,\n\t\tevents : { [ key : string ] : ( event : Event )=> any }\n\t) {\n\t\tfor( let name in events ) {\n\t\t\tel.removeEventListener( name , events[ name ] , { passive : false } as any )\n\t\t}\n\t}\n\t\n}\n","\nnamespace $ {\n\t\n\texport namespace $$ { let $$ }\n\texport namespace $mol { let $mol }\n\t\n\texport type $mol_view_context = ( Window )&( typeof $.$$ )&( typeof $ )\n\t\n\texport function $mol_view_visible_width() {\n\t\treturn $mol_window.size().width\n\t}\n\t\n\texport function $mol_view_visible_height() {\n\t\treturn $mol_window.size().height\n\t}\n\t\n\texport function $mol_view_state_key( suffix : string ) {\n\t\treturn suffix\n\t}\n\n\t/// Reactive statefull lazy ViewModel\n\texport class $mol_view extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic Root( id : number ) {\n\t\t\treturn new this\n\t\t}\n\t\t\n\t\ttitle() : string {\n\t\t\treturn this.constructor.toString()\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tfocused( next?: boolean ) {\n\t\t\tlet node = this.dom_node()\n\t\t\tconst value = $mol_view_selection.focused( next === undefined ? undefined : next ? [ node ] : [] )\n\t\t\treturn value.indexOf( node ) !== -1\n\t\t} \n\t\t\n\t\t@ $mol_mem\n\t\tcontext( next? : $mol_view_context ) {\n\t\t\treturn next || $ as any\n\t\t}\n\t\t\n\t\tget $() {\n\t\t\treturn this.context()\n\t\t}\n\t\tset $( next : $mol_view_context ) {\n\t\t\tthis.context( next )\n\t\t}\n\t\t\n\t\tcontext_sub() {\n\t\t\treturn this.context()\n\t\t}\n\t\t\n\t\tstate_key( suffix = '' ) {\n\t\t\treturn this.$.$mol_view_state_key( suffix )\n\t\t}\n\t\t\n\t\t/// Name of element that created when element not found in DOM\n\t\tdom_name() {\n\t\t\treturn this.constructor.toString().replace( '$' , '' )\n\t\t}\n\t\t\n\t\t/// NameSpace of element that created when element not found in DOM\n\t\tdom_name_space() { return 'http://www.w3.org/1999/xhtml' }\n\t\t\n\t\t/// Raw child views\n\t\tsub() {\n\t\t\treturn null as Array<$mol_view|Node|string|number|boolean>\n\t\t}\n\t\t\n\t\t/// Visible sub views with defined context()\n\t\t/// Render all by default\n\t\tsub_visible() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return sub\n\t\t\t\n\t\t\tconst context = this.context_sub()\n\t\t\tsub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.context( context )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn sub\n\t\t}\n\t\t\n\t\t/// Minimal width that used for lazy rendering\n\t\t@ $mol_mem\n\t\tminimal_width() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return 0\n\t\t\t\n\t\t\tlet min = 0\n\t\t\tsub.forEach( view => {\n\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\tmin = Math.max( min , view.minimal_width() )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn min\n\t\t}\n\t\t\n\t\t/// Minimal height that used for lazy rendering\n\t\tminimal_height() {\n\t\t\treturn this.content_height()\n\t\t}\n\n\t\t@ $mol_mem\n\t\tcontent_height() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return 0\n\t\t\t\n\t\t\tlet min = 0\n\t\t\tsub.forEach( view => {\n\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\tmin = Math.max( min , view.minimal_height() )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn min\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tdom_node( next? : Element ) {\n\t\t\tconst node = next || this.$.$mol_dom_context.document.createElementNS( this.dom_name_space() , this.dom_name() )\n\n\t\t\t$mol_dom_render_attributes( node , this.attr_static() )\n\t\t\t$mol_dom_render_events( node , this.event() )\n\t\t\t$mol_dom_render_events_async( node , this.event_async() )\n\n\t\t\treturn node\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tdom_tree() : Element {\n\t\t\tconst node = this.dom_node()\n\t\t\t\n\t\t\ttry {\n\t\t\t\t\n\t\t\t\tfor( let plugin of this.plugins() ) plugin.render()\n\t\t\t\tthis.render()\n\t\t\t\t\n\t\t\t} catch( error ) {\n\t\t\t\t\n\t\t\t\t$mol_dom_render_attributes( node , { mol_view_error : error.name } )\n\t\t\t\t\n\t\t\t\tif( error instanceof $mol_atom_wait ) return node\n\t\t\t\t\n\t\t\t\ttry { void( ( node as HTMLElement ).innerText = error.message ) } catch( e ) {}\n\t\t\t\t\n\t\t\t\tif( error[ '$mol_atom_catched' ] ) return node\n\t\t\t\t\n\t\t\t\tconsole.error( error )\n\n\t\t\t\terror[ '$mol_atom_catched' ] = true\n\t\t\t}\n\t\t\t\n\t\t\treturn node\n\t\t}\n\t\t\n\t\trender() {\n\t\t\tconst node = this.dom_node()\n\t\t\t\n\t\t\tconst sub = this.sub_visible()\n\t\t\tif( sub ) $mol_dom_render_children( node , sub )\n\t\t\t\n\t\t\t$mol_dom_render_attributes( node , this.attr() )\n\t\t\t$mol_dom_render_styles( node , this.style() )\n\t\t\t\n\t\t\tconst fields = this.field()\n\t\t\t$mol_dom_render_fields( node , fields )\n\t\t\tnew $mol_defer( ()=> $mol_dom_render_fields( node , fields ) )\n\n\t\t\tif( !this.object_host() ) this.$.$mol_dom_context.document.title = this.title()\t\t\t\n\t\t}\n\n\t\t@ $mol_mem\n\t\tstatic view_classes() {\n\t\t\tconst proto = this.prototype\n\t\t\t\n\t\t\tlet current = proto\n\t\t\tconst classes = [] as ( typeof $mol_view )[]\n\t\t\t\n\t\t\twhile( current ) {\n\t\t\t\tclasses.push( current.constructor as typeof $mol_view )\n\t\t\t\tif(!( current instanceof $mol_view )) break\n\t\t\t\tcurrent = Object.getPrototypeOf( current )\n\t\t\t}\n\t\t\t\n\t\t\treturn classes\n\t\t}\n\t\t\n\t\tview_names_owned() {\n\t\t\tconst names = [] as string[]\n\t\t\tlet owner = this.object_host()\n\n\t\t\tif( owner instanceof $mol_view ) {\n\n\t\t\t\tconst suffix = this.object_field()\n\t\t\t\tconst suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1)\n\t\t\t\t\n\t\t\t\tfor( let Class of ( owner.constructor as typeof $mol_view ).view_classes() ) {\n\t\t\t\t\tif( suffix in Class.prototype ) names.push( $mol_func_name( Class ) + suffix2 )\n\t\t\t\t\telse break\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor( let prefix of owner.view_names_owned() ) {\n\t\t\t\t\tnames.push( prefix + suffix2 )\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn names\n\t\t}\n\n\t\t@ $mol_mem\n\t\tview_names() {\n\t\t\tconst names = [] as string[]\n\t\t\t\n\t\t\tfor( let name of this.view_names_owned() ) {\n\t\t\t\tif( names.indexOf( name ) < 0 ) names.push( name )\n\t\t\t}\n\n\t\t\tfor( let Class of ( this.constructor as typeof $mol_view ).view_classes() ) {\n\t\t\t\tconst name = $mol_func_name( Class )\n\t\t\t\tif( names.indexOf( name ) < 0 ) names.push( name )\n\t\t\t}\n\n\t\t\treturn names\n\t\t}\n\t\t\n\t\tattr_static() : { [ key : string ] : string|number|boolean } {\n\t\t\tlet attrs : any = {\n\t\t\t\t'mol_view_error' : false ,\n\t\t\t\t'id' : this.toString() ,\n\t\t\t}\n\t\t\t\n\t\t\tfor( let name of this.view_names() ) attrs[ name.replace( /\\$/g , '' ).toLowerCase() ] = ''\n\t\t\t\n\t\t\treturn attrs\n\t\t}\n\t\t\n\t\tattr() : { [ key : string ] : string|number|boolean } {\n\t\t\treturn {\n\t\t\t\t'mol_view_error' : false ,\n\t\t\t}\n\t\t}\n\t\t\n\t\tstyle() : { [ key : string ] : string|number } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tfield() : { [ key : string ] : any } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tevent() : { [ key : string ] : ( event : Event )=> void } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tevent_async() : { [ key : string ] : ( event : Event )=> void } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tplugins() {\n\t\t\treturn [] as $mol_view[]\n\t\t}\n\t\t\n\t}\n\t\n}\n","interface Window {\n\tcordova : any\n}\n\nnamespace $ {\n\n\t/// Autoattach view roots to loaded DOM.\n\t$mol_dom_context.document.addEventListener( window.cordova ? 'deviceready' : 'DOMContentLoaded' , event => {\n\t\t\t\n\t\tconst nodes = $mol_dom_context.document.querySelectorAll( '[mol_view_root]' )\n\t\t\n\t\tfor( let i = nodes.length - 1 ; i >= 0 ; --i ) {\n\t\t\tconst name = nodes.item( i ).getAttribute( 'mol_view_root' )\n\t\t\t\n\t\t\tconst View = $[ name ]\n\t\t\tif( !View ) {\n\t\t\t\tconsole.error( `Can not attach view. Class not found: ${ name }` )\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t\n\t\t\tconst view = View.Root( i )\n\t\t\t\n\t\t\tview.dom_node( nodes.item( i ) )\n\t\t\t\n\t\t\tview.dom_tree()\n\t\t}\n\t\t\n\t\t$mol_defer.run()\n\t} )\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_view_selection extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic focused( next? : Element[] , force? : $mol_atom_force ) {\n\t\t\tif( next === undefined ) return [] as Element[]\n\t\t\t\n\t\t\tconst node = next[ 0 ] as HTMLElement\n\t\t\t\n\t\t\tnew $mol_defer( ()=> {\n\t\t\t\tif( node ) node.focus()\n\t\t\t\telse if( this[ 'focused()' ][ 'value()' ][0] ) this[ 'focused()' ][ 'value()' ][ 0 ].blur()\n\t\t\t} )\n\n\t\t\treturn undefined\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic position( ...diff : any[] ) {\n\t\t\tif( diff.length ) {\n\t\t\t\tif( !diff[ 0 ] ) return diff[ 0 ]\n\t\t\t\t\n\t\t\t\tvar start = diff[ 0 ].start\n\t\t\t\tvar end = diff[ 0 ].end\n\t\t\t\tif( !( start <= end ) ) throw new Error( `Wrong offsets (${start},${end})` )\n\t\t\t\t\n\t\t\t\tvar root = $mol_dom_context.document.getElementById( diff[ 0 ].id )\n\t\t\t\troot.focus()\n\t\t\t\t\n\t\t\t\tvar range = new Range\n\t\t\t\t\n\t\t\t\tvar cur = root.firstChild\n\t\t\t\twhile( cur !== root ) {\n\t\t\t\t\twhile( cur.firstChild ) cur = cur.firstChild\n\t\t\t\t\tif( cur.nodeValue ) {\n\t\t\t\t\t\tvar length = cur.nodeValue.length\n\t\t\t\t\t\tif( length >= start ) break\n\t\t\t\t\t\tstart -= length\n\t\t\t\t\t}\n\t\t\t\t\twhile( !cur.nextSibling ) {\n\t\t\t\t\t\tcur = cur.parentNode\n\t\t\t\t\t\tif( cur === root ) {\n\t\t\t\t\t\t\tstart = root.childNodes.length\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trange.setStart( cur , start )\n\t\t\t\t\n\t\t\t\tvar cur = root.firstChild\n\t\t\t\twhile( cur !== root ) {\n\t\t\t\t\twhile( cur.firstChild ) cur = cur.firstChild\n\t\t\t\t\tif( cur.nodeValue ) {\n\t\t\t\t\t\tvar length = cur.nodeValue.length\n\t\t\t\t\t\tif( length >= end ) break\n\t\t\t\t\t\tend -= length\n\t\t\t\t\t}\n\t\t\t\t\twhile( !cur.nextSibling ) {\n\t\t\t\t\t\tcur = cur.parentNode\n\t\t\t\t\t\tif( cur === root ) {\n\t\t\t\t\t\t\tend = root.childNodes.length\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trange.setEnd( cur , end )\n\t\t\t\t\n\t\t\t\tvar sel = $mol_dom_context.document.getSelection()\n\t\t\t\tsel.removeAllRanges()\n\t\t\t\tsel.addRange( range )\n\t\t\t\t\n\t\t\t\treturn diff[ 0 ]\n\t\t\t} else {\n\t\t\t\tvar sel = $mol_dom_context.document.getSelection()\n\t\t\t\tif( sel.rangeCount === 0 ) return null\n\t\t\t\tvar range = sel.getRangeAt( 0 )\n\t\t\t\t\n\t\t\t\tvar el = range.commonAncestorContainer as Element\n\t\t\t\twhile( el && !el.id ) el = el.parentElement\n\t\t\t\t\n\t\t\t\tif( !el ) return { id : null , start : 0 , end : 0 }\n\t\t\t\t\n\t\t\t\tvar meter = new Range\n\t\t\t\tmeter.selectNodeContents( el )\n\t\t\t\t\n\t\t\t\tmeter.setEnd( range.startContainer , range.startOffset )\n\t\t\t\tvar startOffset = meter.toString().length\n\t\t\t\t\n\t\t\t\tmeter.setEnd( range.endContainer , range.endOffset )\n\t\t\t\tvar endOffset = meter.toString().length\n\t\t\t\t\n\t\t\t\treturn { id : el.id , start : startOffset , end : endOffset }\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic onFocus( event : FocusEvent ) {\n\t\t\tconst parents : Element[] = []\n\t\t\tlet element = event.target as HTMLElement\n\t\t\t\n\t\t\twhile( element ) {\n\t\t\t\tparents.push( element )\n\t\t\t\telement = element.parentNode as HTMLElement\n\t\t\t}\n\n\t\t\tthis.focused( parents , $mol_atom_force )\n\t\t}\n\t\t\n\t\tstatic onBlur( event : FocusEvent ) {\n\t\t\tconst focused = this.focused()\n\t\t\tsetTimeout( ()=> {\n\t\t\t\tif( focused !== this.focused() ) return\n\t\t\t\tthis.focused( [] , $mol_atom_force )\n\t\t\t} )\n\t\t}\n\t}\n\t\n}\n","namespace $ {\n\t\n\t$mol_dom_context.document.addEventListener( 'selectionchange' , event => {\n\t\t$mol_view_selection.position( undefined , $mol_atom_force )\n\t} )\n\t\n\t$mol_dom_context.document.addEventListener( 'focus' , event => $mol_view_selection.onFocus( event ) , true )\n\t$mol_dom_context.document.addEventListener( 'blur' , event => $mol_view_selection.onBlur( event ) , true )\n\t\n}\n","namespace $ {\n export enum $mol_keyboard_code {\n backspace = 8,\n tab = 9,\n enter = 13,\n shift= 16,\n ctrl = 17,\n alt = 18,\n pause = 19,\n capsLock = 20,\n escape = 27,\n space = 32,\n pageUp = 33,\n pageDown = 34,\n end = 35,\n home = 36,\n left = 37,\n up = 38,\n right = 39,\n down = 40,\n insert = 45,\n delete = 46,\n key0 = 48,\n key1 = 49,\n key2 = 50,\n key3 = 51,\n key4 = 52,\n key5 = 53,\n key6 = 54,\n key7 = 55,\n key8 = 56,\n key9 = 57,\n A = 65,\n B = 66,\n C = 67,\n D = 68,\n E = 69,\n F = 70,\n G = 71,\n H = 72,\n I = 73,\n J = 74,\n K = 75,\n L = 76,\n M = 77,\n N = 78,\n O = 79,\n P = 80,\n Q = 81,\n R = 82,\n S = 83,\n T = 84,\n U = 85,\n V = 86,\n W = 87,\n X = 88,\n Y = 89,\n Z = 90,\n metaLeft = 91,\n metaRight = 92,\n select = 93,\n numpad0 = 96,\n numpad1 = 97,\n numpad2 = 98,\n numpad3 = 99,\n numpad4 = 100,\n numpad5 = 101,\n numpad6 = 102,\n numpad7 = 103,\n numpad8 = 104,\n numpad9 = 105,\n multiply = 106,\n add = 107,\n subtract = 109,\n decimal = 110,\n divide = 111,\n F1 = 112,\n F2 = 113,\n F3 = 114,\n F4 = 115,\n F5 = 116,\n F6 = 117,\n F7 = 118,\n F8 = 119,\n F9 = 120,\n F10 = 121,\n F11 = 122,\n F12 = 123,\n numLock = 144,\n scrollLock = 145,\n semicolon = 186,\n equals = 187,\n comma = 188,\n dash = 189,\n period = 190,\n forwardSlash = 191,\n graveAccent = 192,\n bracketOpen = 219,\n slashBack = 220,\n bracketClose = 221,\n quoteSingle = 222\n }\n}\n","namespace $ { export class $mol_string extends $mol_view {\n\n\t/// dom_name \\input\n\tdom_name() {\n\t\treturn \"input\"\n\t}\n\n\t/// enabled true\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/// debounce 200\n\tdebounce() {\n\t\treturn 200\n\t}\n\n\t/// minimal_height 40\n\tminimal_height() {\n\t\treturn 40\n\t}\n\n\t/// field * \n\t/// \t^ \n\t/// \tdisabled <= disabled - \n\t/// \tvalue <= value_changed?val - \n\t/// \tplaceholder <= hint - \n\t/// \ttype <= type?val -\n\tfield() {\n\t\treturn ({\n\t\t\t...super.field() ,\n\t\t\t\"disabled\" : this.disabled() ,\n\t\t\t\"value\" : this.value_changed() ,\n\t\t\t\"placeholder\" : this.hint() ,\n\t\t\t\"type\" : this.type() ,\n\t\t})\n\t}\n\n\t/// disabled false\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/// value_changed?val <=> value?val -\n\t@ $mol_mem\n\tvalue_changed( val? : any , force? : $mol_atom_force ) {\n\t\treturn this.value( val )\n\t}\n\n\t/// value?val \\\n\t@ $mol_mem\n\tvalue( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// type?val \\text\n\t@ $mol_mem\n\ttype( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"text\"\n\t}\n\n\t/// event * \n\t/// \t^ \n\t/// \tinput?event <=> event_change?event - \n\t/// \tkeypress?event <=> event_key_press?event -\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"input\" : ( event? : any )=> this.event_change( event ) ,\n\t\t\t\"keypress\" : ( event? : any )=> this.event_key_press( event ) ,\n\t\t})\n\t}\n\n\t/// event_change?event null\n\t@ $mol_mem\n\tevent_change( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// event_key_press?event null\n\t@ $mol_mem\n\tevent_key_press( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_string extends $.$mol_string {\n\t\t\n\t\t_timer = 0\n\t\t\n\t\tevent_change( next? : Event ) {\n\t\t\tif( !next ) return\n\t\t\t\n\t\t\tconst val = ( next.target as HTMLInputElement ).value.trim()\n\t\t\t\n\t\t\tclearTimeout( this._timer )\n\t\t\tthis._timer = setTimeout( () => this.value( val ) , this.debounce() )\n\t\t}\n\t\t\n\t\tevent_key_press( next? : KeyboardEvent ) { \n\t\t\tif( !next ) return\n\t\t\t\n\t\t\tif( next.keyCode === $mol_keyboard_code.enter ) {\n\t\t\t\tthis.value( ( next.target as HTMLInputElement ).value.trim() )\n\t\t\t}\n\t\t} \n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t}\n}\n","namespace $ { export class $mol_button extends $mol_view {\n\n\t/// enabled true\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/// minimal_height 40\n\tminimal_height() {\n\t\treturn 40\n\t}\n\n\t/// event * \n\t/// \t^ \n\t/// \tclick?event <=> event_activate?event - \n\t/// \tkeypress?event <=> event_key_press?event -\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"click\" : ( event? : any )=> this.event_activate( event ) ,\n\t\t\t\"keypress\" : ( event? : any )=> this.event_key_press( event ) ,\n\t\t})\n\t}\n\n\t/// event_activate?event <=> event_click?event -\n\t@ $mol_mem\n\tevent_activate( event? : any , force? : $mol_atom_force ) {\n\t\treturn this.event_click( event )\n\t}\n\n\t/// event_click?event null\n\t@ $mol_mem\n\tevent_click( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// event_key_press?event null\n\t@ $mol_mem\n\tevent_key_press( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// attr * \n\t/// \t^ \n\t/// \tdisabled <= disabled - \n\t/// \trole \\button\n\t/// \ttabindex <= tab_index - \n\t/// \ttitle <= hint -\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"disabled\" : this.disabled() ,\n\t\t\t\"role\" : \"button\" ,\n\t\t\t\"tabindex\" : this.tab_index() ,\n\t\t\t\"title\" : this.hint() ,\n\t\t})\n\t}\n\n\t/// disabled false\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/// tab_index 0\n\ttab_index() {\n\t\treturn 0\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// sub / <= title -\n\tsub() {\n\t\treturn [].concat( this.title() )\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_button extends $.$mol_button {\n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t\t\n\t\tevent_activate( next : Event ) {\n\t\t\tif( !next ) return\n\t\t\tif( !this.enabled() ) return\n\t\t\t\n\t\t\tthis.event_click( next )\n\t\t}\n\t\t\n\t\tevent_key_press ( event: KeyboardEvent ) { \n\t\t\tif( event.keyCode === $mol_keyboard_code.enter ) {\n\t\t\t\treturn this.event_activate( event )\n\t\t\t}\n\t\t} \n\t\t\n\t\ttab_index() {\n\t\t\treturn this.enabled() ? super.tab_index() : null\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { export class $mol_button_typed extends $mol_button {\n\n} }\n\nnamespace $ { export class $mol_button_major extends $mol_button_typed {\n\n} }\n\nnamespace $ { export class $mol_button_minor extends $mol_button_typed {\n\n} }\n\nnamespace $ { export class $mol_button_danger extends $mol_button_typed {\n\n} }\n\n","namespace $ {\n\t\n\texport function $mol_merge_dict< Target , Source >( target : Target , source : Source ) : Target & Source {\n\t\tlet result = {} as any\n\t\tfor( let key in target ) result[ key ] = ( target as any )[ key ]\n\t\tfor( let key in source ) result[ key ] = ( source as any )[ key ]\n\t\treturn result\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_state_arg< Value > extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic href( next? : string , force? : $mol_atom_force ) {\n\t\t\tif( next ) history.replaceState( history.state , $mol_dom_context.document.title , `${ next }` )\n\t\t\treturn window.location.search + window.location.hash\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic dict( next? : { [ key : string ] : string } ) {\n\t\t\tvar href = this.href( next && this.make_link( next ) )\n\t\t\tvar chunks = href.split( /[\\/\\?#&;]/g )\n\t\t\t\n\t\t\tvar params : { [ key : string ] : string } = {}\n\t\t\tchunks.forEach(\n\t\t\t\tchunk => {\n\t\t\t\t\tif( !chunk ) return\n\t\t\t\t\tvar vals = chunk.split( '=' ).map( decodeURIComponent )\n\t\t\t\t\tparams[ vals.shift() ] = vals.join( '=' )\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\treturn params\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic value( key : string , next? : string ) {\n\t\t\tconst nextDict = ( next === void 0 ) ? void 0 : $mol_merge_dict( this.dict() , { [ key ] : next } ) \n\t\t\tconst next2 = this.dict( nextDict )[ key ]\n\t\t\treturn ( next2 == null ) ? null : next2\n\t\t}\n\t\t\n\t\tstatic link( next : { [ key : string ] : string } ) {\n\t\t\treturn this.make_link( $mol_merge_dict( this.dict() , next ) )\n\t\t}\n\t\t\n\t\tstatic make_link( next : { [ key : string ] : string } ) {\n\t\t\tconst chunks : string[] = []\n\t\t\tfor( let key in next ) {\n\t\t\t\tif( null == next[ key ] ) continue\n\t\t\t\tchunks.push( [ key ].concat( next[ key ] ? next[ key ] : [] ).map( encodeURIComponent ).join( '=' ) )\n\t\t\t}\n\t\t\t\n\t\t\treturn '#' + chunks.join( '/' )\n\t\t}\n\t\t\n\t\tconstructor( public prefix = '' ) {\n\t\t\tsuper()\n\t\t}\n\t\t\n\t\tvalue( key : string , next? : string ) {\n\t\t\treturn $mol_state_arg.value( this.prefix + key , next )\n\t\t}\n\t\t\n\t\tsub( postfix : string ) {\n\t\t\treturn new $mol_state_arg( this.prefix + postfix + '.' )\n\t\t}\n\t\t\n\t\tlink( next : { [ key : string ] : string } ) {\n\t\t\tvar prefix = this.prefix\n\t\t\tvar dict : { [ key : string ] : string } = {}\n\t\t\tfor( var key in next ) {\n\t\t\t\tdict[ prefix + key ] = next[ key ]\n\t\t\t}\n\t\t\treturn $mol_state_arg.link( dict )\n\t\t}\n\t\t\n\t}\n\t\n\twindow.addEventListener( 'hashchange' , event => $mol_state_arg.href( undefined , $mol_atom_force ) )\n\t\n}\n","namespace $ { export class $mol_link extends $mol_view {\n\n\t/// minimal_height 40\n\tminimal_height() {\n\t\treturn 40\n\t}\n\n\t/// dom_name \\a\n\tdom_name() {\n\t\treturn \"a\"\n\t}\n\n\t/// attr * \n\t/// \t^ \n\t/// \thref <= uri - \n\t/// \ttitle <= hint - \n\t/// \ttarget <= target - \n\t/// \tmol_link_current <= current -\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"href\" : this.uri() ,\n\t\t\t\"title\" : this.hint() ,\n\t\t\t\"target\" : this.target() ,\n\t\t\t\"mol_link_current\" : this.current() ,\n\t\t})\n\t}\n\n\t/// uri \\\n\turi() {\n\t\treturn \"\"\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// target \\_self\n\ttarget() {\n\t\treturn \"_self\"\n\t}\n\n\t/// current false\n\tcurrent() {\n\t\treturn false\n\t}\n\n\t/// sub / <= title -\n\tsub() {\n\t\treturn [].concat( this.title() )\n\t}\n\n\t/// arg *\n\targ() {\n\t\treturn ({\n\t\t})\n\t}\n\n\t/// event * \n\t/// \t^ \n\t/// \tclick?val <=> event_click?val -\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"click\" : ( val? : any )=> this.event_click( val ) ,\n\t\t})\n\t}\n\n\t/// event_click?val null\n\t@ $mol_mem\n\tevent_click( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : null as any\n\t}\n\n} }\n\n","namespace $.$$ {\n\t\n\texport class $mol_link extends $.$mol_link {\n\t\t\n\t\t@ $mol_mem\n\t\turi() {\n\t\t\treturn new $mol_state_arg( this.state_key() ).link( this.arg() )\n\t\t}\n\t\t\n\t\tcurrent() {\n\t\t\treturn this.uri() === $mol_state_arg.link( {} )\n\t\t}\n\n\t\tevent_click( event? : Event ) {\n\t\t\tsetTimeout( ()=> this.focused( false ) , 200 )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_check extends $mol_button_typed {\n\n\t/// attr * \n\t/// \t^ \n\t/// \tmol_check_checked <= checked?val - \n\t/// \taria-checked <= checked?val - \n\t/// \trole \\checkbox\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"mol_check_checked\" : this.checked() ,\n\t\t\t\"aria-checked\" : this.checked() ,\n\t\t\t\"role\" : \"checkbox\" ,\n\t\t})\n\t}\n\n\t/// checked?val false\n\t@ $mol_mem\n\tchecked( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// sub / \n\t/// \t<= Icon - \n\t/// \t<= label -\n\tsub() {\n\t\treturn [].concat( this.Icon() , this.label() )\n\t}\n\n\t/// Icon null\n\tIcon() {\n\t\treturn null as any\n\t}\n\n\t/// label / <= Title -\n\tlabel() {\n\t\treturn [].concat( this.Title() )\n\t}\n\n\t/// Title $mol_view sub / <= title -\n\t@ $mol_mem\n\tTitle() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.title() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// title \\\n\ttitle() {\n\t\treturn \"\"\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_check extends $.$mol_check {\n\n\t\tevent_click( next? : Event ) {\n\t\t\tthis.checked( !this.checked() )\n\t\t\tif( next ) next.preventDefault()\n\t\t}\n\n\t}\n}\n","namespace $ { export class $mol_scroll extends $mol_view {\n\n\t/// minimal_height 0\n\tminimal_height() {\n\t\treturn 0\n\t}\n\n\t/// field * \n\t/// \t^ \n\t/// \tscrollTop <= scroll_top?val - \n\t/// \tscrollLeft <= scroll_left?val - \n\t/// \tscrollBottom <= scroll_bottom?val - \n\t/// \tscrollRight <= scroll_right?val -\n\tfield() {\n\t\treturn ({\n\t\t\t...super.field() ,\n\t\t\t\"scrollTop\" : this.scroll_top() ,\n\t\t\t\"scrollLeft\" : this.scroll_left() ,\n\t\t\t\"scrollBottom\" : this.scroll_bottom() ,\n\t\t\t\"scrollRight\" : this.scroll_right() ,\n\t\t})\n\t}\n\n\t/// scroll_top?val 0\n\t@ $mol_mem\n\tscroll_top( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// scroll_left?val 0\n\t@ $mol_mem\n\tscroll_left( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// scroll_bottom?val 0\n\t@ $mol_mem\n\tscroll_bottom( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// scroll_right?val 0\n\t@ $mol_mem\n\tscroll_right( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// event_async * \n\t/// \t^ \n\t/// \tscroll?event <=> event_scroll?event -\n\tevent_async() {\n\t\treturn ({\n\t\t\t...super.event_async() ,\n\t\t\t\"scroll\" : ( event? : any )=> this.event_scroll( event ) ,\n\t\t})\n\t}\n\n\t/// event_scroll?event null\n\t@ $mol_mem\n\tevent_scroll( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// Strut $mol_view style * transform <= strut_transform -\n\t@ $mol_mem\n\tStrut() {\n\t\treturn (( obj )=>{\n\t\t\tobj.style = () => ({\n\t\t\t\"transform\" : this.strut_transform() ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// strut_transform \\\n\tstrut_transform() {\n\t\treturn \"\"\n\t}\n\n} }\n\n","namespace $.$$ {\n\t\n\texport function $mol_scroll_top() {\n\t\treturn 0\n\t}\n\t\n\texport function $mol_scroll_left() {\n\t\treturn 0\n\t}\n\t\n\texport function $mol_scroll_moving() {\n\t\treturn false\n\t}\n\t\n\texport class $mol_scroll extends $.$mol_scroll {\n\n\t\t// scroll_top( next? : number ) {\n\t\t// \treturn $mol_state_session.value( `${ this }.scroll_top()` , next ) || 0\n\t\t// }\n\t\t// \n\t\t// scroll_left( next? : number ) {\n\t\t// \treturn $mol_state_session.value( `${ this }.scroll_left()` , next ) || 0\n\t\t// }\n\t\t\n\t\t@ $mol_mem\n\t\tscroll_bottom( next? : number ) {\n\t\t\treturn next || 0\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tscroll_right( next? : number ) {\n\t\t\treturn next || 0\n\t\t}\n\t\t\n\t\tevent_scroll( next? : Event ) {\n\t\t\tthis.moving( true )\n\t\t\tthis.moving_task_stop()\n\t\t\t\n\t\t\tnew $mol_defer( ()=> {\n\t\t\t\tconst el = this.dom_node() as HTMLElement\n\t\t\t\t\n\t\t\t\tconst top = Math.max( 0 , el.scrollTop )\n\t\t\t\tconst left = Math.max( 0 , el.scrollLeft )\n\t\t\t\t\n\t\t\t\tthis.scroll_top( top )\n\t\t\t\tthis.scroll_left( left )\n\t\t\t\t\n\t\t\t\tthis.scroll_bottom( Math.max( 0 , el.scrollHeight - top - el.offsetHeight ) )\n\t\t\t\tthis.scroll_right( Math.max( 0 , el.scrollWidth - left - el.offsetWidth ) )\n\t\t\t} )\n\t\t}\n\t\t\n\t\tevent_repos( next? : Event ) {\n\t\t\tnew $mol_defer( ()=> {\n\t\t\t\tconst el = this.dom_node() as HTMLElement\n\t\t\t\t\n\t\t\t\tthis.scroll_bottom( Math.max( 0 , el.scrollHeight - this.scroll_top() - el.offsetHeight ) )\n\t\t\t\tthis.scroll_right( Math.max( 0 , el.scrollWidth - this.scroll_left() - el.offsetWidth ) )\n\t\t\t} )\n\t\t}\n\t\t\n\t\t_moving_task_timer = 0\n\t\tmoving_task_stop() {\n\t\t\tclearTimeout( this._moving_task_timer )\n\t\t\tthis._moving_task_timer = setTimeout( ()=> this.moving( false ) , 50 )\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tmoving( next? : boolean ) {\n\t\t\treturn next || false\n\t\t}\n\n\t\t@ $mol_mem\n\t\tcontext_sub( ) {\n\t\t\tconst context = this.context()\n\t\t\tconst subContext : $mol_view_context = Object.create( context )\n\t\t\tsubContext.$mol_view_visible_height = ()=> {\n\t\t\t\tconst sizeWin = $mol_window.size()\n\t\t\t\tconst limit = context.$mol_view_visible_height()\n\t\t\t\treturn this.scroll_top() + Math.min( sizeWin.height , limit )\n\t\t\t}\n\t\t\tsubContext.$mol_view_visible_width = ()=> {\n\t\t\t\tconst sizeWin = $mol_window.size()\n\t\t\t\tconst limit = context.$mol_view_visible_width()\n\t\t\t\treturn this.scroll_left() + Math.min( sizeWin.width , limit )\n\t\t\t}\n\t\t\tsubContext.$mol_scroll_top = ()=> this.scroll_top()\n\t\t\tsubContext.$mol_scroll_left = ()=> this.scroll_left()\n\t\t\tsubContext.$mol_scroll_moving = ()=> this.moving()\n\t\t\treturn subContext\n\t\t}\n\t\t\n\t\tstrut_transform() {\n\t\t\treturn `translate3d( 0 , ${this.content_height()}px , 0 )`\n\t\t}\n\n\t\tsub_visible() {\n\t\t\tconst sub = [\n\t\t\t\tthis.Strut() ,\n\t\t\t\t... this.sub() ,\n\t\t\t]\n\n\t\t\tconst context = this.context_sub()\n\t\t\tsub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.context( context )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn sub\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\texport class $mol_state_local< Value > extends $mol_object {\n\t\t\n\t\tstatic 'native()' : Pick< Storage , 'getItem'|'setItem'|'removeItem' >\n\t\tstatic native() {\n\t\t\tif( this['native()'] ) return this['native()']\n\n\t\t\tcheck : try {\n\t\t\t\tconst native = $mol_dom_context.localStorage\n\t\t\t\tif( !native ) break check\n\t\t\t\t\n\t\t\t\tnative.setItem( '' , '' )\n\t\t\t\tnative.removeItem( '' )\n\t\t\t\treturn this['native()'] = native\n\t\t\t} catch( error ) {\n\t\t\t\tconsole.warn( error )\n\t\t\t}\n\n\t\t\treturn this['native()'] = {\n\t\t\t\tgetItem( key : string ) {\n\t\t\t\t\treturn this[ ':' + key ]\n\t\t\t\t} ,\n\t\t\t\tsetItem( key : string , value : string ) {\n\t\t\t\t\tthis[ ':' + key ] = value\n\t\t\t\t} ,\n\t\t\t\tremoveItem( key : string ) {\n\t\t\t\t\tthis[ ':' + key ] = void 0\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\tstatic value< Value >( key : string , next? : Value , force? : $mol_atom_force ) : Value {\n\t\t\tif( next === void 0 ) return JSON.parse( this.native().getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) this.native().removeItem( key )\n\t\t\telse this.native().setItem( key , JSON.stringify( next ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_local.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\twindow.addEventListener( 'storage' , event => {\n\t\t$.$mol_state_local.value( event.key , void 0 , $mol_atom_force )\n\t} )\n}\n","namespace $ { \n\texport function $mol_const< Value >( value : Value ) {\n\t\tvar getter = <{ () : Value , '()' : Value }> ( () => value )\n\t\tgetter['()'] = value\n\t\treturn getter\n\t}\n}\n","namespace $ {\n\t\n\texport class $mol_http extends $mol_object {\n\t\t\n\t\tstatic resource( uri : string ) {\n\t\t\tconst resolver = $mol_dom_context.document.createElement( 'a' )\n\t\t\tresolver.href = uri\n\t\t\treturn this.resource_absolute( resolver.href )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic resource_absolute( uri : string ) {\n\t\t\treturn $mol_http.make({\n\t\t\t\turi : $mol_const( uri )\n\t\t\t})\n\t\t}\n\t\t\n\t\turi() { return '' }\n\t\t\n\t\tmethod_get() { return 'Get' }\n\t\tmethod_put() { return 'Put' }\n\t\t\n\t\tcredentials() { return null as {\n\t\t\tlogin? : string\n\t\t\tpassword? : string\n\t\t} }\n\t\t\n\t\theaders() {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\t'request()' : XMLHttpRequest\n\t\trequest() {\n\t\t\tif( this[ 'request()' ] ) return this[ 'request()' ]\n\t\t\t\n\t\t\tvar next = this[ 'request()' ] = new $mol_dom_context.XMLHttpRequest\n\t\t\t\n\t\t\tnext.withCredentials = Boolean( this.credentials() )\n\t\t\t\n\t\t\tnext.onload = ( event : Event )=> {\n\t\t\t\tif(( next.status === 0 )||( Math.floor( next.status / 100 ) === 2 )) {\n\t\t\t\t\tthis.response( next , $mol_atom_force )\n\t\t\t\t} else {\n\t\t\t\t\tthis.response( new Error( next.statusText || next.responseText ) as any , $mol_atom_force )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tnext.onerror = ( event : ErrorEvent ) => {\n\t\t\t\tthis.response( event.error || new Error( 'Unknown HTTP error' ) , $mol_atom_force )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tdestructor() {\n\t\t\tconst native = this[ 'request()' ]\n\t\t\tif( native ) native.abort()\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tresponse( next? : any , force? : $mol_atom_force ) : XMLHttpRequest {\n\t\t\tconst creds = this.credentials()\n\t\t\tconst native = this.request()\n\t\t\tconst method = ( next === void 0 ) ? this.method_get() : this.method_put()\n\t\t\tconst uri = this.uri()\n\t\t\t\n\t\t\tnative.open( method , uri , true , creds && creds.login , creds && creds.password )\n\t\t\t\n\t\t\tconst headers = this.headers()\n\t\t\tfor( let name in headers ) native.setRequestHeader( name , headers[ name ] )\n\t\t\t\n\t\t\tnative.send( ... next || [] )\n\t\t\t\n\t\t\tthrow new $mol_atom_wait( `${ method } ${ uri }` )\n\t\t}\n\t\t\n\t\ttext( next? : string , force? : $mol_atom_force ) : string {\n\t\t\treturn this.response( next , force ).responseText\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tjson< Content >( next? : Content , force? : $mol_atom_force ) : Content {\n\t\t\tconst next2 = next && JSON.stringify( next , null , '\\t' )\n\t\t\treturn JSON.parse( this.text( next2 , force ) )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_deprecated< Host , Method extends Function >( message : string ) {\n\t\treturn function(\n\t\t\thost : Host ,\n\t\t\tfield : string ,\n\t\t\tdescr : TypedPropertyDescriptor< Method >\n\t\t) {\n\t\t\tconst value = descr.value\n\t\t\tdescr.value = function $mol_deprecated_wrapper() {\n\t\t\t\tconsole.warn( `${ host.constructor }::${ field } is deprecated. ${ message }` )\n\t\t\t\treturn value.apply( this , arguments )\n\t\t\t} as any\n\t\t}\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_http_resource extends $mol_http {\n\t\t\n\t\t@ $mol_deprecated( 'Use $mol_http.resource insted.' )\n\t\tstatic item( uri : string ) {\n\t\t\treturn $mol_http.resource( uri )\n\t\t}\n\t\t\n\t}\n\t\n\texport class $mol_http_resource_json {\n\t\t\n\t\t@ $mol_deprecated( 'Use $mol_http.resource insted.' )\n\t\tstatic item( uri : string ) {\n\t\t\treturn $mol_http.resource( uri )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_file extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic absolute( path : string ) {\n\t\t\treturn $mol_file.make({\n\t\t\t\tpath : $mol_const( path )\n\t\t\t})\n\t\t}\n\t\t\n\t\tstatic relative( path : string ) : $mol_file {\n\t\t\tconst resolver = $mol_dom_context.document.createElement( 'a' )\n\t\t\tresolver.href = path\n\t\t\t\n\t\t\treturn this.absolute( resolver.href )\n\t\t}\n\t\t\n\t\tpath() {\n\t\t\treturn '.'\n\t\t}\n\t\t\n\t\tparent() {\n\t\t\treturn this.resolve( '..' )\n\t\t}\n\t\t\n\t\tname() {\n\t\t\treturn this.path().replace( /^.*\\//, '' )\n\t\t}\n\t\t\n\t\text() {\n\t\t\tvar match = /((?:\\.\\w+)+)$/.exec( this.path() )\n\t\t\treturn match && match[ 1 ].substring( 1 )\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tcontent( next? : string , force? : $mol_atom_force ) {\n\t\t\treturn $mol_http.resource( this.path() ).text( next )\n\t\t}\n\t\t\n\t\tresolve( path : string ) : $mol_file {\n\t\t\tlet res = this.path() + '/' + path\n\t\t\t\n\t\t\twhile( true ) {\n\t\t\t\tlet prev = res\n\t\t\t\tres = res.replace( /\\/[^\\/.]+\\/\\.\\.\\// , '/' )\n\t\t\t\tif( prev === res ) break\n\t\t\t}\n\t\t\t\n\t\t\treturn ( this.constructor as typeof $mol_file ).absolute( res )\n\t\t}\n\t\t\n\t\trelate( base = ( this.constructor as typeof $mol_file ).relative( '.' ) ) {\n\t\t\tthrow new Error( 'Not implemented yet' )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport interface $mol_locale_dict {\n\t\t[ key : string ] : string\n\t}\n\t\n\texport class $mol_locale extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic lang_default() {\n\t\t\treturn 'en'\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic lang( next? : string ) {\n\t\t\treturn $mol_state_local.value( 'locale' , next ) || $mol_dom_context.navigator.language.replace( /-.*/ , '' ) || this.lang_default()\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic source( lang : string ) {\n\t\t\treturn JSON.parse( $mol_file.relative( `-/web.locale=${ lang }.json` ).content() )\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic texts( lang : string , next? : $mol_locale_dict ) : $mol_locale_dict {\n\t\t\tif( next ) return next\n\t\t\t\n\t\t\ttry {\n\t\t\t\treturn this.source( lang ).valueOf()\n\t\t\t} catch( error ) {\n\t\t\t\tconst def = this.lang_default()\n\t\t\t\tif( lang === def ) throw error\n\t\t\t\treturn this.source( def )\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic text( key : string ) {\n\n\t\t\tfor( let lang of [ this.lang() , 'en' ] ) {\n\t\t\t\t\n\t\t\t\tconst text = this.texts( lang )[ key ]\n\t\t\t\tif( text ) return text\n\n\t\t\t\tconsole.warn( `Not translated to \"${ lang }\": ${ key }` )\n\t\t\t}\n\t\t\t\t\t\t\n\t\t\treturn `<${ key }>`\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_list extends $mol_view {\n\n\t/// sub <= rows -\n\tsub() {\n\t\treturn this.rows()\n\t}\n\n\t/// rows /\n\trows() {\n\t\treturn [] as any[]\n\t}\n\n\t/// Empty null\n\tEmpty() {\n\t\treturn null as any\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_list extends $.$mol_list {\n\t\t\n\t\tsub() {\n\t\t\tconst rows = this.rows()\n\t\t\treturn ( rows.length === 0 ) ? [ this.Empty() ] : rows\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\trow_offsets() : number[] {\n\t\t\tvar sub = this.sub()\n\t\t\tif( !sub ) return null\n\t\t\t\n\t\t\tlet heightLimit = this.$.$mol_view_visible_height()\n\t\t\tvar offset = 0\n\t\t\t\n\t\t\tvar next : number[] = []\n\t\t\tfor( let child of sub ) {\n\t\t\t\tnext.push( offset )\n\t\t\t\t\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\toffset += child.minimal_height()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( offset > heightLimit ) break\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\trow_context( index : number ) {\n\t\t\tlet context = this.context()\n\t\t\tlet next = Object.create( context )\n\t\t\tnext.$mol_view_visible_height = ()=> {\n\t\t\t\tconst limit = context.$mol_view_visible_height()\n\t\t\t\treturn limit - this.row_offsets()[ index ]\n\t\t\t}\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tsub_visible() {\n\t\t\tvar sub = this.sub()\n\t\t\tif( !sub ) return sub\n\t\t\t\n\t\t\tvar limit = this.row_offsets().length\n\t\t\t\n\t\t\tvar next : $mol_view[] = []\n\t\t\tfor( let i = 0 ; i < limit ; ++ i ) {\n\t\t\t\tconst child = sub[ i ]\n\t\t\t\tif( child == null ) continue \n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.context( this.row_context( i ) )\n\t\t\t\t}\n\t\t\t\tnext.push( child )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tminimal_height() {\n\t\t\tvar height = 0\n\t\t\tvar sub = this.sub()\n\t\t\tif( sub ) sub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\theight += child.minimal_height()\n\t\t\t\t}\n\t\t\t} )\n\t\t\treturn height\n\t\t}\n\n\t}\n}\n","namespace $ { export class $mol_bar extends $mol_view {\n\n} }\n\n","namespace $ { export class $mol_app_todomvc extends $mol_scroll {\n\n\t/// title @ \\Todos\n\ttitle() {\n\t\treturn $mol_locale.text( \"$mol_app_todomvc_title\" )\n\t}\n\n\t/// sub / <= Page -\n\tsub() {\n\t\treturn [].concat( this.Page() )\n\t}\n\n\t/// Page $mol_list rows / \n\t/// \t<= Title - \n\t/// \t<= Panel -\n\t@ $mol_mem\n\tPage() {\n\t\treturn (( obj )=>{\n\t\t\tobj.rows = () => [].concat( this.Title() , this.Panel() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_list )\n\t}\n\n\t/// Title $mol_view \n\t/// \tminimal_height 176 \n\t/// \tsub / <= title -\n\t@ $mol_mem\n\tTitle() {\n\t\treturn (( obj )=>{\n\t\t\tobj.minimal_height = () => 176\n\t\t\tobj.sub = () => [].concat( this.title() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// Panel $mol_list rows <= panels -\n\t@ $mol_mem\n\tPanel() {\n\t\treturn (( obj )=>{\n\t\t\tobj.rows = () => this.panels()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_list )\n\t}\n\n\t/// panels / \n\t/// \t<= Head - \n\t/// \t<= List - \n\t/// \t<= Foot -\n\tpanels() {\n\t\treturn [].concat( this.Head() , this.List() , this.Foot() )\n\t}\n\n\t/// Head $mol_view \n\t/// \tminimal_height 64 \n\t/// \tsub <= Head_content -\n\t@ $mol_mem\n\tHead() {\n\t\treturn (( obj )=>{\n\t\t\tobj.minimal_height = () => 64\n\t\t\tobj.sub = () => this.Head_content()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// Head_content / \n\t/// \t<= Head_complete - \n\t/// \t<= Add -\n\tHead_content() {\n\t\treturn [].concat( this.Head_complete() , this.Add() )\n\t}\n\n\t/// Head_complete $mol_check \n\t/// \tenabled <= head_complete_enabled - \n\t/// \tchecked?val <=> completed_all?val - \n\t/// \ttitle \\❯\n\t@ $mol_mem\n\tHead_complete() {\n\t\treturn (( obj )=>{\n\t\t\tobj.enabled = () => this.head_complete_enabled()\n\t\t\tobj.checked = ( val? : any ) => this.completed_all( val )\n\t\t\tobj.title = () => \"❯\"\n\t\t\treturn obj\n\t\t})( new this.$.$mol_check )\n\t}\n\n\t/// head_complete_enabled false\n\thead_complete_enabled() {\n\t\treturn false\n\t}\n\n\t/// completed_all?val false\n\t@ $mol_mem\n\tcompleted_all( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// Add $mol_app_todomvc_add \n\t/// \tvalue?val <=> task_title_new?val - \n\t/// \tevent_done?event <=> event_add?event -\n\t@ $mol_mem\n\tAdd() {\n\t\treturn (( obj )=>{\n\t\t\tobj.value = ( val? : any ) => this.task_title_new( val )\n\t\t\tobj.event_done = ( event? : any ) => this.event_add( event )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_app_todomvc_add )\n\t}\n\n\t/// task_title_new?val \\\n\t@ $mol_mem\n\ttask_title_new( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// event_add?event null\n\t@ $mol_mem\n\tevent_add( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// List $mol_list rows <= task_rows -\n\t@ $mol_mem\n\tList() {\n\t\treturn (( obj )=>{\n\t\t\tobj.rows = () => this.task_rows()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_list )\n\t}\n\n\t/// task_rows /\n\ttask_rows() {\n\t\treturn [] as any[]\n\t}\n\n\t/// Foot $mol_view sub <= foot_content -\n\t@ $mol_mem\n\tFoot() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => this.foot_content()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// foot_content / \n\t/// \t<= Pending - \n\t/// \t<= Filter - \n\t/// \t<= Sweep -\n\tfoot_content() {\n\t\treturn [].concat( this.Pending() , this.Filter() , this.Sweep() )\n\t}\n\n\t/// Pending $mol_view sub / <= pending_message -\n\t@ $mol_mem\n\tPending() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.pending_message() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// pending_message @ \\0 items left\n\tpending_message() {\n\t\treturn $mol_locale.text( \"$mol_app_todomvc_pending_message\" )\n\t}\n\n\t/// Filter $mol_bar sub <= filterOptions -\n\t@ $mol_mem\n\tFilter() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => this.filterOptions()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_bar )\n\t}\n\n\t/// filterOptions / \n\t/// \t<= Filter_all - \n\t/// \t<= Filter_active - \n\t/// \t<= Filter_completed -\n\tfilterOptions() {\n\t\treturn [].concat( this.Filter_all() , this.Filter_active() , this.Filter_completed() )\n\t}\n\n\t/// Filter_all $mol_link \n\t/// \tsub / <= filter_all_label - \n\t/// \targ * completed null\n\t@ $mol_mem\n\tFilter_all() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.filter_all_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : null as any ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_link )\n\t}\n\n\t/// filter_all_label @ \\All\n\tfilter_all_label() {\n\t\treturn $mol_locale.text( \"$mol_app_todomvc_filter_all_label\" )\n\t}\n\n\t/// Filter_active $mol_link \n\t/// \tsub / <= filter_active_label - \n\t/// \targ * completed \\false\n\t@ $mol_mem\n\tFilter_active() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.filter_active_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : \"false\" ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_link )\n\t}\n\n\t/// filter_active_label @ \\Active\n\tfilter_active_label() {\n\t\treturn $mol_locale.text( \"$mol_app_todomvc_filter_active_label\" )\n\t}\n\n\t/// Filter_completed $mol_link \n\t/// \tsub / <= filter_completed_label - \n\t/// \targ * completed \\true\n\t@ $mol_mem\n\tFilter_completed() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.filter_completed_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : \"true\" ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_link )\n\t}\n\n\t/// filter_completed_label @ \\Completed\n\tfilter_completed_label() {\n\t\treturn $mol_locale.text( \"$mol_app_todomvc_filter_completed_label\" )\n\t}\n\n\t/// Sweep $mol_button_minor \n\t/// \tenabled <= sweep_enabled - \n\t/// \tevent_click?event <=> event_sweep?event - \n\t/// \tsub / <= sweep_label -\n\t@ $mol_mem\n\tSweep() {\n\t\treturn (( obj )=>{\n\t\t\tobj.enabled = () => this.sweep_enabled()\n\t\t\tobj.event_click = ( event? : any ) => this.event_sweep( event )\n\t\t\tobj.sub = () => [].concat( this.sweep_label() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_button_minor )\n\t}\n\n\t/// sweep_enabled true\n\tsweep_enabled() {\n\t\treturn true\n\t}\n\n\t/// event_sweep?event null\n\t@ $mol_mem\n\tevent_sweep( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// sweep_label @ \\Clear completed\n\tsweep_label() {\n\t\treturn $mol_locale.text( \"$mol_app_todomvc_sweep_label\" )\n\t}\n\n\t/// Task_row!id $mol_app_todomvc_task_row \n\t/// \tcompleted?val <=> task_completed!id?val - \n\t/// \ttitle?val <=> task_title!id?val - \n\t/// \tevent_drop?event <=> event_task_drop!id?event -\n\t@ $mol_mem_key\n\tTask_row( id : any ) {\n\t\treturn (( obj )=>{\n\t\t\tobj.completed = ( val? : any ) => this.task_completed(id , val )\n\t\t\tobj.title = ( val? : any ) => this.task_title(id , val )\n\t\t\tobj.event_drop = ( event? : any ) => this.event_task_drop(id , event )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_app_todomvc_task_row )\n\t}\n\n\t/// task_completed!id?val false\n\t@ $mol_mem_key\n\ttask_completed( id : any , val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// task_title!id?val \\\n\t@ $mol_mem_key\n\ttask_title( id : any , val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// event_task_drop!id?event null\n\t@ $mol_mem_key\n\tevent_task_drop( id : any , event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\nnamespace $ { export class $mol_app_todomvc_add extends $mol_string {\n\n\t/// hint @ \\What needs to be done?\n\thint() {\n\t\treturn $mol_locale.text( \"$mol_app_todomvc_add_hint\" )\n\t}\n\n\t/// event * \n\t/// \t^ \n\t/// \tkeyup?event <=> event_press?event -\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"keyup\" : ( event? : any )=> this.event_press( event ) ,\n\t\t})\n\t}\n\n\t/// event_press?event null\n\t@ $mol_mem\n\tevent_press( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// event_done?event null\n\t@ $mol_mem\n\tevent_done( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\nnamespace $ { export class $mol_app_todomvc_task_row extends $mol_view {\n\n\t/// minimal_height 64\n\tminimal_height() {\n\t\treturn 64\n\t}\n\n\t/// sub / \n\t/// \t<= Complete - \n\t/// \t<= Title - \n\t/// \t<= Drop -\n\tsub() {\n\t\treturn [].concat( this.Complete() , this.Title() , this.Drop() )\n\t}\n\n\t/// Complete $mol_check checked?val <=> completed?val -\n\t@ $mol_mem\n\tComplete() {\n\t\treturn (( obj )=>{\n\t\t\tobj.checked = ( val? : any ) => this.completed( val )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_check )\n\t}\n\n\t/// completed?val false\n\t@ $mol_mem\n\tcompleted( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// Title $mol_string \n\t/// \thint <= title_hint - \n\t/// \tvalue?val <=> title?val -\n\t@ $mol_mem\n\tTitle() {\n\t\treturn (( obj )=>{\n\t\t\tobj.hint = () => this.title_hint()\n\t\t\tobj.value = ( val? : any ) => this.title( val )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_string )\n\t}\n\n\t/// title_hint @ \\Task title\n\ttitle_hint() {\n\t\treturn $mol_locale.text( \"$mol_app_todomvc_task_row_title_hint\" )\n\t}\n\n\t/// title?val \\\n\t@ $mol_mem\n\ttitle( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// Drop $mol_button_typed \n\t/// \tsub / \\✖\n\t/// \tevent_click?event <=> event_drop?event -\n\t@ $mol_mem\n\tDrop() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( \"✖\" )\n\t\t\tobj.event_click = ( event? : any ) => this.event_drop( event )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_button_typed )\n\t}\n\n\t/// event_drop?event null\n\t@ $mol_mem\n\tevent_drop( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// attr * \n\t/// \t^ \n\t/// \tmol_app_todomvc_task_row_completed <= completed?val -\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"mol_app_todomvc_task_row_completed\" : this.completed() ,\n\t\t})\n\t}\n\n} }\n\n","interface $mol_app_todomvc_task {\n\tcompleted? : boolean\n\ttitle? : string\n}\n\nnamespace $.$$ {\n\t\n\texport class $mol_app_todomvc_add extends $.$mol_app_todomvc_add {\n\t\t\n\t\tevent_press( next? : KeyboardEvent ) {\n\t\t\tswitch( next.keyCode ) {\n\t\t\t\tcase $mol_keyboard_code.enter : return this.event_done( next )\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\texport class $mol_app_todomvc extends $.$mol_app_todomvc {\n\t\t\n\t\ttask_ids( next? : number[] ) : number[] {\n\t\t\treturn $mol_state_local.value( this.state_key( 'mol-todos' ) , next ) || []\n\t\t}\n\t\t\n\t\targ_completed() {\n\t\t\treturn $mol_state_arg.value( this.state_key( 'completed' ) )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tgroups_completed() {\n\t\t\tvar groups : { [ index : string ] : number[] } = { 'true' : [] , 'false' : [] }\n\t\t\tfor( let id of this.task_ids() ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tgroups[ String( task.completed ) ].push( id )\n\t\t\t}\n\t\t\treturn groups\n\t\t}\n\n\t\t@ $mol_mem\n\t\ttasks_filtered() {\n\t\t\tvar completed = this.arg_completed()\n\t\t\tif( completed ) {\n\t\t\t\treturn this.groups_completed()[ completed ] || []\n\t\t\t} else {\n\t\t\t\treturn this.task_ids()\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_mem\n\t\tcompleted_all( next? : boolean ) {\n\t\t\tif( next === void 0 ) return this.groups_completed()[ 'false' ].length === 0\n\t\t\t\n\t\t\tfor( let id of this.groups_completed()[ String( !next ) ] ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tthis.task( id , { title : task.title , completed : next } )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\thead_complete_enabled() {\n\t\t\treturn this.task_ids().length > 0 \n\t\t}\n\n\t\t@ $mol_mem\n\t\tpending_message() {\n\t\t\tlet count = this.groups_completed()[ 'false' ].length\n\t\t\treturn ( count === 1 ) ? '1 item left' : `${count} items left`\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tnew_id() {\n\t\t\treturn Math.max( 1 , 1 + Math.max( ... this.task_ids() ) )\n\t\t}\n\t\t\n\t\tevent_add( next : Event ) {\n\t\t\tvar title = this.task_title_new() \n\t\t\tif( !title ) return\n\t\t\t\n\t\t\tvar id = this.new_id()\n\t\t\tvar task = { completed : false , title }\n\t\t\tthis.task( id , task )\n\t\t\t\n\t\t\tthis.task_ids( this.task_ids().concat( id ) )\n\t\t\tthis.task_title_new( '' )\n\t\t}\n\n\t\t@ $mol_mem\n\t\ttask_rows() {\n\t\t\treturn this.tasks_filtered().map( ( id , index )=> this.Task_row( index ) )\n\t\t}\n\t\t\n\t\ttask( id : number , next? : $mol_app_todomvc_task ) {\n\t\t\tconst key = this.state_key( `mol-todos-${id}` )\n\t\t\tif( next === void 0 ) {\n\t\t\t\treturn $mol_state_local.value<$mol_app_todomvc_task>( key ) || { title : '' , completed : false }\n\t\t\t}\n\t\t\t\n\t\t\t$mol_state_local.value( key , next )\n\t\t\t\n\t\t\treturn next || void 0\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttask_completed( index : number , next? : boolean ) {\n\t\t\tvar id = this.tasks_filtered()[ index ]\n\t\t\tif( next === void 0 ) return this.task( id ).completed\n\t\t\t\n\t\t\tthis.task( id , $mol_merge_dict( this.task( id ) , { completed : next } ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttask_title( index : number , next? : string ) {\n\t\t\tvar id = this.tasks_filtered()[ index ]\n\t\t\tif( next === void 0 ) return this.task( id ).title\n\t\t\t\n\t\t\tthis.task( id , $mol_merge_dict( this.task( id ) , { title : next } ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tevent_task_drop( index : number , next? : Event ) {\n\t\t\tconst id = this.tasks_filtered()[index]\n\t\t\tthis.task( id , null )\n\t\t\tthis.task_ids( this.task_ids().filter( id2 => id !== id2 ) )\n\t\t}\n\n\t\tevent_sweep() {\n\t\t\tthis.task_ids( this.task_ids().filter( id => {\n\t\t\t\tif( !this.task( id ).completed ) return true\n\t\t\t\tthis.task( id , null )\n\t\t\t\treturn false\n\t\t\t} ) )\n\t\t}\n\t\t\n\t\tpanels() {\n\t\t\treturn [\n\t\t\t\tthis.Head() , \n\t\t\t\tthis.List() ,\n\t\t\t\t... this.foot_visible() ? [ this.Foot() ] : [] ,\n\t\t\t]\n\t\t}\n\t\t\n\t\tfoot_visible() {\n\t\t\treturn this.task_ids().length > 0\n\t\t}\n\n\t\tsweep_enabled() {\n\t\t\treturn this.groups_completed()[ 'true' ].length > 0\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_demo_large extends $mol_view {\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_demo_large extends $.$mol_demo_large {\n\t\t\n\t\t@ $mol_mem\n\t\tcontext_sub() {\n\t\t\tconst context = this.context()\n\t\t\tconst subContext : $mol_view_context = Object.create( context )\n\t\t\t\n\t\t\tsubContext.$mol_view_visible_height = () => this.minimal_height()\n\t\t\tsubContext.$mol_view_visible_width = () => this.minimal_width()\n\t\t\t\n\t\t\treturn subContext\n\t\t}\n\n\t\tminimal_height() {\n\t\t\treturn $mol_window.size().height * .75\n\t\t}\n\t\t\n\t\tminimal_width() {\n\t\t\treturn this.$.$mol_window.size().width\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { export class $mol_app_todomvc_demo extends $mol_demo_large {\n\n\t/// sub / <= App -\n\tsub() {\n\t\treturn [].concat( this.App() )\n\t}\n\n\t/// App $mol_app_todomvc\n\t@ $mol_mem\n\tApp() {\n\t\treturn (( obj )=>{\n\t\t\treturn obj\n\t\t})( new this.$.$mol_app_todomvc )\n\t}\n\n} }\n\n"]} \ No newline at end of file +{"version":3,"sources":["../../../mol.jam.js","../../../func/name/name.ts","../../../object/object.ts","../../../conform/conform.ts","../../../log/log.ts","../../../log/log_context.ts","../../../log/log_debug.web.ts","../../../log/log_filter.web.ts","../../../log/log_group.ts","../../../defer/defer.ts","../../../state/stack/stack.ts","../../../atom/atom.ie.web.js","../../../atom/atom.ts","../../../mem/mem.ts","../../../window/window.web.ts","../../../dom/context/context.ts","../../../dom/context/context.web.ts","../../../dom/render/render.ts","../../../view/view.ts","../../../view/view.web.ts","../../../view/selection/selection.ts","../../../view/selection/selection.web.ts","code.ts","../../../string/-view.tree/string.view.tree.ts","../../../string/string.view.ts","../../../button/-view.tree/button.view.tree.ts","../../../button/button.view.ts","../../../button/-view.tree/button_types.view.tree.ts","../../../merge/dict/dict.ts","../../../state/arg/arg.web.ts","../../../link/-view.tree/link.view.tree.ts","../../../link/link.view.ts","../../../check/-view.tree/check.view.tree.ts","../../../check/check.view.ts","../../../scroll/-view.tree/scroll.view.tree.ts","../../../scroll/scroll.view.ts","../../../list/-view.tree/list.view.tree.ts","../../../list/list.view.ts","../../../bar/-view.tree/bar.view.tree.ts","../../../state/local/local.ts","../../../state/local/local.web.ts","../-view.tree/todomvc.view.tree.ts","../todomvc.view.ts"],"names":[],"mappings":"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","file":"web.js","sourcesContent":[null,"namespace $ {\n\t\n\texport var $mol_func_name_dict = new WeakMap< Function , string >()\n\n\texport function $mol_func_name( func : Function ) : string {\n\t\tlet name = $mol_func_name_dict.get( func )\n\t\tif( name != null ) return name\n\t\tname = func.name || Function.prototype.toString.call( func ).match( /([a-z0-9_$]*) ?(\\(|\\{|extends)/ )[ 1 ]\n\t\t$mol_func_name_dict.set( func , name )\n\t\t\n\t\treturn name\n\t}\n\n}\n","namespace $ {\n\n\texport namespace $$ { let $ }\n\t\n\texport type $mol_object_context = ( Window )&( typeof $.$$ )&( typeof $ )\n\t\n\texport class $mol_object {\n\t\t\n\t\tget $() {\n\t\t\tconst owner = this.object_owner()\n\t\t\treturn ( owner && owner.$ || $ ) as $mol_object_context\n\t\t}\n\t\t\n\t\tpublic static make< Instance >( this : { new() : Instance } , config : Partial< Instance > ) : Instance {\n\t\t\tconst instance = new this\n\t\t\tfor( let key in config ) instance[ key ] = config[ key ]\n\t\t\treturn instance\n\t\t}\n\t\t\n\t\tstatic toString() : string {\n\t\t\treturn $mol_func_name( this )\n\t\t}\n\t\t\n\t\t'object_owner()' : any\n\t\tobject_owner( next? : any ) {\n\t\t\treturn this[ 'object_owner()' ] || ( this[ 'object_owner()' ] = next )\n\t\t}\n\t\t\n\t\t'object_host()' : any\n\t\tobject_host( next? : any ) {\n\t\t\treturn this[ 'object_host()' ] || ( this[ 'object_host()' ] = next )\n\t\t}\n\t\t\n\t\t'object_field()' : string\n\t\tobject_field( next? : string ) {\n\t\t\treturn this[ 'object_field()' ] || ( this[ 'object_field()' ] = next ) || ''\n\t\t}\n\t\t\n\t\t'object_id()' : string\n\t\tobject_id( next? : string ) {\n\t\t\treturn this[ 'object_id()' ] || ( this[ 'object_id()' ] = next ) || ''\n\t\t}\n\n\t\ttoString() {\n\t\t\treturn this.object_id()\n\t\t}\n\t\t\n\t\ttoJSON() {\n\t\t\treturn this.toString()\n\t\t}\n\t\t\n\t\tdestructor() { }\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\tconst cache = new WeakMap< any , boolean >()\n\n\texport function $mol_conform< Target , Source >( target : Target , source : Source , stack : any[] = [] ) : Target {\n\n\t\tif( target as any === source as any ) return source as any\n\n\t\tif( !target || typeof target !== 'object' ) return target\n\t\tif( !source || typeof source !== 'object' ) return target\n\n\t\tif( target instanceof Error ) return target\n\t\tif( source instanceof Error ) return target\n\t\t\n\t\tif( target.constructor !== source.constructor ) return target\n\n\t\tif( cache.get( target ) ) return target\n\t\tcache.set( target , true )\n\t\t\n\t\tconst conform = $mol_conform_handlers.get( target.constructor )\n\t\tif( !conform ) return target\n\n\t\tif( stack.indexOf( target ) !== -1 ) return target\n\n\t\tstack.push( target )\n\n\t\tconst res = conform( target , source , stack )\n\n\t\tstack.pop()\n\n\t\treturn res\n\t}\n\n\texport const $mol_conform_handlers = new WeakMap< Object , ( target : any , source : any , stack : any[] )=> any >()\n\n\texport function $mol_conform_handler< Class >(\n\t\tcl : { new( ... args : any[] ) : Class } ,\n\t\thandler : ( target : Class , source : Class , stack : any[] )=> Class ,\n\t) {\n\t\t$mol_conform_handlers.set( cl , handler )\n\t}\n\n\t$mol_conform_handler( Array , ( target , source , stack )=> {\n\t\t\n\t\tlet equal = target.length === source.length\n\n\t\tfor( let i = 0 ; i < target.length ; ++i ) {\n\t\t\tconst conformed = target[i] = $mol_conform( target[i] , source[i] , stack )\n\t\t\tif( equal && conformed !== source[i] ) equal = false\n\t\t}\n\n\t\treturn equal ? source : target\n\t} )\n\n\t$mol_conform_handler( Object , ( target , source , stack )=> {\n\n\t\tlet count = 0\n\t\tlet equal = true\n\n\t\tfor( let key in target ) {\n\t\t\tconst conformed = target[key] = $mol_conform( target[key] , source[key] , stack )\n\t\t\tif( equal && conformed !== source[key] ) equal = false\n\t\t\t++ count\n\t\t}\n\n\t\tfor( let key in source ) if( -- count < 0 ) break\n\n\t\treturn ( equal && count === 0 ) ? source : target\n\t} )\n\n\t$mol_conform_handler( Date , ( target , source )=> ( target.getTime() === source.getTime() ) ? source : target )\n\n\t$mol_conform_handler( RegExp , ( target , source )=> ( target.toString() === source.toString() ) ? source : target )\n\n}\n","namespace $ {\n\n\texport function $mol_log( path : any , ... values : any[] ) {\n\t\t\n\t\tif( $mol_log_filter() == null ) return\n\t\t\n\t\tpath = String( path )\n\t\tif( path.indexOf( $mol_log_filter() ) === -1 ) return\n\t\t\n\t\tif( $mol_log_context() ) $mol_log_context()()\n\t\t\n\t\tconsole.debug( path , ... values.map( val => val instanceof Error ? { ... val } : val ) )\n\n\t\tif( $mol_log_debug() == null ) return\n\t\tif( path.indexOf( $mol_log_debug() ) === -1 ) return\n\t\t\n\t\tdebugger\n\t}\n\t\n}\n","namespace $ {\n\n\tlet context : ()=> void = null\n\texport function $mol_log_context( next = context ) {\n\t\treturn context = next\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_log_debug( next? : string ) {\n\n\t\tif( next !== undefined ) {\n\t\t\tif( next == null ) {\n\t\t\t\tsessionStorage.removeItem( '$mol_log_debug()' )\n\t\t\t} else {\n\t\t\t\tsessionStorage.setItem( '$mol_log_debug()' , next )\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn sessionStorage.getItem( '$mol_log_debug()' )\n\t}\n\n}\n","namespace $ {\n\t\n\tlet filter : string\n\texport function $mol_log_filter( next? : string ) {\n\n\t\tif( next !== undefined ) {\n\t\t\tif( next == null ) {\n\t\t\t\tsessionStorage.removeItem( '$mol_log_filter()' )\n\t\t\t} else {\n\t\t\t\tsessionStorage.setItem( '$mol_log_filter()' , next )\n\t\t\t}\n\n\t\t\tfilter = next\n\t\t}\n\n\t\tif( filter !== undefined ) return filter\n\t\t\n\t\treturn filter = sessionStorage.getItem( '$mol_log_filter()' )\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_log_group< Task extends Function >( name : string , task : Task ) {\n\t\t\n\t\treturn function $mol_log_group_wrapper( ... args : any [] ) {\n\t\t\tconst filter = $mol_log_filter()\n\t\t\tif( filter == null ) return task.apply( this , args )\n\n\t\t\tlet started = false\n\t\t\tlet prev = $mol_log_context()\n\n\t\t\t$mol_log_context( ()=> {\n\t\t\t\tif( prev ) prev()\n\t\t\t\tstarted = true\n\t\t\t\tif( filter ) console.group( name )\n\t\t\t\telse console.groupCollapsed( name )\n\t\t\t\t$mol_log_context( prev = null )\n\t\t\t} )\n\t\t\t\n\t\t\ttry {\n\t\t\t\treturn task.apply( this , args )\n\t\t\t} finally {\n\t\t\t\tif( started ) console.groupEnd()\n\t\t\t\t$mol_log_context( prev )\n\t\t\t}\n\n\t\t} as any as Task\n\n\t}\n\n}\n","namespace $ {\n\t\n\texport class $mol_defer extends $mol_object {\n\t\t\n\t\tconstructor( public run : ()=> void ) {\n\t\t\tsuper()\n\t\t\t$mol_defer.add( this )\n\t\t}\n\t\t\n\t\tdestructor() {\n\t\t\t$mol_defer.drop( this )\n\t\t}\n\t\t\n\t\tstatic all : $mol_defer[] = []\n\t\tstatic timer = 0\n\t\t\n\t\tstatic scheduleNative : ( handler : ()=> void ) => number = ( typeof requestAnimationFrame == 'function' )\n\t\t\t? handler => requestAnimationFrame( handler )\n\t\t\t: handler => setTimeout( handler , 16 )\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.timer ) return\n\t\t\t\n\t\t\tthis.timer = this.scheduleNative( ()=> {\n\t\t\t\tthis.timer = 0\n\t\t\t\tthis.run()\n\t\t\t} )\n\t\t}\n\t\t\n\t\tstatic unschedule() {\n\t\t\tif( !this.timer ) return\n\t\t\t\n\t\t\tcancelAnimationFrame( this.timer )\n\t\t\tthis.timer = 0\n\t\t}\n\t\t\n\t\tstatic add( defer : $mol_defer ) {\n\t\t\tthis.all.push( defer )\n\t\t\tthis.schedule()\n\t\t}\n\t\t\n\t\tstatic drop( defer : $mol_defer ) {\n\t\t\tvar index = this.all.indexOf( defer )\n\t\t\tif( index >= 0 ) this.all.splice( index , 1 )\n\t\t}\n\t\t\n\t\tstatic run() {\n\t\t\tif( this.all.length === 0 ) return\n\t\t\tthis.schedule()\n\t\t\tfor( var defer : $mol_defer ; defer = this.all.shift() ; ) defer.run()\n\t\t\t//this.unschedule()\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\t/// Global storage of temporary state\n\texport var $mol_state_stack = new Map< string , any >()\n\t\n}\n",null,"namespace $ {\n\t\n\texport enum $mol_atom_status {\n\t\tobsolete = 'obsolete' ,\n\t\tchecking = 'checking' ,\n\t\tpulling = 'pulling' ,\n\t\tactual = 'actual' ,\n\t}\n\t\n\texport class $mol_atom< Value = any > extends $mol_object {\n\t\t\n\t\tmasters : Set< $mol_atom > | null = null\n\t\tslaves : Set< $mol_atom > | null = null\n\t\t\n\t\tstatus = $mol_atom_status.obsolete\n\t\t\n\t\treadonly handler : ( next? : Value|Error , force? : $mol_atom_force )=> Value|void\n\n\t\t'value()' : Value|Error\n\t\t\n\t\tconstructor(\n\t\t\tid : string ,\n\t\t\thandler : ( next? : Value , force? : $mol_atom_force )=> Value|void = next => next ,\n\t\t) {\n\t\t\tsuper()\n\t\t\t\n\t\t\tthis.object_id( id )\n\t\t\tthis.handler = handler\n\t\t}\n\t\t\n\t\tdestructor() {\n\t\t\tthis.unlink()\n\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\n\t\t\tconst value = this['value()']\n\t\t\t\n\t\t\tif( value instanceof $mol_object ) {\n\t\t\t\tif( value.object_owner() === this ) value.destructor();\n\t\t\t}\n\n\t\t\tthis['value()'] = undefined\n\t\t}\n\t\t\n\t\tunlink() {\n\t\t\tthis.disobey_all()\n\t\t\tthis.check_slaves()\n\t\t}\n\t\t\n\t\tget( force? : $mol_atom_force ) {\n\t\t\t\n\t\t\tconst slave = $mol_atom.stack[0]\n\t\t\tif( slave ) {\n\t\t\t\tthis.lead( slave )\n\t\t\t\tslave.obey( this )\n\t\t\t}\n\t\t\t\n\t\t\tthis.actualize( force )\n\t\t\t\n\t\t\tconst value = this['value()'] as Value\n\t\t\t\n\t\t\tif( value instanceof Error ) {\n\t\t\t\tthrow value\n\t\t\t}\n\t\t\t\n\t\t\treturn value as Value\n\t\t}\n\t\t\n\t\tactualize( force? : $mol_atom_force ) {\n\t\t\t\n\t\t\tif( this.status === $mol_atom_status.pulling ) {\n\t\t\t\tthrow new Error( `Cyclic atom dependency of ${ this }` )\n\t\t\t}\n\t\t\t\n\t\t\tif( !force && this.status === $mol_atom_status.actual ) return\n\t\t\t\n\t\t\tconst slave = $mol_atom.stack[0]\n\t\t\t$mol_atom.stack[0] = this\n\t\t\t\n\t\t\tif( !force && this.status === $mol_atom_status.checking ) {\n\t\t\t\t\n\t\t\t\tthis.masters!.forEach(\n\t\t\t\t\tmaster => {\n\t\t\t\t\t\tif( this.status !== $mol_atom_status.checking ) return\n\t\t\t\t\t\tmaster.actualize()\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tif( this.status === $mol_atom_status.checking ) {\n\t\t\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif( force || this.status !== $mol_atom_status.actual ) {\n\t\t\t\t\n\t\t\t\tconst oldMasters = this.masters\n\t\t\t\tthis.masters = null\n\t\t\t\t\n\t\t\t\tif( oldMasters ) oldMasters.forEach(\n\t\t\t\t\tmaster => {\n\t\t\t\t\t\tmaster.dislead( this )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tthis.status = $mol_atom_status.pulling\n\t\t\t\tconst next = this.pull( force )\n\t\t\t\t\n\t\t\t\tif( next === undefined ) {\n\t\t\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\t} else {\n\t\t\t\t\tthis.push( next )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t$mol_atom.stack[0] = slave\n\t\t}\n\t\t\n\t\tpull( force? : $mol_atom_force ) {\n\t\t\ttry {\n\t\t\t\treturn this.handler( this._next , force )\n\t\t\t} catch( error ) {\n\t\t\t\tif( error[ '$mol_atom_catched' ] ) return error\n\t\t\t\tif( error instanceof $mol_atom_wait ) return error\n\t\t\t\t\n\t\t\t\tconsole.error( error.stack || error )\n\t\t\t\t\n\t\t\t\tif(!( error instanceof Error )) {\n\t\t\t\t\terror = new Error( error.stack || error )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\terror['$mol_atom_catched'] = true\n\t\t\t\treturn error\n\t\t\t}\n\t\t}\n\t\t\n\t\t_next : Value|Error\n\t\t_ignore : Value|Error\n\t\t\n\t\tset( next : Value ) {\n\t\t\treturn this.value( next )\n\t\t}\n\t\t\n\t\tpush( next_raw? : Value|Error ) : Value {\n\t\t\tif(!( next_raw instanceof $mol_atom_wait )) {\n\t\t\t\tthis._ignore = this._next\n\t\t\t\tthis._next = undefined\n\t\t\t}\n\t\t\t\n\t\t\tthis.status = next_raw === undefined ? $mol_atom_status.obsolete : $mol_atom_status.actual\n\t\t\t\n\t\t\tconst prev = this['value()']\n\t\t\t\n\t\t\tlet next = ( next_raw instanceof Error || prev instanceof Error ) ? next_raw : $mol_conform( next_raw , prev )\n\t\t\t\n\t\t\tif( next === prev ) return prev as Value\n\t\t\t\n\t\t\tif( prev instanceof $mol_object ) {\n\t\t\t\tif( prev.object_owner() === this ) prev.destructor()\n\t\t\t}\n\t\t\t\n\t\t\tif( next instanceof $mol_object ) {\n\t\t\t\tnext.object_owner( this )\n\t\t\t}\n\t\t\t\n\t\t\t// if(( typeof Proxy === 'function' )&&( next instanceof Error )) {\n\t\t\t// \tnext = new Proxy( next , {\n\t\t\t// \t\tget( target : Error ) {\n\t\t\t// \t\t\tthrow target.valueOf()\n\t\t\t// \t\t} ,\n\t\t\t// \t\townKeys( target : Error ) : string[] {\n\t\t\t// \t\t\tthrow target.valueOf()\n\t\t\t// \t\t} ,\n\t\t\t// \t} )\n\t\t\t// }\n\t\t\t\n\t\t\tthis['value()'] = next\n\t\t\t$mol_log( this , prev , '➔' , next )\n\t\t\t\n\t\t\tthis.obsolete_slaves()\n\t\t\t\n\t\t\treturn next as Value\n\t\t}\n\t\t\n\t\tobsolete_slaves() {\n\t\t\tif( !this.slaves ) return\n\t\t\t\n\t\t\tthis.slaves.forEach( slave => slave.obsolete() )\n\t\t}\n\t\t\n\t\tcheck_slaves() {\n\t\t\tif( this.slaves ) {\n\t\t\t\tthis.slaves.forEach( slave => slave.check() )\n\t\t\t} else {\n\t\t\t\t$mol_atom.actualize( this )\n\t\t\t}\n\t\t}\n\t\t\n\t\tcheck() {\n\t\t\t//if( this.status === $mol_atom_status.pulling ) {\n\t\t\t//\tthrow new Error( `May be obsolated while pulling ${ this }` )\n\t\t\t//}\n\t\t\t\n\t\t\tif( this.status === $mol_atom_status.actual ) {\n\t\t\t\tthis.status = $mol_atom_status.checking\n\t\t\t\t\n\t\t\t\tthis.check_slaves()\n\t\t\t}\n\t\t}\n\t\t\n\t\tobsolete() {\n\t\t\tif( this.status === $mol_atom_status.obsolete ) return\n\t\t\t\n\t\t\t//if( this.status === $mol_atom_status.pulling ) {\n\t\t\t//\tthrow new Error( `Obsolated while pulling ${ this }` )\n\t\t\t//} \n\t\t\t\n\t\t\tthis.status = $mol_atom_status.obsolete\n\t\t\t\n\t\t\tthis.check_slaves()\n\t\t\t\n\t\t\treturn\n\t\t}\n\t\t\n\t\tlead( slave : $mol_atom ) {\n\t\t\tif( !this.slaves ) {\n\t\t\t\tthis.slaves = new Set<$mol_atom>()\n\t\t\t\t$mol_atom.unreap( this )\n\t\t\t}\n\t\t\tthis.slaves.add( slave )\n\t\t}\n\t\t\n\t\tdislead( slave : $mol_atom ) {\n\t\t\tif( !this.slaves ) return\n\t\t\t\n\t\t\tif( this.slaves.size === 1 ) {\n\t\t\t\tthis.slaves = null\n\t\t\t\t$mol_atom.reap( this )\n\t\t\t} else {\n\t\t\t\tthis.slaves.delete( slave )\n\t\t\t}\n\t\t}\n\t\t\n\t\tobey( master : $mol_atom ) {\n\t\t\tif( !this.masters ) this.masters = new Set< $mol_atom >()\n\t\t\tthis.masters.add( master )\n\t\t}\n\t\t\n\t\tdisobey( master : $mol_atom ) {\n\t\t\tif( !this.masters ) return\n\t\t\tthis.masters.delete( master )\n\t\t}\n\t\t\n\t\tdisobey_all() {\n\t\t\tif( !this.masters ) return\n\t\t\t\n\t\t\tthis.masters.forEach( master => master.dislead( this ) )\n\t\t\t\n\t\t\tthis.masters = null\n\t\t}\n\n\t\tcache( next? : Value|Error ) {\n\t\t\tif( next === undefined ) return this['value()']\n\t\t\treturn this['value()'] = next\n\t\t}\n\t\t\n\t\tvalue( next? : Value , force? : $mol_atom_force ) : Value {\n\n\t\t\tif( force === $mol_atom_force_cache ) return this.push( next )\n\n\t\t\tif( next !== undefined ) {\n\t\t\t\t\n\t\t\t\tif( force === $mol_atom_force ) return this.push( next )\n\n\t\t\t\tlet next_normal = $mol_conform( next , this._ignore )\n\t\t\t\tif( next_normal === this._ignore ) return this.get( force )\n\n\t\t\t\tif(!( this['value()'] instanceof Error )) {\n\t\t\t\t\tnext_normal = $mol_conform( next , this['value()'] )\n\t\t\t\t\tif( next_normal === this['value()'] ) return this.get( force )\n\t\t\t\t}\n\n\t\t\t\tthis._next = next_normal\n\t\t\t\tthis._ignore = next_normal\n\n\t\t\t\tforce = $mol_atom_force_update\n\t\t\t}\n\t\t\t\n\t\t\treturn this.get( force )\n\t\t}\n\t\t\n\t\tstatic stack = [] as $mol_atom[]\n\t\tstatic updating : $mol_atom[] = []\n\t\tstatic reaping = new Set< $mol_atom >()\n\t\tstatic scheduled = false\n\t\t\n\t\tstatic actualize( atom : $mol_atom ) {\n\t\t\t$mol_atom.updating.push( atom )\n\t\t\t$mol_atom.schedule()\n\t\t}\n\t\t\n\t\tstatic reap( atom : $mol_atom ) {\n\t\t\t$mol_atom.reaping.add( atom )\n\t\t\t$mol_atom.schedule()\n\t\t}\n\t\t\n\t\tstatic unreap( atom : $mol_atom ) {\n\t\t\t$mol_atom.reaping.delete( atom )\n\t\t}\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.scheduled ) return\n\t\t\t\n\t\t\tnew $mol_defer(\n\t\t\t\t$mol_log_group( '$mol_atom.sync()' , () => {\n\t\t\t\t\tif( !this.scheduled ) return\n\t\t\t\t\tthis.scheduled = false\n\t\t\t\t\tthis.sync()\n\t\t\t\t} )\n\t\t\t)\n\t\t\t\n\t\t\tthis.scheduled = true\n\t\t}\n\t\t\n\t\tstatic sync() {\n\t\t\tthis.schedule()\n\t\t\t\n\t\t\twhile( true ) {\n\t\t\t\tconst atom = this.updating.shift()\n\t\t\t\tif( !atom ) break\n\t\t\t\tif( this.reaping.has( atom ) ) continue\n\t\t\t\tif( atom.status !== $mol_atom_status.actual ) atom.get()\n\t\t\t}\n\t\t\t\n\t\t\twhile( this.reaping.size ) {\n\t\t\t\tthis.reaping.forEach(\n\t\t\t\t\tatom => {\n\t\t\t\t\t\tthis.reaping.delete( atom )\n\t\t\t\t\t\tif( !atom.slaves ) atom.destructor()\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\t\n\t\t\tthis.scheduled = false\n\t\t}\n\t\t\n\t\tthen< Next >( done : ( prev? : Value )=> Next , fail? : ( error : Error )=> Next ) {\n\t\t\t\n\t\t\tlet prev : Value\n\t\t\tlet next : Next\n\t\t\t\n\t\t\tconst atom = new $mol_atom(\n\t\t\t\t`${ this }.then(${ done })` ,\n\t\t\t\t() => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( prev == undefined ) {\n\t\t\t\t\t\t\tconst val = this.get()\n\t\t\t\t\t\t\tif( val instanceof $mol_atom_wait ) return val\n\t\t\t\t\t\t\tif( val ) val.valueOf()\n\t\t\t\t\t\t\tprev = val\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( next == undefined ) {\n\t\t\t\t\t\t\tconst val = done( prev )\n\t\t\t\t\t\t\tif( val instanceof $mol_atom_wait ) return val\n\t\t\t\t\t\t\tif( val ) val.valueOf()\n\t\t\t\t\t\t\tnext = val\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn next\n\n\t\t\t\t\t} catch( error ) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( error instanceof $mol_atom_wait ) return error\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( fail ) return fail( error )\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn error\n\t\t\t\t\t}\n\n\t\t\t\t} ,\n\t\t\t)\n\t\t\t\n\t\t\t$mol_atom.actualize( atom )\n\t\t\t\n\t\t\treturn atom\n\t\t}\n\t\t\n\t\tcatch( fail : ( error : Error )=> Value ) {\n\t\t\treturn this.then( next => next , fail )\n\t\t}\n\t\t\n\t}\n\t\n\t$mol_state_stack.set( '$mol_atom.stack' , $mol_atom.stack )\n\n\texport function $mol_atom_current< Value = any >() {\n\t\treturn $mol_atom.stack[0] as $mol_atom< Value >\n\t}\n\t\n\texport class $mol_atom_wait extends Error {\n\t\tname = '$mol_atom_wait'\n\t}\n\t\n\texport class $mol_atom_force extends Object {\n\t\t$mol_atom_force : boolean\n\t\tstatic $mol_atom_force : boolean\n\t\tstatic toString() { return this.name }\n\t}\n\n\texport class $mol_atom_force_cache extends $mol_atom_force {}\n\texport class $mol_atom_force_update extends $mol_atom_force {}\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_mem< Host , Value >(\n\t\tobj? : Host ,\n\t\tname? : string ,\n\t\tdescr? : TypedPropertyDescriptor< ( next? : Value , force? : $mol_atom_force )=> Value >\n\t) {\n\n\t\tconst value = descr.value\n\t\tconst store = new WeakMap< Object , $mol_atom >()\n\t\t\n\t\tdescr.value = function $mol_mem_value( next? : Value , force? : $mol_atom_force ) {\n\t\t\tconst host : any = this\n\t\t\n\t\t\tlet atom : $mol_atom = store.get( host )\n\t\t\tif( !atom ) {\n\t\t\t\t\n\t\t\t\tconst id = `${ host }.${ name }()`\n\t\t\t\tatom = new $mol_atom( id , function() {\n\t\t\t\t\tconst v = value.apply( host , arguments )\n\t\t\t\t\tif( v instanceof $mol_object ) {\n\t\t\t\t\t\tif( !v.object_host() ) {\n\t\t\t\t\t\t\tv.object_host( host )\n\t\t\t\t\t\t\tv.object_field( name )\n\t\t\t\t\t\t\tv.object_id( id )\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn v\n\t\t\t\t} )\n\n\t\t\t\tatom.object_owner( host )\n\t\t\t\t\n\t\t\t\tconst destructor = atom.destructor\n\t\t\t\tatom.destructor = ()=> {\n\t\t\t\t\tstore.delete( host )\n\t\t\t\t\tdestructor.call( atom )\n\t\t\t\t}\n\n\t\t\t\tstore.set( host , atom )\n\t\t\t}\n\t\t\t\n\t\t\treturn atom.value( next , force )\n\t\t}\n\t\t\n\t\tObject.defineProperty( obj , name + \"()\" , { get : function() { return store.get( this ) } } )\n\n\t\tdescr.value[ 'value' ] = value\n\n\t\treturn descr\n\t}\n\t\n\texport function $mol_mem_key< Host , Key , Value >(\n\t\tobj : Host ,\n\t\tname : string ,\n\t\tdescr : TypedPropertyDescriptor< ( key : Key , next? : Value , force? : $mol_atom_force )=> Value >\n\t) {\n\t\tconst value = descr.value\n\t\tconst store = new WeakMap< Object , { [ key : string ] : $mol_atom } >()\n\t\t\n\t\tdescr.value = function $mol_mem_key_value( key : Key , next : Value , force? : $mol_atom_force ) {\n\t\t\tconst host : any = this\n\t\t\tconst key_str = JSON.stringify( key )\n\t\t\t\n\t\t\tlet dict = store.get( host )\n\t\t\tif( !dict ) store.set( host , dict = {} )\n\t\t\t\n\t\t\tlet atom : $mol_atom = dict[ key_str ]\n\t\t\tif( !atom ) {\n\t\t\t\t\n\t\t\t\tconst id = `${ host }.${ name }(${ key_str })`\n\t\t\t\tatom = new $mol_atom( id , function( ... args: any[] ) {\n\t\t\t\t\tconst v = value.apply( host , [ key , ... args ] )\n\t\t\t\t\tif( v instanceof $mol_object ) {\n\t\t\t\t\t\tif( !v.object_host() ) {\n\t\t\t\t\t\t\tv.object_host( host )\n\t\t\t\t\t\t\tv.object_field( name )\n\t\t\t\t\t\t\tv.object_id( id )\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn v\n\t\t\t\t} )\n\n\t\t\t\tconst destructor = atom.destructor\n\t\t\t\tatom.destructor = ()=> {\n\t\t\t\t\tdelete dict[ key_str ]\n\t\t\t\t\tdestructor.call( atom )\n\t\t\t\t}\n\n\t\t\t\tdict[ key_str ] = atom\n\n\t\t\t}\n\t\t\t\n\t\t\treturn atom.value( next , force )\n\t\t}\n\t\t\n\t\tObject.defineProperty( obj , name + \"()\" , { get : function() { return store.get( this ) } } )\n\t\tvoid( ( descr.value as any )[ 'value' ] = value )\n\n\t\treturn descr\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_window extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic size( next? : {\n\t\t\twidth : number\n\t\t\theight : number\n\t\t} , force? : $mol_atom_force ) {\n\t\t\treturn next || {\n\t\t\t\twidth : window.innerWidth ,\n\t\t\t\theight : window.innerHeight ,\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\twindow.addEventListener( 'resize' , $mol_log_group( `$mol_window resize` , ()=> {\n\t\t$mol_window.size( undefined , $mol_atom_force_cache )\n\t} ) )\n\t\n}\n","namespace $ {\n\t\n\texport var $mol_dom_context : Window & {\n\t\tNode : typeof Node\n\t\tElement : typeof Element\n\t\tHTMLElement : typeof HTMLElement\n\t\tXMLHttpRequest : typeof XMLHttpRequest\n\t}\n\t\n}\n","namespace $ {\n\t\n\t$mol_dom_context = window as any\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_dom_render_fields (\n\t\tel : Element ,\n\t\tfields : { [ key : string ] : any }\n\t) {\n\t\tfor( let key in fields ) {\n\t\t\t\n\t\t\tconst val : any = fields[ key ]\n\t\t\t\n\t\t\tif( val === undefined ) continue\n\t\t\tif( el[ key ] === val ) continue\n\t\t\t\n\t\t\tel[ key ] = val\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_children (\n\t\tel : Element ,\n\t\tchildNodes : NodeList | Array< Node | string | number | boolean | { dom_tree : ()=> Node } >\n\t) {\n\t\tconst node_list = [] as ( Node | string )[]\n\t\tconst node_set = new Set()\n\t\t\n\t\tfor( let i = 0 ; i < childNodes.length ; ++i ) {\n\t\t\tlet node = childNodes[ i ] as any\n\t\t\tif( node == null ) continue\n\t\t\tif( Object( node ) === node ) {\n\t\t\t\tif( node[ 'dom_tree' ] ) node = node[ 'dom_tree' ]()\n\t\t\t\tnode_list.push( node )\n\t\t\t\tnode_set.add( node )\n\t\t\t} else {\n\t\t\t\tnode_list.push( String( node ) )\n\t\t\t}\n\t\t}\n\t\t\n\t\tlet nextNode = el.firstChild\n\t\tfor( let view_ of node_list ) {\n\t\t\tconst view = view_.valueOf() as Node\n\t\t\t\n\t\t\tif( view instanceof $mol_dom_context.Node ) {\n\t\t\t\t\n\t\t\t\twhile( true ) {\n\t\t\t\t\tif( !nextNode ) {\n\t\t\t\t\t\tel.appendChild( view )\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tif( nextNode == view ) {\n\t\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t\t\tbreak\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif( node_set.has( nextNode ) ) {\n\t\t\t\t\t\t\tel.insertBefore( view , nextNode )\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst nn = nextNode.nextSibling\n\t\t\t\t\t\t\tel.removeChild( nextNode )\n\t\t\t\t\t\t\tnextNode = nn\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\tif( nextNode && nextNode.nodeName === '#text' ) {\n\t\t\t\t\tnextNode.nodeValue = String( view )\n\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t} else {\n\t\t\t\t\tconst textNode = $mol_dom_context.document.createTextNode( String( view ) )\n\t\t\t\t\tel.insertBefore( textNode , nextNode )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\twhile( nextNode ) {\n\t\t\tconst currNode = nextNode\n\t\t\tnextNode = currNode.nextSibling\n\t\t\tel.removeChild( currNode )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_attributes (\n\t\tel : Element ,\n\t\tattrs : { [ key : string ] : string|number|boolean }\n\t) {\n\t\tfor( let name in attrs ) {\n\t\t\tlet val = attrs[ name ] as any\n\t\t\tif( val === null || val === false ) el.removeAttribute( name )\n\t\t\telse el.setAttribute( name , String( val ) )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_styles (\n\t\tel : Element ,\n\t\tstyles : { [ key : string ] : string|number }\n\t) {\n\t\tfor( let name in styles ) {\n\t\t\tlet val = styles[ name ]\n\t\t\t\n\t\t\tconst style = ( el as HTMLElement ).style as any\n\t\t\tconst cur = style[ name ]\n\t\t\t\n\t\t\tif( typeof val === 'number' ) {\n\t\t\t\tif( parseFloat( cur ) == val ) continue\n\t\t\t\tstyle[ name ] = `${ val }px`\n\t\t\t}\n\t\t\t\n\t\t\tif( cur !== val ) style[ name ] = val\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_events (\n\t\tel : Element ,\n\t\tevents : { [ key : string ] : ( event : Event )=> any }\n\t) {\n\t\tfor( let name in events ) {\n\t\t\tel.addEventListener( name , $mol_log_group( el.id + ' ' + name , events[ name ] ) , { passive : false } as any )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_events_async (\n\t\tel : Element ,\n\t\tevents : { [ key : string ] : ( event : Event )=> any }\n\t) {\n\t\tfor( let name in events ) {\n\t\t\tel.addEventListener( name , $mol_log_group( el.id + ' ' + name , events[ name ] ) , { passive : true } as any )\n\t\t}\n\t}\n\t\n}\n","\nnamespace $ {\n\t\n\texport namespace $$ { let $$ }\n\texport namespace $mol { let $mol }\n\t\n\t/// Use $mol_object_context instead\n\texport type $mol_view_context = $mol_object_context\n\t\n\texport function $mol_view_visible_width() {\n\t\treturn $mol_window.size().width\n\t}\n\t\n\texport function $mol_view_visible_height() {\n\t\treturn $mol_window.size().height\n\t}\n\t\n\texport function $mol_view_state_key( suffix : string ) {\n\t\treturn suffix\n\t}\n\n\t/// Reactive statefull lazy ViewModel\n\texport class $mol_view extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic Root( id : number ) {\n\t\t\treturn new this\n\t\t}\n\n\t\t@ $mol_mem\n\t\tstatic autobind() {\n\t\t\tconst nodes = $mol_dom_context.document.querySelectorAll( '[mol_view_root]' )\n\t\t\t\n\t\t\tfor( let i = nodes.length - 1 ; i >= 0 ; --i ) {\n\t\t\t\tconst name = nodes.item( i ).getAttribute( 'mol_view_root' )\n\t\t\t\t\n\t\t\t\tconst View = $[ name ]\n\t\t\t\tif( !View ) {\n\t\t\t\t\tconsole.error( `Can not attach view. Class not found: ${ name }` )\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tconst view = View.Root( i )\n\t\t\t\t\n\t\t\t\tview.dom_tree( nodes.item( i ) )\n\t\t\t\t\n\t\t\t\tdocument.title = view.title()\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\ttitle() : string {\n\t\t\treturn this.constructor.toString()\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tfocused( next?: boolean ) {\n\t\t\tlet node = this.dom_node()\n\t\t\tconst value = $mol_view_selection.focused( next === undefined ? undefined : next ? [ node ] : [] ) || []\n\t\t\treturn value.indexOf( node ) !== -1\n\t\t} \n\t\t\n\t\t@ $mol_mem\n\t\tcontext( next? : $mol_object_context ) {\n\t\t\treturn next || $ as $mol_object_context\n\t\t}\n\t\tget $() {\n\t\t\treturn this.context()\n\t\t}\n\t\tset $( next : $mol_view_context ) {\n\t\t\tthis.context( next )\n\t\t}\n\t\t\n\t\tcontext_sub() {\n\t\t\treturn this.context()\n\t\t}\n\t\t\n\t\tstate_key( suffix = '' ) {\n\t\t\treturn this.$.$mol_view_state_key( suffix )\n\t\t}\n\t\t\n\t\t/// Name of element that created when element not found in DOM\n\t\tdom_name() {\n\t\t\treturn this.constructor.toString().replace( '$' , '' )\n\t\t}\n\t\t\n\t\t/// NameSpace of element that created when element not found in DOM\n\t\tdom_name_space() { return 'http://www.w3.org/1999/xhtml' }\n\t\t\n\t\t/// Raw child views\n\t\tsub() {\n\t\t\treturn null as Array<$mol_view|Node|string|number|boolean>\n\t\t}\n\t\t\n\t\t/// Visible sub views with defined context()\n\t\t/// Render all by default\n\t\tsub_visible() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return sub\n\t\t\t\n\t\t\tconst context = this.context_sub()\n\t\t\tsub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.$ = context\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn sub\n\t\t}\n\t\t\n\t\t/// Minimal width that used for lazy rendering\n\t\t@ $mol_mem\n\t\tminimal_width() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return 0\n\t\t\t\n\t\t\tlet min = 0\n\t\t\tsub.forEach( view => {\n\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\tmin = Math.max( min , view.minimal_width() )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn min\n\t\t}\n\t\t\n\t\t/// Minimal height that used for lazy rendering\n\t\tminimal_height() {\n\t\t\treturn this.content_height()\n\t\t}\n\n\t\t@ $mol_mem\n\t\tcontent_height() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return 0\n\t\t\t\n\t\t\tlet min = 0\n\t\t\tsub.forEach( view => {\n\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\tmin = Math.max( min , view.minimal_height() )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn min\n\t\t}\n\n\t\tdom_id() {\n\t\t\treturn this.toString()\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tdom_node( next? : Element ) {\n\t\t\tconst node = next || this.$.$mol_dom_context.document.createElementNS( this.dom_name_space() , this.dom_name() )\n\n\t\t\tnode.setAttribute( 'id' , this.dom_id() )\n\t\t\t$mol_dom_render_attributes( node , this.attr_static() )\n\t\t\t$mol_dom_render_events( node , this.event() )\n\t\t\t$mol_dom_render_events_async( node , this.event_async() )\n\n\t\t\treturn node\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tdom_tree( next? : Element ) : Element {\n\t\t\tconst node = this.dom_node( next )\n\t\t\t\n\t\t\ttry {\n\t\t\t\t\n\t\t\t\tfor( let plugin of this.plugins() ) plugin.render()\n\t\t\t\tthis.render()\n\t\t\t\t\n\t\t\t} catch( error ) {\n\t\t\t\t\n\t\t\t\t$mol_dom_render_attributes( node , { mol_view_error : error.name } )\n\t\t\t\t\n\t\t\t\tif( error instanceof $mol_atom_wait ) return node\n\t\t\t\t\n\t\t\t\ttry { void( ( node as HTMLElement ).innerText = error.message ) } catch( e ) {}\n\t\t\t\t\n\t\t\t\tif( error[ '$mol_atom_catched' ] ) return node\n\t\t\t\t\n\t\t\t\tconsole.error( error )\n\n\t\t\t\terror[ '$mol_atom_catched' ] = true\n\t\t\t}\n\t\t\t\n\t\t\treturn node\n\t\t}\n\t\t\n\t\trender() {\n\t\t\tconst node = this.dom_node()\n\t\t\t\n\t\t\tconst sub = this.sub_visible()\n\t\t\tif( sub ) $mol_dom_render_children( node , sub )\n\t\t\t\n\t\t\t$mol_dom_render_attributes( node , this.attr() )\n\t\t\t$mol_dom_render_styles( node , this.style() )\n\t\t\t\n\t\t\tconst fields = this.field()\n\t\t\t$mol_dom_render_fields( node , fields )\n\t\t\tnew $mol_defer( ()=> $mol_dom_render_fields( node , fields ) )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tstatic view_classes() {\n\t\t\tconst proto = this.prototype\n\t\t\t\n\t\t\tlet current = proto\n\t\t\tconst classes = [] as ( typeof $mol_view )[]\n\t\t\t\n\t\t\twhile( current ) {\n\t\t\t\tclasses.push( current.constructor as typeof $mol_view )\n\t\t\t\tif(!( current instanceof $mol_view )) break\n\t\t\t\tcurrent = Object.getPrototypeOf( current )\n\t\t\t}\n\t\t\t\n\t\t\treturn classes\n\t\t}\n\t\t\n\t\tview_names_owned() {\n\t\t\tconst names = [] as string[]\n\t\t\tlet owner = this.object_host()\n\n\t\t\tif( owner instanceof $mol_view ) {\n\n\t\t\t\tconst suffix = this.object_field()\n\t\t\t\tconst suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1)\n\t\t\t\t\n\t\t\t\tfor( let Class of ( owner.constructor as typeof $mol_view ).view_classes() ) {\n\t\t\t\t\tif( suffix in Class.prototype ) names.push( $mol_func_name( Class ) + suffix2 )\n\t\t\t\t\telse break\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor( let prefix of owner.view_names_owned() ) {\n\t\t\t\t\tnames.push( prefix + suffix2 )\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn names\n\t\t}\n\n\t\t@ $mol_mem\n\t\tview_names() {\n\t\t\tconst names = [] as string[]\n\t\t\t\n\t\t\tfor( let name of this.view_names_owned() ) {\n\t\t\t\tif( names.indexOf( name ) < 0 ) names.push( name )\n\t\t\t}\n\n\t\t\tfor( let Class of ( this.constructor as typeof $mol_view ).view_classes() ) {\n\t\t\t\tconst name = $mol_func_name( Class )\n\t\t\t\tif( names.indexOf( name ) < 0 ) names.push( name )\n\t\t\t}\n\n\t\t\treturn names\n\t\t}\n\t\t\n\t\tattr_static() : { [ key : string ] : string|number|boolean } {\n\t\t\tlet attrs : any = {}\n\t\t\t\n\t\t\tfor( let name of this.view_names() ) attrs[ name.replace( /\\$/g , '' ).toLowerCase() ] = ''\n\t\t\t\n\t\t\treturn attrs\n\t\t}\n\t\t\n\t\tattr() : { [ key : string ] : string|number|boolean } {\n\t\t\treturn {\n\t\t\t\t'mol_view_error' : false ,\n\t\t\t}\n\t\t}\n\t\t\n\t\tstyle() : { [ key : string ] : string|number } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tfield() : { [ key : string ] : any } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tevent() : { [ key : string ] : ( event : Event )=> void } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tevent_async() : { [ key : string ] : ( event : Event )=> void } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tplugins() {\n\t\t\treturn [] as $mol_view[]\n\t\t}\n\t\t\n\t}\n\t\n}\n","interface Window {\n\tcordova : any\n}\n\nnamespace $ {\n\n\t/// Autoattach view roots to loaded DOM.\n\tconst event_name = window.cordova ? 'deviceready' : 'DOMContentLoaded'\n\t$mol_dom_context.document.addEventListener( event_name , $mol_log_group( `$mol_view ${ event_name }` , ( event : Event )=> {\n\t\t$mol_view.autobind()\n\t\t$mol_defer.run()\n\t} ) )\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_view_selection extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic focused( next? : Element[] , force? : $mol_atom_force ) {\n\t\t\tif( next === undefined ) return [] as Element[]\n\t\t\t\n\t\t\tconst node = next[ 0 ] as HTMLElement\n\t\t\t\n\t\t\tconst atom = $mol_atom_current< HTMLElement >()\n\t\t\tnew $mol_defer( ()=> {\n\t\t\t\tif( node ) return node.focus()\n\n\t\t\t\tconst el = atom.cache()[0]\n\t\t\t\tif( el ) el.blur()\n\t\t\t} )\n\n\t\t\treturn undefined\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic position( ...diff : any[] ) {\n\t\t\tif( diff.length ) {\n\t\t\t\tif( !diff[ 0 ] ) return diff[ 0 ]\n\t\t\t\t\n\t\t\t\tvar start = diff[ 0 ].start\n\t\t\t\tvar end = diff[ 0 ].end\n\t\t\t\tif( !( start <= end ) ) throw new Error( `Wrong offsets (${start},${end})` )\n\t\t\t\t\n\t\t\t\tvar root = $mol_dom_context.document.getElementById( diff[ 0 ].id )\n\t\t\t\troot.focus()\n\t\t\t\t\n\t\t\t\tvar range = new Range\n\t\t\t\t\n\t\t\t\tvar cur = root.firstChild\n\t\t\t\twhile( cur !== root ) {\n\t\t\t\t\twhile( cur.firstChild ) cur = cur.firstChild\n\t\t\t\t\tif( cur.nodeValue ) {\n\t\t\t\t\t\tvar length = cur.nodeValue.length\n\t\t\t\t\t\tif( length >= start ) break\n\t\t\t\t\t\tstart -= length\n\t\t\t\t\t}\n\t\t\t\t\twhile( !cur.nextSibling ) {\n\t\t\t\t\t\tcur = cur.parentNode\n\t\t\t\t\t\tif( cur === root ) {\n\t\t\t\t\t\t\tstart = root.childNodes.length\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trange.setStart( cur , start )\n\t\t\t\t\n\t\t\t\tvar cur = root.firstChild\n\t\t\t\twhile( cur !== root ) {\n\t\t\t\t\twhile( cur.firstChild ) cur = cur.firstChild\n\t\t\t\t\tif( cur.nodeValue ) {\n\t\t\t\t\t\tvar length = cur.nodeValue.length\n\t\t\t\t\t\tif( length >= end ) break\n\t\t\t\t\t\tend -= length\n\t\t\t\t\t}\n\t\t\t\t\twhile( !cur.nextSibling ) {\n\t\t\t\t\t\tcur = cur.parentNode\n\t\t\t\t\t\tif( cur === root ) {\n\t\t\t\t\t\t\tend = root.childNodes.length\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trange.setEnd( cur , end )\n\t\t\t\t\n\t\t\t\tvar sel = $mol_dom_context.document.getSelection()\n\t\t\t\tsel.removeAllRanges()\n\t\t\t\tsel.addRange( range )\n\t\t\t\t\n\t\t\t\treturn diff[ 0 ]\n\t\t\t} else {\n\t\t\t\tvar sel = $mol_dom_context.document.getSelection()\n\t\t\t\tif( sel.rangeCount === 0 ) return null\n\t\t\t\tvar range = sel.getRangeAt( 0 )\n\t\t\t\t\n\t\t\t\tvar el = range.commonAncestorContainer as Element\n\t\t\t\twhile( el && !el.id ) el = el.parentElement\n\t\t\t\t\n\t\t\t\tif( !el ) return { id : null , start : 0 , end : 0 }\n\t\t\t\t\n\t\t\t\tvar meter = new Range\n\t\t\t\tmeter.selectNodeContents( el )\n\t\t\t\t\n\t\t\t\tmeter.setEnd( range.startContainer , range.startOffset )\n\t\t\t\tvar startOffset = meter.toString().length\n\t\t\t\t\n\t\t\t\tmeter.setEnd( range.endContainer , range.endOffset )\n\t\t\t\tvar endOffset = meter.toString().length\n\t\t\t\t\n\t\t\t\treturn { id : el.id , start : startOffset , end : endOffset }\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic onFocus( event : FocusEvent ) {\n\t\t\tconst parents : Element[] = []\n\t\t\tlet element = event.target as HTMLElement\n\t\t\t\n\t\t\twhile( element ) {\n\t\t\t\tparents.push( element )\n\t\t\t\telement = element.parentNode as HTMLElement\n\t\t\t}\n\n\t\t\tthis.focused( parents , $mol_atom_force_cache )\n\t\t}\n\t\t\n\t\tstatic onBlur( event : FocusEvent ) {\n\t\t\tconst focused = this.focused()\n\t\t\tsetTimeout( $mol_log_group( '$mol_view_selection blur' , ()=> {\n\t\t\t\tif( focused !== this.focused() ) return\n\t\t\t\tthis.focused( [] , $mol_atom_force_cache )\n\t\t\t} ) )\n\t\t}\n\t}\n\t\n}\n","namespace $ {\n\t\n\t$mol_dom_context.document.addEventListener( 'selectionchange' , event => {\n\t\t$mol_view_selection.position( undefined , $mol_atom_force_cache )\n\t} )\n\t\n\t$mol_dom_context.document.addEventListener(\n\t\t'focus' ,\n\t\t$mol_log_group( '$mol_view_selection focus' , ( event : FocusEvent )=> $mol_view_selection.onFocus( event ) ) ,\n\t\ttrue\n\t)\n\t\n\t$mol_dom_context.document.addEventListener(\n\t\t'blur' ,\n\t\t( event : FocusEvent )=> $mol_view_selection.onBlur( event ) ,\n\t\ttrue\n\t)\n\t\n}\n","namespace $ {\n export const enum $mol_keyboard_code {\n backspace = 8,\n tab = 9,\n enter = 13,\n shift= 16,\n ctrl = 17,\n alt = 18,\n pause = 19,\n capsLock = 20,\n escape = 27,\n space = 32,\n pageUp = 33,\n pageDown = 34,\n end = 35,\n home = 36,\n left = 37,\n up = 38,\n right = 39,\n down = 40,\n insert = 45,\n delete = 46,\n key0 = 48,\n key1 = 49,\n key2 = 50,\n key3 = 51,\n key4 = 52,\n key5 = 53,\n key6 = 54,\n key7 = 55,\n key8 = 56,\n key9 = 57,\n A = 65,\n B = 66,\n C = 67,\n D = 68,\n E = 69,\n F = 70,\n G = 71,\n H = 72,\n I = 73,\n J = 74,\n K = 75,\n L = 76,\n M = 77,\n N = 78,\n O = 79,\n P = 80,\n Q = 81,\n R = 82,\n S = 83,\n T = 84,\n U = 85,\n V = 86,\n W = 87,\n X = 88,\n Y = 89,\n Z = 90,\n metaLeft = 91,\n metaRight = 92,\n select = 93,\n numpad0 = 96,\n numpad1 = 97,\n numpad2 = 98,\n numpad3 = 99,\n numpad4 = 100,\n numpad5 = 101,\n numpad6 = 102,\n numpad7 = 103,\n numpad8 = 104,\n numpad9 = 105,\n multiply = 106,\n add = 107,\n subtract = 109,\n decimal = 110,\n divide = 111,\n F1 = 112,\n F2 = 113,\n F3 = 114,\n F4 = 115,\n F5 = 116,\n F6 = 117,\n F7 = 118,\n F8 = 119,\n F9 = 120,\n F10 = 121,\n F11 = 122,\n F12 = 123,\n numLock = 144,\n scrollLock = 145,\n semicolon = 186,\n equals = 187,\n comma = 188,\n dash = 189,\n period = 190,\n forwardSlash = 191,\n graveAccent = 192,\n bracketOpen = 219,\n slashBack = 220,\n bracketClose = 221,\n quoteSingle = 222\n }\n}\n","namespace $ { export class $mol_string extends $mol_view {\n\n\t/// dom_name \\input\n\tdom_name() {\n\t\treturn \"input\"\n\t}\n\n\t/// enabled true\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/// debounce 200\n\tdebounce() {\n\t\treturn 200\n\t}\n\n\t/// minimal_height 40\n\tminimal_height() {\n\t\treturn 40\n\t}\n\n\t/// field * \n\t/// \t^ \n\t/// \tdisabled <= disabled - \n\t/// \tvalue <= value_changed?val - \n\t/// \tplaceholder <= hint - \n\t/// \ttype <= type?val -\n\tfield() {\n\t\treturn ({\n\t\t\t...super.field() ,\n\t\t\t\"disabled\" : this.disabled() ,\n\t\t\t\"value\" : this.value_changed() ,\n\t\t\t\"placeholder\" : this.hint() ,\n\t\t\t\"type\" : this.type() ,\n\t\t})\n\t}\n\n\t/// disabled false\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/// value_changed?val <=> value?val -\n\t@ $mol_mem\n\tvalue_changed( val? : any , force? : $mol_atom_force ) {\n\t\treturn this.value( val )\n\t}\n\n\t/// value?val \\\n\t@ $mol_mem\n\tvalue( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// type?val \\text\n\t@ $mol_mem\n\ttype( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"text\"\n\t}\n\n\t/// attr * \n\t/// \t^ \n\t/// \tmaxlength <= length_max -\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"maxlength\" : this.length_max() ,\n\t\t})\n\t}\n\n\t/// length_max Infinity\n\tlength_max() {\n\t\treturn Infinity\n\t}\n\n\t/// event * \n\t/// \t^ \n\t/// \tinput?event <=> event_change?event - \n\t/// \tkeypress?event <=> event_key_press?event -\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"input\" : ( event? : any )=> this.event_change( event ) ,\n\t\t\t\"keypress\" : ( event? : any )=> this.event_key_press( event ) ,\n\t\t})\n\t}\n\n\t/// event_change?event null\n\t@ $mol_mem\n\tevent_change( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// event_key_press?event null\n\t@ $mol_mem\n\tevent_key_press( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_string extends $.$mol_string {\n\t\t\n\t\t_timer = 0\n\t\t\n\t\tevent_change( next? : Event ) {\n\t\t\tif( !next ) return\n\t\t\t\n\t\t\tclearTimeout( this._timer )\n\t\t\tthis._timer = setTimeout( $mol_log_group( `${ this }.event_change()` , () => {\n\t\t\t\tthis.value( ( next.target as HTMLInputElement ).value ) \n\t\t\t} ) , this.debounce() )\n\t\t}\n\t\t\n\t\tevent_key_press( next? : KeyboardEvent ) { \n\t\t\tif( !next ) return\n\t\t\t\n\t\t\tif( next.keyCode === $mol_keyboard_code.enter ) {\n\t\t\t\tthis.value( ( next.target as HTMLInputElement ).value )\n\t\t\t}\n\t\t} \n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t}\n}\n","namespace $ { export class $mol_button extends $mol_view {\n\n\t/// enabled true\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/// minimal_height 40\n\tminimal_height() {\n\t\treturn 40\n\t}\n\n\t/// click?event null\n\t@ $mol_mem\n\tclick( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// event_click?event null\n\t@ $mol_mem\n\tevent_click( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// event * \n\t/// \t^ \n\t/// \tclick?event <=> event_activate?event - \n\t/// \tkeypress?event <=> event_key_press?event -\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"click\" : ( event? : any )=> this.event_activate( event ) ,\n\t\t\t\"keypress\" : ( event? : any )=> this.event_key_press( event ) ,\n\t\t})\n\t}\n\n\t/// event_activate?event null\n\t@ $mol_mem\n\tevent_activate( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// event_key_press?event null\n\t@ $mol_mem\n\tevent_key_press( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// attr * \n\t/// \t^ \n\t/// \tdisabled <= disabled - \n\t/// \trole \\button\n\t/// \ttabindex <= tab_index - \n\t/// \ttitle <= hint -\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"disabled\" : this.disabled() ,\n\t\t\t\"role\" : \"button\" ,\n\t\t\t\"tabindex\" : this.tab_index() ,\n\t\t\t\"title\" : this.hint() ,\n\t\t})\n\t}\n\n\t/// disabled false\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/// tab_index 0\n\ttab_index() {\n\t\treturn 0\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// sub / <= title -\n\tsub() {\n\t\treturn [].concat( this.title() )\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_button extends $.$mol_button {\n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t\t\n\t\tevent_activate( next : Event ) {\n\t\t\tif( !next ) return\n\t\t\tif( !this.enabled() ) return\n\t\t\t\n\t\t\tthis.event_click( next )\n\t\t\tthis.click( next )\n\t\t}\n\t\t\n\t\tevent_key_press ( event: KeyboardEvent ) { \n\t\t\tif( event.keyCode === $mol_keyboard_code.enter ) {\n\t\t\t\treturn this.event_activate( event )\n\t\t\t}\n\t\t} \n\t\t\n\t\ttab_index() {\n\t\t\treturn this.enabled() ? super.tab_index() : null\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { export class $mol_button_typed extends $mol_button {\n\n} }\n\nnamespace $ { export class $mol_button_major extends $mol_button_typed {\n\n} }\n\nnamespace $ { export class $mol_button_minor extends $mol_button_typed {\n\n} }\n\nnamespace $ { export class $mol_button_danger extends $mol_button_typed {\n\n} }\n\n","namespace $ {\n\t\n\texport function $mol_merge_dict< Target , Source >( target : Target , source : Source ) : Target & Source {\n\t\tlet result = {} as any\n\t\tfor( let key in target ) result[ key ] = ( target as any )[ key ]\n\t\tfor( let key in source ) result[ key ] = ( source as any )[ key ]\n\t\treturn result\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_state_arg< Value > extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic href( next? : string , force? : $mol_atom_force ) {\n\t\t\tif( next ) history.replaceState( history.state , $mol_dom_context.document.title , `${ next }` )\n\t\t\treturn window.location.search + window.location.hash\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic dict( next? : { [ key : string ] : string } ) {\n\t\t\tvar href = this.href( next && this.make_link( next ) )\n\t\t\tvar chunks = href.split( /[\\/\\?#&;]/g )\n\t\t\t\n\t\t\tvar params : { [ key : string ] : string } = {}\n\t\t\tchunks.forEach(\n\t\t\t\tchunk => {\n\t\t\t\t\tif( !chunk ) return\n\t\t\t\t\tvar vals = chunk.split( '=' ).map( decodeURIComponent )\n\t\t\t\t\tparams[ vals.shift() ] = vals.join( '=' )\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\treturn params\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic value( key : string , next? : string ) {\n\t\t\tconst nextDict = ( next === void 0 ) ? void 0 : $mol_merge_dict( this.dict() , { [ key ] : next } ) \n\t\t\tconst next2 = this.dict( nextDict )[ key ]\n\t\t\treturn ( next2 == null ) ? null : next2\n\t\t}\n\t\t\n\t\tstatic link( next : { [ key : string ] : string } ) {\n\t\t\treturn this.make_link( $mol_merge_dict( this.dict() , next ) )\n\t\t}\n\t\t\n\t\tstatic make_link( next : { [ key : string ] : string } ) {\n\t\t\tconst chunks : string[] = []\n\t\t\tfor( let key in next ) {\n\t\t\t\tif( null == next[ key ] ) continue\n\t\t\t\tchunks.push( [ key ].concat( next[ key ] ? next[ key ] : [] ).map( this.encode ).join( '=' ) )\n\t\t\t}\n\t\t\t\n\t\t\treturn new URL( '#' + chunks.join( '/' ) , window.location.href ).toString()\n\t\t}\n\n\t\tstatic encode( str : string ) {\n\t\t\treturn encodeURIComponent( str ).replace( /\\(/g , '%28' ).replace( /\\)/g , '%29' )\n\t\t}\n\t\t\n\t\tconstructor( public prefix = '' ) {\n\t\t\tsuper()\n\t\t}\n\t\t\n\t\tvalue( key : string , next? : string ) {\n\t\t\treturn $mol_state_arg.value( this.prefix + key , next )\n\t\t}\n\t\t\n\t\tsub( postfix : string ) {\n\t\t\treturn new $mol_state_arg( this.prefix + postfix + '.' )\n\t\t}\n\t\t\n\t\tlink( next : { [ key : string ] : string } ) {\n\t\t\tvar prefix = this.prefix\n\t\t\tvar dict : { [ key : string ] : string } = {}\n\t\t\tfor( var key in next ) {\n\t\t\t\tdict[ prefix + key ] = next[ key ]\n\t\t\t}\n\t\t\treturn $mol_state_arg.link( dict )\n\t\t}\n\t\t\n\t}\n\t\n\twindow.addEventListener( 'hashchange' , $mol_log_group( '$mol_state_arg hashchange' , ( event : HashChangeEvent )=> {\n\t\t$mol_state_arg.href( undefined , $mol_atom_force_cache ) \n\t} ) )\n\t\n}\n","namespace $ { export class $mol_link extends $mol_view {\n\n\t/// minimal_height 40\n\tminimal_height() {\n\t\treturn 40\n\t}\n\n\t/// dom_name \\a\n\tdom_name() {\n\t\treturn \"a\"\n\t}\n\n\t/// attr * \n\t/// \t^ \n\t/// \thref <= uri - \n\t/// \ttitle <= hint - \n\t/// \ttarget <= target - \n\t/// \tdownload <= file_name - \n\t/// \tmol_link_current <= current -\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"href\" : this.uri() ,\n\t\t\t\"title\" : this.hint() ,\n\t\t\t\"target\" : this.target() ,\n\t\t\t\"download\" : this.file_name() ,\n\t\t\t\"mol_link_current\" : this.current() ,\n\t\t})\n\t}\n\n\t/// uri \\\n\turi() {\n\t\treturn \"\"\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// target \\_self\n\ttarget() {\n\t\treturn \"_self\"\n\t}\n\n\t/// file_name \\\n\tfile_name() {\n\t\treturn \"\"\n\t}\n\n\t/// current false\n\tcurrent() {\n\t\treturn false\n\t}\n\n\t/// sub / <= title -\n\tsub() {\n\t\treturn [].concat( this.title() )\n\t}\n\n\t/// arg *\n\targ() {\n\t\treturn ({\n\t\t})\n\t}\n\n\t/// event * \n\t/// \t^ \n\t/// \tclick?event <=> click?event -\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"click\" : ( event? : any )=> this.click( event ) ,\n\t\t})\n\t}\n\n\t/// click?event <=> event_click?event -\n\t@ $mol_mem\n\tclick( event? : any , force? : $mol_atom_force ) {\n\t\treturn this.event_click( event )\n\t}\n\n\t/// event_click?event null\n\t@ $mol_mem\n\tevent_click( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\n","namespace $.$$ {\n\t\n\texport class $mol_link extends $.$mol_link {\n\t\t\n\t\t@ $mol_mem\n\t\turi() {\n\t\t\treturn new $mol_state_arg( this.state_key() ).link( this.arg() )\n\t\t}\n\t\t\n\t\tcurrent() {\n\t\t\treturn this.uri() === $mol_state_arg.link( {} )\n\t\t}\n\n\t\tevent_click( event? : Event ) {\n\t\t\tsetTimeout( $mol_log_group( `${ this }.event_click()` , ()=> this.focused( false ) ) , 200 )\n\t\t}\n\n\t\tfile_name() {\n\t\t\treturn null as string\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_check extends $mol_button_typed {\n\n\t/// attr * \n\t/// \t^ \n\t/// \tmol_check_checked <= checked?val - \n\t/// \taria-checked <= checked?val - \n\t/// \trole \\checkbox\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"mol_check_checked\" : this.checked() ,\n\t\t\t\"aria-checked\" : this.checked() ,\n\t\t\t\"role\" : \"checkbox\" ,\n\t\t})\n\t}\n\n\t/// checked?val false\n\t@ $mol_mem\n\tchecked( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// sub / \n\t/// \t<= Icon - \n\t/// \t<= label -\n\tsub() {\n\t\treturn [].concat( this.Icon() , this.label() )\n\t}\n\n\t/// Icon null\n\tIcon() {\n\t\treturn null as any\n\t}\n\n\t/// label / <= Title -\n\tlabel() {\n\t\treturn [].concat( this.Title() )\n\t}\n\n\t/// Title $mol_view sub / <= title -\n\t@ $mol_mem\n\tTitle() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.title() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// title \\\n\ttitle() {\n\t\treturn \"\"\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_check extends $.$mol_check {\n\n\t\tevent_click( next? : Event ) {\n\t\t\tthis.checked( !this.checked() )\n\t\t\tif( next ) next.preventDefault()\n\t\t}\n\n\t}\n}\n","namespace $ { export class $mol_scroll extends $mol_view {\n\n\t/// minimal_height 0\n\tminimal_height() {\n\t\treturn 0\n\t}\n\n\t/// moving_hor?val false\n\t@ $mol_mem\n\tmoving_hor( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// moving_vert?val false\n\t@ $mol_mem\n\tmoving_vert( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// field * \n\t/// \t^ \n\t/// \tscrollTop <= scroll_top?val - \n\t/// \tscrollLeft <= scroll_left?val - \n\t/// \tscrollBottom <= scroll_bottom?val - \n\t/// \tscrollRight <= scroll_right?val -\n\tfield() {\n\t\treturn ({\n\t\t\t...super.field() ,\n\t\t\t\"scrollTop\" : this.scroll_top() ,\n\t\t\t\"scrollLeft\" : this.scroll_left() ,\n\t\t\t\"scrollBottom\" : this.scroll_bottom() ,\n\t\t\t\"scrollRight\" : this.scroll_right() ,\n\t\t})\n\t}\n\n\t/// scroll_top?val 0\n\t@ $mol_mem\n\tscroll_top( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// scroll_left?val 0\n\t@ $mol_mem\n\tscroll_left( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// scroll_bottom?val 0\n\t@ $mol_mem\n\tscroll_bottom( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// scroll_right?val 0\n\t@ $mol_mem\n\tscroll_right( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// event_async * \n\t/// \t^ \n\t/// \tscroll?event <=> event_scroll?event -\n\tevent_async() {\n\t\treturn ({\n\t\t\t...super.event_async() ,\n\t\t\t\"scroll\" : ( event? : any )=> this.event_scroll( event ) ,\n\t\t})\n\t}\n\n\t/// event_scroll?event null\n\t@ $mol_mem\n\tevent_scroll( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// Strut $mol_view style * transform <= strut_transform -\n\t@ $mol_mem\n\tStrut() {\n\t\treturn (( obj )=>{\n\t\t\tobj.style = () => ({\n\t\t\t\"transform\" : this.strut_transform() ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// strut_transform \\\n\tstrut_transform() {\n\t\treturn \"\"\n\t}\n\n} }\n\n","namespace $.$$ {\n\t\n\texport function $mol_scroll_top() {\n\t\treturn 0\n\t}\n\t\n\texport function $mol_scroll_left() {\n\t\treturn 0\n\t}\n\t\n\texport function $mol_scroll_moving() {\n\t\treturn false\n\t}\n\t\n\texport function $mol_scroll_moving_vert() {\n\t\treturn false\n\t}\n\t\n\texport function $mol_scroll_moving_hor() {\n\t\treturn false\n\t}\n\t\n\texport class $mol_scroll extends $.$mol_scroll {\n\n\t\t// scroll_top( next? : number ) {\n\t\t// \treturn $mol_state_session.value( `${ this }.scroll_top()` , next ) || 0\n\t\t// }\n\t\t// \n\t\t// scroll_left( next? : number ) {\n\t\t// \treturn $mol_state_session.value( `${ this }.scroll_left()` , next ) || 0\n\t\t// }\n\t\t\n\t\t@ $mol_mem\n\t\tscroll_bottom( next? : number ) {\n\t\t\treturn next || 0\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tscroll_right( next? : number ) {\n\t\t\treturn next || 0\n\t\t}\n\t\t\n\t\tevent_scroll( next? : Event ) {\n\t\t\tthis.moving_vert( this.scroll_top() !== this.dom_node().scrollTop )\n\t\t\tthis.moving_hor( this.scroll_left() !== this.dom_node().scrollLeft )\n\t\t\tthis.moving_task_stop()\n\t\t\t\n\t\t\tnew $mol_defer( $mol_log_group( `${ this }.event_scroll()` , ()=> {\n\t\t\t\tconst el = this.dom_node() as HTMLElement\n\t\t\t\t\n\t\t\t\tconst top = Math.max( 0 , el.scrollTop )\n\t\t\t\tconst left = Math.max( 0 , el.scrollLeft )\n\t\t\t\t\n\t\t\t\tthis.scroll_top( top )\n\t\t\t\tthis.scroll_left( left )\n\t\t\t\t\n\t\t\t\tthis.scroll_bottom( Math.max( 0 , el.scrollHeight - top - el.offsetHeight ) )\n\t\t\t\tthis.scroll_right( Math.max( 0 , el.scrollWidth - left - el.offsetWidth ) )\n\t\t\t} ) )\n\t\t}\n\t\t\n\t\tevent_repos( next? : Event ) {\n\t\t\tnew $mol_defer( ()=> {\n\t\t\t\tconst el = this.dom_node() as HTMLElement\n\t\t\t\t\n\t\t\t\tthis.scroll_bottom( Math.max( 0 , el.scrollHeight - this.scroll_top() - el.offsetHeight ) )\n\t\t\t\tthis.scroll_right( Math.max( 0 , el.scrollWidth - this.scroll_left() - el.offsetWidth ) )\n\t\t\t} )\n\t\t}\n\t\t\n\t\t_moving_task_timer = 0\n\t\tmoving_task_stop() {\n\t\t\tclearTimeout( this._moving_task_timer )\n\t\t\tthis._moving_task_timer = setTimeout( $mol_log_group( `${ this }.moving_task_stop()` , ()=> {\n\t\t\t\tthis.moving_vert( false )\n\t\t\t\tthis.moving_hor( false )\n\t\t\t} ) , 50 )\n\t\t}\n\t\t\n\t\tmoving() {\n\t\t\treturn this.moving_hor() || this.moving_vert()\n\t\t}\n\n\t\t@ $mol_mem\n\t\tcontext_sub( ) {\n\t\t\tconst context = this.context()\n\t\t\tconst subContext : typeof context = Object.create( context )\n\t\t\tsubContext.$mol_view_visible_height = ()=> {\n\t\t\t\tconst sizeWin = $mol_window.size()\n\t\t\t\tconst limit = context.$mol_view_visible_height()\n\t\t\t\treturn this.scroll_top() + Math.min( sizeWin.height , limit )\n\t\t\t}\n\t\t\tsubContext.$mol_view_visible_width = ()=> {\n\t\t\t\tconst sizeWin = $mol_window.size()\n\t\t\t\tconst limit = context.$mol_view_visible_width()\n\t\t\t\treturn this.scroll_left() + Math.min( sizeWin.width , limit )\n\t\t\t}\n\t\t\tsubContext.$mol_scroll_top = ()=> this.scroll_top()\n\t\t\tsubContext.$mol_scroll_left = ()=> this.scroll_left()\n\t\t\tsubContext.$mol_scroll_moving = ()=> this.moving()\n\t\t\tsubContext.$mol_scroll_moving_vert = ()=> this.moving_vert()\n\t\t\tsubContext.$mol_scroll_moving_hor = ()=> this.moving_hor()\n\t\t\treturn subContext\n\t\t}\n\t\t\n\t\tstrut_transform() {\n\t\t\ttry {\n\t\t\t\treturn `translate3d( 0 , ${ this.content_height() }px , 0 )`\n\t\t\t} catch( error ) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t}\n\n\t\tsub_visible() {\n\t\t\tconst sub = [\n\t\t\t\tthis.Strut() ,\n\t\t\t\t... ( this.sub() || [] ) ,\n\t\t\t]\n\n\t\t\tconst context = this.context_sub()\n\t\t\tsub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.$ = context\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn sub\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ { export class $mol_list extends $mol_view {\n\n\t/// sub <= rows -\n\tsub() {\n\t\treturn this.rows()\n\t}\n\n\t/// rows /\n\trows() {\n\t\treturn [] as any[]\n\t}\n\n\t/// Empty null\n\tEmpty() {\n\t\treturn null as any\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_list extends $.$mol_list {\n\t\t\n\t\tsub() {\n\t\t\tconst rows = this.rows()\n\t\t\treturn ( rows.length === 0 ) ? [ this.Empty() ] : rows\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\trow_offsets() : number[] {\n\t\t\tvar sub = this.sub()\n\t\t\tif( !sub ) return null\n\t\t\t\n\t\t\tlet heightLimit = this.$.$mol_view_visible_height()\n\t\t\tvar offset = 0\n\t\t\t\n\t\t\tvar next : number[] = []\n\t\t\tfor( let child of sub ) {\n\t\t\t\tnext.push( offset )\n\t\t\t\t\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\toffset += child.minimal_height()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( offset > heightLimit ) break\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\trow_context( index : number ) {\n\t\t\tlet context = this.context()\n\t\t\tlet next = Object.create( context )\n\t\t\tnext.$mol_view_visible_height = ()=> {\n\t\t\t\tconst limit = context.$mol_view_visible_height()\n\t\t\t\treturn limit - this.row_offsets()[ index ]\n\t\t\t}\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tsub_visible() {\n\t\t\tvar sub = this.sub()\n\t\t\tif( !sub ) return sub\n\t\t\t\n\t\t\tvar limit = this.row_offsets().length\n\t\t\t\n\t\t\tvar next : $mol_view[] = []\n\t\t\tfor( let i = 0 ; i < limit ; ++ i ) {\n\t\t\t\tconst child = sub[ i ]\n\t\t\t\tif( child == null ) continue \n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.$ = this.row_context( i )\n\t\t\t\t}\n\t\t\t\tnext.push( child )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tminimal_height() {\n\t\t\tvar height = 0\n\t\t\tvar sub = this.sub()\n\t\t\tif( sub ) sub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\theight += child.minimal_height()\n\t\t\t\t}\n\t\t\t} )\n\t\t\treturn height\n\t\t}\n\n\t}\n}\n","namespace $ { export class $mol_bar extends $mol_view {\n\n} }\n\n","namespace $ {\n\t\n\texport class $mol_state_local< Value > extends $mol_object {\n\t\t\n\t\tstatic 'native()' : Pick< Storage , 'getItem'|'setItem'|'removeItem' >\n\t\tstatic native() {\n\t\t\tif( this['native()'] ) return this['native()']\n\n\t\t\tcheck : try {\n\t\t\t\tconst native = $mol_dom_context.localStorage\n\t\t\t\tif( !native ) break check\n\t\t\t\t\n\t\t\t\tnative.setItem( '' , '' )\n\t\t\t\tnative.removeItem( '' )\n\t\t\t\treturn this['native()'] = native\n\t\t\t} catch( error ) {\n\t\t\t\tconsole.warn( error )\n\t\t\t}\n\n\t\t\treturn this['native()'] = {\n\t\t\t\tgetItem( key : string ) {\n\t\t\t\t\treturn this[ ':' + key ]\n\t\t\t\t} ,\n\t\t\t\tsetItem( key : string , value : string ) {\n\t\t\t\t\tthis[ ':' + key ] = value\n\t\t\t\t} ,\n\t\t\t\tremoveItem( key : string ) {\n\t\t\t\t\tthis[ ':' + key ] = void 0\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\tstatic value< Value >( key : string , next? : Value , force? : $mol_atom_force ) : Value {\n\t\t\tif( next === void 0 ) return JSON.parse( this.native().getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) this.native().removeItem( key )\n\t\t\telse this.native().setItem( key , JSON.stringify( next ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_local.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\twindow.addEventListener( 'storage' , event => {\n\t\t$.$mol_state_local.value( event.key , void 0 , $mol_atom_force_cache )\n\t} )\n}\n","namespace $ { export class $mol_app_todomvc extends $mol_scroll {\n\n\t/// title \\Todos\n\ttitle() {\n\t\treturn \"Todos\"\n\t}\n\n\t/// sub / <= Page -\n\tsub() {\n\t\treturn [].concat( this.Page() )\n\t}\n\n\t/// Page $mol_list rows / \n\t/// \t<= Title - \n\t/// \t<= Panel -\n\t@ $mol_mem\n\tPage() {\n\t\treturn (( obj )=>{\n\t\t\tobj.rows = () => [].concat( this.Title() , this.Panel() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_list )\n\t}\n\n\t/// Title $mol_view \n\t/// \tminimal_height 176 \n\t/// \tsub / <= title -\n\t@ $mol_mem\n\tTitle() {\n\t\treturn (( obj )=>{\n\t\t\tobj.minimal_height = () => 176\n\t\t\tobj.sub = () => [].concat( this.title() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// Panel $mol_list rows <= panels -\n\t@ $mol_mem\n\tPanel() {\n\t\treturn (( obj )=>{\n\t\t\tobj.rows = () => this.panels()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_list )\n\t}\n\n\t/// panels / \n\t/// \t<= Head - \n\t/// \t<= List - \n\t/// \t<= Foot -\n\tpanels() {\n\t\treturn [].concat( this.Head() , this.List() , this.Foot() )\n\t}\n\n\t/// Head $mol_view \n\t/// \tminimal_height 64 \n\t/// \tsub <= Head_content -\n\t@ $mol_mem\n\tHead() {\n\t\treturn (( obj )=>{\n\t\t\tobj.minimal_height = () => 64\n\t\t\tobj.sub = () => this.Head_content()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// Head_content / \n\t/// \t<= Head_complete - \n\t/// \t<= Add -\n\tHead_content() {\n\t\treturn [].concat( this.Head_complete() , this.Add() )\n\t}\n\n\t/// Head_complete $mol_check \n\t/// \tenabled <= head_complete_enabled - \n\t/// \tchecked?val <=> completed_all?val - \n\t/// \ttitle \\❯\n\t@ $mol_mem\n\tHead_complete() {\n\t\treturn (( obj )=>{\n\t\t\tobj.enabled = () => this.head_complete_enabled()\n\t\t\tobj.checked = ( val? : any ) => this.completed_all( val )\n\t\t\tobj.title = () => \"❯\"\n\t\t\treturn obj\n\t\t})( new this.$.$mol_check )\n\t}\n\n\t/// head_complete_enabled false\n\thead_complete_enabled() {\n\t\treturn false\n\t}\n\n\t/// completed_all?val false\n\t@ $mol_mem\n\tcompleted_all( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// Add $mol_app_todomvc_add \n\t/// \tvalue?val <=> task_title_new?val - \n\t/// \tevent_done?event <=> event_add?event -\n\t@ $mol_mem\n\tAdd() {\n\t\treturn (( obj )=>{\n\t\t\tobj.value = ( val? : any ) => this.task_title_new( val )\n\t\t\tobj.event_done = ( event? : any ) => this.event_add( event )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_app_todomvc_add )\n\t}\n\n\t/// task_title_new?val \\\n\t@ $mol_mem\n\ttask_title_new( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// event_add?event null\n\t@ $mol_mem\n\tevent_add( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// List $mol_list rows <= task_rows -\n\t@ $mol_mem\n\tList() {\n\t\treturn (( obj )=>{\n\t\t\tobj.rows = () => this.task_rows()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_list )\n\t}\n\n\t/// task_rows /\n\ttask_rows() {\n\t\treturn [] as any[]\n\t}\n\n\t/// Foot $mol_view sub <= foot_content -\n\t@ $mol_mem\n\tFoot() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => this.foot_content()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// foot_content / \n\t/// \t<= Pending - \n\t/// \t<= Filter - \n\t/// \t<= Sweep -\n\tfoot_content() {\n\t\treturn [].concat( this.Pending() , this.Filter() , this.Sweep() )\n\t}\n\n\t/// Pending $mol_view sub / <= pending_message -\n\t@ $mol_mem\n\tPending() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.pending_message() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// pending_message \\0 items left\n\tpending_message() {\n\t\treturn \"0 items left \"\n\t}\n\n\t/// Filter $mol_bar sub <= filterOptions -\n\t@ $mol_mem\n\tFilter() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => this.filterOptions()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_bar )\n\t}\n\n\t/// filterOptions / \n\t/// \t<= Filter_all - \n\t/// \t<= Filter_active - \n\t/// \t<= Filter_completed -\n\tfilterOptions() {\n\t\treturn [].concat( this.Filter_all() , this.Filter_active() , this.Filter_completed() )\n\t}\n\n\t/// Filter_all $mol_link \n\t/// \tsub / <= filter_all_label - \n\t/// \targ * completed null\n\t@ $mol_mem\n\tFilter_all() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.filter_all_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : null as any ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_link )\n\t}\n\n\t/// filter_all_label \\All\n\tfilter_all_label() {\n\t\treturn \"All\"\n\t}\n\n\t/// Filter_active $mol_link \n\t/// \tsub / <= filter_active_label - \n\t/// \targ * completed \\false\n\t@ $mol_mem\n\tFilter_active() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.filter_active_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : \"false\" ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_link )\n\t}\n\n\t/// filter_active_label \\Active\n\tfilter_active_label() {\n\t\treturn \"Active\"\n\t}\n\n\t/// Filter_completed $mol_link \n\t/// \tsub / <= filter_completed_label - \n\t/// \targ * completed \\true\n\t@ $mol_mem\n\tFilter_completed() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.filter_completed_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : \"true\" ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_link )\n\t}\n\n\t/// filter_completed_label \\Completed\n\tfilter_completed_label() {\n\t\treturn \"Completed\"\n\t}\n\n\t/// Sweep $mol_button_minor \n\t/// \tenabled <= sweep_enabled - \n\t/// \tevent_click?event <=> event_sweep?event - \n\t/// \tsub / <= sweep_label -\n\t@ $mol_mem\n\tSweep() {\n\t\treturn (( obj )=>{\n\t\t\tobj.enabled = () => this.sweep_enabled()\n\t\t\tobj.event_click = ( event? : any ) => this.event_sweep( event )\n\t\t\tobj.sub = () => [].concat( this.sweep_label() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_button_minor )\n\t}\n\n\t/// sweep_enabled true\n\tsweep_enabled() {\n\t\treturn true\n\t}\n\n\t/// event_sweep?event null\n\t@ $mol_mem\n\tevent_sweep( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// sweep_label \\Clear completed\n\tsweep_label() {\n\t\treturn \"Clear completed\"\n\t}\n\n\t/// Task_row!id $mol_app_todomvc_task_row \n\t/// \tcompleted?val <=> task_completed!id?val - \n\t/// \ttitle?val <=> task_title!id?val - \n\t/// \tevent_drop?event <=> event_task_drop!id?event -\n\t@ $mol_mem_key\n\tTask_row( id : any ) {\n\t\treturn (( obj )=>{\n\t\t\tobj.completed = ( val? : any ) => this.task_completed(id , val )\n\t\t\tobj.title = ( val? : any ) => this.task_title(id , val )\n\t\t\tobj.event_drop = ( event? : any ) => this.event_task_drop(id , event )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_app_todomvc_task_row )\n\t}\n\n\t/// task_completed!id?val false\n\t@ $mol_mem_key\n\ttask_completed( id : any , val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// task_title!id?val \\\n\t@ $mol_mem_key\n\ttask_title( id : any , val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// event_task_drop!id?event null\n\t@ $mol_mem_key\n\tevent_task_drop( id : any , event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\nnamespace $ { export class $mol_app_todomvc_add extends $mol_string {\n\n\t/// hint \\What needs to be done?\n\thint() {\n\t\treturn \"What needs to be done?\"\n\t}\n\n\t/// event * \n\t/// \t^ \n\t/// \tkeyup?event <=> event_press?event -\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"keyup\" : ( event? : any )=> this.event_press( event ) ,\n\t\t})\n\t}\n\n\t/// event_press?event null\n\t@ $mol_mem\n\tevent_press( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// event_done?event null\n\t@ $mol_mem\n\tevent_done( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\nnamespace $ { export class $mol_app_todomvc_task_row extends $mol_view {\n\n\t/// minimal_height 64\n\tminimal_height() {\n\t\treturn 64\n\t}\n\n\t/// sub / \n\t/// \t<= Complete - \n\t/// \t<= Title - \n\t/// \t<= Drop -\n\tsub() {\n\t\treturn [].concat( this.Complete() , this.Title() , this.Drop() )\n\t}\n\n\t/// Complete $mol_check checked?val <=> completed?val -\n\t@ $mol_mem\n\tComplete() {\n\t\treturn (( obj )=>{\n\t\t\tobj.checked = ( val? : any ) => this.completed( val )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_check )\n\t}\n\n\t/// completed?val false\n\t@ $mol_mem\n\tcompleted( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// Title $mol_string \n\t/// \thint <= title_hint - \n\t/// \tvalue?val <=> title?val -\n\t@ $mol_mem\n\tTitle() {\n\t\treturn (( obj )=>{\n\t\t\tobj.hint = () => this.title_hint()\n\t\t\tobj.value = ( val? : any ) => this.title( val )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_string )\n\t}\n\n\t/// title_hint \\Task title\n\ttitle_hint() {\n\t\treturn \"Task title\"\n\t}\n\n\t/// title?val \\\n\t@ $mol_mem\n\ttitle( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// Drop $mol_button_typed \n\t/// \tsub / \\✖\n\t/// \tevent_click?event <=> event_drop?event -\n\t@ $mol_mem\n\tDrop() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( \"✖\" )\n\t\t\tobj.event_click = ( event? : any ) => this.event_drop( event )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_button_typed )\n\t}\n\n\t/// event_drop?event null\n\t@ $mol_mem\n\tevent_drop( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// attr * \n\t/// \t^ \n\t/// \tmol_app_todomvc_task_row_completed <= completed?val -\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"mol_app_todomvc_task_row_completed\" : this.completed() ,\n\t\t})\n\t}\n\n} }\n\n","interface $mol_app_todomvc_task {\n\tcompleted? : boolean\n\ttitle? : string\n}\n\nnamespace $.$$ {\n\t\n\texport class $mol_app_todomvc_add extends $.$mol_app_todomvc_add {\n\t\t\n\t\tevent_press( next? : KeyboardEvent ) {\n\t\t\tswitch( next.keyCode ) {\n\t\t\t\tcase $mol_keyboard_code.enter : return this.event_done( next )\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\texport class $mol_app_todomvc extends $.$mol_app_todomvc {\n\t\t\n\t\ttask_ids( next? : number[] ) : number[] {\n\t\t\treturn $mol_state_local.value( this.state_key( 'mol-todos' ) , next ) || []\n\t\t}\n\t\t\n\t\targ_completed() {\n\t\t\treturn $mol_state_arg.value( this.state_key( 'completed' ) )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tgroups_completed() {\n\t\t\tvar groups : { [ index : string ] : number[] } = { 'true' : [] , 'false' : [] }\n\t\t\tfor( let id of this.task_ids() ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tgroups[ String( task.completed ) ].push( id )\n\t\t\t}\n\t\t\treturn groups\n\t\t}\n\n\t\t@ $mol_mem\n\t\ttask_ids_filtered() {\n\t\t\tvar completed = this.arg_completed()\n\t\t\tif( completed ) {\n\t\t\t\treturn this.groups_completed()[ completed ] || []\n\t\t\t} else {\n\t\t\t\treturn this.task_ids()\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_mem\n\t\tcompleted_all( next? : boolean ) {\n\t\t\tif( next === void 0 ) return this.groups_completed()[ 'false' ].length === 0\n\t\t\t\n\t\t\tfor( let id of this.groups_completed()[ String( !next ) ] ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tthis.task( id , { title : task.title , completed : next } )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\thead_complete_enabled() {\n\t\t\treturn this.task_ids().length > 0 \n\t\t}\n\n\t\t@ $mol_mem\n\t\tpending_message() {\n\t\t\tlet count = this.groups_completed()[ 'false' ].length\n\t\t\treturn ( count === 1 ) ? '1 item left' : `${count} items left`\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tnew_id() {\n\t\t\treturn Math.max( 1 , 1 + Math.max( ... this.task_ids() ) )\n\t\t}\n\t\t\n\t\tevent_add( next : Event ) {\n\t\t\tvar title = this.task_title_new() \n\t\t\tif( !title ) return\n\t\t\t\n\t\t\tvar id = this.new_id()\n\t\t\tvar task = { completed : false , title }\n\t\t\tthis.task( id , task )\n\t\t\t\n\t\t\tthis.task_ids( this.task_ids().concat( id ) )\n\t\t\tthis.task_title_new( '' )\n\t\t}\n\n\t\t@ $mol_mem\n\t\ttask_rows() {\n\t\t\treturn this.task_ids_filtered().map( id => this.Task_row( id ) )\n\t\t}\n\t\t\n\t\ttask( id : number , next? : $mol_app_todomvc_task ) {\n\t\t\tconst key = this.state_key( `mol-todos-${id}` )\n\t\t\tif( next === void 0 ) {\n\t\t\t\treturn $mol_state_local.value<$mol_app_todomvc_task>( key ) || { title : '' , completed : false }\n\t\t\t}\n\t\t\t\n\t\t\t$mol_state_local.value( key , next )\n\t\t\t\n\t\t\treturn next || void 0\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttask_completed( id : number , next? : boolean ) {\n\t\t\treturn this.task( id , next === undefined ? undefined : { ... this.task( id ) , completed : next } ).completed\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttask_title( id : number , next? : string ) {\n\t\t\treturn this.task( id , next === undefined ? undefined : { ... this.task( id ) , title : next } ).title\n\t\t}\n\t\t\n\t\tevent_task_drop( id : number , next? : Event ) {\n\t\t\tthis.task( id , null )\n\t\t\tthis.task_ids( this.task_ids().filter( id2 => id !== id2 ) )\n\t\t}\n\n\t\tevent_sweep() {\n\t\t\tthis.task_ids( this.task_ids().filter( id => {\n\t\t\t\tif( !this.task( id ).completed ) return true\n\t\t\t\tthis.task( id , null )\n\t\t\t\treturn false\n\t\t\t} ) )\n\t\t}\n\t\t\n\t\tpanels() {\n\t\t\treturn [\n\t\t\t\tthis.Head() , \n\t\t\t\tthis.List() ,\n\t\t\t\t... this.foot_visible() ? [ this.Foot() ] : [] ,\n\t\t\t]\n\t\t}\n\t\t\n\t\tfoot_visible() {\n\t\t\treturn this.task_ids().length > 0\n\t\t}\n\n\t\tsweep_enabled() {\n\t\t\treturn this.groups_completed()[ 'true' ].length > 0\n\t\t}\n\t\t\n\t}\n\t\n}\n"]} \ No newline at end of file diff --git a/examples/mol/-/web.locale=en.json b/examples/mol/-/web.locale=en.json deleted file mode 100644 index 8020baf247..0000000000 --- a/examples/mol/-/web.locale=en.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "$mol_app_todomvc_add_hint": "What needs to be done?", - "$mol_app_todomvc_filter_active_label": "Active", - "$mol_app_todomvc_filter_all_label": "All", - "$mol_app_todomvc_filter_completed_label": "Completed", - "$mol_app_todomvc_pending_message": "0 items left ", - "$mol_app_todomvc_sweep_label": "Clear completed", - "$mol_app_todomvc_task_row_title_hint": "Task title", - "$mol_app_todomvc_title": "Todos" -} \ No newline at end of file From 037f5b836cbd3a2d0ad80d06f57d09151b60bb6a Mon Sep 17 00:00:00 2001 From: nin-jin Date: Fri, 22 Dec 2017 11:35:46 +0300 Subject: [PATCH 36/53] new $mol impl. --- examples/mol/-/web.js | 15 +++++++++++++-- examples/mol/-/web.js.map | 2 +- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/examples/mol/-/web.js b/examples/mol/-/web.js index 0c90a3e941..5508fc22b9 100644 --- a/examples/mol/-/web.js +++ b/examples/mol/-/web.js @@ -363,7 +363,8 @@ var $; } unlink() { this.disobey_all(); - this.check_slaves(); + if (this.slaves) + this.check_slaves(); } get(force) { const slave = $mol_atom.stack[0]; @@ -373,7 +374,7 @@ var $; } this.actualize(force); const value = this['value()']; - if (value instanceof Error) { + if (typeof Proxy !== 'function' && value instanceof Error) { throw value; } return value; @@ -451,6 +452,16 @@ var $; if (next instanceof $.$mol_object) { next.object_owner(this); } + if ((typeof Proxy === 'function') && (next instanceof Error)) { + next = new Proxy(next, { + get(target) { + throw target.valueOf(); + }, + ownKeys(target) { + throw target.valueOf(); + }, + }); + } this['value()'] = next; $.$mol_log(this, prev, '➔', next); this.obsolete_slaves(); diff --git a/examples/mol/-/web.js.map b/examples/mol/-/web.js.map index ca0db5a276..5da9df1126 100644 --- a/examples/mol/-/web.js.map +++ b/examples/mol/-/web.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../mol.jam.js","../../../func/name/name.ts","../../../object/object.ts","../../../conform/conform.ts","../../../log/log.ts","../../../log/log_context.ts","../../../log/log_debug.web.ts","../../../log/log_filter.web.ts","../../../log/log_group.ts","../../../defer/defer.ts","../../../state/stack/stack.ts","../../../atom/atom.ie.web.js","../../../atom/atom.ts","../../../mem/mem.ts","../../../window/window.web.ts","../../../dom/context/context.ts","../../../dom/context/context.web.ts","../../../dom/render/render.ts","../../../view/view.ts","../../../view/view.web.ts","../../../view/selection/selection.ts","../../../view/selection/selection.web.ts","code.ts","../../../string/-view.tree/string.view.tree.ts","../../../string/string.view.ts","../../../button/-view.tree/button.view.tree.ts","../../../button/button.view.ts","../../../button/-view.tree/button_types.view.tree.ts","../../../merge/dict/dict.ts","../../../state/arg/arg.web.ts","../../../link/-view.tree/link.view.tree.ts","../../../link/link.view.ts","../../../check/-view.tree/check.view.tree.ts","../../../check/check.view.ts","../../../scroll/-view.tree/scroll.view.tree.ts","../../../scroll/scroll.view.ts","../../../list/-view.tree/list.view.tree.ts","../../../list/list.view.ts","../../../bar/-view.tree/bar.view.tree.ts","../../../state/local/local.ts","../../../state/local/local.web.ts","../-view.tree/todomvc.view.tree.ts","../todomvc.view.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACZA,IAAU,CAAC,CAaV;AAbD,WAAU,CAAC;IAEC,qBAAmB,GAAG,IAAI,OAAO,EAAuB,CAAA;IAEnE,wBAAgC,IAAe;QAC9C,IAAI,IAAI,GAAG,EAAA,mBAAmB,CAAC,GAAG,CAAE,IAAI,CAAE,CAAA;QAC1C,EAAE,CAAA,CAAE,IAAI,IAAI,IAAK,CAAC;YAAC,MAAM,CAAC,IAAI,CAAA;QAC9B,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAE,IAAI,CAAE,CAAC,KAAK,CAAE,gCAAgC,CAAE,CAAE,CAAC,CAAE,CAAA;QAC3G,EAAA,mBAAmB,CAAC,GAAG,CAAE,IAAI,EAAG,IAAI,CAAE,CAAA;QAEtC,MAAM,CAAC,IAAI,CAAA;IACZ,CAAC;IAPe,gBAAc,iBAO7B,CAAA;AAEF,CAAC,EAbS,CAAC,KAAD,CAAC,QAaV;;;;ACbD,IAAU,CAAC,CAuDV;AAvDD,WAAU,GAAC;IAEV,IAAiB,EAAE,CAAU;IAA7B,WAAiB,EAAE;QAAG,IAAI,CAAC,CAAA;IAAC,CAAC,EAAZ,EAAE,GAAF,MAAE,KAAF,MAAE,QAAU;IAI7B;QAEC,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;YACjC,MAAM,CAAC,CAAE,KAAK,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAyB,CAAA;QACxD,CAAC;QAEM,MAAM,CAAC,IAAI,CAA4C,MAA4B;YACzF,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAA;YACzB,GAAG,CAAA,CAAE,IAAI,GAAG,IAAI,MAAO,CAAC;gBAAC,QAAQ,CAAE,GAAG,CAAE,GAAG,MAAM,CAAE,GAAG,CAAE,CAAA;YACxD,MAAM,CAAC,QAAQ,CAAA;QAChB,CAAC;QAED,MAAM,CAAC,QAAQ;YACd,MAAM,CAAC,IAAA,cAAc,CAAE,IAAI,CAAE,CAAA;QAC9B,CAAC;QAGD,YAAY,CAAE,IAAW;YACxB,MAAM,CAAC,IAAI,CAAE,gBAAgB,CAAE,IAAI,CAAE,IAAI,CAAE,gBAAgB,CAAE,GAAG,IAAI,CAAE,CAAA;QACvE,CAAC;QAGD,WAAW,CAAE,IAAW;YACvB,MAAM,CAAC,IAAI,CAAE,eAAe,CAAE,IAAI,CAAE,IAAI,CAAE,eAAe,CAAE,GAAG,IAAI,CAAE,CAAA;QACrE,CAAC;QAGD,YAAY,CAAE,IAAc;YAC3B,MAAM,CAAC,IAAI,CAAE,gBAAgB,CAAE,IAAI,CAAE,IAAI,CAAE,gBAAgB,CAAE,GAAG,IAAI,CAAE,IAAI,EAAE,CAAA;QAC7E,CAAC;QAGD,SAAS,CAAE,IAAc;YACxB,MAAM,CAAC,IAAI,CAAE,aAAa,CAAE,IAAI,CAAE,IAAI,CAAE,aAAa,CAAE,GAAG,IAAI,CAAE,IAAI,EAAE,CAAA;QACvE,CAAC;QAED,QAAQ;YACP,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAA;QACxB,CAAC;QAED,MAAM;YACL,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;QACvB,CAAC;QAED,UAAU,KAAK,CAAC;KAEhB;IA/CY,eAAW,cA+CvB,CAAA;AAEF,CAAC,EAvDS,CAAC,KAAD,CAAC,QAuDV;;;;ACvDD,IAAU,CAAC,CA0EV;AA1ED,WAAU,CAAC;IAEV,MAAM,KAAK,GAAG,IAAI,OAAO,EAAmB,CAAA;IAE5C,sBAAiD,MAAe,EAAG,MAAe,EAAG,QAAgB,EAAE;QAEtG,EAAE,CAAA,CAAE,MAAa,KAAK,MAAc,CAAC;YAAC,MAAM,CAAC,MAAa,CAAA;QAE1D,EAAE,CAAA,CAAE,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAS,CAAC;YAAC,MAAM,CAAC,MAAM,CAAA;QACzD,EAAE,CAAA,CAAE,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAS,CAAC;YAAC,MAAM,CAAC,MAAM,CAAA;QAEzD,EAAE,CAAA,CAAE,MAAM,YAAY,KAAM,CAAC;YAAC,MAAM,CAAC,MAAM,CAAA;QAC3C,EAAE,CAAA,CAAE,MAAM,YAAY,KAAM,CAAC;YAAC,MAAM,CAAC,MAAM,CAAA;QAE3C,EAAE,CAAA,CAAE,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,WAAY,CAAC;YAAC,MAAM,CAAC,MAAM,CAAA;QAE7D,EAAE,CAAA,CAAE,KAAK,CAAC,GAAG,CAAE,MAAM,CAAG,CAAC;YAAC,MAAM,CAAC,MAAM,CAAA;QACvC,KAAK,CAAC,GAAG,CAAE,MAAM,EAAG,IAAI,CAAE,CAAA;QAE1B,MAAM,OAAO,GAAG,EAAA,qBAAqB,CAAC,GAAG,CAAE,MAAM,CAAC,WAAW,CAAE,CAAA;QAC/D,EAAE,CAAA,CAAE,CAAC,OAAQ,CAAC;YAAC,MAAM,CAAC,MAAM,CAAA;QAE5B,EAAE,CAAA,CAAE,KAAK,CAAC,OAAO,CAAE,MAAM,CAAE,KAAK,CAAC,CAAE,CAAC;YAAC,MAAM,CAAC,MAAM,CAAA;QAElD,KAAK,CAAC,IAAI,CAAE,MAAM,CAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,OAAO,CAAE,MAAM,EAAG,MAAM,EAAG,KAAK,CAAE,CAAA;QAE9C,KAAK,CAAC,GAAG,EAAE,CAAA;QAEX,MAAM,CAAC,GAAG,CAAA;IACX,CAAC;IA3Be,cAAY,eA2B3B,CAAA;IAEY,uBAAqB,GAAG,IAAI,OAAO,EAAoE,CAAA;IAEpH,8BACC,EAAwC,EACxC,OAAqE;QAErE,EAAA,qBAAqB,CAAC,GAAG,CAAE,EAAE,EAAG,OAAO,CAAE,CAAA;IAC1C,CAAC;IALe,sBAAoB,uBAKnC,CAAA;IAED,oBAAoB,CAAE,KAAK,EAAG,CAAE,MAAM,EAAG,MAAM,EAAG,KAAK,EAAE,EAAE;QAE1D,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAA;QAE3C,GAAG,CAAA,CAAE,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAG,EAAE,CAAC,EAAG,CAAC;YAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,YAAY,CAAE,MAAM,CAAC,CAAC,CAAC,EAAG,MAAM,CAAC,CAAC,CAAC,EAAG,KAAK,CAAE,CAAA;YAC3E,EAAE,CAAA,CAAE,KAAK,IAAI,SAAS,KAAK,MAAM,CAAC,CAAC,CAAE,CAAC;gBAAC,KAAK,GAAG,KAAK,CAAA;QACrD,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAA;IAC/B,CAAC,CAAE,CAAA;IAEH,oBAAoB,CAAE,MAAM,EAAG,CAAE,MAAM,EAAG,MAAM,EAAG,KAAK,EAAE,EAAE;QAE3D,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,IAAI,KAAK,GAAG,IAAI,CAAA;QAEhB,GAAG,CAAA,CAAE,IAAI,GAAG,IAAI,MAAO,CAAC,CAAC,CAAC;YACzB,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAE,MAAM,CAAC,GAAG,CAAC,EAAG,MAAM,CAAC,GAAG,CAAC,EAAG,KAAK,CAAE,CAAA;YACjF,EAAE,CAAA,CAAE,KAAK,IAAI,SAAS,KAAK,MAAM,CAAC,GAAG,CAAE,CAAC;gBAAC,KAAK,GAAG,KAAK,CAAA;YACtD,EAAG,KAAK,CAAA;QACT,CAAC;QAED,GAAG,CAAA,CAAE,IAAI,GAAG,IAAI,MAAO,CAAC;YAAC,EAAE,CAAA,CAAE,EAAG,KAAK,GAAG,CAAE,CAAC;gBAAC,KAAK,CAAA;QAEjD,MAAM,CAAC,CAAE,KAAK,IAAI,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAA;IAClD,CAAC,CAAE,CAAA;IAEH,oBAAoB,CAAE,IAAI,EAAG,CAAE,MAAM,EAAG,MAAM,EAAE,EAAE,CAAC,CAAE,MAAM,CAAC,OAAO,EAAE,KAAK,MAAM,CAAC,OAAO,EAAE,CAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAE,CAAA;IAEhH,oBAAoB,CAAE,MAAM,EAAG,CAAE,MAAM,EAAG,MAAM,EAAE,EAAE,CAAC,CAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAE,CAAA;AAErH,CAAC,EA1ES,CAAC,KAAD,CAAC,QA0EV;;;;AC1ED,IAAU,CAAC,CAmBV;AAnBD,WAAU,CAAC;IAEV,kBAA0B,IAAU,EAAG,GAAI,MAAc;QAExD,EAAE,CAAA,CAAE,EAAA,eAAe,EAAE,IAAI,IAAK,CAAC;YAAC,MAAM,CAAA;QAEtC,IAAI,GAAG,MAAM,CAAE,IAAI,CAAE,CAAA;QACrB,EAAE,CAAA,CAAE,IAAI,CAAC,OAAO,CAAE,EAAA,eAAe,EAAE,CAAE,KAAK,CAAC,CAAE,CAAC;YAAC,MAAM,CAAA;QAErD,EAAE,CAAA,CAAE,EAAA,gBAAgB,EAAG,CAAC;YAAC,EAAA,gBAAgB,EAAE,EAAE,CAAA;QAE7C,OAAO,CAAC,KAAK,CAAE,IAAI,EAAG,GAAI,MAAM,CAAC,GAAG,CAAE,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,mBAAO,GAAG,EAAG,CAAC,CAAC,GAAG,CAAE,CAAE,CAAA;QAEzF,EAAE,CAAA,CAAE,EAAA,cAAc,EAAE,IAAI,IAAK,CAAC;YAAC,MAAM,CAAA;QACrC,EAAE,CAAA,CAAE,IAAI,CAAC,OAAO,CAAE,EAAA,cAAc,EAAE,CAAE,KAAK,CAAC,CAAE,CAAC;YAAC,MAAM,CAAA;QAEpD,QAAQ,CAAA;IACT,CAAC;IAfe,UAAQ,WAevB,CAAA;AAEF,CAAC,EAnBS,CAAC,KAAD,CAAC,QAmBV;;;;ACnBD,IAAU,CAAC,CAOV;AAPD,WAAU,CAAC;IAEV,IAAI,OAAO,GAAe,IAAI,CAAA;IAC9B,0BAAkC,IAAI,GAAG,OAAO;QAC/C,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;IACtB,CAAC;IAFe,kBAAgB,mBAE/B,CAAA;AAEF,CAAC,EAPS,CAAC,KAAD,CAAC,QAOV;;;;ACPD,IAAU,CAAC,CAeV;AAfD,WAAU,CAAC;IAEV,wBAAgC,IAAc;QAE7C,EAAE,CAAA,CAAE,IAAI,KAAK,SAAU,CAAC,CAAC,CAAC;YACzB,EAAE,CAAA,CAAE,IAAI,IAAI,IAAK,CAAC,CAAC,CAAC;gBACnB,cAAc,CAAC,UAAU,CAAE,kBAAkB,CAAE,CAAA;YAChD,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,cAAc,CAAC,OAAO,CAAE,kBAAkB,EAAG,IAAI,CAAE,CAAA;YACpD,CAAC;QACF,CAAC;QAED,MAAM,CAAC,cAAc,CAAC,OAAO,CAAE,kBAAkB,CAAE,CAAA;IACpD,CAAC;IAXe,gBAAc,iBAW7B,CAAA;AAEF,CAAC,EAfS,CAAC,KAAD,CAAC,QAeV;;;;ACfD,IAAU,CAAC,CAoBV;AApBD,WAAU,CAAC;IAEV,IAAI,MAAe,CAAA;IACnB,yBAAiC,IAAc;QAE9C,EAAE,CAAA,CAAE,IAAI,KAAK,SAAU,CAAC,CAAC,CAAC;YACzB,EAAE,CAAA,CAAE,IAAI,IAAI,IAAK,CAAC,CAAC,CAAC;gBACnB,cAAc,CAAC,UAAU,CAAE,mBAAmB,CAAE,CAAA;YACjD,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,cAAc,CAAC,OAAO,CAAE,mBAAmB,EAAG,IAAI,CAAE,CAAA;YACrD,CAAC;YAED,MAAM,GAAG,IAAI,CAAA;QACd,CAAC;QAED,EAAE,CAAA,CAAE,MAAM,KAAK,SAAU,CAAC;YAAC,MAAM,CAAC,MAAM,CAAA;QAExC,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,OAAO,CAAE,mBAAmB,CAAE,CAAA;IAC9D,CAAC;IAfe,iBAAe,kBAe9B,CAAA;AAEF,CAAC,EApBS,CAAC,KAAD,CAAC,QAoBV;;;;ACpBD,IAAU,CAAC,CA8BV;AA9BD,WAAU,CAAC;IAEV,wBAAyD,IAAa,EAAG,IAAW;QAEnF,MAAM,CAAC,gCAAiC,GAAI,IAAa;YACxD,MAAM,MAAM,GAAG,EAAA,eAAe,EAAE,CAAA;YAChC,EAAE,CAAA,CAAE,MAAM,IAAI,IAAK,CAAC;gBAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAE,IAAI,EAAG,IAAI,CAAE,CAAA;YAErD,IAAI,OAAO,GAAG,KAAK,CAAA;YACnB,IAAI,IAAI,GAAG,EAAA,gBAAgB,EAAE,CAAA;YAE7B,EAAA,gBAAgB,CAAE,GAAE,EAAE;gBACrB,EAAE,CAAA,CAAE,IAAK,CAAC;oBAAC,IAAI,EAAE,CAAA;gBACjB,OAAO,GAAG,IAAI,CAAA;gBACd,EAAE,CAAA,CAAE,MAAO,CAAC;oBAAC,OAAO,CAAC,KAAK,CAAE,IAAI,CAAE,CAAA;gBAClC,IAAI;oBAAC,OAAO,CAAC,cAAc,CAAE,IAAI,CAAE,CAAA;gBACnC,EAAA,gBAAgB,CAAE,IAAI,GAAG,IAAI,CAAE,CAAA;YAChC,CAAC,CAAE,CAAA;YAEH,IAAI,CAAC;gBACJ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAE,IAAI,EAAG,IAAI,CAAE,CAAA;YACjC,CAAC;oBAAS,CAAC;gBACV,EAAE,CAAA,CAAE,OAAQ,CAAC;oBAAC,OAAO,CAAC,QAAQ,EAAE,CAAA;gBAChC,EAAA,gBAAgB,CAAE,IAAI,CAAE,CAAA;YACzB,CAAC;QAEF,CAAgB,CAAA;IAEjB,CAAC;IA1Be,gBAAc,iBA0B7B,CAAA;AAEF,CAAC,EA9BS,CAAC,KAAD,CAAC,QA8BV;;;;AC9BD,IAAU,CAAC,CAuDV;AAvDD,WAAU,CAAC;IAEV,gBAAwB,SAAQ,EAAA,WAAW;QAE1C,YAAoB,GAAe;YAClC,KAAK,EAAE,CAAA;YADY,QAAG,GAAH,GAAG,CAAY;YAElC,UAAU,CAAC,GAAG,CAAE,IAAI,CAAE,CAAA;QACvB,CAAC;QAED,UAAU;YACT,UAAU,CAAC,IAAI,CAAE,IAAI,CAAE,CAAA;QACxB,CAAC;QASD,MAAM,CAAC,QAAQ;YACd,EAAE,CAAA,CAAE,IAAI,CAAC,KAAM,CAAC;gBAAC,MAAM,CAAA;YAEvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAE,GAAE,EAAE;gBACrC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;gBACd,IAAI,CAAC,GAAG,EAAE,CAAA;YACX,CAAC,CAAE,CAAA;QACJ,CAAC;QAED,MAAM,CAAC,UAAU;YAChB,EAAE,CAAA,CAAE,CAAC,IAAI,CAAC,KAAM,CAAC;gBAAC,MAAM,CAAA;YAExB,oBAAoB,CAAE,IAAI,CAAC,KAAK,CAAE,CAAA;YAClC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;QACf,CAAC;QAED,MAAM,CAAC,GAAG,CAAE,KAAkB;YAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAE,KAAK,CAAE,CAAA;YACtB,IAAI,CAAC,QAAQ,EAAE,CAAA;QAChB,CAAC;QAED,MAAM,CAAC,IAAI,CAAE,KAAkB;YAC9B,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAE,KAAK,CAAE,CAAA;YACrC,EAAE,CAAA,CAAE,KAAK,IAAI,CAAE,CAAC;gBAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAE,KAAK,EAAG,CAAC,CAAE,CAAA;QAC9C,CAAC;QAED,MAAM,CAAC,GAAG;YACT,EAAE,CAAA,CAAE,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAE,CAAC;gBAAC,MAAM,CAAA;YAClC,IAAI,CAAC,QAAQ,EAAE,CAAA;YACf,GAAG,CAAA,CAAE,IAAI,KAAkB,EAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;gBAAK,KAAK,CAAC,GAAG,EAAE,CAAA;QAEvE,CAAC;;IAtCM,cAAG,GAAkB,EAAE,CAAA;IACvB,gBAAK,GAAG,CAAC,CAAA;IAET,yBAAc,GAAuC,CAAE,OAAO,qBAAqB,IAAI,UAAU,CAAE;QACzG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,qBAAqB,CAAE,OAAO,CAAE;QAC7C,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAE,OAAO,EAAG,EAAE,CAAE,CAAA;IAhB5B,YAAU,aAmDtB,CAAA;AAEF,CAAC,EAvDS,CAAC,KAAD,CAAC,QAuDV;;;;ACvDD,IAAU,CAAC,CAKV;AALD,WAAU,CAAC;IAGC,kBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAA;AAExD,CAAC,EALS,CAAC,KAAD,CAAC,QAKV;;;ACLD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3BA,IAAU,CAAC,CA6ZV;AA7ZD,WAAU,CAAC;IAEV,IAAY,gBAKX;IALD,WAAY,gBAAgB;QAC3B,yCAAqB,CAAA;QACrB,yCAAqB,CAAA;QACrB,uCAAmB,CAAA;QACnB,qCAAiB,CAAA;IAClB,CAAC,EALW,gBAAgB,GAAhB,kBAAgB,KAAhB,kBAAgB,QAK3B;IAED,eAAsC,SAAQ,EAAA,WAAW;QAWxD,YACC,EAAW,EACX,UAAsE,IAAI,CAAC,EAAE,CAAC,IAAI;YAElF,KAAK,EAAE,CAAA;YAbR,YAAO,GAAkC,IAAI,CAAA;YAC7C,WAAM,GAAkC,IAAI,CAAA;YAE5C,WAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAA;YAYjC,IAAI,CAAC,SAAS,CAAE,EAAE,CAAE,CAAA;YACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACvB,CAAC;QAED,UAAU;YACT,IAAI,CAAC,MAAM,EAAE,CAAA;YACb,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAA;YAErC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;YAE7B,EAAE,CAAA,CAAE,KAAK,YAAY,EAAA,WAAY,CAAC,CAAC,CAAC;gBACnC,EAAE,CAAA,CAAE,KAAK,CAAC,YAAY,EAAE,KAAK,IAAK,CAAC;oBAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YACxD,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,GAAG,SAAS,CAAA;QAC5B,CAAC;QAED,MAAM;YACL,IAAI,CAAC,WAAW,EAAE,CAAA;YAClB,IAAI,CAAC,YAAY,EAAE,CAAA;QACpB,CAAC;QAED,GAAG,CAAE,KAAwB;YAE5B,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAChC,EAAE,CAAA,CAAE,KAAM,CAAC,CAAC,CAAC;gBACZ,IAAI,CAAC,IAAI,CAAE,KAAK,CAAE,CAAA;gBAClB,KAAK,CAAC,IAAI,CAAE,IAAI,CAAE,CAAA;YACnB,CAAC;YAED,IAAI,CAAC,SAAS,CAAE,KAAK,CAAE,CAAA;YAEvB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAU,CAAA;YAEtC,EAAE,CAAA,CAAE,KAAK,YAAY,KAAM,CAAC,CAAC,CAAC;gBAC7B,MAAM,KAAK,CAAA;YACZ,CAAC;YAED,MAAM,CAAC,KAAc,CAAA;QACtB,CAAC;QAED,SAAS,CAAE,KAAwB;YAElC,EAAE,CAAA,CAAE,IAAI,CAAC,MAAM,KAAK,gBAAgB,CAAC,OAAQ,CAAC,CAAC,CAAC;gBAC/C,MAAM,IAAI,KAAK,CAAE,6BAA8B,IAAK,EAAE,CAAE,CAAA;YACzD,CAAC;YAED,EAAE,CAAA,CAAE,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,gBAAgB,CAAC,MAAO,CAAC;gBAAC,MAAM,CAAA;YAE9D,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAChC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;YAEzB,EAAE,CAAA,CAAE,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,gBAAgB,CAAC,QAAS,CAAC,CAAC,CAAC;gBAE1D,IAAI,CAAC,OAAQ,CAAC,OAAO,CACpB,MAAM,CAAC,EAAE;oBACR,EAAE,CAAA,CAAE,IAAI,CAAC,MAAM,KAAK,gBAAgB,CAAC,QAAS,CAAC;wBAAC,MAAM,CAAA;oBACtD,MAAM,CAAC,SAAS,EAAE,CAAA;gBACnB,CAAC,CACD,CAAA;gBAED,EAAE,CAAA,CAAE,IAAI,CAAC,MAAM,KAAK,gBAAgB,CAAC,QAAS,CAAC,CAAC,CAAC;oBAChD,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAA;gBACtC,CAAC;YACF,CAAC;YAED,EAAE,CAAA,CAAE,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,gBAAgB,CAAC,MAAO,CAAC,CAAC,CAAC;gBAEvD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAA;gBAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;gBAEnB,EAAE,CAAA,CAAE,UAAW,CAAC;oBAAC,UAAU,CAAC,OAAO,CAClC,MAAM,CAAC,EAAE;wBACR,MAAM,CAAC,OAAO,CAAE,IAAI,CAAE,CAAA;oBACvB,CAAC,CACD,CAAA;gBAED,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAA;gBACtC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAE,KAAK,CAAE,CAAA;gBAE/B,EAAE,CAAA,CAAE,IAAI,KAAK,SAAU,CAAC,CAAC,CAAC;oBACzB,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAA;gBACtC,CAAC;gBAAC,IAAI,CAAC,CAAC;oBACP,IAAI,CAAC,IAAI,CAAE,IAAI,CAAE,CAAA;gBAClB,CAAC;YAEF,CAAC;YAED,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;QAC3B,CAAC;QAED,IAAI,CAAE,KAAwB;YAC7B,IAAI,CAAC;gBACJ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAE,IAAI,CAAC,KAAK,EAAG,KAAK,CAAE,CAAA;YAC1C,CAAC;YAAC,KAAK,CAAA,CAAE,KAAM,CAAC,CAAC,CAAC;gBACjB,EAAE,CAAA,CAAE,KAAK,CAAE,mBAAmB,CAAG,CAAC;oBAAC,MAAM,CAAC,KAAK,CAAA;gBAC/C,EAAE,CAAA,CAAE,KAAK,YAAY,cAAe,CAAC;oBAAC,MAAM,CAAC,KAAK,CAAA;gBAElD,OAAO,CAAC,KAAK,CAAE,KAAK,CAAC,KAAK,IAAI,KAAK,CAAE,CAAA;gBAErC,EAAE,CAAA,CAAC,CAAC,CAAE,KAAK,YAAY,KAAK,CAAE,CAAC,CAAC,CAAC;oBAChC,KAAK,GAAG,IAAI,KAAK,CAAE,KAAK,CAAC,KAAK,IAAI,KAAK,CAAE,CAAA;gBAC1C,CAAC;gBAED,KAAK,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAA;gBACjC,MAAM,CAAC,KAAK,CAAA;YACb,CAAC;QACF,CAAC;QAKD,GAAG,CAAE,IAAY;YAChB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAE,IAAI,CAAE,CAAA;QAC1B,CAAC;QAED,IAAI,CAAE,QAAuB;YAC5B,EAAE,CAAA,CAAC,CAAC,CAAE,QAAQ,YAAY,cAAc,CAAE,CAAC,CAAC,CAAC;gBAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;gBACzB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;YACvB,CAAC;YAED,IAAI,CAAC,MAAM,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAA;YAE1F,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;YAE5B,IAAI,IAAI,GAAG,CAAE,QAAQ,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,CAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAA,YAAY,CAAE,QAAQ,EAAG,IAAI,CAAE,CAAA;YAE9G,EAAE,CAAA,CAAE,IAAI,KAAK,IAAK,CAAC;gBAAC,MAAM,CAAC,IAAa,CAAA;YAExC,EAAE,CAAA,CAAE,IAAI,YAAY,EAAA,WAAY,CAAC,CAAC,CAAC;gBAClC,EAAE,CAAA,CAAE,IAAI,CAAC,YAAY,EAAE,KAAK,IAAK,CAAC;oBAAC,IAAI,CAAC,UAAU,EAAE,CAAA;YACrD,CAAC;YAED,EAAE,CAAA,CAAE,IAAI,YAAY,EAAA,WAAY,CAAC,CAAC,CAAC;gBAClC,IAAI,CAAC,YAAY,CAAE,IAAI,CAAE,CAAA;YAC1B,CAAC;YAaD,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAA;YACtB,EAAA,QAAQ,CAAE,IAAI,EAAG,IAAI,EAAG,GAAG,EAAG,IAAI,CAAE,CAAA;YAEpC,IAAI,CAAC,eAAe,EAAE,CAAA;YAEtB,MAAM,CAAC,IAAa,CAAA;QACrB,CAAC;QAED,eAAe;YACd,EAAE,CAAA,CAAE,CAAC,IAAI,CAAC,MAAO,CAAC;gBAAC,MAAM,CAAA;YAEzB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAE,CAAA;QACjD,CAAC;QAED,YAAY;YACX,EAAE,CAAA,CAAE,IAAI,CAAC,MAAO,CAAC,CAAC,CAAC;gBAClB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAE,CAAA;YAC9C,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,SAAS,CAAC,SAAS,CAAE,IAAI,CAAE,CAAA;YAC5B,CAAC;QACF,CAAC;QAED,KAAK;YAKJ,EAAE,CAAA,CAAE,IAAI,CAAC,MAAM,KAAK,gBAAgB,CAAC,MAAO,CAAC,CAAC,CAAC;gBAC9C,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAA;gBAEvC,IAAI,CAAC,YAAY,EAAE,CAAA;YACpB,CAAC;QACF,CAAC;QAED,QAAQ;YACP,EAAE,CAAA,CAAE,IAAI,CAAC,MAAM,KAAK,gBAAgB,CAAC,QAAS,CAAC;gBAAC,MAAM,CAAA;YAMtD,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAA;YAEvC,IAAI,CAAC,YAAY,EAAE,CAAA;YAEnB,MAAM,CAAA;QACP,CAAC;QAED,IAAI,CAAE,KAAsB;YAC3B,EAAE,CAAA,CAAE,CAAC,IAAI,CAAC,MAAO,CAAC,CAAC,CAAC;gBACnB,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAA;gBACvC,SAAS,CAAC,MAAM,CAAE,IAAI,CAAE,CAAA;YACzB,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,KAAK,CAAE,CAAA;QACzB,CAAC;QAED,OAAO,CAAE,KAAsB;YAC9B,EAAE,CAAA,CAAE,CAAC,IAAI,CAAC,MAAO,CAAC;gBAAC,MAAM,CAAA;YAEzB,EAAE,CAAA,CAAE,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAE,CAAC,CAAC,CAAC;gBAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;gBAClB,SAAS,CAAC,IAAI,CAAE,IAAI,CAAE,CAAA;YACvB,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,IAAI,CAAC,MAAM,CAAC,MAAM,CAAE,KAAK,CAAE,CAAA;YAC5B,CAAC;QACF,CAAC;QAED,IAAI,CAAE,MAAuB;YAC5B,EAAE,CAAA,CAAE,CAAC,IAAI,CAAC,OAAQ,CAAC;gBAAC,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAA;YAC9D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAE,MAAM,CAAE,CAAA;QAC3B,CAAC;QAED,OAAO,CAAE,MAAuB;YAC/B,EAAE,CAAA,CAAE,CAAC,IAAI,CAAC,OAAQ,CAAC;gBAAC,MAAM,CAAA;YAC1B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAE,MAAM,CAAE,CAAA;QAC9B,CAAC;QAED,WAAW;YACV,EAAE,CAAA,CAAE,CAAC,IAAI,CAAC,OAAQ,CAAC;gBAAC,MAAM,CAAA;YAE1B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAE,IAAI,CAAE,CAAE,CAAA;YAExD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACpB,CAAC;QAED,KAAK,CAAE,IAAmB;YACzB,EAAE,CAAA,CAAE,IAAI,KAAK,SAAU,CAAC;gBAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC/C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAA;QAC9B,CAAC;QAED,KAAK,CAAE,IAAa,EAAG,KAAwB;YAE9C,EAAE,CAAA,CAAE,KAAK,KAAK,qBAAsB,CAAC;gBAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAE,IAAI,CAAE,CAAA;YAE9D,EAAE,CAAA,CAAE,IAAI,KAAK,SAAU,CAAC,CAAC,CAAC;gBAEzB,EAAE,CAAA,CAAE,KAAK,KAAK,eAAgB,CAAC;oBAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAE,IAAI,CAAE,CAAA;gBAExD,IAAI,WAAW,GAAG,EAAA,YAAY,CAAE,IAAI,EAAG,IAAI,CAAC,OAAO,CAAE,CAAA;gBACrD,EAAE,CAAA,CAAE,WAAW,KAAK,IAAI,CAAC,OAAQ,CAAC;oBAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAE,KAAK,CAAE,CAAA;gBAE3D,EAAE,CAAA,CAAC,CAAC,CAAE,IAAI,CAAC,SAAS,CAAC,YAAY,KAAK,CAAE,CAAC,CAAC,CAAC;oBAC1C,WAAW,GAAG,EAAA,YAAY,CAAE,IAAI,EAAG,IAAI,CAAC,SAAS,CAAC,CAAE,CAAA;oBACpD,EAAE,CAAA,CAAE,WAAW,KAAK,IAAI,CAAC,SAAS,CAAE,CAAC;wBAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAE,KAAK,CAAE,CAAA;gBAC/D,CAAC;gBAED,IAAI,CAAC,KAAK,GAAG,WAAW,CAAA;gBACxB,IAAI,CAAC,OAAO,GAAG,WAAW,CAAA;gBAE1B,KAAK,GAAG,sBAAsB,CAAA;YAC/B,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,GAAG,CAAE,KAAK,CAAE,CAAA;QACzB,CAAC;QAOD,MAAM,CAAC,SAAS,CAAE,IAAqB;YACtC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAE,IAAI,CAAE,CAAA;YAC/B,SAAS,CAAC,QAAQ,EAAE,CAAA;QACrB,CAAC;QAED,MAAM,CAAC,IAAI,CAAE,IAAqB;YACjC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAE,IAAI,CAAE,CAAA;YAC7B,SAAS,CAAC,QAAQ,EAAE,CAAA;QACrB,CAAC;QAED,MAAM,CAAC,MAAM,CAAE,IAAqB;YACnC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAE,IAAI,CAAE,CAAA;QACjC,CAAC;QAED,MAAM,CAAC,QAAQ;YACd,EAAE,CAAA,CAAE,IAAI,CAAC,SAAU,CAAC;gBAAC,MAAM,CAAA;YAE3B,IAAI,EAAA,UAAU,CACb,EAAA,cAAc,CAAE,kBAAkB,EAAG,GAAG,EAAE;gBACzC,EAAE,CAAA,CAAE,CAAC,IAAI,CAAC,SAAU,CAAC;oBAAC,MAAM,CAAA;gBAC5B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;gBACtB,IAAI,CAAC,IAAI,EAAE,CAAA;YACZ,CAAC,CAAE,CACH,CAAA;YAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACtB,CAAC;QAED,MAAM,CAAC,IAAI;YACV,IAAI,CAAC,QAAQ,EAAE,CAAA;YAEf,OAAO,IAAI,EAAG,CAAC;gBACd,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;gBAClC,EAAE,CAAA,CAAE,CAAC,IAAK,CAAC;oBAAC,KAAK,CAAA;gBACjB,EAAE,CAAA,CAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAE,IAAI,CAAG,CAAC;oBAAC,QAAQ,CAAA;gBACvC,EAAE,CAAA,CAAE,IAAI,CAAC,MAAM,KAAK,gBAAgB,CAAC,MAAO,CAAC;oBAAC,IAAI,CAAC,GAAG,EAAE,CAAA;YACzD,CAAC;YAED,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAG,CAAC;gBAC3B,IAAI,CAAC,OAAO,CAAC,OAAO,CACnB,IAAI,CAAC,EAAE;oBACN,IAAI,CAAC,OAAO,CAAC,MAAM,CAAE,IAAI,CAAE,CAAA;oBAC3B,EAAE,CAAA,CAAE,CAAC,IAAI,CAAC,MAAO,CAAC;wBAAC,IAAI,CAAC,UAAU,EAAE,CAAA;gBACrC,CAAC,CACD,CAAA;YACF,CAAC;YAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QACvB,CAAC;QAED,IAAI,CAAU,IAA+B,EAAG,IAAgC;YAE/E,IAAI,IAAY,CAAA;YAChB,IAAI,IAAW,CAAA;YAEf,MAAM,IAAI,GAAG,IAAI,SAAS,CACzB,GAAI,IAAK,SAAU,IAAK,GAAG,EAC3B,GAAG,EAAE;gBACJ,IAAI,CAAC;oBAEJ,EAAE,CAAA,CAAE,IAAI,IAAI,SAAU,CAAC,CAAC,CAAC;wBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;wBACtB,EAAE,CAAA,CAAE,GAAG,YAAY,cAAe,CAAC;4BAAC,MAAM,CAAC,GAAG,CAAA;wBAC9C,EAAE,CAAA,CAAE,GAAI,CAAC;4BAAC,GAAG,CAAC,OAAO,EAAE,CAAA;wBACvB,IAAI,GAAG,GAAG,CAAA;oBACX,CAAC;oBAED,EAAE,CAAA,CAAE,IAAI,IAAI,SAAU,CAAC,CAAC,CAAC;wBACxB,MAAM,GAAG,GAAG,IAAI,CAAE,IAAI,CAAE,CAAA;wBACxB,EAAE,CAAA,CAAE,GAAG,YAAY,cAAe,CAAC;4BAAC,MAAM,CAAC,GAAG,CAAA;wBAC9C,EAAE,CAAA,CAAE,GAAI,CAAC;4BAAC,GAAG,CAAC,OAAO,EAAE,CAAA;wBACvB,IAAI,GAAG,GAAG,CAAA;oBACX,CAAC;oBAED,MAAM,CAAC,IAAI,CAAA;gBAEZ,CAAC;gBAAC,KAAK,CAAA,CAAE,KAAM,CAAC,CAAC,CAAC;oBAEjB,EAAE,CAAA,CAAE,KAAK,YAAY,cAAe,CAAC;wBAAC,MAAM,CAAC,KAAK,CAAA;oBAElD,EAAE,CAAA,CAAE,IAAK,CAAC;wBAAC,MAAM,CAAC,IAAI,CAAE,KAAK,CAAE,CAAA;oBAE/B,MAAM,CAAC,KAAK,CAAA;gBACb,CAAC;YAEF,CAAC,CACD,CAAA;YAED,SAAS,CAAC,SAAS,CAAE,IAAI,CAAE,CAAA;YAE3B,MAAM,CAAC,IAAI,CAAA;QACZ,CAAC;QAED,KAAK,CAAE,IAAgC;YACtC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAG,IAAI,CAAE,CAAA;QACxC,CAAC;;IApGM,eAAK,GAAG,EAAsB,CAAA;IAC9B,kBAAQ,GAAsB,EAAE,CAAA;IAChC,iBAAO,GAAG,IAAI,GAAG,EAAoB,CAAA;IACrC,mBAAS,GAAG,KAAK,CAAA;IA5RZ,WAAS,YA+XrB,CAAA;IAED,EAAA,gBAAgB,CAAC,GAAG,CAAE,iBAAiB,EAAG,SAAS,CAAC,KAAK,CAAE,CAAA;IAE3D;QACC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAuB,CAAA;IAChD,CAAC;IAFe,mBAAiB,oBAEhC,CAAA;IAED,oBAA4B,SAAQ,KAAK;QAAzC;;YACC,SAAI,GAAG,gBAAgB,CAAA;QACxB,CAAC;KAAA;IAFY,gBAAc,iBAE1B,CAAA;IAED,qBAA6B,SAAQ,MAAM;QAG1C,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAA,CAAC,CAAC;KACtC;IAJY,iBAAe,kBAI3B,CAAA;IAED,2BAAmC,SAAQ,eAAe;KAAG;IAAhD,uBAAqB,wBAA2B,CAAA;IAC7D,4BAAoC,SAAQ,eAAe;KAAG;IAAjD,wBAAsB,yBAA2B,CAAA;AAE/D,CAAC,EA7ZS,CAAC,KAAD,CAAC,QA6ZV;;;;AC7ZD,IAAU,CAAC,CAqGV;AArGD,WAAU,CAAC;IAEV,kBACC,GAAW,EACX,IAAc,EACd,KAAwF;QAGxF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;QACzB,MAAM,KAAK,GAAG,IAAI,OAAO,EAA+B,CAAA;QAExD,KAAK,CAAC,KAAK,GAAG,wBAAyB,IAAa,EAAG,KAAwB;YAC9E,MAAM,IAAI,GAAS,IAAI,CAAA;YAEvB,IAAI,IAAI,GAAsB,KAAK,CAAC,GAAG,CAAE,IAAI,CAAE,CAAA;YAC/C,EAAE,CAAA,CAAE,CAAC,IAAK,CAAC,CAAC,CAAC;gBAEZ,MAAM,EAAE,GAAG,GAAI,IAAK,IAAK,IAAK,IAAI,CAAA;gBAClC,IAAI,GAAG,IAAI,EAAA,SAAS,CAAS,EAAE,EAAG;oBACjC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAE,IAAI,EAAG,SAAS,CAAE,CAAA;oBACzC,EAAE,CAAA,CAAE,CAAC,YAAY,EAAA,WAAY,CAAC,CAAC,CAAC;wBAC/B,EAAE,CAAA,CAAE,CAAC,CAAC,CAAC,WAAW,EAAG,CAAC,CAAC,CAAC;4BACvB,CAAC,CAAC,WAAW,CAAE,IAAI,CAAE,CAAA;4BACrB,CAAC,CAAC,YAAY,CAAE,IAAI,CAAE,CAAA;4BACtB,CAAC,CAAC,SAAS,CAAE,EAAE,CAAE,CAAA;wBAClB,CAAC;oBACF,CAAC;oBACD,MAAM,CAAC,CAAC,CAAA;gBACT,CAAC,CAAE,CAAA;gBAEH,IAAI,CAAC,YAAY,CAAE,IAAI,CAAE,CAAA;gBAEzB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;gBAClC,IAAI,CAAC,UAAU,GAAG,GAAE,EAAE;oBACrB,KAAK,CAAC,MAAM,CAAE,IAAI,CAAE,CAAA;oBACpB,UAAU,CAAC,IAAI,CAAE,IAAI,CAAE,CAAA;gBACxB,CAAC,CAAA;gBAED,KAAK,CAAC,GAAG,CAAE,IAAI,EAAG,IAAI,CAAE,CAAA;YACzB,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,KAAK,CAAE,IAAI,EAAG,KAAK,CAAE,CAAA;QAClC,CAAC,CAAA;QAED,MAAM,CAAC,cAAc,CAAE,GAAG,EAAG,IAAI,GAAG,IAAI,EAAG,EAAE,GAAG,EAAG,cAAa,MAAM,CAAC,KAAK,CAAC,GAAG,CAAE,IAAI,CAAE,CAAA,CAAC,CAAC,EAAE,CAAE,CAAA;QAE9F,KAAK,CAAC,KAAK,CAAE,OAAO,CAAE,GAAG,KAAK,CAAA;QAE9B,MAAM,CAAC,KAAK,CAAA;IACb,CAAC;IA/Ce,UAAQ,WA+CvB,CAAA;IAED,sBACC,GAAU,EACV,IAAa,EACb,KAAmG;QAEnG,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;QACzB,MAAM,KAAK,GAAG,IAAI,OAAO,EAAsD,CAAA;QAE/E,KAAK,CAAC,KAAK,GAAG,4BAA6B,GAAS,EAAG,IAAY,EAAG,KAAwB;YAC7F,MAAM,IAAI,GAAS,IAAI,CAAA;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAE,GAAG,CAAE,CAAA;YAErC,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAE,IAAI,CAAE,CAAA;YAC5B,EAAE,CAAA,CAAE,CAAC,IAAK,CAAC;gBAAC,KAAK,CAAC,GAAG,CAAE,IAAI,EAAG,IAAI,GAAG,EAAE,CAAE,CAAA;YAEzC,IAAI,IAAI,GAAsB,IAAI,CAAE,OAAO,CAAE,CAAA;YAC7C,EAAE,CAAA,CAAE,CAAC,IAAK,CAAC,CAAC,CAAC;gBAEZ,MAAM,EAAE,GAAG,GAAI,IAAK,IAAK,IAAK,IAAK,OAAQ,GAAG,CAAA;gBAC9C,IAAI,GAAG,IAAI,EAAA,SAAS,CAAS,EAAE,EAAG,UAAU,GAAI,IAAW;oBAC1D,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAE,IAAI,EAAG,CAAE,GAAG,EAAG,GAAI,IAAI,CAAE,CAAE,CAAA;oBAClD,EAAE,CAAA,CAAE,CAAC,YAAY,EAAA,WAAY,CAAC,CAAC,CAAC;wBAC/B,EAAE,CAAA,CAAE,CAAC,CAAC,CAAC,WAAW,EAAG,CAAC,CAAC,CAAC;4BACvB,CAAC,CAAC,WAAW,CAAE,IAAI,CAAE,CAAA;4BACrB,CAAC,CAAC,YAAY,CAAE,IAAI,CAAE,CAAA;4BACtB,CAAC,CAAC,SAAS,CAAE,EAAE,CAAE,CAAA;wBAClB,CAAC;oBACF,CAAC;oBACD,MAAM,CAAC,CAAC,CAAA;gBACT,CAAC,CAAE,CAAA;gBAEH,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;gBAClC,IAAI,CAAC,UAAU,GAAG,GAAE,EAAE;oBACrB,OAAO,IAAI,CAAE,OAAO,CAAE,CAAA;oBACtB,UAAU,CAAC,IAAI,CAAE,IAAI,CAAE,CAAA;gBACxB,CAAC,CAAA;gBAED,IAAI,CAAE,OAAO,CAAE,GAAG,IAAI,CAAA;YAEvB,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,KAAK,CAAE,IAAI,EAAG,KAAK,CAAE,CAAA;QAClC,CAAC,CAAA;QAED,MAAM,CAAC,cAAc,CAAE,GAAG,EAAG,IAAI,GAAG,IAAI,EAAG,EAAE,GAAG,EAAG,cAAa,MAAM,CAAC,KAAK,CAAC,GAAG,CAAE,IAAI,CAAE,CAAA,CAAC,CAAC,EAAE,CAAE,CAAA;QAC9F,KAAI,CAAI,KAAK,CAAC,KAAc,CAAE,OAAO,CAAE,GAAG,KAAK,CAAE,CAAA;QAEjD,MAAM,CAAC,KAAK,CAAA;IACb,CAAC;IAhDe,cAAY,eAgD3B,CAAA;AAEF,CAAC,EArGS,CAAC,KAAD,CAAC,QAqGV;;;;;;;;;;ACrGD,IAAU,CAAC,CAqBV;AArBD,WAAU,CAAC;IAEV,iBAAyB,SAAQ,EAAA,WAAW;QAG3C,MAAM,CAAC,IAAI,CAAE,IAGZ,EAAG,KAAwB;YAC3B,MAAM,CAAC,IAAI,IAAI;gBACd,KAAK,EAAG,MAAM,CAAC,UAAU;gBACzB,MAAM,EAAG,MAAM,CAAC,WAAW;aAC3B,CAAA;QACF,CAAC;KAED;IAVA;QADE,EAAA,QAAQ;iCAST;IAXW,aAAW,cAavB,CAAA;IAED,MAAM,CAAC,gBAAgB,CAAE,QAAQ,EAAG,EAAA,cAAc,CAAE,oBAAoB,EAAG,GAAE,EAAE;QAC9E,WAAW,CAAC,IAAI,CAAE,SAAS,EAAG,EAAA,qBAAqB,CAAE,CAAA;IACtD,CAAC,CAAE,CAAE,CAAA;AAEN,CAAC,EArBS,CAAC,KAAD,CAAC,QAqBV;;;;ACrBD,IAAU,CAAC,CASV;AATD,WAAU,CAAC;AASX,CAAC,EATS,CAAC,KAAD,CAAC,QASV;;;;ACTD,IAAU,CAAC,CAIV;AAJD,WAAU,CAAC;IAEV,EAAA,gBAAgB,GAAG,MAAa,CAAA;AAEjC,CAAC,EAJS,CAAC,KAAD,CAAC,QAIV;;;;ACJD,IAAU,CAAC,CAiIV;AAjID,WAAU,CAAC;IAEV,gCACC,EAAY,EACZ,MAAmC;QAEnC,GAAG,CAAA,CAAE,IAAI,GAAG,IAAI,MAAO,CAAC,CAAC,CAAC;YAEzB,MAAM,GAAG,GAAS,MAAM,CAAE,GAAG,CAAE,CAAA;YAE/B,EAAE,CAAA,CAAE,GAAG,KAAK,SAAU,CAAC;gBAAC,QAAQ,CAAA;YAChC,EAAE,CAAA,CAAE,EAAE,CAAE,GAAG,CAAE,KAAK,GAAI,CAAC;gBAAC,QAAQ,CAAA;YAEhC,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,CAAA;QAChB,CAAC;IACF,CAAC;IAbe,wBAAsB,yBAarC,CAAA;IAED,kCACC,EAAY,EACZ,UAA4F;QAE5F,MAAM,SAAS,GAAG,EAAyB,CAAA;QAC3C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAQ,CAAA;QAEhC,GAAG,CAAA,CAAE,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,UAAU,CAAC,MAAM,EAAG,EAAE,CAAC,EAAG,CAAC;YAC/C,IAAI,IAAI,GAAG,UAAU,CAAE,CAAC,CAAS,CAAA;YACjC,EAAE,CAAA,CAAE,IAAI,IAAI,IAAK,CAAC;gBAAC,QAAQ,CAAA;YAC3B,EAAE,CAAA,CAAE,MAAM,CAAE,IAAI,CAAE,KAAK,IAAK,CAAC,CAAC,CAAC;gBAC9B,EAAE,CAAA,CAAE,IAAI,CAAE,UAAU,CAAG,CAAC;oBAAC,IAAI,GAAG,IAAI,CAAE,UAAU,CAAE,EAAE,CAAA;gBACpD,SAAS,CAAC,IAAI,CAAE,IAAI,CAAE,CAAA;gBACtB,QAAQ,CAAC,GAAG,CAAE,IAAI,CAAE,CAAA;YACrB,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,SAAS,CAAC,IAAI,CAAE,MAAM,CAAE,IAAI,CAAE,CAAE,CAAA;YACjC,CAAC;QACF,CAAC;QAED,IAAI,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAA;QAC5B,GAAG,CAAA,CAAE,IAAI,KAAK,IAAI,SAAU,CAAC,CAAC,CAAC;YAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAU,CAAA;YAEpC,EAAE,CAAA,CAAE,IAAI,YAAY,EAAA,gBAAgB,CAAC,IAAK,CAAC,CAAC,CAAC;gBAE5C,OAAO,IAAI,EAAG,CAAC;oBACd,EAAE,CAAA,CAAE,CAAC,QAAS,CAAC,CAAC,CAAC;wBAChB,EAAE,CAAC,WAAW,CAAE,IAAI,CAAE,CAAA;wBACtB,KAAK,CAAA;oBACN,CAAC;oBACD,EAAE,CAAA,CAAE,QAAQ,IAAI,IAAK,CAAC,CAAC,CAAC;wBACvB,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAA;wBAC/B,KAAK,CAAA;oBACN,CAAC;oBAAC,IAAI,CAAC,CAAC;wBACP,EAAE,CAAA,CAAE,QAAQ,CAAC,GAAG,CAAE,QAAQ,CAAG,CAAC,CAAC,CAAC;4BAC/B,EAAE,CAAC,YAAY,CAAE,IAAI,EAAG,QAAQ,CAAE,CAAA;4BAClC,KAAK,CAAA;wBACN,CAAC;wBAAC,IAAI,CAAC,CAAC;4BACP,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAA;4BAC/B,EAAE,CAAC,WAAW,CAAE,QAAQ,CAAE,CAAA;4BAC1B,QAAQ,GAAG,EAAE,CAAA;wBACd,CAAC;oBACF,CAAC;gBACF,CAAC;YAEF,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,EAAE,CAAA,CAAE,QAAQ,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAQ,CAAC,CAAC,CAAC;oBAChD,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAE,IAAI,CAAE,CAAA;oBACnC,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAA;gBAChC,CAAC;gBAAC,IAAI,CAAC,CAAC;oBACP,MAAM,QAAQ,GAAG,EAAA,gBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAE,MAAM,CAAE,IAAI,CAAE,CAAE,CAAA;oBAC3E,EAAE,CAAC,YAAY,CAAE,QAAQ,EAAG,QAAQ,CAAE,CAAA;gBACvC,CAAC;YACF,CAAC;QAEF,CAAC;QAED,OAAO,QAAQ,EAAG,CAAC;YAClB,MAAM,QAAQ,GAAG,QAAQ,CAAA;YACzB,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAA;YAC/B,EAAE,CAAC,WAAW,CAAE,QAAQ,CAAE,CAAA;QAC3B,CAAC;IACF,CAAC;IA9De,0BAAwB,2BA8DvC,CAAA;IAED,oCACC,EAAY,EACZ,KAAoD;QAEpD,GAAG,CAAA,CAAE,IAAI,IAAI,IAAI,KAAM,CAAC,CAAC,CAAC;YACzB,IAAI,GAAG,GAAG,KAAK,CAAE,IAAI,CAAS,CAAA;YAC9B,EAAE,CAAA,CAAE,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAM,CAAC;gBAAC,EAAE,CAAC,eAAe,CAAE,IAAI,CAAE,CAAA;YAC9D,IAAI;gBAAC,EAAE,CAAC,YAAY,CAAE,IAAI,EAAG,MAAM,CAAE,GAAG,CAAE,CAAE,CAAA;QAC7C,CAAC;IACF,CAAC;IATe,4BAA0B,6BASzC,CAAA;IAED,gCACC,EAAY,EACZ,MAA6C;QAE7C,GAAG,CAAA,CAAE,IAAI,IAAI,IAAI,MAAO,CAAC,CAAC,CAAC;YAC1B,IAAI,GAAG,GAAG,MAAM,CAAE,IAAI,CAAE,CAAA;YAExB,MAAM,KAAK,GAAK,EAAmB,CAAC,KAAY,CAAA;YAChD,MAAM,GAAG,GAAG,KAAK,CAAE,IAAI,CAAE,CAAA;YAEzB,EAAE,CAAA,CAAE,OAAO,GAAG,KAAK,QAAS,CAAC,CAAC,CAAC;gBAC9B,EAAE,CAAA,CAAE,UAAU,CAAE,GAAG,CAAE,IAAI,GAAI,CAAC;oBAAC,QAAQ,CAAA;gBACvC,KAAK,CAAE,IAAI,CAAE,GAAG,GAAI,GAAI,IAAI,CAAA;YAC7B,CAAC;YAED,EAAE,CAAA,CAAE,GAAG,KAAK,GAAI,CAAC;gBAAC,KAAK,CAAE,IAAI,CAAE,GAAG,GAAG,CAAA;QACtC,CAAC;IACF,CAAC;IAjBe,wBAAsB,yBAiBrC,CAAA;IAED,gCACC,EAAY,EACZ,MAAuD;QAEvD,GAAG,CAAA,CAAE,IAAI,IAAI,IAAI,MAAO,CAAC,CAAC,CAAC;YAC1B,EAAE,CAAC,gBAAgB,CAAE,IAAI,EAAG,EAAA,cAAc,CAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,EAAG,MAAM,CAAE,IAAI,CAAE,CAAE,EAAG,EAAE,OAAO,EAAG,KAAK,EAAS,CAAE,CAAA;QACjH,CAAC;IACF,CAAC;IAPe,wBAAsB,yBAOrC,CAAA;IAED,sCACC,EAAY,EACZ,MAAuD;QAEvD,GAAG,CAAA,CAAE,IAAI,IAAI,IAAI,MAAO,CAAC,CAAC,CAAC;YAC1B,EAAE,CAAC,gBAAgB,CAAE,IAAI,EAAG,EAAA,cAAc,CAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,EAAG,MAAM,CAAE,IAAI,CAAE,CAAE,EAAG,EAAE,OAAO,EAAG,IAAI,EAAS,CAAE,CAAA;QAChH,CAAC;IACF,CAAC;IAPe,8BAA4B,+BAO3C,CAAA;AAEF,CAAC,EAjIS,CAAC,KAAD,CAAC,QAiIV;;;;;;;;;;AChID,IAAU,CAAC,CAoSV;AApSD,WAAU,CAAC;IAEV,IAAiB,EAAE,CAAW;IAA9B,WAAiB,IAAE;QAAG,IAAI,EAAE,CAAA;IAAC,CAAC,EAAb,EAAE,GAAF,IAAE,KAAF,IAAE,QAAW;IAC9B,IAAiB,IAAI,CAAa;IAAlC,WAAiB,MAAI;QAAG,IAAI,IAAI,CAAA;IAAC,CAAC,EAAjB,IAAI,GAAJ,MAAI,KAAJ,MAAI,QAAa;IAKlC;QACC,MAAM,CAAC,EAAA,WAAW,CAAC,IAAI,EAAE,CAAC,KAAK,CAAA;IAChC,CAAC;IAFe,yBAAuB,0BAEtC,CAAA;IAED;QACC,MAAM,CAAC,EAAA,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,CAAA;IACjC,CAAC;IAFe,0BAAwB,2BAEvC,CAAA;IAED,6BAAqC,MAAe;QACnD,MAAM,CAAC,MAAM,CAAA;IACd,CAAC;IAFe,qBAAmB,sBAElC,CAAA;IAGD,eAAuB,SAAQ,EAAA,WAAW;QAGzC,MAAM,CAAC,IAAI,CAAE,EAAW;YACvB,MAAM,CAAC,IAAI,IAAI,CAAA;QAChB,CAAC;QAGD,MAAM,CAAC,QAAQ;YACd,MAAM,KAAK,GAAG,EAAA,gBAAgB,CAAC,QAAQ,CAAC,gBAAgB,CAAE,iBAAiB,CAAE,CAAA;YAE7E,GAAG,CAAA,CAAE,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAG,CAAC,IAAI,CAAC,EAAG,EAAE,CAAC,EAAG,CAAC;gBAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAE,CAAC,CAAE,CAAC,YAAY,CAAE,eAAe,CAAE,CAAA;gBAE5D,MAAM,IAAI,GAAG,CAAC,CAAE,IAAI,CAAE,CAAA;gBACtB,EAAE,CAAA,CAAE,CAAC,IAAK,CAAC,CAAC,CAAC;oBACZ,OAAO,CAAC,KAAK,CAAE,yCAA0C,IAAK,EAAE,CAAE,CAAA;oBAClE,QAAQ,CAAA;gBACT,CAAC;gBAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAE,CAAC,CAAE,CAAA;gBAE3B,IAAI,CAAC,QAAQ,CAAE,KAAK,CAAC,IAAI,CAAE,CAAC,CAAE,CAAE,CAAA;gBAEhC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;YAC9B,CAAC;QAEF,CAAC;QAED,KAAK;YACJ,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAA;QACnC,CAAC;QAGD,OAAO,CAAE,IAAc;YACtB,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;YAC1B,MAAM,KAAK,GAAG,EAAA,mBAAmB,CAAC,OAAO,CAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,IAAI,CAAE,CAAC,CAAC,CAAC,EAAE,CAAE,IAAI,EAAE,CAAA;YACxG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAE,IAAI,CAAE,KAAK,CAAC,CAAC,CAAA;QACpC,CAAC;QAGD,OAAO,CAAE,IAA2B;YACnC,MAAM,CAAC,IAAI,IAAI,CAAwB,CAAA;QACxC,CAAC;QACD,IAAI,CAAC;YACJ,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAA;QACtB,CAAC;QACD,IAAI,CAAC,CAAE,IAAwB;YAC9B,IAAI,CAAC,OAAO,CAAE,IAAI,CAAE,CAAA;QACrB,CAAC;QAED,WAAW;YACV,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAA;QACtB,CAAC;QAED,SAAS,CAAE,MAAM,GAAG,EAAE;YACrB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAE,MAAM,CAAE,CAAA;QAC5C,CAAC;QAGD,QAAQ;YACP,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAE,GAAG,EAAG,EAAE,CAAE,CAAA;QACvD,CAAC;QAGD,cAAc,KAAK,MAAM,CAAC,8BAA8B,CAAA,CAAC,CAAC;QAG1D,GAAG;YACF,MAAM,CAAC,IAAmD,CAAA;QAC3D,CAAC;QAID,WAAW;YACV,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACtB,EAAE,CAAA,CAAE,CAAC,GAAI,CAAC;gBAAC,MAAM,CAAC,GAAG,CAAA;YAErB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;YAClC,GAAG,CAAC,OAAO,CAAE,KAAK,CAAC,EAAE;gBACpB,EAAE,CAAA,CAAE,KAAK,YAAY,SAAU,CAAC,CAAC,CAAC;oBACjC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAA;gBAClB,CAAC;YACF,CAAC,CAAE,CAAA;YAEH,MAAM,CAAC,GAAG,CAAA;QACX,CAAC;QAID,aAAa;YACZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACtB,EAAE,CAAA,CAAE,CAAC,GAAI,CAAC;gBAAC,MAAM,CAAC,CAAC,CAAA;YAEnB,IAAI,GAAG,GAAG,CAAC,CAAA;YACX,GAAG,CAAC,OAAO,CAAE,IAAI,CAAC,EAAE;gBACnB,EAAE,CAAA,CAAE,IAAI,YAAY,SAAU,CAAC,CAAC,CAAC;oBAChC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAE,GAAG,EAAG,IAAI,CAAC,aAAa,EAAE,CAAE,CAAA;gBAC7C,CAAC;YACF,CAAC,CAAE,CAAA;YAEH,MAAM,CAAC,GAAG,CAAA;QACX,CAAC;QAGD,cAAc;YACb,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,CAAA;QAC7B,CAAC;QAGD,cAAc;YACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACtB,EAAE,CAAA,CAAE,CAAC,GAAI,CAAC;gBAAC,MAAM,CAAC,CAAC,CAAA;YAEnB,IAAI,GAAG,GAAG,CAAC,CAAA;YACX,GAAG,CAAC,OAAO,CAAE,IAAI,CAAC,EAAE;gBACnB,EAAE,CAAA,CAAE,IAAI,YAAY,SAAU,CAAC,CAAC,CAAC;oBAChC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAE,GAAG,EAAG,IAAI,CAAC,cAAc,EAAE,CAAE,CAAA;gBAC9C,CAAC;YACF,CAAC,CAAE,CAAA;YAEH,MAAM,CAAC,GAAG,CAAA;QACX,CAAC;QAED,MAAM;YACL,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;QACvB,CAAC;QAGD,QAAQ,CAAE,IAAe;YACxB,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,eAAe,CAAE,IAAI,CAAC,cAAc,EAAE,EAAG,IAAI,CAAC,QAAQ,EAAE,CAAE,CAAA;YAEhH,IAAI,CAAC,YAAY,CAAE,IAAI,EAAG,IAAI,CAAC,MAAM,EAAE,CAAE,CAAA;YACzC,EAAA,0BAA0B,CAAE,IAAI,EAAG,IAAI,CAAC,WAAW,EAAE,CAAE,CAAA;YACvD,EAAA,sBAAsB,CAAE,IAAI,EAAG,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;YAC7C,EAAA,4BAA4B,CAAE,IAAI,EAAG,IAAI,CAAC,WAAW,EAAE,CAAE,CAAA;YAEzD,MAAM,CAAC,IAAI,CAAA;QACZ,CAAC;QAGD,QAAQ,CAAE,IAAe;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAE,IAAI,CAAE,CAAA;YAElC,IAAI,CAAC;gBAEJ,GAAG,CAAA,CAAE,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,EAAG,CAAC;oBAAC,MAAM,CAAC,MAAM,EAAE,CAAA;gBACnD,IAAI,CAAC,MAAM,EAAE,CAAA;YAEd,CAAC;YAAC,KAAK,CAAA,CAAE,KAAM,CAAC,CAAC,CAAC;gBAEjB,EAAA,0BAA0B,CAAE,IAAI,EAAG,EAAE,cAAc,EAAG,KAAK,CAAC,IAAI,EAAE,CAAE,CAAA;gBAEpE,EAAE,CAAA,CAAE,KAAK,YAAY,EAAA,cAAe,CAAC;oBAAC,MAAM,CAAC,IAAI,CAAA;gBAEjD,IAAI,CAAC;oBAAC,KAAI,CAAI,IAAqB,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAE,CAAA;gBAAC,CAAC;gBAAC,KAAK,CAAA,CAAE,CAAE,CAAC,CAAC,CAAC,CAAA,CAAC;gBAE/E,EAAE,CAAA,CAAE,KAAK,CAAE,mBAAmB,CAAG,CAAC;oBAAC,MAAM,CAAC,IAAI,CAAA;gBAE9C,OAAO,CAAC,KAAK,CAAE,KAAK,CAAE,CAAA;gBAEtB,KAAK,CAAE,mBAAmB,CAAE,GAAG,IAAI,CAAA;YACpC,CAAC;YAED,MAAM,CAAC,IAAI,CAAA;QACZ,CAAC;QAED,MAAM;YACL,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;YAE5B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;YAC9B,EAAE,CAAA,CAAE,GAAI,CAAC;gBAAC,EAAA,wBAAwB,CAAE,IAAI,EAAG,GAAG,CAAE,CAAA;YAEhD,EAAA,0BAA0B,CAAE,IAAI,EAAG,IAAI,CAAC,IAAI,EAAE,CAAE,CAAA;YAChD,EAAA,sBAAsB,CAAE,IAAI,EAAG,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;YAE7C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;YAC3B,EAAA,sBAAsB,CAAE,IAAI,EAAG,MAAM,CAAE,CAAA;YACvC,IAAI,EAAA,UAAU,CAAE,GAAE,EAAE,CAAC,EAAA,sBAAsB,CAAE,IAAI,EAAG,MAAM,CAAE,CAAE,CAAA;QAC/D,CAAC;QAGD,MAAM,CAAC,YAAY;YAClB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAA;YAE5B,IAAI,OAAO,GAAG,KAAK,CAAA;YACnB,MAAM,OAAO,GAAG,EAA4B,CAAA;YAE5C,OAAO,OAAO,EAAG,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAE,OAAO,CAAC,WAA+B,CAAE,CAAA;gBACvD,EAAE,CAAA,CAAC,CAAC,CAAE,OAAO,YAAY,SAAS,CAAE,CAAC;oBAAC,KAAK,CAAA;gBAC3C,OAAO,GAAG,MAAM,CAAC,cAAc,CAAE,OAAO,CAAE,CAAA;YAC3C,CAAC;YAED,MAAM,CAAC,OAAO,CAAA;QACf,CAAC;QAED,gBAAgB;YACf,MAAM,KAAK,GAAG,EAAc,CAAA;YAC5B,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;YAE9B,EAAE,CAAA,CAAE,KAAK,YAAY,SAAU,CAAC,CAAC,CAAC;gBAEjC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;gBAClC,MAAM,OAAO,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;gBAEnE,GAAG,CAAA,CAAE,IAAI,KAAK,IAAM,KAAK,CAAC,WAAiC,CAAC,YAAY,EAAG,CAAC,CAAC,CAAC;oBAC7E,EAAE,CAAA,CAAE,MAAM,IAAI,KAAK,CAAC,SAAU,CAAC;wBAAC,KAAK,CAAC,IAAI,CAAE,EAAA,cAAc,CAAE,KAAK,CAAE,GAAG,OAAO,CAAE,CAAA;oBAC/E,IAAI;wBAAC,KAAK,CAAA;gBACX,CAAC;gBAED,GAAG,CAAA,CAAE,IAAI,MAAM,IAAI,KAAK,CAAC,gBAAgB,EAAG,CAAC,CAAC,CAAC;oBAC9C,KAAK,CAAC,IAAI,CAAE,MAAM,GAAG,OAAO,CAAE,CAAA;gBAC/B,CAAC;YACF,CAAC;YAED,MAAM,CAAC,KAAK,CAAA;QACb,CAAC;QAGD,UAAU;YACT,MAAM,KAAK,GAAG,EAAc,CAAA;YAE5B,GAAG,CAAA,CAAE,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAG,CAAC,CAAC,CAAC;gBAC3C,EAAE,CAAA,CAAE,KAAK,CAAC,OAAO,CAAE,IAAI,CAAE,GAAG,CAAE,CAAC;oBAAC,KAAK,CAAC,IAAI,CAAE,IAAI,CAAE,CAAA;YACnD,CAAC;YAED,GAAG,CAAA,CAAE,IAAI,KAAK,IAAM,IAAI,CAAC,WAAiC,CAAC,YAAY,EAAG,CAAC,CAAC,CAAC;gBAC5E,MAAM,IAAI,GAAG,EAAA,cAAc,CAAE,KAAK,CAAE,CAAA;gBACpC,EAAE,CAAA,CAAE,KAAK,CAAC,OAAO,CAAE,IAAI,CAAE,GAAG,CAAE,CAAC;oBAAC,KAAK,CAAC,IAAI,CAAE,IAAI,CAAE,CAAA;YACnD,CAAC;YAED,MAAM,CAAC,KAAK,CAAA;QACb,CAAC;QAED,WAAW;YACV,IAAI,KAAK,GAAS,EAAE,CAAA;YAEpB,GAAG,CAAA,CAAE,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAG,CAAC;gBAAC,KAAK,CAAE,IAAI,CAAC,OAAO,CAAE,KAAK,EAAG,EAAE,CAAE,CAAC,WAAW,EAAE,CAAE,GAAG,EAAE,CAAA;YAE3F,MAAM,CAAC,KAAK,CAAA;QACb,CAAC;QAED,IAAI;YACH,MAAM,CAAC;gBACN,gBAAgB,EAAG,KAAK;aACxB,CAAA;QACF,CAAC;QAED,KAAK;YACJ,MAAM,CAAC,EAAE,CAAA;QACV,CAAC;QAED,KAAK;YACJ,MAAM,CAAC,EAAE,CAAA;QACV,CAAC;QAED,KAAK;YACJ,MAAM,CAAC,EAAE,CAAA;QACV,CAAC;QAED,WAAW;YACV,MAAM,CAAC,EAAE,CAAA;QACV,CAAC;QAED,OAAO;YACN,MAAM,CAAC,EAAiB,CAAA;QACzB,CAAC;KAED;IA3OA;QADE,EAAA,QAAQ;4CAKT;IAGD;QADE,EAAA,QAAQ;4CAGT;IA+CD;QADE,EAAA,QAAQ;kDAaT;IAQD;QADE,EAAA,QAAQ;mDAaT;IAOD;QADE,EAAA,QAAQ;6CAUT;IAGD;QADE,EAAA,QAAQ;6CAyBT;IAuDD;QADE,EAAA,QAAQ;+CAcT;IAtOD;QADE,EAAA,YAAY;+BAGb;IAGD;QADE,EAAA,QAAQ;mCAoBT;IA2JD;QADE,EAAA,QAAQ;uCAcT;IAnMW,WAAS,YA6QrB,CAAA;AAEF,CAAC,EApSS,CAAC,KAAD,CAAC,QAoSV;;;;ACjSD,IAAU,CAAC,CASV;AATD,WAAU,CAAC;IAGV,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAA;IACtE,EAAA,gBAAgB,CAAC,QAAQ,CAAC,gBAAgB,CAAE,UAAU,EAAG,EAAA,cAAc,CAAE,aAAc,UAAW,EAAE,EAAG,CAAE,KAAa,EAAE,EAAE;QACzH,EAAA,SAAS,CAAC,QAAQ,EAAE,CAAA;QACpB,EAAA,UAAU,CAAC,GAAG,EAAE,CAAA;IACjB,CAAC,CAAE,CAAE,CAAA;AAEN,CAAC,EATS,CAAC,KAAD,CAAC,QASV;;;;;;;;;;ACbD,IAAU,CAAC,CAwHV;AAxHD,WAAU,CAAC;IAEV,yBAAiC,SAAQ,EAAA,WAAW;QAGnD,MAAM,CAAC,OAAO,CAAE,IAAiB,EAAG,KAAwB;YAC3D,EAAE,CAAA,CAAE,IAAI,KAAK,SAAU,CAAC;gBAAC,MAAM,CAAC,EAAe,CAAA;YAE/C,MAAM,IAAI,GAAG,IAAI,CAAE,CAAC,CAAiB,CAAA;YAErC,MAAM,IAAI,GAAG,EAAA,iBAAiB,EAAiB,CAAA;YAC/C,IAAI,EAAA,UAAU,CAAE,GAAE,EAAE;gBACnB,EAAE,CAAA,CAAE,IAAK,CAAC;oBAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;gBAE9B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;gBAC1B,EAAE,CAAA,CAAE,EAAG,CAAC;oBAAC,EAAE,CAAC,IAAI,EAAE,CAAA;YACnB,CAAC,CAAE,CAAA;YAEH,MAAM,CAAC,SAAS,CAAA;QACjB,CAAC;QAGD,MAAM,CAAC,QAAQ,CAAE,GAAG,IAAY;YAC/B,EAAE,CAAA,CAAE,IAAI,CAAC,MAAO,CAAC,CAAC,CAAC;gBAClB,EAAE,CAAA,CAAE,CAAC,IAAI,CAAE,CAAC,CAAG,CAAC;oBAAC,MAAM,CAAC,IAAI,CAAE,CAAC,CAAE,CAAA;gBAEjC,IAAI,KAAK,GAAG,IAAI,CAAE,CAAC,CAAE,CAAC,KAAK,CAAA;gBAC3B,IAAI,GAAG,GAAG,IAAI,CAAE,CAAC,CAAE,CAAC,GAAG,CAAA;gBACvB,EAAE,CAAA,CAAE,CAAC,CAAE,KAAK,IAAI,GAAG,CAAG,CAAC;oBAAC,MAAM,IAAI,KAAK,CAAE,kBAAkB,KAAK,IAAI,GAAG,GAAG,CAAE,CAAA;gBAE5E,IAAI,IAAI,GAAG,EAAA,gBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAE,IAAI,CAAE,CAAC,CAAE,CAAC,EAAE,CAAE,CAAA;gBACnE,IAAI,CAAC,KAAK,EAAE,CAAA;gBAEZ,IAAI,KAAK,GAAG,IAAI,KAAK,CAAA;gBAErB,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAA;gBACzB,OAAO,GAAG,KAAK,IAAI,EAAG,CAAC;oBACtB,OAAO,GAAG,CAAC,UAAU;wBAAG,GAAG,GAAG,GAAG,CAAC,UAAU,CAAA;oBAC5C,EAAE,CAAA,CAAE,GAAG,CAAC,SAAU,CAAC,CAAC,CAAC;wBACpB,IAAI,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAA;wBACjC,EAAE,CAAA,CAAE,MAAM,IAAI,KAAM,CAAC;4BAAE,KAAK,CAAA;wBAC5B,KAAK,IAAI,MAAM,CAAA;oBAChB,CAAC;oBACD,OAAO,CAAC,GAAG,CAAC,WAAW,EAAG,CAAC;wBAC1B,GAAG,GAAG,GAAG,CAAC,UAAU,CAAA;wBACpB,EAAE,CAAA,CAAE,GAAG,KAAK,IAAK,CAAC,CAAC,CAAC;4BACnB,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAA;4BAC9B,KAAK,CAAA;wBACN,CAAC;oBACF,CAAC;gBACF,CAAC;gBACD,KAAK,CAAC,QAAQ,CAAE,GAAG,EAAG,KAAK,CAAE,CAAA;gBAE7B,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAA;gBACzB,OAAO,GAAG,KAAK,IAAI,EAAG,CAAC;oBACtB,OAAO,GAAG,CAAC,UAAU;wBAAG,GAAG,GAAG,GAAG,CAAC,UAAU,CAAA;oBAC5C,EAAE,CAAA,CAAE,GAAG,CAAC,SAAU,CAAC,CAAC,CAAC;wBACpB,IAAI,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAA;wBACjC,EAAE,CAAA,CAAE,MAAM,IAAI,GAAI,CAAC;4BAAE,KAAK,CAAA;wBAC1B,GAAG,IAAI,MAAM,CAAA;oBACd,CAAC;oBACD,OAAO,CAAC,GAAG,CAAC,WAAW,EAAG,CAAC;wBAC1B,GAAG,GAAG,GAAG,CAAC,UAAU,CAAA;wBACpB,EAAE,CAAA,CAAE,GAAG,KAAK,IAAK,CAAC,CAAC,CAAC;4BACnB,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAA;4BAC5B,KAAK,CAAA;wBACN,CAAC;oBACF,CAAC;gBACF,CAAC;gBACD,KAAK,CAAC,MAAM,CAAE,GAAG,EAAG,GAAG,CAAE,CAAA;gBAEzB,IAAI,GAAG,GAAG,EAAA,gBAAgB,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAA;gBAClD,GAAG,CAAC,eAAe,EAAE,CAAA;gBACrB,GAAG,CAAC,QAAQ,CAAE,KAAK,CAAE,CAAA;gBAErB,MAAM,CAAC,IAAI,CAAE,CAAC,CAAE,CAAA;YACjB,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,IAAI,GAAG,GAAG,EAAA,gBAAgB,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAA;gBAClD,EAAE,CAAA,CAAE,GAAG,CAAC,UAAU,KAAK,CAAE,CAAC;oBAAC,MAAM,CAAC,IAAI,CAAA;gBACtC,IAAI,KAAK,GAAG,GAAG,CAAC,UAAU,CAAE,CAAC,CAAE,CAAA;gBAE/B,IAAI,EAAE,GAAG,KAAK,CAAC,uBAAkC,CAAA;gBACjD,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE;oBAAG,EAAE,GAAG,EAAE,CAAC,aAAa,CAAA;gBAE3C,EAAE,CAAA,CAAE,CAAC,EAAG,CAAC;oBAAC,MAAM,CAAC,EAAE,EAAE,EAAG,IAAI,EAAG,KAAK,EAAG,CAAC,EAAG,GAAG,EAAG,CAAC,EAAE,CAAA;gBAEpD,IAAI,KAAK,GAAG,IAAI,KAAK,CAAA;gBACrB,KAAK,CAAC,kBAAkB,CAAE,EAAE,CAAE,CAAA;gBAE9B,KAAK,CAAC,MAAM,CAAE,KAAK,CAAC,cAAc,EAAG,KAAK,CAAC,WAAW,CAAE,CAAA;gBACxD,IAAI,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAA;gBAEzC,KAAK,CAAC,MAAM,CAAE,KAAK,CAAC,YAAY,EAAG,KAAK,CAAC,SAAS,CAAE,CAAA;gBACpD,IAAI,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAA;gBAEvC,MAAM,CAAC,EAAE,EAAE,EAAG,EAAE,CAAC,EAAE,EAAG,KAAK,EAAG,WAAW,EAAG,GAAG,EAAG,SAAS,EAAE,CAAA;YAC9D,CAAC;QACF,CAAC;QAED,MAAM,CAAC,OAAO,CAAE,KAAkB;YACjC,MAAM,OAAO,GAAe,EAAE,CAAA;YAC9B,IAAI,OAAO,GAAG,KAAK,CAAC,MAAqB,CAAA;YAEzC,OAAO,OAAO,EAAG,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAE,OAAO,CAAE,CAAA;gBACvB,OAAO,GAAG,OAAO,CAAC,UAAyB,CAAA;YAC5C,CAAC;YAED,IAAI,CAAC,OAAO,CAAE,OAAO,EAAG,EAAA,qBAAqB,CAAE,CAAA;QAChD,CAAC;QAED,MAAM,CAAC,MAAM,CAAE,KAAkB;YAChC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;YAC9B,UAAU,CAAE,EAAA,cAAc,CAAE,0BAA0B,EAAG,GAAE,EAAE;gBAC5D,EAAE,CAAA,CAAE,OAAO,KAAK,IAAI,CAAC,OAAO,EAAG,CAAC;oBAAC,MAAM,CAAA;gBACvC,IAAI,CAAC,OAAO,CAAE,EAAE,EAAG,EAAA,qBAAqB,CAAE,CAAA;YAC3C,CAAC,CAAE,CAAE,CAAA;QACN,CAAC;KACD;IAjHA;QADE,EAAA,QAAQ;4CAeT;IAGD;QADE,EAAA,QAAQ;6CA4ET;IA/FW,qBAAmB,sBAoH/B,CAAA;AAEF,CAAC,EAxHS,CAAC,KAAD,CAAC,QAwHV;;;;ACxHD,IAAU,CAAC,CAkBV;AAlBD,WAAU,CAAC;IAEV,EAAA,gBAAgB,CAAC,QAAQ,CAAC,gBAAgB,CAAE,iBAAiB,EAAG,KAAK,CAAC,EAAE;QACvE,EAAA,mBAAmB,CAAC,QAAQ,CAAE,SAAS,EAAG,EAAA,qBAAqB,CAAE,CAAA;IAClE,CAAC,CAAE,CAAA;IAEH,EAAA,gBAAgB,CAAC,QAAQ,CAAC,gBAAgB,CACzC,OAAO,EACP,EAAA,cAAc,CAAE,2BAA2B,EAAG,CAAE,KAAkB,EAAE,EAAE,CAAC,EAAA,mBAAmB,CAAC,OAAO,CAAE,KAAK,CAAE,CAAE,EAC7G,IAAI,CACJ,CAAA;IAED,EAAA,gBAAgB,CAAC,QAAQ,CAAC,gBAAgB,CACzC,MAAM,EACN,CAAE,KAAkB,EAAE,EAAE,CAAC,EAAA,mBAAmB,CAAC,MAAM,CAAE,KAAK,CAAE,EAC5D,IAAI,CACJ,CAAA;AAEF,CAAC,EAlBS,CAAC,KAAD,CAAC,QAkBV;;;AClBD;AACA;;;;;;;;;ACDA,IAAU,CAAC,CAyGR;AAzGH,WAAU,CAAC;IAAG,iBAAyB,SAAQ,EAAA,SAAS;QAGvD,QAAQ;YACP,MAAM,CAAC,OAAO,CAAA;QACf,CAAC;QAGD,OAAO;YACN,MAAM,CAAC,IAAI,CAAA;QACZ,CAAC;QAGD,QAAQ;YACP,MAAM,CAAC,GAAG,CAAA;QACX,CAAC;QAGD,cAAc;YACb,MAAM,CAAC,EAAE,CAAA;QACV,CAAC;QAQD,KAAK;YACJ,MAAM,CAAC,mBACH,KAAK,CAAC,KAAK,EAAE,IAChB,UAAU,EAAI,IAAI,CAAC,QAAQ,EAAE,EAC7B,OAAO,EAAI,IAAI,CAAC,aAAa,EAAE,EAC/B,aAAa,EAAI,IAAI,CAAC,IAAI,EAAE,EAC5B,MAAM,EAAI,IAAI,CAAC,IAAI,EAAE,IACpB,CAAA;QACH,CAAC;QAGD,QAAQ;YACP,MAAM,CAAC,KAAK,CAAA;QACb,CAAC;QAID,aAAa,CAAE,GAAU,EAAG,KAAwB;YACnD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAE,GAAG,CAAE,CAAA;QACzB,CAAC;QAID,KAAK,CAAE,GAAU,EAAG,KAAwB;YAC3C,MAAM,CAAC,CAAE,GAAG,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QACrC,CAAC;QAGD,IAAI;YACH,MAAM,CAAC,EAAE,CAAA;QACV,CAAC;QAID,IAAI,CAAE,GAAU,EAAG,KAAwB;YAC1C,MAAM,CAAC,CAAE,GAAG,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAA;QACzC,CAAC;QAKD,IAAI;YACH,MAAM,CAAC,mBACH,KAAK,CAAC,IAAI,EAAE,IACf,WAAW,EAAI,IAAI,CAAC,UAAU,EAAE,IAC/B,CAAA;QACH,CAAC;QAGD,UAAU;YACT,MAAM,CAAC,QAAQ,CAAA;QAChB,CAAC;QAMD,KAAK;YACJ,MAAM,CAAC,mBACH,KAAK,CAAC,KAAK,EAAE,IAChB,OAAO,EAAI,CAAE,KAAY,EAAE,EAAE,CAAE,IAAI,CAAC,YAAY,CAAE,KAAK,CAAE,EACzD,UAAU,EAAI,CAAE,KAAY,EAAE,EAAE,CAAE,IAAI,CAAC,eAAe,CAAE,KAAK,CAAE,IAC9D,CAAA;QACH,CAAC;QAID,YAAY,CAAE,KAAY,EAAG,KAAwB;YACpD,MAAM,CAAC,CAAE,KAAK,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAW,CAAA;QAClD,CAAC;QAID,eAAe,CAAE,KAAY,EAAG,KAAwB;YACvD,MAAM,CAAC,CAAE,KAAK,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAW,CAAA;QAClD,CAAC;KAED;IA5DA;QADE,EAAA,QAAQ;oDAGT;IAID;QADE,EAAA,QAAQ;4CAGT;IASD;QADE,EAAA,QAAQ;2CAGT;IA+BD;QADE,EAAA,QAAQ;mDAGT;IAID;QADE,EAAA,QAAQ;sDAGT;IAvGyB,aAAW,cAyGrC,CAAA;AAAC,CAAC,EAzGO,CAAC,KAAD,CAAC,QAyGR;;;;ACzGH,IAAU,CAAC,CA0BV;AA1BD,WAAU,CAAC;IAAC,IAAA,EAAE,CA0Bb;IA1BW,WAAA,EAAE;QACb,iBAAyB,SAAQ,CAAC,CAAC,WAAW;YAA9C;;gBAEC,WAAM,GAAG,CAAC,CAAA;YAsBX,CAAC;YApBA,YAAY,CAAE,IAAa;gBAC1B,EAAE,CAAA,CAAE,CAAC,IAAK,CAAC;oBAAC,MAAM,CAAA;gBAElB,YAAY,CAAE,IAAI,CAAC,MAAM,CAAE,CAAA;gBAC3B,IAAI,CAAC,MAAM,GAAG,UAAU,CAAE,EAAA,cAAc,CAAE,GAAI,IAAK,iBAAiB,EAAG,GAAG,EAAE;oBAC3E,IAAI,CAAC,KAAK,CAAI,IAAI,CAAC,MAA4B,CAAC,KAAK,CAAE,CAAA;gBACxD,CAAC,CAAE,EAAG,IAAI,CAAC,QAAQ,EAAE,CAAE,CAAA;YACxB,CAAC;YAED,eAAe,CAAE,IAAqB;gBACrC,EAAE,CAAA,CAAE,CAAC,IAAK,CAAC;oBAAC,MAAM,CAAA;gBAElB,EAAE,CAAA,CAAE,IAAI,CAAC,OAAO,OAA8B,CAAC,CAAC,CAAC;oBAChD,IAAI,CAAC,KAAK,CAAI,IAAI,CAAC,MAA4B,CAAC,KAAK,CAAE,CAAA;gBACxD,CAAC;YACF,CAAC;YAED,QAAQ;gBACP,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAA;YACvB,CAAC;SACD;QAxBY,cAAW,cAwBvB,CAAA;IACF,CAAC,EA1BW,EAAE,GAAF,IAAE,KAAF,IAAE,QA0Bb;AAAD,CAAC,EA1BS,CAAC,KAAD,CAAC,QA0BV;;;;;;;;;;AC1BD,IAAU,CAAC,CAoFR;AApFH,WAAU,CAAC;IAAG,iBAAyB,SAAQ,EAAA,SAAS;QAGvD,OAAO;YACN,MAAM,CAAC,IAAI,CAAA;QACZ,CAAC;QAGD,cAAc;YACb,MAAM,CAAC,EAAE,CAAA;QACV,CAAC;QAID,KAAK,CAAE,KAAY,EAAG,KAAwB;YAC7C,MAAM,CAAC,CAAE,KAAK,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAW,CAAA;QAClD,CAAC;QAID,WAAW,CAAE,KAAY,EAAG,KAAwB;YACnD,MAAM,CAAC,CAAE,KAAK,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAW,CAAA;QAClD,CAAC;QAMD,KAAK;YACJ,MAAM,CAAC,mBACH,KAAK,CAAC,KAAK,EAAE,IAChB,OAAO,EAAI,CAAE,KAAY,EAAE,EAAE,CAAE,IAAI,CAAC,cAAc,CAAE,KAAK,CAAE,EAC3D,UAAU,EAAI,CAAE,KAAY,EAAE,EAAE,CAAE,IAAI,CAAC,eAAe,CAAE,KAAK,CAAE,IAC9D,CAAA;QACH,CAAC;QAID,cAAc,CAAE,KAAY,EAAG,KAAwB;YACtD,MAAM,CAAC,CAAE,KAAK,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAW,CAAA;QAClD,CAAC;QAID,eAAe,CAAE,KAAY,EAAG,KAAwB;YACvD,MAAM,CAAC,CAAE,KAAK,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAW,CAAA;QAClD,CAAC;QAQD,IAAI;YACH,MAAM,CAAC,mBACH,KAAK,CAAC,IAAI,EAAE,IACf,UAAU,EAAI,IAAI,CAAC,QAAQ,EAAE,EAC7B,MAAM,EAAI,QAAQ,EAClB,UAAU,EAAI,IAAI,CAAC,SAAS,EAAE,EAC9B,OAAO,EAAI,IAAI,CAAC,IAAI,EAAE,IACrB,CAAA;QACH,CAAC;QAGD,QAAQ;YACP,MAAM,CAAC,KAAK,CAAA;QACb,CAAC;QAGD,SAAS;YACR,MAAM,CAAC,CAAC,CAAA;QACT,CAAC;QAGD,IAAI;YACH,MAAM,CAAC,EAAE,CAAA;QACV,CAAC;QAGD,GAAG;YACF,MAAM,CAAC,EAAE,CAAC,MAAM,CAAE,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;QACjC,CAAC;KAED;IAtEA;QADE,EAAA,QAAQ;4CAGT;IAID;QADE,EAAA,QAAQ;kDAGT;IAgBD;QADE,EAAA,QAAQ;qDAGT;IAID;QADE,EAAA,QAAQ;sDAGT;IA9CyB,aAAW,cAoFrC,CAAA;AAAC,CAAC,EApFO,CAAC,KAAD,CAAC,QAoFR;;;;ACpFH,IAAU,CAAC,CA0BV;AA1BD,WAAU,CAAC;IAAC,IAAA,EAAE,CA0Bb;IA1BW,WAAA,EAAE;QACb,iBAAyB,SAAQ,CAAC,CAAC,WAAW;YAE7C,QAAQ;gBACP,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAA;YACvB,CAAC;YAED,cAAc,CAAE,IAAY;gBAC3B,EAAE,CAAA,CAAE,CAAC,IAAK,CAAC;oBAAC,MAAM,CAAA;gBAClB,EAAE,CAAA,CAAE,CAAC,IAAI,CAAC,OAAO,EAAG,CAAC;oBAAC,MAAM,CAAA;gBAE5B,IAAI,CAAC,WAAW,CAAE,IAAI,CAAE,CAAA;gBACxB,IAAI,CAAC,KAAK,CAAE,IAAI,CAAE,CAAA;YACnB,CAAC;YAED,eAAe,CAAG,KAAoB;gBACrC,EAAE,CAAA,CAAE,KAAK,CAAC,OAAO,OAA8B,CAAC,CAAC,CAAC;oBACjD,MAAM,CAAC,IAAI,CAAC,cAAc,CAAE,KAAK,CAAE,CAAA;gBACpC,CAAC;YACF,CAAC;YAED,SAAS;gBACR,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;YACjD,CAAC;SAED;QAxBY,cAAW,cAwBvB,CAAA;IACF,CAAC,EA1BW,EAAE,GAAF,IAAE,KAAF,IAAE,QA0Bb;AAAD,CAAC,EA1BS,CAAC,KAAD,CAAC,QA0BV;;;;AC1BD,IAAU,CAAC,CAER;AAFH,WAAU,CAAC;IAAG,uBAA+B,SAAQ,EAAA,WAAW;KAE/D;IAF0B,mBAAiB,oBAE3C,CAAA;AAAC,CAAC,EAFO,CAAC,KAAD,CAAC,QAER;AAEH,WAAU,CAAC;IAAG,uBAA+B,SAAQ,EAAA,iBAAiB;KAErE;IAF0B,mBAAiB,oBAE3C,CAAA;AAAC,CAAC,EAFO,CAAC,KAAD,CAAC,QAER;AAEH,WAAU,CAAC;IAAG,uBAA+B,SAAQ,EAAA,iBAAiB;KAErE;IAF0B,mBAAiB,oBAE3C,CAAA;AAAC,CAAC,EAFO,CAAC,KAAD,CAAC,QAER;AAEH,WAAU,CAAC;IAAG,wBAAgC,SAAQ,EAAA,iBAAiB;KAEtE;IAF0B,oBAAkB,qBAE5C,CAAA;AAAC,CAAC,EAFO,CAAC,KAAD,CAAC,QAER;;;;ACdH,IAAU,CAAC,CASV;AATD,WAAU,CAAC;IAEV,yBAAoD,MAAe,EAAG,MAAe;QACpF,IAAI,MAAM,GAAG,EAAS,CAAA;QACtB,GAAG,CAAA,CAAE,IAAI,GAAG,IAAI,MAAO,CAAC;YAAC,MAAM,CAAE,GAAG,CAAE,GAAK,MAAe,CAAE,GAAG,CAAE,CAAA;QACjE,GAAG,CAAA,CAAE,IAAI,GAAG,IAAI,MAAO,CAAC;YAAC,MAAM,CAAE,GAAG,CAAE,GAAK,MAAe,CAAE,GAAG,CAAE,CAAA;QACjE,MAAM,CAAC,MAAM,CAAA;IACd,CAAC;IALe,iBAAe,kBAK9B,CAAA;AAEF,CAAC,EATS,CAAC,KAAD,CAAC,QASV;;;;;;;;;;ACTD,IAAU,CAAC,CA+EV;AA/ED,WAAU,CAAC;IAEV,oBAAqC,SAAQ,EAAA,WAAW;QAkDvD,YAAoB,SAAS,EAAE;YAC9B,KAAK,EAAE,CAAA;YADY,WAAM,GAAN,MAAM,CAAK;QAE/B,CAAC;QAjDD,MAAM,CAAC,IAAI,CAAE,IAAc,EAAG,KAAwB;YACrD,EAAE,CAAA,CAAE,IAAK,CAAC;gBAAC,OAAO,CAAC,YAAY,CAAE,OAAO,CAAC,KAAK,EAAG,EAAA,gBAAgB,CAAC,QAAQ,CAAC,KAAK,EAAG,GAAI,IAAK,EAAE,CAAE,CAAA;YAChG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAA;QACrD,CAAC;QAGD,MAAM,CAAC,IAAI,CAAE,IAAqC;YACjD,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAE,IAAI,IAAI,IAAI,CAAC,SAAS,CAAE,IAAI,CAAE,CAAE,CAAA;YACtD,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAE,YAAY,CAAE,CAAA;YAEvC,IAAI,MAAM,GAAmC,EAAE,CAAA;YAC/C,MAAM,CAAC,OAAO,CACb,KAAK,CAAC,EAAE;gBACP,EAAE,CAAA,CAAE,CAAC,KAAM,CAAC;oBAAC,MAAM,CAAA;gBACnB,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAE,GAAG,CAAE,CAAC,GAAG,CAAE,kBAAkB,CAAE,CAAA;gBACvD,MAAM,CAAE,IAAI,CAAC,KAAK,EAAE,CAAE,GAAG,IAAI,CAAC,IAAI,CAAE,GAAG,CAAE,CAAA;YAC1C,CAAC,CACD,CAAA;YAED,MAAM,CAAC,MAAM,CAAA;QACd,CAAC;QAGD,MAAM,CAAC,KAAK,CAAE,GAAY,EAAG,IAAc;YAC1C,MAAM,QAAQ,GAAG,CAAE,IAAI,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAA,eAAe,CAAE,IAAI,CAAC,IAAI,EAAE,EAAG,EAAE,CAAE,GAAG,CAAE,EAAG,IAAI,EAAE,CAAE,CAAA;YACnG,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAE,QAAQ,CAAE,CAAE,GAAG,CAAE,CAAA;YAC1C,MAAM,CAAC,CAAE,KAAK,IAAI,IAAI,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;QACxC,CAAC;QAED,MAAM,CAAC,IAAI,CAAE,IAAoC;YAChD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAE,EAAA,eAAe,CAAE,IAAI,CAAC,IAAI,EAAE,EAAG,IAAI,CAAE,CAAE,CAAA;QAC/D,CAAC;QAED,MAAM,CAAC,SAAS,CAAE,IAAoC;YACrD,MAAM,MAAM,GAAc,EAAE,CAAA;YAC5B,GAAG,CAAA,CAAE,IAAI,GAAG,IAAI,IAAK,CAAC,CAAC,CAAC;gBACvB,EAAE,CAAA,CAAE,IAAI,IAAI,IAAI,CAAE,GAAG,CAAG,CAAC;oBAAC,QAAQ,CAAA;gBAClC,MAAM,CAAC,IAAI,CAAE,CAAE,GAAG,CAAE,CAAC,MAAM,CAAE,IAAI,CAAE,GAAG,CAAE,CAAC,CAAC,CAAC,IAAI,CAAE,GAAG,CAAE,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC,GAAG,CAAE,IAAI,CAAC,MAAM,CAAE,CAAC,IAAI,CAAE,GAAG,CAAE,CAAE,CAAA;YAC/F,CAAC;YAED,MAAM,CAAC,IAAI,GAAG,CAAE,GAAG,GAAG,MAAM,CAAC,IAAI,CAAE,GAAG,CAAE,EAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAE,CAAC,QAAQ,EAAE,CAAA;QAC7E,CAAC;QAED,MAAM,CAAC,MAAM,CAAE,GAAY;YAC1B,MAAM,CAAC,kBAAkB,CAAE,GAAG,CAAE,CAAC,OAAO,CAAE,KAAK,EAAG,KAAK,CAAE,CAAC,OAAO,CAAE,KAAK,EAAG,KAAK,CAAE,CAAA;QACnF,CAAC;QAMD,KAAK,CAAE,GAAY,EAAG,IAAc;YACnC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAE,IAAI,CAAC,MAAM,GAAG,GAAG,EAAG,IAAI,CAAE,CAAA;QACxD,CAAC;QAED,GAAG,CAAE,OAAgB;YACpB,MAAM,CAAC,IAAI,cAAc,CAAE,IAAI,CAAC,MAAM,GAAG,OAAO,GAAG,GAAG,CAAE,CAAA;QACzD,CAAC;QAED,IAAI,CAAE,IAAoC;YACzC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;YACxB,IAAI,IAAI,GAAmC,EAAE,CAAA;YAC7C,GAAG,CAAA,CAAE,IAAI,GAAG,IAAI,IAAK,CAAC,CAAC,CAAC;gBACvB,IAAI,CAAE,MAAM,GAAG,GAAG,CAAE,GAAG,IAAI,CAAE,GAAG,CAAE,CAAA;YACnC,CAAC;YACD,MAAM,CAAC,cAAc,CAAC,IAAI,CAAE,IAAI,CAAE,CAAA;QACnC,CAAC;KAED;IApEA;QADE,EAAA,QAAQ;oCAIT;IAGD;QADE,EAAA,QAAQ;oCAeT;IAGD;QADE,EAAA,YAAY;qCAKb;IA9BW,gBAAc,iBAuE1B,CAAA;IAED,MAAM,CAAC,gBAAgB,CAAE,YAAY,EAAG,EAAA,cAAc,CAAE,2BAA2B,EAAG,CAAE,KAAuB,EAAE,EAAE;QAClH,cAAc,CAAC,IAAI,CAAE,SAAS,EAAG,EAAA,qBAAqB,CAAE,CAAA;IACzD,CAAC,CAAE,CAAE,CAAA;AAEN,CAAC,EA/ES,CAAC,KAAD,CAAC,QA+EV;;;;;;;;;;AC/ED,IAAU,CAAC,CAwFR;AAxFH,WAAU,CAAC;IAAG,eAAuB,SAAQ,EAAA,SAAS;QAGrD,cAAc;YACb,MAAM,CAAC,EAAE,CAAA;QACV,CAAC;QAGD,QAAQ;YACP,MAAM,CAAC,GAAG,CAAA;QACX,CAAC;QASD,IAAI;YACH,MAAM,CAAC,mBACH,KAAK,CAAC,IAAI,EAAE,IACf,MAAM,EAAI,IAAI,CAAC,GAAG,EAAE,EACpB,OAAO,EAAI,IAAI,CAAC,IAAI,EAAE,EACtB,QAAQ,EAAI,IAAI,CAAC,MAAM,EAAE,EACzB,UAAU,EAAI,IAAI,CAAC,SAAS,EAAE,EAC9B,kBAAkB,EAAI,IAAI,CAAC,OAAO,EAAE,IACnC,CAAA;QACH,CAAC;QAGD,GAAG;YACF,MAAM,CAAC,EAAE,CAAA;QACV,CAAC;QAGD,IAAI;YACH,MAAM,CAAC,EAAE,CAAA;QACV,CAAC;QAGD,MAAM;YACL,MAAM,CAAC,OAAO,CAAA;QACf,CAAC;QAGD,SAAS;YACR,MAAM,CAAC,EAAE,CAAA;QACV,CAAC;QAGD,OAAO;YACN,MAAM,CAAC,KAAK,CAAA;QACb,CAAC;QAGD,GAAG;YACF,MAAM,CAAC,EAAE,CAAC,MAAM,CAAE,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;QACjC,CAAC;QAGD,GAAG;YACF,MAAM,CAAC,CAAC,EACP,CAAC,CAAA;QACH,CAAC;QAKD,KAAK;YACJ,MAAM,CAAC,mBACH,KAAK,CAAC,KAAK,EAAE,IAChB,OAAO,EAAI,CAAE,KAAY,EAAE,EAAE,CAAE,IAAI,CAAC,KAAK,CAAE,KAAK,CAAE,IACjD,CAAA;QACH,CAAC;QAID,KAAK,CAAE,KAAY,EAAG,KAAwB;YAC7C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAE,KAAK,CAAE,CAAA;QACjC,CAAC;QAID,WAAW,CAAE,KAAY,EAAG,KAAwB;YACnD,MAAM,CAAC,CAAE,KAAK,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAW,CAAA;QAClD,CAAC;KAED;IAVA;QADE,EAAA,QAAQ;0CAGT;IAID;QADE,EAAA,QAAQ;gDAGT;IAtFyB,WAAS,YAwFnC,CAAA;AAAC,CAAC,EAxFO,CAAC,KAAD,CAAC,QAwFR;;;;;;;;;;ACxFH,IAAU,CAAC,CAuBV;AAvBD,WAAU,CAAC;IAAC,IAAA,EAAE,CAuBb;IAvBW,WAAA,EAAE;QAEb,eAAuB,SAAQ,CAAC,CAAC,SAAS;YAGzC,GAAG;gBACF,MAAM,CAAC,IAAI,EAAA,cAAc,CAAE,IAAI,CAAC,SAAS,EAAE,CAAE,CAAC,IAAI,CAAE,IAAI,CAAC,GAAG,EAAE,CAAE,CAAA;YACjE,CAAC;YAED,OAAO;gBACN,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAA,cAAc,CAAC,IAAI,CAAE,EAAE,CAAE,CAAA;YAChD,CAAC;YAED,WAAW,CAAE,KAAc;gBAC1B,UAAU,CAAE,EAAA,cAAc,CAAE,GAAI,IAAK,gBAAgB,EAAG,GAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAE,KAAK,CAAE,CAAE,EAAG,GAAG,CAAE,CAAA;YAC7F,CAAC;YAED,SAAS;gBACR,MAAM,CAAC,IAAc,CAAA;YACtB,CAAC;SAED;QAhBA;YADE,EAAA,QAAQ;4CAGT;QALW,YAAS,YAmBrB,CAAA;IAEF,CAAC,EAvBW,EAAE,GAAF,IAAE,KAAF,IAAE,QAuBb;AAAD,CAAC,EAvBS,CAAC,KAAD,CAAC,QAuBV;;;;;;;;;;ACvBD,IAAU,CAAC,CAqDR;AArDH,WAAU,CAAC;IAAG,gBAAwB,SAAQ,EAAA,iBAAiB;QAO9D,IAAI;YACH,MAAM,CAAC,mBACH,KAAK,CAAC,IAAI,EAAE,IACf,mBAAmB,EAAI,IAAI,CAAC,OAAO,EAAE,EACrC,cAAc,EAAI,IAAI,CAAC,OAAO,EAAE,EAChC,MAAM,EAAI,UAAU,IACnB,CAAA;QACH,CAAC;QAID,OAAO,CAAE,GAAU,EAAG,KAAwB;YAC7C,MAAM,CAAC,CAAE,GAAG,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA;QACxC,CAAC;QAKD,GAAG;YACF,MAAM,CAAC,EAAE,CAAC,MAAM,CAAE,IAAI,CAAC,IAAI,EAAE,EAAG,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;QAC/C,CAAC;QAGD,IAAI;YACH,MAAM,CAAC,IAAW,CAAA;QACnB,CAAC;QAGD,KAAK;YACJ,MAAM,CAAC,EAAE,CAAC,MAAM,CAAE,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;QACjC,CAAC;QAID,KAAK;YACJ,MAAM,CAAC,CAAC,CAAE,GAAG,EAAE,EAAE;gBAChB,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAE,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;gBACzC,MAAM,CAAC,GAAG,CAAA;YACX,CAAC,CAAC,CAAE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAE,CAAA;QAC3B,CAAC;QAGD,KAAK;YACJ,MAAM,CAAC,EAAE,CAAA;QACV,CAAC;KAED;IAnCA;QADE,EAAA,QAAQ;6CAGT;IAqBD;QADE,EAAA,QAAQ;2CAMT;IA9CyB,YAAU,aAqDpC,CAAA;AAAC,CAAC,EArDO,CAAC,KAAD,CAAC,QAqDR;;;;ACrDH,IAAU,CAAC,CASV;AATD,WAAU,CAAC;IAAC,IAAA,EAAE,CASb;IATW,WAAA,EAAE;QACb,gBAAwB,SAAQ,CAAC,CAAC,UAAU;YAE3C,WAAW,CAAE,IAAa;gBACzB,IAAI,CAAC,OAAO,CAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAE,CAAA;gBAC/B,EAAE,CAAA,CAAE,IAAK,CAAC;oBAAC,IAAI,CAAC,cAAc,EAAE,CAAA;YACjC,CAAC;SAED;QAPY,aAAU,aAOtB,CAAA;IACF,CAAC,EATW,EAAE,GAAF,IAAE,KAAF,IAAE,QASb;AAAD,CAAC,EATS,CAAC,KAAD,CAAC,QASV;;;;;;;;;;ACTD,IAAU,CAAC,CA2FR;AA3FH,WAAU,CAAC;IAAG,iBAAyB,SAAQ,EAAA,SAAS;QAGvD,cAAc;YACb,MAAM,CAAC,CAAC,CAAA;QACT,CAAC;QAID,UAAU,CAAE,GAAU,EAAG,KAAwB;YAChD,MAAM,CAAC,CAAE,GAAG,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA;QACxC,CAAC;QAID,WAAW,CAAE,GAAU,EAAG,KAAwB;YACjD,MAAM,CAAC,CAAE,GAAG,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA;QACxC,CAAC;QAQD,KAAK;YACJ,MAAM,CAAC,mBACH,KAAK,CAAC,KAAK,EAAE,IAChB,WAAW,EAAI,IAAI,CAAC,UAAU,EAAE,EAChC,YAAY,EAAI,IAAI,CAAC,WAAW,EAAE,EAClC,cAAc,EAAI,IAAI,CAAC,aAAa,EAAE,EACtC,aAAa,EAAI,IAAI,CAAC,YAAY,EAAE,IACnC,CAAA;QACH,CAAC;QAID,UAAU,CAAE,GAAU,EAAG,KAAwB;YAChD,MAAM,CAAC,CAAE,GAAG,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACpC,CAAC;QAID,WAAW,CAAE,GAAU,EAAG,KAAwB;YACjD,MAAM,CAAC,CAAE,GAAG,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACpC,CAAC;QAID,aAAa,CAAE,GAAU,EAAG,KAAwB;YACnD,MAAM,CAAC,CAAE,GAAG,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACpC,CAAC;QAID,YAAY,CAAE,GAAU,EAAG,KAAwB;YAClD,MAAM,CAAC,CAAE,GAAG,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACpC,CAAC;QAKD,WAAW;YACV,MAAM,CAAC,mBACH,KAAK,CAAC,WAAW,EAAE,IACtB,QAAQ,EAAI,CAAE,KAAY,EAAE,EAAE,CAAE,IAAI,CAAC,YAAY,CAAE,KAAK,CAAE,IACzD,CAAA;QACH,CAAC;QAID,YAAY,CAAE,KAAY,EAAG,KAAwB;YACpD,MAAM,CAAC,CAAE,KAAK,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAW,CAAA;QAClD,CAAC;QAID,KAAK;YACJ,MAAM,CAAC,CAAC,CAAE,GAAG,EAAE,EAAE;gBAChB,GAAG,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC,CAAC;oBACnB,WAAW,EAAI,IAAI,CAAC,eAAe,EAAE;iBACrC,CAAC,CAAA;gBACD,MAAM,CAAC,GAAG,CAAA;YACX,CAAC,CAAC,CAAE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAE,CAAA;QAC3B,CAAC;QAGD,eAAe;YACd,MAAM,CAAC,EAAE,CAAA;QACV,CAAC;KAED;IAlFA;QADE,EAAA,QAAQ;iDAGT;IAID;QADE,EAAA,QAAQ;kDAGT;IAoBD;QADE,EAAA,QAAQ;iDAGT;IAID;QADE,EAAA,QAAQ;kDAGT;IAID;QADE,EAAA,QAAQ;oDAGT;IAID;QADE,EAAA,QAAQ;mDAGT;IAcD;QADE,EAAA,QAAQ;mDAGT;IAID;QADE,EAAA,QAAQ;4CAQT;IApFyB,aAAW,cA2FrC,CAAA;AAAC,CAAC,EA3FO,CAAC,KAAD,CAAC,QA2FR;;;;;;;;;;AC3FH,IAAU,CAAC,CAmIV;AAnID,WAAU,CAAC;IAAC,IAAA,EAAE,CAmIb;IAnIW,WAAA,EAAE;QAEb;YACC,MAAM,CAAC,CAAC,CAAA;QACT,CAAC;QAFe,kBAAe,kBAE9B,CAAA;QAED;YACC,MAAM,CAAC,CAAC,CAAA;QACT,CAAC;QAFe,mBAAgB,mBAE/B,CAAA;QAED;YACC,MAAM,CAAC,KAAK,CAAA;QACb,CAAC;QAFe,qBAAkB,qBAEjC,CAAA;QAED;YACC,MAAM,CAAC,KAAK,CAAA;QACb,CAAC;QAFe,0BAAuB,0BAEtC,CAAA;QAED;YACC,MAAM,CAAC,KAAK,CAAA;QACb,CAAC;QAFe,yBAAsB,yBAErC,CAAA;QAED,iBAAyB,SAAQ,CAAC,CAAC,WAAW;YAA9C;;gBAgDC,uBAAkB,GAAG,CAAC,CAAA;YA2DvB,CAAC;YAhGA,aAAa,CAAE,IAAc;gBAC5B,MAAM,CAAC,IAAI,IAAI,CAAC,CAAA;YACjB,CAAC;YAGD,YAAY,CAAE,IAAc;gBAC3B,MAAM,CAAC,IAAI,IAAI,CAAC,CAAA;YACjB,CAAC;YAED,YAAY,CAAE,IAAa;gBAC1B,IAAI,CAAC,WAAW,CAAE,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAE,CAAA;gBACnE,IAAI,CAAC,UAAU,CAAE,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAE,CAAA;gBACpE,IAAI,CAAC,gBAAgB,EAAE,CAAA;gBAEvB,IAAI,EAAA,UAAU,CAAE,EAAA,cAAc,CAAE,GAAI,IAAK,iBAAiB,EAAG,GAAE,EAAE;oBAChE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAiB,CAAA;oBAEzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAE,CAAC,EAAG,EAAE,CAAC,SAAS,CAAE,CAAA;oBACxC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAE,CAAC,EAAG,EAAE,CAAC,UAAU,CAAE,CAAA;oBAE1C,IAAI,CAAC,UAAU,CAAE,GAAG,CAAE,CAAA;oBACtB,IAAI,CAAC,WAAW,CAAE,IAAI,CAAE,CAAA;oBAExB,IAAI,CAAC,aAAa,CAAE,IAAI,CAAC,GAAG,CAAE,CAAC,EAAG,EAAE,CAAC,YAAY,GAAG,GAAG,GAAG,EAAE,CAAC,YAAY,CAAE,CAAE,CAAA;oBAC7E,IAAI,CAAC,YAAY,CAAE,IAAI,CAAC,GAAG,CAAE,CAAC,EAAG,EAAE,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC,WAAW,CAAE,CAAE,CAAA;gBAC5E,CAAC,CAAE,CAAE,CAAA;YACN,CAAC;YAED,WAAW,CAAE,IAAa;gBACzB,IAAI,EAAA,UAAU,CAAE,GAAE,EAAE;oBACnB,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAiB,CAAA;oBAEzC,IAAI,CAAC,aAAa,CAAE,IAAI,CAAC,GAAG,CAAE,CAAC,EAAG,EAAE,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,YAAY,CAAE,CAAE,CAAA;oBAC3F,IAAI,CAAC,YAAY,CAAE,IAAI,CAAC,GAAG,CAAE,CAAC,EAAG,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW,CAAE,CAAE,CAAA;gBAC1F,CAAC,CAAE,CAAA;YACJ,CAAC;YAGD,gBAAgB;gBACf,YAAY,CAAE,IAAI,CAAC,kBAAkB,CAAE,CAAA;gBACvC,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAE,EAAA,cAAc,CAAE,GAAI,IAAK,qBAAqB,EAAG,GAAE,EAAE;oBAC1F,IAAI,CAAC,WAAW,CAAE,KAAK,CAAE,CAAA;oBACzB,IAAI,CAAC,UAAU,CAAE,KAAK,CAAE,CAAA;gBACzB,CAAC,CAAE,EAAG,EAAE,CAAE,CAAA;YACX,CAAC;YAED,MAAM;gBACL,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAA;YAC/C,CAAC;YAGD,WAAW;gBACV,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;gBAC9B,MAAM,UAAU,GAAoB,MAAM,CAAC,MAAM,CAAE,OAAO,CAAE,CAAA;gBAC5D,UAAU,CAAC,wBAAwB,GAAG,GAAE,EAAE;oBACzC,MAAM,OAAO,GAAG,EAAA,WAAW,CAAC,IAAI,EAAE,CAAA;oBAClC,MAAM,KAAK,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAA;oBAChD,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,CAAE,OAAO,CAAC,MAAM,EAAG,KAAK,CAAE,CAAA;gBAC9D,CAAC,CAAA;gBACD,UAAU,CAAC,uBAAuB,GAAG,GAAE,EAAE;oBACxC,MAAM,OAAO,GAAG,EAAA,WAAW,CAAC,IAAI,EAAE,CAAA;oBAClC,MAAM,KAAK,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAA;oBAC/C,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,GAAG,CAAE,OAAO,CAAC,KAAK,EAAG,KAAK,CAAE,CAAA;gBAC9D,CAAC,CAAA;gBACD,UAAU,CAAC,eAAe,GAAG,GAAE,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAA;gBACnD,UAAU,CAAC,gBAAgB,GAAG,GAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;gBACrD,UAAU,CAAC,kBAAkB,GAAG,GAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAA;gBAClD,UAAU,CAAC,uBAAuB,GAAG,GAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;gBAC5D,UAAU,CAAC,sBAAsB,GAAG,GAAE,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAA;gBAC1D,MAAM,CAAC,UAAU,CAAA;YAClB,CAAC;YAED,eAAe;gBACd,IAAI,CAAC;oBACJ,MAAM,CAAC,oBAAqB,IAAI,CAAC,cAAc,EAAG,UAAU,CAAA;gBAC7D,CAAC;gBAAC,KAAK,CAAA,CAAE,KAAM,CAAC,CAAC,CAAC;oBACjB,MAAM,CAAC,EAAE,CAAA;gBACV,CAAC;YACF,CAAC;YAED,WAAW;gBACV,MAAM,GAAG,GAAG;oBACX,IAAI,CAAC,KAAK,EAAE;oBACZ,GAAI,CAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAE;iBACxB,CAAA;gBAED,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;gBAClC,GAAG,CAAC,OAAO,CAAE,KAAK,CAAC,EAAE;oBACpB,EAAE,CAAA,CAAE,KAAK,YAAY,EAAA,SAAU,CAAC,CAAC,CAAC;wBACjC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAA;oBAClB,CAAC;gBACF,CAAC,CAAE,CAAA;gBAEH,MAAM,CAAC,GAAG,CAAA;YACX,CAAC;SAED;QAhGA;YADE,EAAA,QAAQ;wDAGT;QAGD;YADE,EAAA,QAAQ;uDAGT;QA4CD;YADE,EAAA,QAAQ;sDAoBT;QAjFW,cAAW,cA2GvB,CAAA;IAEF,CAAC,EAnIW,EAAE,GAAF,IAAE,KAAF,IAAE,QAmIb;AAAD,CAAC,EAnIS,CAAC,KAAD,CAAC,QAmIV;;;;ACnID,IAAU,CAAC,CAiBR;AAjBH,WAAU,CAAC;IAAG,eAAuB,SAAQ,EAAA,SAAS;QAGrD,GAAG;YACF,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QACnB,CAAC;QAGD,IAAI;YACH,MAAM,CAAC,EAAW,CAAA;QACnB,CAAC;QAGD,KAAK;YACJ,MAAM,CAAC,IAAW,CAAA;QACnB,CAAC;KAED;IAjB0B,WAAS,YAiBnC,CAAA;AAAC,CAAC,EAjBO,CAAC,KAAD,CAAC,QAiBR;;;;;;;;;;ACjBH,IAAU,CAAC,CA0EV;AA1ED,WAAU,CAAC;IAAC,IAAA,EAAE,CA0Eb;IA1EW,WAAA,EAAE;QACb,eAAuB,SAAQ,CAAC,CAAC,SAAS;YAEzC,GAAG;gBACF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;gBACxB,MAAM,CAAC,CAAE,IAAI,CAAC,MAAM,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,EAAE,CAAE,CAAC,CAAC,CAAC,IAAI,CAAA;YACvD,CAAC;YAGD,WAAW;gBACV,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;gBACpB,EAAE,CAAA,CAAE,CAAC,GAAI,CAAC;oBAAC,MAAM,CAAC,IAAI,CAAA;gBAEtB,IAAI,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,wBAAwB,EAAE,CAAA;gBACnD,IAAI,MAAM,GAAG,CAAC,CAAA;gBAEd,IAAI,IAAI,GAAc,EAAE,CAAA;gBACxB,GAAG,CAAA,CAAE,IAAI,KAAK,IAAI,GAAI,CAAC,CAAC,CAAC;oBACxB,IAAI,CAAC,IAAI,CAAE,MAAM,CAAE,CAAA;oBAEnB,EAAE,CAAA,CAAE,KAAK,YAAY,EAAA,SAAU,CAAC,CAAC,CAAC;wBACjC,MAAM,IAAI,KAAK,CAAC,cAAc,EAAE,CAAA;oBACjC,CAAC;oBAED,EAAE,CAAA,CAAE,MAAM,GAAG,WAAY,CAAC;wBAAC,KAAK,CAAA;gBACjC,CAAC;gBAED,MAAM,CAAC,IAAI,CAAA;YACZ,CAAC;YAGD,WAAW,CAAE,KAAc;gBAC1B,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;gBAC5B,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAE,OAAO,CAAE,CAAA;gBACnC,IAAI,CAAC,wBAAwB,GAAG,GAAE,EAAE;oBACnC,MAAM,KAAK,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAA;oBAChD,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAE,KAAK,CAAE,CAAA;gBAC3C,CAAC,CAAA;gBACD,MAAM,CAAC,IAAI,CAAA;YACZ,CAAC;YAGD,WAAW;gBACV,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;gBACpB,EAAE,CAAA,CAAE,CAAC,GAAI,CAAC;oBAAC,MAAM,CAAC,GAAG,CAAA;gBAErB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAA;gBAErC,IAAI,IAAI,GAAiB,EAAE,CAAA;gBAC3B,GAAG,CAAA,CAAE,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,KAAK,EAAG,EAAG,CAAC,EAAG,CAAC;oBACpC,MAAM,KAAK,GAAG,GAAG,CAAE,CAAC,CAAE,CAAA;oBACtB,EAAE,CAAA,CAAE,KAAK,IAAI,IAAK,CAAC;wBAAC,QAAQ,CAAA;oBAC5B,EAAE,CAAA,CAAE,KAAK,YAAY,EAAA,SAAU,CAAC,CAAC,CAAC;wBACjC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAE,CAAC,CAAE,CAAA;oBAChC,CAAC;oBACD,IAAI,CAAC,IAAI,CAAE,KAAK,CAAE,CAAA;gBACnB,CAAC;gBAED,MAAM,CAAC,IAAI,CAAA;YACZ,CAAC;YAGD,cAAc;gBACb,IAAI,MAAM,GAAG,CAAC,CAAA;gBACd,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;gBACpB,EAAE,CAAA,CAAE,GAAI,CAAC;oBAAC,GAAG,CAAC,OAAO,CAAE,KAAK,CAAC,EAAE;wBAC9B,EAAE,CAAA,CAAE,KAAK,YAAY,EAAA,SAAU,CAAC,CAAC,CAAC;4BACjC,MAAM,IAAI,KAAK,CAAC,cAAc,EAAE,CAAA;wBACjC,CAAC;oBACF,CAAC,CAAE,CAAA;gBACH,MAAM,CAAC,MAAM,CAAA;YACd,CAAC;SAED;QAhEA;YADE,EAAA,QAAQ;oDAoBT;QAGD;YADE,EAAA,YAAY;oDASb;QAGD;YADE,EAAA,QAAQ;oDAkBT;QAGD;YADE,EAAA,QAAQ;uDAUT;QAtEW,YAAS,YAwErB,CAAA;IACF,CAAC,EA1EW,EAAE,GAAF,IAAE,KAAF,IAAE,QA0Eb;AAAD,CAAC,EA1ES,CAAC,KAAD,CAAC,QA0EV;;;;AC1ED,IAAU,CAAC,CAER;AAFH,WAAU,CAAC;IAAG,cAAsB,SAAQ,EAAA,SAAS;KAEpD;IAF0B,UAAQ,WAElC,CAAA;AAAC,CAAC,EAFO,CAAC,KAAD,CAAC,QAER;;;;;;;;;;ACFH,IAAU,CAAC,CAmDV;AAnDD,WAAU,CAAC;IAEV,sBAAuC,SAAQ,EAAA,WAAW;QAGzD,MAAM,CAAC,MAAM;YACZ,EAAE,CAAA,CAAE,IAAI,CAAC,UAAU,CAAE,CAAC;gBAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAE9C,KAAK,EAAG,IAAI,CAAC;gBACZ,MAAM,MAAM,GAAG,EAAA,gBAAgB,CAAC,YAAY,CAAA;gBAC5C,EAAE,CAAA,CAAE,CAAC,MAAO,CAAC;oBAAC,KAAK,CAAC,KAAK,CAAA;gBAEzB,MAAM,CAAC,OAAO,CAAE,EAAE,EAAG,EAAE,CAAE,CAAA;gBACzB,MAAM,CAAC,UAAU,CAAE,EAAE,CAAE,CAAA;gBACvB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,MAAM,CAAA;YACjC,CAAC;YAAC,KAAK,CAAA,CAAE,KAAM,CAAC,CAAC,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAE,KAAK,CAAE,CAAA;YACtB,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG;gBACzB,OAAO,CAAE,GAAY;oBACpB,MAAM,CAAC,IAAI,CAAE,GAAG,GAAG,GAAG,CAAE,CAAA;gBACzB,CAAC;gBACD,OAAO,CAAE,GAAY,EAAG,KAAc;oBACrC,IAAI,CAAE,GAAG,GAAG,GAAG,CAAE,GAAG,KAAK,CAAA;gBAC1B,CAAC;gBACD,UAAU,CAAE,GAAY;oBACvB,IAAI,CAAE,GAAG,GAAG,GAAG,CAAE,GAAG,KAAK,CAAC,CAAA;gBAC3B,CAAC;aACD,CAAA;QAEF,CAAC;QAGD,MAAM,CAAC,KAAK,CAAW,GAAY,EAAG,IAAa,EAAG,KAAwB;YAC7E,EAAE,CAAA,CAAE,IAAI,KAAK,KAAK,CAAE,CAAC;gBAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAE,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,CAAE,GAAG,CAAE,IAAI,MAAM,CAAE,CAAA;YAEjF,EAAE,CAAA,CAAE,IAAI,KAAK,IAAK,CAAC;gBAAC,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAE,GAAG,CAAE,CAAA;YACnD,IAAI;gBAAC,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,CAAE,GAAG,EAAG,IAAI,CAAC,SAAS,CAAE,IAAI,CAAE,CAAE,CAAA;YAE1D,MAAM,CAAC,IAAI,CAAA;QACZ,CAAC;QAED,MAAM,KAAK,MAAM,CAAC,EAAE,CAAA,CAAC,CAAC;QAEtB,KAAK,CAAE,GAAY,EAAG,IAAa;YAClC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAE,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,EAAG,IAAI,CAAE,CAAA;QAClE,CAAC;KAED;IAfA;QADE,EAAA,YAAY;uCAQb;IAvCW,kBAAgB,mBA+C5B,CAAA;AAEF,CAAC,EAnDS,CAAC,KAAD,CAAC,QAmDV;;;;ACnDD,IAAU,CAAC,CAIV;AAJD,WAAU,CAAC;IACV,MAAM,CAAC,gBAAgB,CAAE,SAAS,EAAG,KAAK,CAAC,EAAE;QAC5C,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAE,KAAK,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,EAAA,qBAAqB,CAAE,CAAA;IACvE,CAAC,CAAE,CAAA;AACJ,CAAC,EAJS,CAAC,KAAD,CAAC,QAIV;;;;;;;;;;ACJD,IAAU,CAAC,CA6SR;AA7SH,WAAU,CAAC;IAAG,sBAA8B,SAAQ,EAAA,WAAW;QAG9D,KAAK;YACJ,MAAM,CAAC,OAAO,CAAA;QACf,CAAC;QAGD,GAAG;YACF,MAAM,CAAC,EAAE,CAAC,MAAM,CAAE,IAAI,CAAC,IAAI,EAAE,CAAE,CAAA;QAChC,CAAC;QAMD,IAAI;YACH,MAAM,CAAC,CAAC,CAAE,GAAG,EAAE,EAAE;gBAChB,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAE,IAAI,CAAC,KAAK,EAAE,EAAG,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;gBACzD,MAAM,CAAC,GAAG,CAAA;YACX,CAAC,CAAC,CAAE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAE,CAAA;QAC3B,CAAC;QAMD,KAAK;YACJ,MAAM,CAAC,CAAC,CAAE,GAAG,EAAE,EAAE;gBAChB,GAAG,CAAC,cAAc,GAAG,GAAG,EAAE,CAAC,GAAG,CAAA;gBAC9B,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAE,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;gBACzC,MAAM,CAAC,GAAG,CAAA;YACX,CAAC,CAAC,CAAE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAE,CAAA;QAC3B,CAAC;QAID,KAAK;YACJ,MAAM,CAAC,CAAC,CAAE,GAAG,EAAE,EAAE;gBAChB,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAA;gBAC9B,MAAM,CAAC,GAAG,CAAA;YACX,CAAC,CAAC,CAAE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAE,CAAA;QAC3B,CAAC;QAMD,MAAM;YACL,MAAM,CAAC,EAAE,CAAC,MAAM,CAAE,IAAI,CAAC,IAAI,EAAE,EAAG,IAAI,CAAC,IAAI,EAAE,EAAG,IAAI,CAAC,IAAI,EAAE,CAAE,CAAA;QAC5D,CAAC;QAMD,IAAI;YACH,MAAM,CAAC,CAAC,CAAE,GAAG,EAAE,EAAE;gBAChB,GAAG,CAAC,cAAc,GAAG,GAAG,EAAE,CAAC,EAAE,CAAA;gBAC7B,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAA;gBACnC,MAAM,CAAC,GAAG,CAAA;YACX,CAAC,CAAC,CAAE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAE,CAAA;QAC3B,CAAC;QAKD,YAAY;YACX,MAAM,CAAC,EAAE,CAAC,MAAM,CAAE,IAAI,CAAC,aAAa,EAAE,EAAG,IAAI,CAAC,GAAG,EAAE,CAAE,CAAA;QACtD,CAAC;QAOD,aAAa;YACZ,MAAM,CAAC,CAAC,CAAE,GAAG,EAAE,EAAE;gBAChB,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAA;gBAChD,GAAG,CAAC,OAAO,GAAG,CAAE,GAAU,EAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAE,GAAG,CAAE,CAAA;gBACzD,GAAG,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC,GAAG,CAAA;gBACrB,MAAM,CAAC,GAAG,CAAA;YACX,CAAC,CAAC,CAAE,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAE,CAAA;QAC5B,CAAC;QAGD,qBAAqB;YACpB,MAAM,CAAC,KAAK,CAAA;QACb,CAAC;QAID,aAAa,CAAE,GAAU,EAAG,KAAwB;YACnD,MAAM,CAAC,CAAE,GAAG,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA;QACxC,CAAC;QAMD,GAAG;YACF,MAAM,CAAC,CAAC,CAAE,GAAG,EAAE,EAAE;gBAChB,GAAG,CAAC,KAAK,GAAG,CAAE,GAAU,EAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAE,GAAG,CAAE,CAAA;gBACxD,GAAG,CAAC,UAAU,GAAG,CAAE,KAAY,EAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAE,KAAK,CAAE,CAAA;gBAC5D,MAAM,CAAC,GAAG,CAAA;YACX,CAAC,CAAC,CAAE,IAAI,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAE,CAAA;QACtC,CAAC;QAID,cAAc,CAAE,GAAU,EAAG,KAAwB;YACpD,MAAM,CAAC,CAAE,GAAG,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QACrC,CAAC;QAID,SAAS,CAAE,KAAY,EAAG,KAAwB;YACjD,MAAM,CAAC,CAAE,KAAK,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAW,CAAA;QAClD,CAAC;QAID,IAAI;YACH,MAAM,CAAC,CAAC,CAAE,GAAG,EAAE,EAAE;gBAChB,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAA;gBACjC,MAAM,CAAC,GAAG,CAAA;YACX,CAAC,CAAC,CAAE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAE,CAAA;QAC3B,CAAC;QAGD,SAAS;YACR,MAAM,CAAC,EAAW,CAAA;QACnB,CAAC;QAID,IAAI;YACH,MAAM,CAAC,CAAC,CAAE,GAAG,EAAE,EAAE;gBAChB,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAA;gBACnC,MAAM,CAAC,GAAG,CAAA;YACX,CAAC,CAAC,CAAE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAE,CAAA;QAC3B,CAAC;QAMD,YAAY;YACX,MAAM,CAAC,EAAE,CAAC,MAAM,CAAE,IAAI,CAAC,OAAO,EAAE,EAAG,IAAI,CAAC,MAAM,EAAE,EAAG,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;QAClE,CAAC;QAID,OAAO;YACN,MAAM,CAAC,CAAC,CAAE,GAAG,EAAE,EAAE;gBAChB,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAE,IAAI,CAAC,eAAe,EAAE,CAAE,CAAA;gBACnD,MAAM,CAAC,GAAG,CAAA;YACX,CAAC,CAAC,CAAE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAE,CAAA;QAC3B,CAAC;QAGD,eAAe;YACd,MAAM,CAAC,eAAe,CAAA;QACvB,CAAC;QAID,MAAM;YACL,MAAM,CAAC,CAAC,CAAE,GAAG,EAAE,EAAE;gBAChB,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAA;gBACpC,MAAM,CAAC,GAAG,CAAA;YACX,CAAC,CAAC,CAAE,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAE,CAAA;QAC1B,CAAC;QAMD,aAAa;YACZ,MAAM,CAAC,EAAE,CAAC,MAAM,CAAE,IAAI,CAAC,UAAU,EAAE,EAAG,IAAI,CAAC,aAAa,EAAE,EAAG,IAAI,CAAC,gBAAgB,EAAE,CAAE,CAAA;QACvF,CAAC;QAMD,UAAU;YACT,MAAM,CAAC,CAAC,CAAE,GAAG,EAAE,EAAE;gBAChB,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAE,IAAI,CAAC,gBAAgB,EAAE,CAAE,CAAA;gBACpD,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;oBACjB,WAAW,EAAI,IAAW;iBAC1B,CAAC,CAAA;gBACD,MAAM,CAAC,GAAG,CAAA;YACX,CAAC,CAAC,CAAE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAE,CAAA;QAC3B,CAAC;QAGD,gBAAgB;YACf,MAAM,CAAC,KAAK,CAAA;QACb,CAAC;QAMD,aAAa;YACZ,MAAM,CAAC,CAAC,CAAE,GAAG,EAAE,EAAE;gBAChB,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAE,IAAI,CAAC,mBAAmB,EAAE,CAAE,CAAA;gBACvD,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;oBACjB,WAAW,EAAI,OAAO;iBACtB,CAAC,CAAA;gBACD,MAAM,CAAC,GAAG,CAAA;YACX,CAAC,CAAC,CAAE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAE,CAAA;QAC3B,CAAC;QAGD,mBAAmB;YAClB,MAAM,CAAC,QAAQ,CAAA;QAChB,CAAC;QAMD,gBAAgB;YACf,MAAM,CAAC,CAAC,CAAE,GAAG,EAAE,EAAE;gBAChB,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAE,IAAI,CAAC,sBAAsB,EAAE,CAAE,CAAA;gBAC1D,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;oBACjB,WAAW,EAAI,MAAM;iBACrB,CAAC,CAAA;gBACD,MAAM,CAAC,GAAG,CAAA;YACX,CAAC,CAAC,CAAE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAE,CAAA;QAC3B,CAAC;QAGD,sBAAsB;YACrB,MAAM,CAAC,WAAW,CAAA;QACnB,CAAC;QAOD,KAAK;YACJ,MAAM,CAAC,CAAC,CAAE,GAAG,EAAE,EAAE;gBAChB,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAA;gBACxC,GAAG,CAAC,WAAW,GAAG,CAAE,KAAY,EAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAE,KAAK,CAAE,CAAA;gBAC/D,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAE,IAAI,CAAC,WAAW,EAAE,CAAE,CAAA;gBAC/C,MAAM,CAAC,GAAG,CAAA;YACX,CAAC,CAAC,CAAE,IAAI,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAE,CAAA;QACnC,CAAC;QAGD,aAAa;YACZ,MAAM,CAAC,IAAI,CAAA;QACZ,CAAC;QAID,WAAW,CAAE,KAAY,EAAG,KAAwB;YACnD,MAAM,CAAC,CAAE,KAAK,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAW,CAAA;QAClD,CAAC;QAGD,WAAW;YACV,MAAM,CAAC,iBAAiB,CAAA;QACzB,CAAC;QAOD,QAAQ,CAAE,EAAQ;YACjB,MAAM,CAAC,CAAC,CAAE,GAAG,EAAE,EAAE;gBAChB,GAAG,CAAC,SAAS,GAAG,CAAE,GAAU,EAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,EAAG,GAAG,CAAE,CAAA;gBAChE,GAAG,CAAC,KAAK,GAAG,CAAE,GAAU,EAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAG,GAAG,CAAE,CAAA;gBACxD,GAAG,CAAC,UAAU,GAAG,CAAE,KAAY,EAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,EAAG,KAAK,CAAE,CAAA;gBACtE,MAAM,CAAC,GAAG,CAAA;YACX,CAAC,CAAC,CAAE,IAAI,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAE,CAAA;QAC3C,CAAC;QAID,cAAc,CAAE,EAAQ,EAAG,GAAU,EAAG,KAAwB;YAC/D,MAAM,CAAC,CAAE,GAAG,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA;QACxC,CAAC;QAID,UAAU,CAAE,EAAQ,EAAG,GAAU,EAAG,KAAwB;YAC3D,MAAM,CAAC,CAAE,GAAG,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QACrC,CAAC;QAID,eAAe,CAAE,EAAQ,EAAG,KAAY,EAAG,KAAwB;YAClE,MAAM,CAAC,CAAE,KAAK,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAW,CAAA;QAClD,CAAC;KAED;IA7RA;QADE,EAAA,QAAQ;gDAMT;IAMD;QADE,EAAA,QAAQ;iDAOT;IAID;QADE,EAAA,QAAQ;iDAMT;IAcD;QADE,EAAA,QAAQ;gDAOT;IAcD;QADE,EAAA,QAAQ;yDAQT;IASD;QADE,EAAA,QAAQ;yDAGT;IAMD;QADE,EAAA,QAAQ;+CAOT;IAID;QADE,EAAA,QAAQ;0DAGT;IAID;QADE,EAAA,QAAQ;qDAGT;IAID;QADE,EAAA,QAAQ;gDAMT;IASD;QADE,EAAA,QAAQ;gDAMT;IAYD;QADE,EAAA,QAAQ;mDAMT;IASD;QADE,EAAA,QAAQ;kDAMT;IAcD;QADE,EAAA,QAAQ;sDAST;IAWD;QADE,EAAA,QAAQ;yDAST;IAWD;QADE,EAAA,QAAQ;4DAST;IAYD;QADE,EAAA,QAAQ;iDAQT;IASD;QADE,EAAA,QAAQ;uDAGT;IAYD;QADE,EAAA,YAAY;oDAQb;IAID;QADE,EAAA,YAAY;0DAGb;IAID;QADE,EAAA,YAAY;sDAGb;IAID;QADE,EAAA,YAAY;2DAGb;IA3SyB,kBAAgB,mBA6S1C,CAAA;AAAC,CAAC,EA7SO,CAAC,KAAD,CAAC,QA6SR;AAEH,WAAU,CAAC;IAAG,0BAAkC,SAAQ,EAAA,WAAW;QAGlE,IAAI;YACH,MAAM,CAAC,wBAAwB,CAAA;QAChC,CAAC;QAKD,KAAK;YACJ,MAAM,CAAC,mBACH,KAAK,CAAC,KAAK,EAAE,IAChB,OAAO,EAAI,CAAE,KAAY,EAAE,EAAE,CAAE,IAAI,CAAC,WAAW,CAAE,KAAK,CAAE,IACvD,CAAA;QACH,CAAC;QAID,WAAW,CAAE,KAAY,EAAG,KAAwB;YACnD,MAAM,CAAC,CAAE,KAAK,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAW,CAAA;QAClD,CAAC;QAID,UAAU,CAAE,KAAY,EAAG,KAAwB;YAClD,MAAM,CAAC,CAAE,KAAK,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAW,CAAA;QAClD,CAAC;KAED;IAVA;QADE,EAAA,QAAQ;2DAGT;IAID;QADE,EAAA,QAAQ;0DAGT;IA3ByB,sBAAoB,uBA6B9C,CAAA;AAAC,CAAC,EA7BO,CAAC,KAAD,CAAC,QA6BR;AAEH,WAAU,CAAC;IAAG,+BAAuC,SAAQ,EAAA,SAAS;QAGrE,cAAc;YACb,MAAM,CAAC,EAAE,CAAA;QACV,CAAC;QAMD,GAAG;YACF,MAAM,CAAC,EAAE,CAAC,MAAM,CAAE,IAAI,CAAC,QAAQ,EAAE,EAAG,IAAI,CAAC,KAAK,EAAE,EAAG,IAAI,CAAC,IAAI,EAAE,CAAE,CAAA;QACjE,CAAC;QAID,QAAQ;YACP,MAAM,CAAC,CAAC,CAAE,GAAG,EAAE,EAAE;gBAChB,GAAG,CAAC,OAAO,GAAG,CAAE,GAAU,EAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAE,GAAG,CAAE,CAAA;gBACrD,MAAM,CAAC,GAAG,CAAA;YACX,CAAC,CAAC,CAAE,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAE,CAAA;QAC5B,CAAC;QAID,SAAS,CAAE,GAAU,EAAG,KAAwB;YAC/C,MAAM,CAAC,CAAE,GAAG,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA;QACxC,CAAC;QAMD,KAAK;YACJ,MAAM,CAAC,CAAC,CAAE,GAAG,EAAE,EAAE;gBAChB,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAA;gBAClC,GAAG,CAAC,KAAK,GAAG,CAAE,GAAU,EAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAE,GAAG,CAAE,CAAA;gBAC/C,MAAM,CAAC,GAAG,CAAA;YACX,CAAC,CAAC,CAAE,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAE,CAAA;QAC7B,CAAC;QAGD,UAAU;YACT,MAAM,CAAC,YAAY,CAAA;QACpB,CAAC;QAID,KAAK,CAAE,GAAU,EAAG,KAAwB;YAC3C,MAAM,CAAC,CAAE,GAAG,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QACrC,CAAC;QAMD,IAAI;YACH,MAAM,CAAC,CAAC,CAAE,GAAG,EAAE,EAAE;gBAChB,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAE,GAAG,CAAE,CAAA;gBAChC,GAAG,CAAC,WAAW,GAAG,CAAE,KAAY,EAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAE,KAAK,CAAE,CAAA;gBAC9D,MAAM,CAAC,GAAG,CAAA;YACX,CAAC,CAAC,CAAE,IAAI,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAE,CAAA;QACnC,CAAC;QAID,UAAU,CAAE,KAAY,EAAG,KAAwB;YAClD,MAAM,CAAC,CAAE,KAAK,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAW,CAAA;QAClD,CAAC;QAKD,IAAI;YACH,MAAM,CAAC,mBACH,KAAK,CAAC,IAAI,EAAE,IACf,oCAAoC,EAAI,IAAI,CAAC,SAAS,EAAE,IACvD,CAAA;QACH,CAAC;KAED;IAhEA;QADE,EAAA,QAAQ;6DAMT;IAID;QADE,EAAA,QAAQ;8DAGT;IAMD;QADE,EAAA,QAAQ;0DAOT;IASD;QADE,EAAA,QAAQ;0DAGT;IAMD;QADE,EAAA,QAAQ;yDAOT;IAID;QADE,EAAA,QAAQ;+DAGT;IArEyB,2BAAyB,4BAiFnD,CAAA;AAAC,CAAC,EAjFO,CAAC,KAAD,CAAC,QAiFR;;;;;;;;;;AC1ZH,IAAU,CAAC,CA0IV;AA1ID,WAAU,CAAC;IAAC,IAAA,EAAE,CA0Ib;IA1IW,WAAA,EAAE;QAEb,0BAAkC,SAAQ,CAAC,CAAC,oBAAoB;YAE/D,WAAW,CAAE,IAAqB;gBACjC,MAAM,CAAA,CAAE,IAAI,CAAC,OAAQ,CAAC,CAAC,CAAC;oBACvB,SAAgC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAE,IAAI,CAAE,CAAA;gBAC/D,CAAC;YACF,CAAC;SAED;QARY,uBAAoB,uBAQhC,CAAA;QAED,sBAA8B,SAAQ,CAAC,CAAC,gBAAgB;YAEvD,QAAQ,CAAE,IAAgB;gBACzB,MAAM,CAAC,EAAA,gBAAgB,CAAC,KAAK,CAAE,IAAI,CAAC,SAAS,CAAE,WAAW,CAAE,EAAG,IAAI,CAAE,IAAI,EAAE,CAAA;YAC5E,CAAC;YAED,aAAa;gBACZ,MAAM,CAAC,EAAA,cAAc,CAAC,KAAK,CAAE,IAAI,CAAC,SAAS,CAAE,WAAW,CAAE,CAAE,CAAA;YAC7D,CAAC;YAGD,gBAAgB;gBACf,IAAI,MAAM,GAAuC,EAAE,MAAM,EAAG,EAAE,EAAG,OAAO,EAAG,EAAE,EAAE,CAAA;gBAC/E,GAAG,CAAA,CAAE,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAG,CAAC,CAAC,CAAC;oBACjC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAE,EAAE,CAAE,CAAA;oBAC1B,MAAM,CAAE,MAAM,CAAE,IAAI,CAAC,SAAS,CAAE,CAAE,CAAC,IAAI,CAAE,EAAE,CAAE,CAAA;gBAC9C,CAAC;gBACD,MAAM,CAAC,MAAM,CAAA;YACd,CAAC;YAGD,iBAAiB;gBAChB,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;gBACpC,EAAE,CAAA,CAAE,SAAU,CAAC,CAAC,CAAC;oBAChB,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAE,SAAS,CAAE,IAAI,EAAE,CAAA;gBAClD,CAAC;gBAAC,IAAI,CAAC,CAAC;oBACP,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;gBACvB,CAAC;YACF,CAAC;YAGD,aAAa,CAAE,IAAe;gBAC7B,EAAE,CAAA,CAAE,IAAI,KAAK,KAAK,CAAE,CAAC;oBAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAE,OAAO,CAAE,CAAC,MAAM,KAAK,CAAC,CAAA;gBAE5E,GAAG,CAAA,CAAE,IAAI,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAE,MAAM,CAAE,CAAC,IAAI,CAAE,CAAG,CAAC,CAAC,CAAC;oBAC5D,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAE,EAAE,CAAE,CAAA;oBAC1B,IAAI,CAAC,IAAI,CAAE,EAAE,EAAG,EAAE,KAAK,EAAG,IAAI,CAAC,KAAK,EAAG,SAAS,EAAG,IAAI,EAAE,CAAE,CAAA;gBAC5D,CAAC;gBAED,MAAM,CAAC,IAAI,CAAA;YACZ,CAAC;YAED,qBAAqB;gBACpB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,CAAA;YAClC,CAAC;YAGD,eAAe;gBACd,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAE,OAAO,CAAE,CAAC,MAAM,CAAA;gBACrD,MAAM,CAAC,CAAE,KAAK,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,aAAa,CAAA;YAC/D,CAAC;YAGD,MAAM;gBACL,MAAM,CAAC,IAAI,CAAC,GAAG,CAAE,CAAC,EAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAE,GAAI,IAAI,CAAC,QAAQ,EAAE,CAAE,CAAE,CAAA;YAC3D,CAAC;YAED,SAAS,CAAE,IAAY;gBACtB,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;gBACjC,EAAE,CAAA,CAAE,CAAC,KAAM,CAAC;oBAAC,MAAM,CAAA;gBAEnB,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;gBACtB,IAAI,IAAI,GAAG,EAAE,SAAS,EAAG,KAAK,EAAG,KAAK,EAAE,CAAA;gBACxC,IAAI,CAAC,IAAI,CAAE,EAAE,EAAG,IAAI,CAAE,CAAA;gBAEtB,IAAI,CAAC,QAAQ,CAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAE,EAAE,CAAE,CAAE,CAAA;gBAC7C,IAAI,CAAC,cAAc,CAAE,EAAE,CAAE,CAAA;YAC1B,CAAC;YAGD,SAAS;gBACR,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAE,EAAE,CAAE,CAAE,CAAA;YACjE,CAAC;YAED,IAAI,CAAE,EAAW,EAAG,IAA6B;gBAChD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAE,aAAa,EAAE,EAAE,CAAE,CAAA;gBAC/C,EAAE,CAAA,CAAE,IAAI,KAAK,KAAK,CAAE,CAAC,CAAC,CAAC;oBACtB,MAAM,CAAC,EAAA,gBAAgB,CAAC,KAAK,CAAyB,GAAG,CAAE,IAAI,EAAE,KAAK,EAAG,EAAE,EAAG,SAAS,EAAG,KAAK,EAAE,CAAA;gBAClG,CAAC;gBAED,EAAA,gBAAgB,CAAC,KAAK,CAAE,GAAG,EAAG,IAAI,CAAE,CAAA;gBAEpC,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,CAAA;YACtB,CAAC;YAGD,cAAc,CAAE,EAAW,EAAG,IAAe;gBAC5C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAE,EAAE,EAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,mBAAO,IAAI,CAAC,IAAI,CAAE,EAAE,CAAE,IAAG,SAAS,EAAG,IAAI,GAAE,CAAE,CAAC,SAAS,CAAA;YAC/G,CAAC;YAGD,UAAU,CAAE,EAAW,EAAG,IAAc;gBACvC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAE,EAAE,EAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,mBAAO,IAAI,CAAC,IAAI,CAAE,EAAE,CAAE,IAAG,KAAK,EAAG,IAAI,GAAE,CAAE,CAAC,KAAK,CAAA;YACvG,CAAC;YAED,eAAe,CAAE,EAAW,EAAG,IAAa;gBAC3C,IAAI,CAAC,IAAI,CAAE,EAAE,EAAG,IAAI,CAAE,CAAA;gBACtB,IAAI,CAAC,QAAQ,CAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAE,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,CAAE,CAAE,CAAA;YAC7D,CAAC;YAED,WAAW;gBACV,IAAI,CAAC,QAAQ,CAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAE,EAAE,CAAC,EAAE;oBAC3C,EAAE,CAAA,CAAE,CAAC,IAAI,CAAC,IAAI,CAAE,EAAE,CAAE,CAAC,SAAU,CAAC;wBAAC,MAAM,CAAC,IAAI,CAAA;oBAC5C,IAAI,CAAC,IAAI,CAAE,EAAE,EAAG,IAAI,CAAE,CAAA;oBACtB,MAAM,CAAC,KAAK,CAAA;gBACb,CAAC,CAAE,CAAE,CAAA;YACN,CAAC;YAED,MAAM;gBACL,MAAM,CAAC;oBACN,IAAI,CAAC,IAAI,EAAE;oBACX,IAAI,CAAC,IAAI,EAAE;oBACX,GAAI,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,IAAI,EAAE,CAAE,CAAC,CAAC,CAAC,EAAE;iBAC9C,CAAA;YACF,CAAC;YAED,YAAY;gBACX,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,CAAA;YAClC,CAAC;YAED,aAAa;gBACZ,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAE,MAAM,CAAE,CAAC,MAAM,GAAG,CAAC,CAAA;YACpD,CAAC;SAED;QAjHA;YADE,EAAA,QAAQ;gEAQT;QAGD;YADE,EAAA,QAAQ;iEAQT;QAGD;YADE,EAAA,QAAQ;6DAUT;QAOD;YADE,EAAA,QAAQ;+DAIT;QAGD;YADE,EAAA,QAAQ;sDAGT;QAeD;YADE,EAAA,QAAQ;yDAGT;QAcD;YADE,EAAA,YAAY;8DAGb;QAGD;YADE,EAAA,YAAY;0DAGb;QA7FW,mBAAgB,mBA4H5B,CAAA;IAEF,CAAC,EA1IW,EAAE,GAAF,IAAE,KAAF,IAAE,QA0Ib;AAAD,CAAC,EA1IS,CAAC,KAAD,CAAC,QA0IV","file":"web.js","sourcesContent":[null,"namespace $ {\n\t\n\texport var $mol_func_name_dict = new WeakMap< Function , string >()\n\n\texport function $mol_func_name( func : Function ) : string {\n\t\tlet name = $mol_func_name_dict.get( func )\n\t\tif( name != null ) return name\n\t\tname = func.name || Function.prototype.toString.call( func ).match( /([a-z0-9_$]*) ?(\\(|\\{|extends)/ )[ 1 ]\n\t\t$mol_func_name_dict.set( func , name )\n\t\t\n\t\treturn name\n\t}\n\n}\n","namespace $ {\n\n\texport namespace $$ { let $ }\n\t\n\texport type $mol_object_context = ( Window )&( typeof $.$$ )&( typeof $ )\n\t\n\texport class $mol_object {\n\t\t\n\t\tget $() {\n\t\t\tconst owner = this.object_owner()\n\t\t\treturn ( owner && owner.$ || $ ) as $mol_object_context\n\t\t}\n\t\t\n\t\tpublic static make< Instance >( this : { new() : Instance } , config : Partial< Instance > ) : Instance {\n\t\t\tconst instance = new this\n\t\t\tfor( let key in config ) instance[ key ] = config[ key ]\n\t\t\treturn instance\n\t\t}\n\t\t\n\t\tstatic toString() : string {\n\t\t\treturn $mol_func_name( this )\n\t\t}\n\t\t\n\t\t'object_owner()' : any\n\t\tobject_owner( next? : any ) {\n\t\t\treturn this[ 'object_owner()' ] || ( this[ 'object_owner()' ] = next )\n\t\t}\n\t\t\n\t\t'object_host()' : any\n\t\tobject_host( next? : any ) {\n\t\t\treturn this[ 'object_host()' ] || ( this[ 'object_host()' ] = next )\n\t\t}\n\t\t\n\t\t'object_field()' : string\n\t\tobject_field( next? : string ) {\n\t\t\treturn this[ 'object_field()' ] || ( this[ 'object_field()' ] = next ) || ''\n\t\t}\n\t\t\n\t\t'object_id()' : string\n\t\tobject_id( next? : string ) {\n\t\t\treturn this[ 'object_id()' ] || ( this[ 'object_id()' ] = next ) || ''\n\t\t}\n\n\t\ttoString() {\n\t\t\treturn this.object_id()\n\t\t}\n\t\t\n\t\ttoJSON() {\n\t\t\treturn this.toString()\n\t\t}\n\t\t\n\t\tdestructor() { }\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\tconst cache = new WeakMap< any , boolean >()\n\n\texport function $mol_conform< Target , Source >( target : Target , source : Source , stack : any[] = [] ) : Target {\n\n\t\tif( target as any === source as any ) return source as any\n\n\t\tif( !target || typeof target !== 'object' ) return target\n\t\tif( !source || typeof source !== 'object' ) return target\n\n\t\tif( target instanceof Error ) return target\n\t\tif( source instanceof Error ) return target\n\t\t\n\t\tif( target.constructor !== source.constructor ) return target\n\n\t\tif( cache.get( target ) ) return target\n\t\tcache.set( target , true )\n\t\t\n\t\tconst conform = $mol_conform_handlers.get( target.constructor )\n\t\tif( !conform ) return target\n\n\t\tif( stack.indexOf( target ) !== -1 ) return target\n\n\t\tstack.push( target )\n\n\t\tconst res = conform( target , source , stack )\n\n\t\tstack.pop()\n\n\t\treturn res\n\t}\n\n\texport const $mol_conform_handlers = new WeakMap< Object , ( target : any , source : any , stack : any[] )=> any >()\n\n\texport function $mol_conform_handler< Class >(\n\t\tcl : { new( ... args : any[] ) : Class } ,\n\t\thandler : ( target : Class , source : Class , stack : any[] )=> Class ,\n\t) {\n\t\t$mol_conform_handlers.set( cl , handler )\n\t}\n\n\t$mol_conform_handler( Array , ( target , source , stack )=> {\n\t\t\n\t\tlet equal = target.length === source.length\n\n\t\tfor( let i = 0 ; i < target.length ; ++i ) {\n\t\t\tconst conformed = target[i] = $mol_conform( target[i] , source[i] , stack )\n\t\t\tif( equal && conformed !== source[i] ) equal = false\n\t\t}\n\n\t\treturn equal ? source : target\n\t} )\n\n\t$mol_conform_handler( Object , ( target , source , stack )=> {\n\n\t\tlet count = 0\n\t\tlet equal = true\n\n\t\tfor( let key in target ) {\n\t\t\tconst conformed = target[key] = $mol_conform( target[key] , source[key] , stack )\n\t\t\tif( equal && conformed !== source[key] ) equal = false\n\t\t\t++ count\n\t\t}\n\n\t\tfor( let key in source ) if( -- count < 0 ) break\n\n\t\treturn ( equal && count === 0 ) ? source : target\n\t} )\n\n\t$mol_conform_handler( Date , ( target , source )=> ( target.getTime() === source.getTime() ) ? source : target )\n\n\t$mol_conform_handler( RegExp , ( target , source )=> ( target.toString() === source.toString() ) ? source : target )\n\n}\n","namespace $ {\n\n\texport function $mol_log( path : any , ... values : any[] ) {\n\t\t\n\t\tif( $mol_log_filter() == null ) return\n\t\t\n\t\tpath = String( path )\n\t\tif( path.indexOf( $mol_log_filter() ) === -1 ) return\n\t\t\n\t\tif( $mol_log_context() ) $mol_log_context()()\n\t\t\n\t\tconsole.debug( path , ... values.map( val => val instanceof Error ? { ... val } : val ) )\n\n\t\tif( $mol_log_debug() == null ) return\n\t\tif( path.indexOf( $mol_log_debug() ) === -1 ) return\n\t\t\n\t\tdebugger\n\t}\n\t\n}\n","namespace $ {\n\n\tlet context : ()=> void = null\n\texport function $mol_log_context( next = context ) {\n\t\treturn context = next\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_log_debug( next? : string ) {\n\n\t\tif( next !== undefined ) {\n\t\t\tif( next == null ) {\n\t\t\t\tsessionStorage.removeItem( '$mol_log_debug()' )\n\t\t\t} else {\n\t\t\t\tsessionStorage.setItem( '$mol_log_debug()' , next )\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn sessionStorage.getItem( '$mol_log_debug()' )\n\t}\n\n}\n","namespace $ {\n\t\n\tlet filter : string\n\texport function $mol_log_filter( next? : string ) {\n\n\t\tif( next !== undefined ) {\n\t\t\tif( next == null ) {\n\t\t\t\tsessionStorage.removeItem( '$mol_log_filter()' )\n\t\t\t} else {\n\t\t\t\tsessionStorage.setItem( '$mol_log_filter()' , next )\n\t\t\t}\n\n\t\t\tfilter = next\n\t\t}\n\n\t\tif( filter !== undefined ) return filter\n\t\t\n\t\treturn filter = sessionStorage.getItem( '$mol_log_filter()' )\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_log_group< Task extends Function >( name : string , task : Task ) {\n\t\t\n\t\treturn function $mol_log_group_wrapper( ... args : any [] ) {\n\t\t\tconst filter = $mol_log_filter()\n\t\t\tif( filter == null ) return task.apply( this , args )\n\n\t\t\tlet started = false\n\t\t\tlet prev = $mol_log_context()\n\n\t\t\t$mol_log_context( ()=> {\n\t\t\t\tif( prev ) prev()\n\t\t\t\tstarted = true\n\t\t\t\tif( filter ) console.group( name )\n\t\t\t\telse console.groupCollapsed( name )\n\t\t\t\t$mol_log_context( prev = null )\n\t\t\t} )\n\t\t\t\n\t\t\ttry {\n\t\t\t\treturn task.apply( this , args )\n\t\t\t} finally {\n\t\t\t\tif( started ) console.groupEnd()\n\t\t\t\t$mol_log_context( prev )\n\t\t\t}\n\n\t\t} as any as Task\n\n\t}\n\n}\n","namespace $ {\n\t\n\texport class $mol_defer extends $mol_object {\n\t\t\n\t\tconstructor( public run : ()=> void ) {\n\t\t\tsuper()\n\t\t\t$mol_defer.add( this )\n\t\t}\n\t\t\n\t\tdestructor() {\n\t\t\t$mol_defer.drop( this )\n\t\t}\n\t\t\n\t\tstatic all : $mol_defer[] = []\n\t\tstatic timer = 0\n\t\t\n\t\tstatic scheduleNative : ( handler : ()=> void ) => number = ( typeof requestAnimationFrame == 'function' )\n\t\t\t? handler => requestAnimationFrame( handler )\n\t\t\t: handler => setTimeout( handler , 16 )\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.timer ) return\n\t\t\t\n\t\t\tthis.timer = this.scheduleNative( ()=> {\n\t\t\t\tthis.timer = 0\n\t\t\t\tthis.run()\n\t\t\t} )\n\t\t}\n\t\t\n\t\tstatic unschedule() {\n\t\t\tif( !this.timer ) return\n\t\t\t\n\t\t\tcancelAnimationFrame( this.timer )\n\t\t\tthis.timer = 0\n\t\t}\n\t\t\n\t\tstatic add( defer : $mol_defer ) {\n\t\t\tthis.all.push( defer )\n\t\t\tthis.schedule()\n\t\t}\n\t\t\n\t\tstatic drop( defer : $mol_defer ) {\n\t\t\tvar index = this.all.indexOf( defer )\n\t\t\tif( index >= 0 ) this.all.splice( index , 1 )\n\t\t}\n\t\t\n\t\tstatic run() {\n\t\t\tif( this.all.length === 0 ) return\n\t\t\tthis.schedule()\n\t\t\tfor( var defer : $mol_defer ; defer = this.all.shift() ; ) defer.run()\n\t\t\t//this.unschedule()\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\t/// Global storage of temporary state\n\texport var $mol_state_stack = new Map< string , any >()\n\t\n}\n",null,"namespace $ {\n\t\n\texport enum $mol_atom_status {\n\t\tobsolete = 'obsolete' ,\n\t\tchecking = 'checking' ,\n\t\tpulling = 'pulling' ,\n\t\tactual = 'actual' ,\n\t}\n\t\n\texport class $mol_atom< Value = any > extends $mol_object {\n\t\t\n\t\tmasters : Set< $mol_atom > | null = null\n\t\tslaves : Set< $mol_atom > | null = null\n\t\t\n\t\tstatus = $mol_atom_status.obsolete\n\t\t\n\t\treadonly handler : ( next? : Value|Error , force? : $mol_atom_force )=> Value|void\n\n\t\t'value()' : Value|Error\n\t\t\n\t\tconstructor(\n\t\t\tid : string ,\n\t\t\thandler : ( next? : Value , force? : $mol_atom_force )=> Value|void = next => next ,\n\t\t) {\n\t\t\tsuper()\n\t\t\t\n\t\t\tthis.object_id( id )\n\t\t\tthis.handler = handler\n\t\t}\n\t\t\n\t\tdestructor() {\n\t\t\tthis.unlink()\n\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\n\t\t\tconst value = this['value()']\n\t\t\t\n\t\t\tif( value instanceof $mol_object ) {\n\t\t\t\tif( value.object_owner() === this ) value.destructor();\n\t\t\t}\n\n\t\t\tthis['value()'] = undefined\n\t\t}\n\t\t\n\t\tunlink() {\n\t\t\tthis.disobey_all()\n\t\t\tthis.check_slaves()\n\t\t}\n\t\t\n\t\tget( force? : $mol_atom_force ) {\n\t\t\t\n\t\t\tconst slave = $mol_atom.stack[0]\n\t\t\tif( slave ) {\n\t\t\t\tthis.lead( slave )\n\t\t\t\tslave.obey( this )\n\t\t\t}\n\t\t\t\n\t\t\tthis.actualize( force )\n\t\t\t\n\t\t\tconst value = this['value()'] as Value\n\t\t\t\n\t\t\tif( value instanceof Error ) {\n\t\t\t\tthrow value\n\t\t\t}\n\t\t\t\n\t\t\treturn value as Value\n\t\t}\n\t\t\n\t\tactualize( force? : $mol_atom_force ) {\n\t\t\t\n\t\t\tif( this.status === $mol_atom_status.pulling ) {\n\t\t\t\tthrow new Error( `Cyclic atom dependency of ${ this }` )\n\t\t\t}\n\t\t\t\n\t\t\tif( !force && this.status === $mol_atom_status.actual ) return\n\t\t\t\n\t\t\tconst slave = $mol_atom.stack[0]\n\t\t\t$mol_atom.stack[0] = this\n\t\t\t\n\t\t\tif( !force && this.status === $mol_atom_status.checking ) {\n\t\t\t\t\n\t\t\t\tthis.masters!.forEach(\n\t\t\t\t\tmaster => {\n\t\t\t\t\t\tif( this.status !== $mol_atom_status.checking ) return\n\t\t\t\t\t\tmaster.actualize()\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tif( this.status === $mol_atom_status.checking ) {\n\t\t\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif( force || this.status !== $mol_atom_status.actual ) {\n\t\t\t\t\n\t\t\t\tconst oldMasters = this.masters\n\t\t\t\tthis.masters = null\n\t\t\t\t\n\t\t\t\tif( oldMasters ) oldMasters.forEach(\n\t\t\t\t\tmaster => {\n\t\t\t\t\t\tmaster.dislead( this )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tthis.status = $mol_atom_status.pulling\n\t\t\t\tconst next = this.pull( force )\n\t\t\t\t\n\t\t\t\tif( next === undefined ) {\n\t\t\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\t} else {\n\t\t\t\t\tthis.push( next )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t$mol_atom.stack[0] = slave\n\t\t}\n\t\t\n\t\tpull( force? : $mol_atom_force ) {\n\t\t\ttry {\n\t\t\t\treturn this.handler( this._next , force )\n\t\t\t} catch( error ) {\n\t\t\t\tif( error[ '$mol_atom_catched' ] ) return error\n\t\t\t\tif( error instanceof $mol_atom_wait ) return error\n\t\t\t\t\n\t\t\t\tconsole.error( error.stack || error )\n\t\t\t\t\n\t\t\t\tif(!( error instanceof Error )) {\n\t\t\t\t\terror = new Error( error.stack || error )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\terror['$mol_atom_catched'] = true\n\t\t\t\treturn error\n\t\t\t}\n\t\t}\n\t\t\n\t\t_next : Value|Error\n\t\t_ignore : Value|Error\n\t\t\n\t\tset( next : Value ) {\n\t\t\treturn this.value( next )\n\t\t}\n\t\t\n\t\tpush( next_raw? : Value|Error ) : Value {\n\t\t\tif(!( next_raw instanceof $mol_atom_wait )) {\n\t\t\t\tthis._ignore = this._next\n\t\t\t\tthis._next = undefined\n\t\t\t}\n\t\t\t\n\t\t\tthis.status = next_raw === undefined ? $mol_atom_status.obsolete : $mol_atom_status.actual\n\t\t\t\n\t\t\tconst prev = this['value()']\n\t\t\t\n\t\t\tlet next = ( next_raw instanceof Error || prev instanceof Error ) ? next_raw : $mol_conform( next_raw , prev )\n\t\t\t\n\t\t\tif( next === prev ) return prev as Value\n\t\t\t\n\t\t\tif( prev instanceof $mol_object ) {\n\t\t\t\tif( prev.object_owner() === this ) prev.destructor()\n\t\t\t}\n\t\t\t\n\t\t\tif( next instanceof $mol_object ) {\n\t\t\t\tnext.object_owner( this )\n\t\t\t}\n\t\t\t\n\t\t\t// if(( typeof Proxy === 'function' )&&( next instanceof Error )) {\n\t\t\t// \tnext = new Proxy( next , {\n\t\t\t// \t\tget( target : Error ) {\n\t\t\t// \t\t\tthrow target.valueOf()\n\t\t\t// \t\t} ,\n\t\t\t// \t\townKeys( target : Error ) : string[] {\n\t\t\t// \t\t\tthrow target.valueOf()\n\t\t\t// \t\t} ,\n\t\t\t// \t} )\n\t\t\t// }\n\t\t\t\n\t\t\tthis['value()'] = next\n\t\t\t$mol_log( this , prev , '➔' , next )\n\t\t\t\n\t\t\tthis.obsolete_slaves()\n\t\t\t\n\t\t\treturn next as Value\n\t\t}\n\t\t\n\t\tobsolete_slaves() {\n\t\t\tif( !this.slaves ) return\n\t\t\t\n\t\t\tthis.slaves.forEach( slave => slave.obsolete() )\n\t\t}\n\t\t\n\t\tcheck_slaves() {\n\t\t\tif( this.slaves ) {\n\t\t\t\tthis.slaves.forEach( slave => slave.check() )\n\t\t\t} else {\n\t\t\t\t$mol_atom.actualize( this )\n\t\t\t}\n\t\t}\n\t\t\n\t\tcheck() {\n\t\t\t//if( this.status === $mol_atom_status.pulling ) {\n\t\t\t//\tthrow new Error( `May be obsolated while pulling ${ this }` )\n\t\t\t//}\n\t\t\t\n\t\t\tif( this.status === $mol_atom_status.actual ) {\n\t\t\t\tthis.status = $mol_atom_status.checking\n\t\t\t\t\n\t\t\t\tthis.check_slaves()\n\t\t\t}\n\t\t}\n\t\t\n\t\tobsolete() {\n\t\t\tif( this.status === $mol_atom_status.obsolete ) return\n\t\t\t\n\t\t\t//if( this.status === $mol_atom_status.pulling ) {\n\t\t\t//\tthrow new Error( `Obsolated while pulling ${ this }` )\n\t\t\t//} \n\t\t\t\n\t\t\tthis.status = $mol_atom_status.obsolete\n\t\t\t\n\t\t\tthis.check_slaves()\n\t\t\t\n\t\t\treturn\n\t\t}\n\t\t\n\t\tlead( slave : $mol_atom ) {\n\t\t\tif( !this.slaves ) {\n\t\t\t\tthis.slaves = new Set<$mol_atom>()\n\t\t\t\t$mol_atom.unreap( this )\n\t\t\t}\n\t\t\tthis.slaves.add( slave )\n\t\t}\n\t\t\n\t\tdislead( slave : $mol_atom ) {\n\t\t\tif( !this.slaves ) return\n\t\t\t\n\t\t\tif( this.slaves.size === 1 ) {\n\t\t\t\tthis.slaves = null\n\t\t\t\t$mol_atom.reap( this )\n\t\t\t} else {\n\t\t\t\tthis.slaves.delete( slave )\n\t\t\t}\n\t\t}\n\t\t\n\t\tobey( master : $mol_atom ) {\n\t\t\tif( !this.masters ) this.masters = new Set< $mol_atom >()\n\t\t\tthis.masters.add( master )\n\t\t}\n\t\t\n\t\tdisobey( master : $mol_atom ) {\n\t\t\tif( !this.masters ) return\n\t\t\tthis.masters.delete( master )\n\t\t}\n\t\t\n\t\tdisobey_all() {\n\t\t\tif( !this.masters ) return\n\t\t\t\n\t\t\tthis.masters.forEach( master => master.dislead( this ) )\n\t\t\t\n\t\t\tthis.masters = null\n\t\t}\n\n\t\tcache( next? : Value|Error ) {\n\t\t\tif( next === undefined ) return this['value()']\n\t\t\treturn this['value()'] = next\n\t\t}\n\t\t\n\t\tvalue( next? : Value , force? : $mol_atom_force ) : Value {\n\n\t\t\tif( force === $mol_atom_force_cache ) return this.push( next )\n\n\t\t\tif( next !== undefined ) {\n\t\t\t\t\n\t\t\t\tif( force === $mol_atom_force ) return this.push( next )\n\n\t\t\t\tlet next_normal = $mol_conform( next , this._ignore )\n\t\t\t\tif( next_normal === this._ignore ) return this.get( force )\n\n\t\t\t\tif(!( this['value()'] instanceof Error )) {\n\t\t\t\t\tnext_normal = $mol_conform( next , this['value()'] )\n\t\t\t\t\tif( next_normal === this['value()'] ) return this.get( force )\n\t\t\t\t}\n\n\t\t\t\tthis._next = next_normal\n\t\t\t\tthis._ignore = next_normal\n\n\t\t\t\tforce = $mol_atom_force_update\n\t\t\t}\n\t\t\t\n\t\t\treturn this.get( force )\n\t\t}\n\t\t\n\t\tstatic stack = [] as $mol_atom[]\n\t\tstatic updating : $mol_atom[] = []\n\t\tstatic reaping = new Set< $mol_atom >()\n\t\tstatic scheduled = false\n\t\t\n\t\tstatic actualize( atom : $mol_atom ) {\n\t\t\t$mol_atom.updating.push( atom )\n\t\t\t$mol_atom.schedule()\n\t\t}\n\t\t\n\t\tstatic reap( atom : $mol_atom ) {\n\t\t\t$mol_atom.reaping.add( atom )\n\t\t\t$mol_atom.schedule()\n\t\t}\n\t\t\n\t\tstatic unreap( atom : $mol_atom ) {\n\t\t\t$mol_atom.reaping.delete( atom )\n\t\t}\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.scheduled ) return\n\t\t\t\n\t\t\tnew $mol_defer(\n\t\t\t\t$mol_log_group( '$mol_atom.sync()' , () => {\n\t\t\t\t\tif( !this.scheduled ) return\n\t\t\t\t\tthis.scheduled = false\n\t\t\t\t\tthis.sync()\n\t\t\t\t} )\n\t\t\t)\n\t\t\t\n\t\t\tthis.scheduled = true\n\t\t}\n\t\t\n\t\tstatic sync() {\n\t\t\tthis.schedule()\n\t\t\t\n\t\t\twhile( true ) {\n\t\t\t\tconst atom = this.updating.shift()\n\t\t\t\tif( !atom ) break\n\t\t\t\tif( this.reaping.has( atom ) ) continue\n\t\t\t\tif( atom.status !== $mol_atom_status.actual ) atom.get()\n\t\t\t}\n\t\t\t\n\t\t\twhile( this.reaping.size ) {\n\t\t\t\tthis.reaping.forEach(\n\t\t\t\t\tatom => {\n\t\t\t\t\t\tthis.reaping.delete( atom )\n\t\t\t\t\t\tif( !atom.slaves ) atom.destructor()\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\t\n\t\t\tthis.scheduled = false\n\t\t}\n\t\t\n\t\tthen< Next >( done : ( prev? : Value )=> Next , fail? : ( error : Error )=> Next ) {\n\t\t\t\n\t\t\tlet prev : Value\n\t\t\tlet next : Next\n\t\t\t\n\t\t\tconst atom = new $mol_atom(\n\t\t\t\t`${ this }.then(${ done })` ,\n\t\t\t\t() => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( prev == undefined ) {\n\t\t\t\t\t\t\tconst val = this.get()\n\t\t\t\t\t\t\tif( val instanceof $mol_atom_wait ) return val\n\t\t\t\t\t\t\tif( val ) val.valueOf()\n\t\t\t\t\t\t\tprev = val\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( next == undefined ) {\n\t\t\t\t\t\t\tconst val = done( prev )\n\t\t\t\t\t\t\tif( val instanceof $mol_atom_wait ) return val\n\t\t\t\t\t\t\tif( val ) val.valueOf()\n\t\t\t\t\t\t\tnext = val\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn next\n\n\t\t\t\t\t} catch( error ) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( error instanceof $mol_atom_wait ) return error\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( fail ) return fail( error )\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn error\n\t\t\t\t\t}\n\n\t\t\t\t} ,\n\t\t\t)\n\t\t\t\n\t\t\t$mol_atom.actualize( atom )\n\t\t\t\n\t\t\treturn atom\n\t\t}\n\t\t\n\t\tcatch( fail : ( error : Error )=> Value ) {\n\t\t\treturn this.then( next => next , fail )\n\t\t}\n\t\t\n\t}\n\t\n\t$mol_state_stack.set( '$mol_atom.stack' , $mol_atom.stack )\n\n\texport function $mol_atom_current< Value = any >() {\n\t\treturn $mol_atom.stack[0] as $mol_atom< Value >\n\t}\n\t\n\texport class $mol_atom_wait extends Error {\n\t\tname = '$mol_atom_wait'\n\t}\n\t\n\texport class $mol_atom_force extends Object {\n\t\t$mol_atom_force : boolean\n\t\tstatic $mol_atom_force : boolean\n\t\tstatic toString() { return this.name }\n\t}\n\n\texport class $mol_atom_force_cache extends $mol_atom_force {}\n\texport class $mol_atom_force_update extends $mol_atom_force {}\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_mem< Host , Value >(\n\t\tobj? : Host ,\n\t\tname? : string ,\n\t\tdescr? : TypedPropertyDescriptor< ( next? : Value , force? : $mol_atom_force )=> Value >\n\t) {\n\n\t\tconst value = descr.value\n\t\tconst store = new WeakMap< Object , $mol_atom >()\n\t\t\n\t\tdescr.value = function $mol_mem_value( next? : Value , force? : $mol_atom_force ) {\n\t\t\tconst host : any = this\n\t\t\n\t\t\tlet atom : $mol_atom = store.get( host )\n\t\t\tif( !atom ) {\n\t\t\t\t\n\t\t\t\tconst id = `${ host }.${ name }()`\n\t\t\t\tatom = new $mol_atom( id , function() {\n\t\t\t\t\tconst v = value.apply( host , arguments )\n\t\t\t\t\tif( v instanceof $mol_object ) {\n\t\t\t\t\t\tif( !v.object_host() ) {\n\t\t\t\t\t\t\tv.object_host( host )\n\t\t\t\t\t\t\tv.object_field( name )\n\t\t\t\t\t\t\tv.object_id( id )\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn v\n\t\t\t\t} )\n\n\t\t\t\tatom.object_owner( host )\n\t\t\t\t\n\t\t\t\tconst destructor = atom.destructor\n\t\t\t\tatom.destructor = ()=> {\n\t\t\t\t\tstore.delete( host )\n\t\t\t\t\tdestructor.call( atom )\n\t\t\t\t}\n\n\t\t\t\tstore.set( host , atom )\n\t\t\t}\n\t\t\t\n\t\t\treturn atom.value( next , force )\n\t\t}\n\t\t\n\t\tObject.defineProperty( obj , name + \"()\" , { get : function() { return store.get( this ) } } )\n\n\t\tdescr.value[ 'value' ] = value\n\n\t\treturn descr\n\t}\n\t\n\texport function $mol_mem_key< Host , Key , Value >(\n\t\tobj : Host ,\n\t\tname : string ,\n\t\tdescr : TypedPropertyDescriptor< ( key : Key , next? : Value , force? : $mol_atom_force )=> Value >\n\t) {\n\t\tconst value = descr.value\n\t\tconst store = new WeakMap< Object , { [ key : string ] : $mol_atom } >()\n\t\t\n\t\tdescr.value = function $mol_mem_key_value( key : Key , next : Value , force? : $mol_atom_force ) {\n\t\t\tconst host : any = this\n\t\t\tconst key_str = JSON.stringify( key )\n\t\t\t\n\t\t\tlet dict = store.get( host )\n\t\t\tif( !dict ) store.set( host , dict = {} )\n\t\t\t\n\t\t\tlet atom : $mol_atom = dict[ key_str ]\n\t\t\tif( !atom ) {\n\t\t\t\t\n\t\t\t\tconst id = `${ host }.${ name }(${ key_str })`\n\t\t\t\tatom = new $mol_atom( id , function( ... args: any[] ) {\n\t\t\t\t\tconst v = value.apply( host , [ key , ... args ] )\n\t\t\t\t\tif( v instanceof $mol_object ) {\n\t\t\t\t\t\tif( !v.object_host() ) {\n\t\t\t\t\t\t\tv.object_host( host )\n\t\t\t\t\t\t\tv.object_field( name )\n\t\t\t\t\t\t\tv.object_id( id )\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn v\n\t\t\t\t} )\n\n\t\t\t\tconst destructor = atom.destructor\n\t\t\t\tatom.destructor = ()=> {\n\t\t\t\t\tdelete dict[ key_str ]\n\t\t\t\t\tdestructor.call( atom )\n\t\t\t\t}\n\n\t\t\t\tdict[ key_str ] = atom\n\n\t\t\t}\n\t\t\t\n\t\t\treturn atom.value( next , force )\n\t\t}\n\t\t\n\t\tObject.defineProperty( obj , name + \"()\" , { get : function() { return store.get( this ) } } )\n\t\tvoid( ( descr.value as any )[ 'value' ] = value )\n\n\t\treturn descr\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_window extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic size( next? : {\n\t\t\twidth : number\n\t\t\theight : number\n\t\t} , force? : $mol_atom_force ) {\n\t\t\treturn next || {\n\t\t\t\twidth : window.innerWidth ,\n\t\t\t\theight : window.innerHeight ,\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\twindow.addEventListener( 'resize' , $mol_log_group( `$mol_window resize` , ()=> {\n\t\t$mol_window.size( undefined , $mol_atom_force_cache )\n\t} ) )\n\t\n}\n","namespace $ {\n\t\n\texport var $mol_dom_context : Window & {\n\t\tNode : typeof Node\n\t\tElement : typeof Element\n\t\tHTMLElement : typeof HTMLElement\n\t\tXMLHttpRequest : typeof XMLHttpRequest\n\t}\n\t\n}\n","namespace $ {\n\t\n\t$mol_dom_context = window as any\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_dom_render_fields (\n\t\tel : Element ,\n\t\tfields : { [ key : string ] : any }\n\t) {\n\t\tfor( let key in fields ) {\n\t\t\t\n\t\t\tconst val : any = fields[ key ]\n\t\t\t\n\t\t\tif( val === undefined ) continue\n\t\t\tif( el[ key ] === val ) continue\n\t\t\t\n\t\t\tel[ key ] = val\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_children (\n\t\tel : Element ,\n\t\tchildNodes : NodeList | Array< Node | string | number | boolean | { dom_tree : ()=> Node } >\n\t) {\n\t\tconst node_list = [] as ( Node | string )[]\n\t\tconst node_set = new Set()\n\t\t\n\t\tfor( let i = 0 ; i < childNodes.length ; ++i ) {\n\t\t\tlet node = childNodes[ i ] as any\n\t\t\tif( node == null ) continue\n\t\t\tif( Object( node ) === node ) {\n\t\t\t\tif( node[ 'dom_tree' ] ) node = node[ 'dom_tree' ]()\n\t\t\t\tnode_list.push( node )\n\t\t\t\tnode_set.add( node )\n\t\t\t} else {\n\t\t\t\tnode_list.push( String( node ) )\n\t\t\t}\n\t\t}\n\t\t\n\t\tlet nextNode = el.firstChild\n\t\tfor( let view_ of node_list ) {\n\t\t\tconst view = view_.valueOf() as Node\n\t\t\t\n\t\t\tif( view instanceof $mol_dom_context.Node ) {\n\t\t\t\t\n\t\t\t\twhile( true ) {\n\t\t\t\t\tif( !nextNode ) {\n\t\t\t\t\t\tel.appendChild( view )\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tif( nextNode == view ) {\n\t\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t\t\tbreak\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif( node_set.has( nextNode ) ) {\n\t\t\t\t\t\t\tel.insertBefore( view , nextNode )\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst nn = nextNode.nextSibling\n\t\t\t\t\t\t\tel.removeChild( nextNode )\n\t\t\t\t\t\t\tnextNode = nn\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\tif( nextNode && nextNode.nodeName === '#text' ) {\n\t\t\t\t\tnextNode.nodeValue = String( view )\n\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t} else {\n\t\t\t\t\tconst textNode = $mol_dom_context.document.createTextNode( String( view ) )\n\t\t\t\t\tel.insertBefore( textNode , nextNode )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\twhile( nextNode ) {\n\t\t\tconst currNode = nextNode\n\t\t\tnextNode = currNode.nextSibling\n\t\t\tel.removeChild( currNode )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_attributes (\n\t\tel : Element ,\n\t\tattrs : { [ key : string ] : string|number|boolean }\n\t) {\n\t\tfor( let name in attrs ) {\n\t\t\tlet val = attrs[ name ] as any\n\t\t\tif( val === null || val === false ) el.removeAttribute( name )\n\t\t\telse el.setAttribute( name , String( val ) )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_styles (\n\t\tel : Element ,\n\t\tstyles : { [ key : string ] : string|number }\n\t) {\n\t\tfor( let name in styles ) {\n\t\t\tlet val = styles[ name ]\n\t\t\t\n\t\t\tconst style = ( el as HTMLElement ).style as any\n\t\t\tconst cur = style[ name ]\n\t\t\t\n\t\t\tif( typeof val === 'number' ) {\n\t\t\t\tif( parseFloat( cur ) == val ) continue\n\t\t\t\tstyle[ name ] = `${ val }px`\n\t\t\t}\n\t\t\t\n\t\t\tif( cur !== val ) style[ name ] = val\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_events (\n\t\tel : Element ,\n\t\tevents : { [ key : string ] : ( event : Event )=> any }\n\t) {\n\t\tfor( let name in events ) {\n\t\t\tel.addEventListener( name , $mol_log_group( el.id + ' ' + name , events[ name ] ) , { passive : false } as any )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_events_async (\n\t\tel : Element ,\n\t\tevents : { [ key : string ] : ( event : Event )=> any }\n\t) {\n\t\tfor( let name in events ) {\n\t\t\tel.addEventListener( name , $mol_log_group( el.id + ' ' + name , events[ name ] ) , { passive : true } as any )\n\t\t}\n\t}\n\t\n}\n","\nnamespace $ {\n\t\n\texport namespace $$ { let $$ }\n\texport namespace $mol { let $mol }\n\t\n\t/// Use $mol_object_context instead\n\texport type $mol_view_context = $mol_object_context\n\t\n\texport function $mol_view_visible_width() {\n\t\treturn $mol_window.size().width\n\t}\n\t\n\texport function $mol_view_visible_height() {\n\t\treturn $mol_window.size().height\n\t}\n\t\n\texport function $mol_view_state_key( suffix : string ) {\n\t\treturn suffix\n\t}\n\n\t/// Reactive statefull lazy ViewModel\n\texport class $mol_view extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic Root( id : number ) {\n\t\t\treturn new this\n\t\t}\n\n\t\t@ $mol_mem\n\t\tstatic autobind() {\n\t\t\tconst nodes = $mol_dom_context.document.querySelectorAll( '[mol_view_root]' )\n\t\t\t\n\t\t\tfor( let i = nodes.length - 1 ; i >= 0 ; --i ) {\n\t\t\t\tconst name = nodes.item( i ).getAttribute( 'mol_view_root' )\n\t\t\t\t\n\t\t\t\tconst View = $[ name ]\n\t\t\t\tif( !View ) {\n\t\t\t\t\tconsole.error( `Can not attach view. Class not found: ${ name }` )\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tconst view = View.Root( i )\n\t\t\t\t\n\t\t\t\tview.dom_tree( nodes.item( i ) )\n\t\t\t\t\n\t\t\t\tdocument.title = view.title()\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\ttitle() : string {\n\t\t\treturn this.constructor.toString()\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tfocused( next?: boolean ) {\n\t\t\tlet node = this.dom_node()\n\t\t\tconst value = $mol_view_selection.focused( next === undefined ? undefined : next ? [ node ] : [] ) || []\n\t\t\treturn value.indexOf( node ) !== -1\n\t\t} \n\t\t\n\t\t@ $mol_mem\n\t\tcontext( next? : $mol_object_context ) {\n\t\t\treturn next || $ as $mol_object_context\n\t\t}\n\t\tget $() {\n\t\t\treturn this.context()\n\t\t}\n\t\tset $( next : $mol_view_context ) {\n\t\t\tthis.context( next )\n\t\t}\n\t\t\n\t\tcontext_sub() {\n\t\t\treturn this.context()\n\t\t}\n\t\t\n\t\tstate_key( suffix = '' ) {\n\t\t\treturn this.$.$mol_view_state_key( suffix )\n\t\t}\n\t\t\n\t\t/// Name of element that created when element not found in DOM\n\t\tdom_name() {\n\t\t\treturn this.constructor.toString().replace( '$' , '' )\n\t\t}\n\t\t\n\t\t/// NameSpace of element that created when element not found in DOM\n\t\tdom_name_space() { return 'http://www.w3.org/1999/xhtml' }\n\t\t\n\t\t/// Raw child views\n\t\tsub() {\n\t\t\treturn null as Array<$mol_view|Node|string|number|boolean>\n\t\t}\n\t\t\n\t\t/// Visible sub views with defined context()\n\t\t/// Render all by default\n\t\tsub_visible() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return sub\n\t\t\t\n\t\t\tconst context = this.context_sub()\n\t\t\tsub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.$ = context\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn sub\n\t\t}\n\t\t\n\t\t/// Minimal width that used for lazy rendering\n\t\t@ $mol_mem\n\t\tminimal_width() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return 0\n\t\t\t\n\t\t\tlet min = 0\n\t\t\tsub.forEach( view => {\n\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\tmin = Math.max( min , view.minimal_width() )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn min\n\t\t}\n\t\t\n\t\t/// Minimal height that used for lazy rendering\n\t\tminimal_height() {\n\t\t\treturn this.content_height()\n\t\t}\n\n\t\t@ $mol_mem\n\t\tcontent_height() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return 0\n\t\t\t\n\t\t\tlet min = 0\n\t\t\tsub.forEach( view => {\n\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\tmin = Math.max( min , view.minimal_height() )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn min\n\t\t}\n\n\t\tdom_id() {\n\t\t\treturn this.toString()\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tdom_node( next? : Element ) {\n\t\t\tconst node = next || this.$.$mol_dom_context.document.createElementNS( this.dom_name_space() , this.dom_name() )\n\n\t\t\tnode.setAttribute( 'id' , this.dom_id() )\n\t\t\t$mol_dom_render_attributes( node , this.attr_static() )\n\t\t\t$mol_dom_render_events( node , this.event() )\n\t\t\t$mol_dom_render_events_async( node , this.event_async() )\n\n\t\t\treturn node\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tdom_tree( next? : Element ) : Element {\n\t\t\tconst node = this.dom_node( next )\n\t\t\t\n\t\t\ttry {\n\t\t\t\t\n\t\t\t\tfor( let plugin of this.plugins() ) plugin.render()\n\t\t\t\tthis.render()\n\t\t\t\t\n\t\t\t} catch( error ) {\n\t\t\t\t\n\t\t\t\t$mol_dom_render_attributes( node , { mol_view_error : error.name } )\n\t\t\t\t\n\t\t\t\tif( error instanceof $mol_atom_wait ) return node\n\t\t\t\t\n\t\t\t\ttry { void( ( node as HTMLElement ).innerText = error.message ) } catch( e ) {}\n\t\t\t\t\n\t\t\t\tif( error[ '$mol_atom_catched' ] ) return node\n\t\t\t\t\n\t\t\t\tconsole.error( error )\n\n\t\t\t\terror[ '$mol_atom_catched' ] = true\n\t\t\t}\n\t\t\t\n\t\t\treturn node\n\t\t}\n\t\t\n\t\trender() {\n\t\t\tconst node = this.dom_node()\n\t\t\t\n\t\t\tconst sub = this.sub_visible()\n\t\t\tif( sub ) $mol_dom_render_children( node , sub )\n\t\t\t\n\t\t\t$mol_dom_render_attributes( node , this.attr() )\n\t\t\t$mol_dom_render_styles( node , this.style() )\n\t\t\t\n\t\t\tconst fields = this.field()\n\t\t\t$mol_dom_render_fields( node , fields )\n\t\t\tnew $mol_defer( ()=> $mol_dom_render_fields( node , fields ) )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tstatic view_classes() {\n\t\t\tconst proto = this.prototype\n\t\t\t\n\t\t\tlet current = proto\n\t\t\tconst classes = [] as ( typeof $mol_view )[]\n\t\t\t\n\t\t\twhile( current ) {\n\t\t\t\tclasses.push( current.constructor as typeof $mol_view )\n\t\t\t\tif(!( current instanceof $mol_view )) break\n\t\t\t\tcurrent = Object.getPrototypeOf( current )\n\t\t\t}\n\t\t\t\n\t\t\treturn classes\n\t\t}\n\t\t\n\t\tview_names_owned() {\n\t\t\tconst names = [] as string[]\n\t\t\tlet owner = this.object_host()\n\n\t\t\tif( owner instanceof $mol_view ) {\n\n\t\t\t\tconst suffix = this.object_field()\n\t\t\t\tconst suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1)\n\t\t\t\t\n\t\t\t\tfor( let Class of ( owner.constructor as typeof $mol_view ).view_classes() ) {\n\t\t\t\t\tif( suffix in Class.prototype ) names.push( $mol_func_name( Class ) + suffix2 )\n\t\t\t\t\telse break\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor( let prefix of owner.view_names_owned() ) {\n\t\t\t\t\tnames.push( prefix + suffix2 )\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn names\n\t\t}\n\n\t\t@ $mol_mem\n\t\tview_names() {\n\t\t\tconst names = [] as string[]\n\t\t\t\n\t\t\tfor( let name of this.view_names_owned() ) {\n\t\t\t\tif( names.indexOf( name ) < 0 ) names.push( name )\n\t\t\t}\n\n\t\t\tfor( let Class of ( this.constructor as typeof $mol_view ).view_classes() ) {\n\t\t\t\tconst name = $mol_func_name( Class )\n\t\t\t\tif( names.indexOf( name ) < 0 ) names.push( name )\n\t\t\t}\n\n\t\t\treturn names\n\t\t}\n\t\t\n\t\tattr_static() : { [ key : string ] : string|number|boolean } {\n\t\t\tlet attrs : any = {}\n\t\t\t\n\t\t\tfor( let name of this.view_names() ) attrs[ name.replace( /\\$/g , '' ).toLowerCase() ] = ''\n\t\t\t\n\t\t\treturn attrs\n\t\t}\n\t\t\n\t\tattr() : { [ key : string ] : string|number|boolean } {\n\t\t\treturn {\n\t\t\t\t'mol_view_error' : false ,\n\t\t\t}\n\t\t}\n\t\t\n\t\tstyle() : { [ key : string ] : string|number } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tfield() : { [ key : string ] : any } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tevent() : { [ key : string ] : ( event : Event )=> void } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tevent_async() : { [ key : string ] : ( event : Event )=> void } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tplugins() {\n\t\t\treturn [] as $mol_view[]\n\t\t}\n\t\t\n\t}\n\t\n}\n","interface Window {\n\tcordova : any\n}\n\nnamespace $ {\n\n\t/// Autoattach view roots to loaded DOM.\n\tconst event_name = window.cordova ? 'deviceready' : 'DOMContentLoaded'\n\t$mol_dom_context.document.addEventListener( event_name , $mol_log_group( `$mol_view ${ event_name }` , ( event : Event )=> {\n\t\t$mol_view.autobind()\n\t\t$mol_defer.run()\n\t} ) )\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_view_selection extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic focused( next? : Element[] , force? : $mol_atom_force ) {\n\t\t\tif( next === undefined ) return [] as Element[]\n\t\t\t\n\t\t\tconst node = next[ 0 ] as HTMLElement\n\t\t\t\n\t\t\tconst atom = $mol_atom_current< HTMLElement >()\n\t\t\tnew $mol_defer( ()=> {\n\t\t\t\tif( node ) return node.focus()\n\n\t\t\t\tconst el = atom.cache()[0]\n\t\t\t\tif( el ) el.blur()\n\t\t\t} )\n\n\t\t\treturn undefined\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic position( ...diff : any[] ) {\n\t\t\tif( diff.length ) {\n\t\t\t\tif( !diff[ 0 ] ) return diff[ 0 ]\n\t\t\t\t\n\t\t\t\tvar start = diff[ 0 ].start\n\t\t\t\tvar end = diff[ 0 ].end\n\t\t\t\tif( !( start <= end ) ) throw new Error( `Wrong offsets (${start},${end})` )\n\t\t\t\t\n\t\t\t\tvar root = $mol_dom_context.document.getElementById( diff[ 0 ].id )\n\t\t\t\troot.focus()\n\t\t\t\t\n\t\t\t\tvar range = new Range\n\t\t\t\t\n\t\t\t\tvar cur = root.firstChild\n\t\t\t\twhile( cur !== root ) {\n\t\t\t\t\twhile( cur.firstChild ) cur = cur.firstChild\n\t\t\t\t\tif( cur.nodeValue ) {\n\t\t\t\t\t\tvar length = cur.nodeValue.length\n\t\t\t\t\t\tif( length >= start ) break\n\t\t\t\t\t\tstart -= length\n\t\t\t\t\t}\n\t\t\t\t\twhile( !cur.nextSibling ) {\n\t\t\t\t\t\tcur = cur.parentNode\n\t\t\t\t\t\tif( cur === root ) {\n\t\t\t\t\t\t\tstart = root.childNodes.length\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trange.setStart( cur , start )\n\t\t\t\t\n\t\t\t\tvar cur = root.firstChild\n\t\t\t\twhile( cur !== root ) {\n\t\t\t\t\twhile( cur.firstChild ) cur = cur.firstChild\n\t\t\t\t\tif( cur.nodeValue ) {\n\t\t\t\t\t\tvar length = cur.nodeValue.length\n\t\t\t\t\t\tif( length >= end ) break\n\t\t\t\t\t\tend -= length\n\t\t\t\t\t}\n\t\t\t\t\twhile( !cur.nextSibling ) {\n\t\t\t\t\t\tcur = cur.parentNode\n\t\t\t\t\t\tif( cur === root ) {\n\t\t\t\t\t\t\tend = root.childNodes.length\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trange.setEnd( cur , end )\n\t\t\t\t\n\t\t\t\tvar sel = $mol_dom_context.document.getSelection()\n\t\t\t\tsel.removeAllRanges()\n\t\t\t\tsel.addRange( range )\n\t\t\t\t\n\t\t\t\treturn diff[ 0 ]\n\t\t\t} else {\n\t\t\t\tvar sel = $mol_dom_context.document.getSelection()\n\t\t\t\tif( sel.rangeCount === 0 ) return null\n\t\t\t\tvar range = sel.getRangeAt( 0 )\n\t\t\t\t\n\t\t\t\tvar el = range.commonAncestorContainer as Element\n\t\t\t\twhile( el && !el.id ) el = el.parentElement\n\t\t\t\t\n\t\t\t\tif( !el ) return { id : null , start : 0 , end : 0 }\n\t\t\t\t\n\t\t\t\tvar meter = new Range\n\t\t\t\tmeter.selectNodeContents( el )\n\t\t\t\t\n\t\t\t\tmeter.setEnd( range.startContainer , range.startOffset )\n\t\t\t\tvar startOffset = meter.toString().length\n\t\t\t\t\n\t\t\t\tmeter.setEnd( range.endContainer , range.endOffset )\n\t\t\t\tvar endOffset = meter.toString().length\n\t\t\t\t\n\t\t\t\treturn { id : el.id , start : startOffset , end : endOffset }\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic onFocus( event : FocusEvent ) {\n\t\t\tconst parents : Element[] = []\n\t\t\tlet element = event.target as HTMLElement\n\t\t\t\n\t\t\twhile( element ) {\n\t\t\t\tparents.push( element )\n\t\t\t\telement = element.parentNode as HTMLElement\n\t\t\t}\n\n\t\t\tthis.focused( parents , $mol_atom_force_cache )\n\t\t}\n\t\t\n\t\tstatic onBlur( event : FocusEvent ) {\n\t\t\tconst focused = this.focused()\n\t\t\tsetTimeout( $mol_log_group( '$mol_view_selection blur' , ()=> {\n\t\t\t\tif( focused !== this.focused() ) return\n\t\t\t\tthis.focused( [] , $mol_atom_force_cache )\n\t\t\t} ) )\n\t\t}\n\t}\n\t\n}\n","namespace $ {\n\t\n\t$mol_dom_context.document.addEventListener( 'selectionchange' , event => {\n\t\t$mol_view_selection.position( undefined , $mol_atom_force_cache )\n\t} )\n\t\n\t$mol_dom_context.document.addEventListener(\n\t\t'focus' ,\n\t\t$mol_log_group( '$mol_view_selection focus' , ( event : FocusEvent )=> $mol_view_selection.onFocus( event ) ) ,\n\t\ttrue\n\t)\n\t\n\t$mol_dom_context.document.addEventListener(\n\t\t'blur' ,\n\t\t( event : FocusEvent )=> $mol_view_selection.onBlur( event ) ,\n\t\ttrue\n\t)\n\t\n}\n","namespace $ {\n export const enum $mol_keyboard_code {\n backspace = 8,\n tab = 9,\n enter = 13,\n shift= 16,\n ctrl = 17,\n alt = 18,\n pause = 19,\n capsLock = 20,\n escape = 27,\n space = 32,\n pageUp = 33,\n pageDown = 34,\n end = 35,\n home = 36,\n left = 37,\n up = 38,\n right = 39,\n down = 40,\n insert = 45,\n delete = 46,\n key0 = 48,\n key1 = 49,\n key2 = 50,\n key3 = 51,\n key4 = 52,\n key5 = 53,\n key6 = 54,\n key7 = 55,\n key8 = 56,\n key9 = 57,\n A = 65,\n B = 66,\n C = 67,\n D = 68,\n E = 69,\n F = 70,\n G = 71,\n H = 72,\n I = 73,\n J = 74,\n K = 75,\n L = 76,\n M = 77,\n N = 78,\n O = 79,\n P = 80,\n Q = 81,\n R = 82,\n S = 83,\n T = 84,\n U = 85,\n V = 86,\n W = 87,\n X = 88,\n Y = 89,\n Z = 90,\n metaLeft = 91,\n metaRight = 92,\n select = 93,\n numpad0 = 96,\n numpad1 = 97,\n numpad2 = 98,\n numpad3 = 99,\n numpad4 = 100,\n numpad5 = 101,\n numpad6 = 102,\n numpad7 = 103,\n numpad8 = 104,\n numpad9 = 105,\n multiply = 106,\n add = 107,\n subtract = 109,\n decimal = 110,\n divide = 111,\n F1 = 112,\n F2 = 113,\n F3 = 114,\n F4 = 115,\n F5 = 116,\n F6 = 117,\n F7 = 118,\n F8 = 119,\n F9 = 120,\n F10 = 121,\n F11 = 122,\n F12 = 123,\n numLock = 144,\n scrollLock = 145,\n semicolon = 186,\n equals = 187,\n comma = 188,\n dash = 189,\n period = 190,\n forwardSlash = 191,\n graveAccent = 192,\n bracketOpen = 219,\n slashBack = 220,\n bracketClose = 221,\n quoteSingle = 222\n }\n}\n","namespace $ { export class $mol_string extends $mol_view {\n\n\t/// dom_name \\input\n\tdom_name() {\n\t\treturn \"input\"\n\t}\n\n\t/// enabled true\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/// debounce 200\n\tdebounce() {\n\t\treturn 200\n\t}\n\n\t/// minimal_height 40\n\tminimal_height() {\n\t\treturn 40\n\t}\n\n\t/// field * \n\t/// \t^ \n\t/// \tdisabled <= disabled - \n\t/// \tvalue <= value_changed?val - \n\t/// \tplaceholder <= hint - \n\t/// \ttype <= type?val -\n\tfield() {\n\t\treturn ({\n\t\t\t...super.field() ,\n\t\t\t\"disabled\" : this.disabled() ,\n\t\t\t\"value\" : this.value_changed() ,\n\t\t\t\"placeholder\" : this.hint() ,\n\t\t\t\"type\" : this.type() ,\n\t\t})\n\t}\n\n\t/// disabled false\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/// value_changed?val <=> value?val -\n\t@ $mol_mem\n\tvalue_changed( val? : any , force? : $mol_atom_force ) {\n\t\treturn this.value( val )\n\t}\n\n\t/// value?val \\\n\t@ $mol_mem\n\tvalue( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// type?val \\text\n\t@ $mol_mem\n\ttype( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"text\"\n\t}\n\n\t/// attr * \n\t/// \t^ \n\t/// \tmaxlength <= length_max -\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"maxlength\" : this.length_max() ,\n\t\t})\n\t}\n\n\t/// length_max Infinity\n\tlength_max() {\n\t\treturn Infinity\n\t}\n\n\t/// event * \n\t/// \t^ \n\t/// \tinput?event <=> event_change?event - \n\t/// \tkeypress?event <=> event_key_press?event -\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"input\" : ( event? : any )=> this.event_change( event ) ,\n\t\t\t\"keypress\" : ( event? : any )=> this.event_key_press( event ) ,\n\t\t})\n\t}\n\n\t/// event_change?event null\n\t@ $mol_mem\n\tevent_change( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// event_key_press?event null\n\t@ $mol_mem\n\tevent_key_press( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_string extends $.$mol_string {\n\t\t\n\t\t_timer = 0\n\t\t\n\t\tevent_change( next? : Event ) {\n\t\t\tif( !next ) return\n\t\t\t\n\t\t\tclearTimeout( this._timer )\n\t\t\tthis._timer = setTimeout( $mol_log_group( `${ this }.event_change()` , () => {\n\t\t\t\tthis.value( ( next.target as HTMLInputElement ).value ) \n\t\t\t} ) , this.debounce() )\n\t\t}\n\t\t\n\t\tevent_key_press( next? : KeyboardEvent ) { \n\t\t\tif( !next ) return\n\t\t\t\n\t\t\tif( next.keyCode === $mol_keyboard_code.enter ) {\n\t\t\t\tthis.value( ( next.target as HTMLInputElement ).value )\n\t\t\t}\n\t\t} \n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t}\n}\n","namespace $ { export class $mol_button extends $mol_view {\n\n\t/// enabled true\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/// minimal_height 40\n\tminimal_height() {\n\t\treturn 40\n\t}\n\n\t/// click?event null\n\t@ $mol_mem\n\tclick( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// event_click?event null\n\t@ $mol_mem\n\tevent_click( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// event * \n\t/// \t^ \n\t/// \tclick?event <=> event_activate?event - \n\t/// \tkeypress?event <=> event_key_press?event -\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"click\" : ( event? : any )=> this.event_activate( event ) ,\n\t\t\t\"keypress\" : ( event? : any )=> this.event_key_press( event ) ,\n\t\t})\n\t}\n\n\t/// event_activate?event null\n\t@ $mol_mem\n\tevent_activate( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// event_key_press?event null\n\t@ $mol_mem\n\tevent_key_press( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// attr * \n\t/// \t^ \n\t/// \tdisabled <= disabled - \n\t/// \trole \\button\n\t/// \ttabindex <= tab_index - \n\t/// \ttitle <= hint -\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"disabled\" : this.disabled() ,\n\t\t\t\"role\" : \"button\" ,\n\t\t\t\"tabindex\" : this.tab_index() ,\n\t\t\t\"title\" : this.hint() ,\n\t\t})\n\t}\n\n\t/// disabled false\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/// tab_index 0\n\ttab_index() {\n\t\treturn 0\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// sub / <= title -\n\tsub() {\n\t\treturn [].concat( this.title() )\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_button extends $.$mol_button {\n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t\t\n\t\tevent_activate( next : Event ) {\n\t\t\tif( !next ) return\n\t\t\tif( !this.enabled() ) return\n\t\t\t\n\t\t\tthis.event_click( next )\n\t\t\tthis.click( next )\n\t\t}\n\t\t\n\t\tevent_key_press ( event: KeyboardEvent ) { \n\t\t\tif( event.keyCode === $mol_keyboard_code.enter ) {\n\t\t\t\treturn this.event_activate( event )\n\t\t\t}\n\t\t} \n\t\t\n\t\ttab_index() {\n\t\t\treturn this.enabled() ? super.tab_index() : null\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { export class $mol_button_typed extends $mol_button {\n\n} }\n\nnamespace $ { export class $mol_button_major extends $mol_button_typed {\n\n} }\n\nnamespace $ { export class $mol_button_minor extends $mol_button_typed {\n\n} }\n\nnamespace $ { export class $mol_button_danger extends $mol_button_typed {\n\n} }\n\n","namespace $ {\n\t\n\texport function $mol_merge_dict< Target , Source >( target : Target , source : Source ) : Target & Source {\n\t\tlet result = {} as any\n\t\tfor( let key in target ) result[ key ] = ( target as any )[ key ]\n\t\tfor( let key in source ) result[ key ] = ( source as any )[ key ]\n\t\treturn result\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_state_arg< Value > extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic href( next? : string , force? : $mol_atom_force ) {\n\t\t\tif( next ) history.replaceState( history.state , $mol_dom_context.document.title , `${ next }` )\n\t\t\treturn window.location.search + window.location.hash\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic dict( next? : { [ key : string ] : string } ) {\n\t\t\tvar href = this.href( next && this.make_link( next ) )\n\t\t\tvar chunks = href.split( /[\\/\\?#&;]/g )\n\t\t\t\n\t\t\tvar params : { [ key : string ] : string } = {}\n\t\t\tchunks.forEach(\n\t\t\t\tchunk => {\n\t\t\t\t\tif( !chunk ) return\n\t\t\t\t\tvar vals = chunk.split( '=' ).map( decodeURIComponent )\n\t\t\t\t\tparams[ vals.shift() ] = vals.join( '=' )\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\treturn params\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic value( key : string , next? : string ) {\n\t\t\tconst nextDict = ( next === void 0 ) ? void 0 : $mol_merge_dict( this.dict() , { [ key ] : next } ) \n\t\t\tconst next2 = this.dict( nextDict )[ key ]\n\t\t\treturn ( next2 == null ) ? null : next2\n\t\t}\n\t\t\n\t\tstatic link( next : { [ key : string ] : string } ) {\n\t\t\treturn this.make_link( $mol_merge_dict( this.dict() , next ) )\n\t\t}\n\t\t\n\t\tstatic make_link( next : { [ key : string ] : string } ) {\n\t\t\tconst chunks : string[] = []\n\t\t\tfor( let key in next ) {\n\t\t\t\tif( null == next[ key ] ) continue\n\t\t\t\tchunks.push( [ key ].concat( next[ key ] ? next[ key ] : [] ).map( this.encode ).join( '=' ) )\n\t\t\t}\n\t\t\t\n\t\t\treturn new URL( '#' + chunks.join( '/' ) , window.location.href ).toString()\n\t\t}\n\n\t\tstatic encode( str : string ) {\n\t\t\treturn encodeURIComponent( str ).replace( /\\(/g , '%28' ).replace( /\\)/g , '%29' )\n\t\t}\n\t\t\n\t\tconstructor( public prefix = '' ) {\n\t\t\tsuper()\n\t\t}\n\t\t\n\t\tvalue( key : string , next? : string ) {\n\t\t\treturn $mol_state_arg.value( this.prefix + key , next )\n\t\t}\n\t\t\n\t\tsub( postfix : string ) {\n\t\t\treturn new $mol_state_arg( this.prefix + postfix + '.' )\n\t\t}\n\t\t\n\t\tlink( next : { [ key : string ] : string } ) {\n\t\t\tvar prefix = this.prefix\n\t\t\tvar dict : { [ key : string ] : string } = {}\n\t\t\tfor( var key in next ) {\n\t\t\t\tdict[ prefix + key ] = next[ key ]\n\t\t\t}\n\t\t\treturn $mol_state_arg.link( dict )\n\t\t}\n\t\t\n\t}\n\t\n\twindow.addEventListener( 'hashchange' , $mol_log_group( '$mol_state_arg hashchange' , ( event : HashChangeEvent )=> {\n\t\t$mol_state_arg.href( undefined , $mol_atom_force_cache ) \n\t} ) )\n\t\n}\n","namespace $ { export class $mol_link extends $mol_view {\n\n\t/// minimal_height 40\n\tminimal_height() {\n\t\treturn 40\n\t}\n\n\t/// dom_name \\a\n\tdom_name() {\n\t\treturn \"a\"\n\t}\n\n\t/// attr * \n\t/// \t^ \n\t/// \thref <= uri - \n\t/// \ttitle <= hint - \n\t/// \ttarget <= target - \n\t/// \tdownload <= file_name - \n\t/// \tmol_link_current <= current -\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"href\" : this.uri() ,\n\t\t\t\"title\" : this.hint() ,\n\t\t\t\"target\" : this.target() ,\n\t\t\t\"download\" : this.file_name() ,\n\t\t\t\"mol_link_current\" : this.current() ,\n\t\t})\n\t}\n\n\t/// uri \\\n\turi() {\n\t\treturn \"\"\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// target \\_self\n\ttarget() {\n\t\treturn \"_self\"\n\t}\n\n\t/// file_name \\\n\tfile_name() {\n\t\treturn \"\"\n\t}\n\n\t/// current false\n\tcurrent() {\n\t\treturn false\n\t}\n\n\t/// sub / <= title -\n\tsub() {\n\t\treturn [].concat( this.title() )\n\t}\n\n\t/// arg *\n\targ() {\n\t\treturn ({\n\t\t})\n\t}\n\n\t/// event * \n\t/// \t^ \n\t/// \tclick?event <=> click?event -\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"click\" : ( event? : any )=> this.click( event ) ,\n\t\t})\n\t}\n\n\t/// click?event <=> event_click?event -\n\t@ $mol_mem\n\tclick( event? : any , force? : $mol_atom_force ) {\n\t\treturn this.event_click( event )\n\t}\n\n\t/// event_click?event null\n\t@ $mol_mem\n\tevent_click( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\n","namespace $.$$ {\n\t\n\texport class $mol_link extends $.$mol_link {\n\t\t\n\t\t@ $mol_mem\n\t\turi() {\n\t\t\treturn new $mol_state_arg( this.state_key() ).link( this.arg() )\n\t\t}\n\t\t\n\t\tcurrent() {\n\t\t\treturn this.uri() === $mol_state_arg.link( {} )\n\t\t}\n\n\t\tevent_click( event? : Event ) {\n\t\t\tsetTimeout( $mol_log_group( `${ this }.event_click()` , ()=> this.focused( false ) ) , 200 )\n\t\t}\n\n\t\tfile_name() {\n\t\t\treturn null as string\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_check extends $mol_button_typed {\n\n\t/// attr * \n\t/// \t^ \n\t/// \tmol_check_checked <= checked?val - \n\t/// \taria-checked <= checked?val - \n\t/// \trole \\checkbox\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"mol_check_checked\" : this.checked() ,\n\t\t\t\"aria-checked\" : this.checked() ,\n\t\t\t\"role\" : \"checkbox\" ,\n\t\t})\n\t}\n\n\t/// checked?val false\n\t@ $mol_mem\n\tchecked( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// sub / \n\t/// \t<= Icon - \n\t/// \t<= label -\n\tsub() {\n\t\treturn [].concat( this.Icon() , this.label() )\n\t}\n\n\t/// Icon null\n\tIcon() {\n\t\treturn null as any\n\t}\n\n\t/// label / <= Title -\n\tlabel() {\n\t\treturn [].concat( this.Title() )\n\t}\n\n\t/// Title $mol_view sub / <= title -\n\t@ $mol_mem\n\tTitle() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.title() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// title \\\n\ttitle() {\n\t\treturn \"\"\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_check extends $.$mol_check {\n\n\t\tevent_click( next? : Event ) {\n\t\t\tthis.checked( !this.checked() )\n\t\t\tif( next ) next.preventDefault()\n\t\t}\n\n\t}\n}\n","namespace $ { export class $mol_scroll extends $mol_view {\n\n\t/// minimal_height 0\n\tminimal_height() {\n\t\treturn 0\n\t}\n\n\t/// moving_hor?val false\n\t@ $mol_mem\n\tmoving_hor( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// moving_vert?val false\n\t@ $mol_mem\n\tmoving_vert( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// field * \n\t/// \t^ \n\t/// \tscrollTop <= scroll_top?val - \n\t/// \tscrollLeft <= scroll_left?val - \n\t/// \tscrollBottom <= scroll_bottom?val - \n\t/// \tscrollRight <= scroll_right?val -\n\tfield() {\n\t\treturn ({\n\t\t\t...super.field() ,\n\t\t\t\"scrollTop\" : this.scroll_top() ,\n\t\t\t\"scrollLeft\" : this.scroll_left() ,\n\t\t\t\"scrollBottom\" : this.scroll_bottom() ,\n\t\t\t\"scrollRight\" : this.scroll_right() ,\n\t\t})\n\t}\n\n\t/// scroll_top?val 0\n\t@ $mol_mem\n\tscroll_top( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// scroll_left?val 0\n\t@ $mol_mem\n\tscroll_left( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// scroll_bottom?val 0\n\t@ $mol_mem\n\tscroll_bottom( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// scroll_right?val 0\n\t@ $mol_mem\n\tscroll_right( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// event_async * \n\t/// \t^ \n\t/// \tscroll?event <=> event_scroll?event -\n\tevent_async() {\n\t\treturn ({\n\t\t\t...super.event_async() ,\n\t\t\t\"scroll\" : ( event? : any )=> this.event_scroll( event ) ,\n\t\t})\n\t}\n\n\t/// event_scroll?event null\n\t@ $mol_mem\n\tevent_scroll( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// Strut $mol_view style * transform <= strut_transform -\n\t@ $mol_mem\n\tStrut() {\n\t\treturn (( obj )=>{\n\t\t\tobj.style = () => ({\n\t\t\t\"transform\" : this.strut_transform() ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// strut_transform \\\n\tstrut_transform() {\n\t\treturn \"\"\n\t}\n\n} }\n\n","namespace $.$$ {\n\t\n\texport function $mol_scroll_top() {\n\t\treturn 0\n\t}\n\t\n\texport function $mol_scroll_left() {\n\t\treturn 0\n\t}\n\t\n\texport function $mol_scroll_moving() {\n\t\treturn false\n\t}\n\t\n\texport function $mol_scroll_moving_vert() {\n\t\treturn false\n\t}\n\t\n\texport function $mol_scroll_moving_hor() {\n\t\treturn false\n\t}\n\t\n\texport class $mol_scroll extends $.$mol_scroll {\n\n\t\t// scroll_top( next? : number ) {\n\t\t// \treturn $mol_state_session.value( `${ this }.scroll_top()` , next ) || 0\n\t\t// }\n\t\t// \n\t\t// scroll_left( next? : number ) {\n\t\t// \treturn $mol_state_session.value( `${ this }.scroll_left()` , next ) || 0\n\t\t// }\n\t\t\n\t\t@ $mol_mem\n\t\tscroll_bottom( next? : number ) {\n\t\t\treturn next || 0\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tscroll_right( next? : number ) {\n\t\t\treturn next || 0\n\t\t}\n\t\t\n\t\tevent_scroll( next? : Event ) {\n\t\t\tthis.moving_vert( this.scroll_top() !== this.dom_node().scrollTop )\n\t\t\tthis.moving_hor( this.scroll_left() !== this.dom_node().scrollLeft )\n\t\t\tthis.moving_task_stop()\n\t\t\t\n\t\t\tnew $mol_defer( $mol_log_group( `${ this }.event_scroll()` , ()=> {\n\t\t\t\tconst el = this.dom_node() as HTMLElement\n\t\t\t\t\n\t\t\t\tconst top = Math.max( 0 , el.scrollTop )\n\t\t\t\tconst left = Math.max( 0 , el.scrollLeft )\n\t\t\t\t\n\t\t\t\tthis.scroll_top( top )\n\t\t\t\tthis.scroll_left( left )\n\t\t\t\t\n\t\t\t\tthis.scroll_bottom( Math.max( 0 , el.scrollHeight - top - el.offsetHeight ) )\n\t\t\t\tthis.scroll_right( Math.max( 0 , el.scrollWidth - left - el.offsetWidth ) )\n\t\t\t} ) )\n\t\t}\n\t\t\n\t\tevent_repos( next? : Event ) {\n\t\t\tnew $mol_defer( ()=> {\n\t\t\t\tconst el = this.dom_node() as HTMLElement\n\t\t\t\t\n\t\t\t\tthis.scroll_bottom( Math.max( 0 , el.scrollHeight - this.scroll_top() - el.offsetHeight ) )\n\t\t\t\tthis.scroll_right( Math.max( 0 , el.scrollWidth - this.scroll_left() - el.offsetWidth ) )\n\t\t\t} )\n\t\t}\n\t\t\n\t\t_moving_task_timer = 0\n\t\tmoving_task_stop() {\n\t\t\tclearTimeout( this._moving_task_timer )\n\t\t\tthis._moving_task_timer = setTimeout( $mol_log_group( `${ this }.moving_task_stop()` , ()=> {\n\t\t\t\tthis.moving_vert( false )\n\t\t\t\tthis.moving_hor( false )\n\t\t\t} ) , 50 )\n\t\t}\n\t\t\n\t\tmoving() {\n\t\t\treturn this.moving_hor() || this.moving_vert()\n\t\t}\n\n\t\t@ $mol_mem\n\t\tcontext_sub( ) {\n\t\t\tconst context = this.context()\n\t\t\tconst subContext : typeof context = Object.create( context )\n\t\t\tsubContext.$mol_view_visible_height = ()=> {\n\t\t\t\tconst sizeWin = $mol_window.size()\n\t\t\t\tconst limit = context.$mol_view_visible_height()\n\t\t\t\treturn this.scroll_top() + Math.min( sizeWin.height , limit )\n\t\t\t}\n\t\t\tsubContext.$mol_view_visible_width = ()=> {\n\t\t\t\tconst sizeWin = $mol_window.size()\n\t\t\t\tconst limit = context.$mol_view_visible_width()\n\t\t\t\treturn this.scroll_left() + Math.min( sizeWin.width , limit )\n\t\t\t}\n\t\t\tsubContext.$mol_scroll_top = ()=> this.scroll_top()\n\t\t\tsubContext.$mol_scroll_left = ()=> this.scroll_left()\n\t\t\tsubContext.$mol_scroll_moving = ()=> this.moving()\n\t\t\tsubContext.$mol_scroll_moving_vert = ()=> this.moving_vert()\n\t\t\tsubContext.$mol_scroll_moving_hor = ()=> this.moving_hor()\n\t\t\treturn subContext\n\t\t}\n\t\t\n\t\tstrut_transform() {\n\t\t\ttry {\n\t\t\t\treturn `translate3d( 0 , ${ this.content_height() }px , 0 )`\n\t\t\t} catch( error ) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t}\n\n\t\tsub_visible() {\n\t\t\tconst sub = [\n\t\t\t\tthis.Strut() ,\n\t\t\t\t... ( this.sub() || [] ) ,\n\t\t\t]\n\n\t\t\tconst context = this.context_sub()\n\t\t\tsub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.$ = context\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn sub\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ { export class $mol_list extends $mol_view {\n\n\t/// sub <= rows -\n\tsub() {\n\t\treturn this.rows()\n\t}\n\n\t/// rows /\n\trows() {\n\t\treturn [] as any[]\n\t}\n\n\t/// Empty null\n\tEmpty() {\n\t\treturn null as any\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_list extends $.$mol_list {\n\t\t\n\t\tsub() {\n\t\t\tconst rows = this.rows()\n\t\t\treturn ( rows.length === 0 ) ? [ this.Empty() ] : rows\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\trow_offsets() : number[] {\n\t\t\tvar sub = this.sub()\n\t\t\tif( !sub ) return null\n\t\t\t\n\t\t\tlet heightLimit = this.$.$mol_view_visible_height()\n\t\t\tvar offset = 0\n\t\t\t\n\t\t\tvar next : number[] = []\n\t\t\tfor( let child of sub ) {\n\t\t\t\tnext.push( offset )\n\t\t\t\t\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\toffset += child.minimal_height()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( offset > heightLimit ) break\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\trow_context( index : number ) {\n\t\t\tlet context = this.context()\n\t\t\tlet next = Object.create( context )\n\t\t\tnext.$mol_view_visible_height = ()=> {\n\t\t\t\tconst limit = context.$mol_view_visible_height()\n\t\t\t\treturn limit - this.row_offsets()[ index ]\n\t\t\t}\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tsub_visible() {\n\t\t\tvar sub = this.sub()\n\t\t\tif( !sub ) return sub\n\t\t\t\n\t\t\tvar limit = this.row_offsets().length\n\t\t\t\n\t\t\tvar next : $mol_view[] = []\n\t\t\tfor( let i = 0 ; i < limit ; ++ i ) {\n\t\t\t\tconst child = sub[ i ]\n\t\t\t\tif( child == null ) continue \n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.$ = this.row_context( i )\n\t\t\t\t}\n\t\t\t\tnext.push( child )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tminimal_height() {\n\t\t\tvar height = 0\n\t\t\tvar sub = this.sub()\n\t\t\tif( sub ) sub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\theight += child.minimal_height()\n\t\t\t\t}\n\t\t\t} )\n\t\t\treturn height\n\t\t}\n\n\t}\n}\n","namespace $ { export class $mol_bar extends $mol_view {\n\n} }\n\n","namespace $ {\n\t\n\texport class $mol_state_local< Value > extends $mol_object {\n\t\t\n\t\tstatic 'native()' : Pick< Storage , 'getItem'|'setItem'|'removeItem' >\n\t\tstatic native() {\n\t\t\tif( this['native()'] ) return this['native()']\n\n\t\t\tcheck : try {\n\t\t\t\tconst native = $mol_dom_context.localStorage\n\t\t\t\tif( !native ) break check\n\t\t\t\t\n\t\t\t\tnative.setItem( '' , '' )\n\t\t\t\tnative.removeItem( '' )\n\t\t\t\treturn this['native()'] = native\n\t\t\t} catch( error ) {\n\t\t\t\tconsole.warn( error )\n\t\t\t}\n\n\t\t\treturn this['native()'] = {\n\t\t\t\tgetItem( key : string ) {\n\t\t\t\t\treturn this[ ':' + key ]\n\t\t\t\t} ,\n\t\t\t\tsetItem( key : string , value : string ) {\n\t\t\t\t\tthis[ ':' + key ] = value\n\t\t\t\t} ,\n\t\t\t\tremoveItem( key : string ) {\n\t\t\t\t\tthis[ ':' + key ] = void 0\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\tstatic value< Value >( key : string , next? : Value , force? : $mol_atom_force ) : Value {\n\t\t\tif( next === void 0 ) return JSON.parse( this.native().getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) this.native().removeItem( key )\n\t\t\telse this.native().setItem( key , JSON.stringify( next ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_local.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\twindow.addEventListener( 'storage' , event => {\n\t\t$.$mol_state_local.value( event.key , void 0 , $mol_atom_force_cache )\n\t} )\n}\n","namespace $ { export class $mol_app_todomvc extends $mol_scroll {\n\n\t/// title \\Todos\n\ttitle() {\n\t\treturn \"Todos\"\n\t}\n\n\t/// sub / <= Page -\n\tsub() {\n\t\treturn [].concat( this.Page() )\n\t}\n\n\t/// Page $mol_list rows / \n\t/// \t<= Title - \n\t/// \t<= Panel -\n\t@ $mol_mem\n\tPage() {\n\t\treturn (( obj )=>{\n\t\t\tobj.rows = () => [].concat( this.Title() , this.Panel() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_list )\n\t}\n\n\t/// Title $mol_view \n\t/// \tminimal_height 176 \n\t/// \tsub / <= title -\n\t@ $mol_mem\n\tTitle() {\n\t\treturn (( obj )=>{\n\t\t\tobj.minimal_height = () => 176\n\t\t\tobj.sub = () => [].concat( this.title() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// Panel $mol_list rows <= panels -\n\t@ $mol_mem\n\tPanel() {\n\t\treturn (( obj )=>{\n\t\t\tobj.rows = () => this.panels()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_list )\n\t}\n\n\t/// panels / \n\t/// \t<= Head - \n\t/// \t<= List - \n\t/// \t<= Foot -\n\tpanels() {\n\t\treturn [].concat( this.Head() , this.List() , this.Foot() )\n\t}\n\n\t/// Head $mol_view \n\t/// \tminimal_height 64 \n\t/// \tsub <= Head_content -\n\t@ $mol_mem\n\tHead() {\n\t\treturn (( obj )=>{\n\t\t\tobj.minimal_height = () => 64\n\t\t\tobj.sub = () => this.Head_content()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// Head_content / \n\t/// \t<= Head_complete - \n\t/// \t<= Add -\n\tHead_content() {\n\t\treturn [].concat( this.Head_complete() , this.Add() )\n\t}\n\n\t/// Head_complete $mol_check \n\t/// \tenabled <= head_complete_enabled - \n\t/// \tchecked?val <=> completed_all?val - \n\t/// \ttitle \\❯\n\t@ $mol_mem\n\tHead_complete() {\n\t\treturn (( obj )=>{\n\t\t\tobj.enabled = () => this.head_complete_enabled()\n\t\t\tobj.checked = ( val? : any ) => this.completed_all( val )\n\t\t\tobj.title = () => \"❯\"\n\t\t\treturn obj\n\t\t})( new this.$.$mol_check )\n\t}\n\n\t/// head_complete_enabled false\n\thead_complete_enabled() {\n\t\treturn false\n\t}\n\n\t/// completed_all?val false\n\t@ $mol_mem\n\tcompleted_all( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// Add $mol_app_todomvc_add \n\t/// \tvalue?val <=> task_title_new?val - \n\t/// \tevent_done?event <=> event_add?event -\n\t@ $mol_mem\n\tAdd() {\n\t\treturn (( obj )=>{\n\t\t\tobj.value = ( val? : any ) => this.task_title_new( val )\n\t\t\tobj.event_done = ( event? : any ) => this.event_add( event )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_app_todomvc_add )\n\t}\n\n\t/// task_title_new?val \\\n\t@ $mol_mem\n\ttask_title_new( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// event_add?event null\n\t@ $mol_mem\n\tevent_add( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// List $mol_list rows <= task_rows -\n\t@ $mol_mem\n\tList() {\n\t\treturn (( obj )=>{\n\t\t\tobj.rows = () => this.task_rows()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_list )\n\t}\n\n\t/// task_rows /\n\ttask_rows() {\n\t\treturn [] as any[]\n\t}\n\n\t/// Foot $mol_view sub <= foot_content -\n\t@ $mol_mem\n\tFoot() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => this.foot_content()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// foot_content / \n\t/// \t<= Pending - \n\t/// \t<= Filter - \n\t/// \t<= Sweep -\n\tfoot_content() {\n\t\treturn [].concat( this.Pending() , this.Filter() , this.Sweep() )\n\t}\n\n\t/// Pending $mol_view sub / <= pending_message -\n\t@ $mol_mem\n\tPending() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.pending_message() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// pending_message \\0 items left\n\tpending_message() {\n\t\treturn \"0 items left \"\n\t}\n\n\t/// Filter $mol_bar sub <= filterOptions -\n\t@ $mol_mem\n\tFilter() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => this.filterOptions()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_bar )\n\t}\n\n\t/// filterOptions / \n\t/// \t<= Filter_all - \n\t/// \t<= Filter_active - \n\t/// \t<= Filter_completed -\n\tfilterOptions() {\n\t\treturn [].concat( this.Filter_all() , this.Filter_active() , this.Filter_completed() )\n\t}\n\n\t/// Filter_all $mol_link \n\t/// \tsub / <= filter_all_label - \n\t/// \targ * completed null\n\t@ $mol_mem\n\tFilter_all() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.filter_all_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : null as any ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_link )\n\t}\n\n\t/// filter_all_label \\All\n\tfilter_all_label() {\n\t\treturn \"All\"\n\t}\n\n\t/// Filter_active $mol_link \n\t/// \tsub / <= filter_active_label - \n\t/// \targ * completed \\false\n\t@ $mol_mem\n\tFilter_active() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.filter_active_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : \"false\" ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_link )\n\t}\n\n\t/// filter_active_label \\Active\n\tfilter_active_label() {\n\t\treturn \"Active\"\n\t}\n\n\t/// Filter_completed $mol_link \n\t/// \tsub / <= filter_completed_label - \n\t/// \targ * completed \\true\n\t@ $mol_mem\n\tFilter_completed() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.filter_completed_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : \"true\" ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_link )\n\t}\n\n\t/// filter_completed_label \\Completed\n\tfilter_completed_label() {\n\t\treturn \"Completed\"\n\t}\n\n\t/// Sweep $mol_button_minor \n\t/// \tenabled <= sweep_enabled - \n\t/// \tevent_click?event <=> event_sweep?event - \n\t/// \tsub / <= sweep_label -\n\t@ $mol_mem\n\tSweep() {\n\t\treturn (( obj )=>{\n\t\t\tobj.enabled = () => this.sweep_enabled()\n\t\t\tobj.event_click = ( event? : any ) => this.event_sweep( event )\n\t\t\tobj.sub = () => [].concat( this.sweep_label() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_button_minor )\n\t}\n\n\t/// sweep_enabled true\n\tsweep_enabled() {\n\t\treturn true\n\t}\n\n\t/// event_sweep?event null\n\t@ $mol_mem\n\tevent_sweep( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// sweep_label \\Clear completed\n\tsweep_label() {\n\t\treturn \"Clear completed\"\n\t}\n\n\t/// Task_row!id $mol_app_todomvc_task_row \n\t/// \tcompleted?val <=> task_completed!id?val - \n\t/// \ttitle?val <=> task_title!id?val - \n\t/// \tevent_drop?event <=> event_task_drop!id?event -\n\t@ $mol_mem_key\n\tTask_row( id : any ) {\n\t\treturn (( obj )=>{\n\t\t\tobj.completed = ( val? : any ) => this.task_completed(id , val )\n\t\t\tobj.title = ( val? : any ) => this.task_title(id , val )\n\t\t\tobj.event_drop = ( event? : any ) => this.event_task_drop(id , event )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_app_todomvc_task_row )\n\t}\n\n\t/// task_completed!id?val false\n\t@ $mol_mem_key\n\ttask_completed( id : any , val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// task_title!id?val \\\n\t@ $mol_mem_key\n\ttask_title( id : any , val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// event_task_drop!id?event null\n\t@ $mol_mem_key\n\tevent_task_drop( id : any , event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\nnamespace $ { export class $mol_app_todomvc_add extends $mol_string {\n\n\t/// hint \\What needs to be done?\n\thint() {\n\t\treturn \"What needs to be done?\"\n\t}\n\n\t/// event * \n\t/// \t^ \n\t/// \tkeyup?event <=> event_press?event -\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"keyup\" : ( event? : any )=> this.event_press( event ) ,\n\t\t})\n\t}\n\n\t/// event_press?event null\n\t@ $mol_mem\n\tevent_press( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// event_done?event null\n\t@ $mol_mem\n\tevent_done( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\nnamespace $ { export class $mol_app_todomvc_task_row extends $mol_view {\n\n\t/// minimal_height 64\n\tminimal_height() {\n\t\treturn 64\n\t}\n\n\t/// sub / \n\t/// \t<= Complete - \n\t/// \t<= Title - \n\t/// \t<= Drop -\n\tsub() {\n\t\treturn [].concat( this.Complete() , this.Title() , this.Drop() )\n\t}\n\n\t/// Complete $mol_check checked?val <=> completed?val -\n\t@ $mol_mem\n\tComplete() {\n\t\treturn (( obj )=>{\n\t\t\tobj.checked = ( val? : any ) => this.completed( val )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_check )\n\t}\n\n\t/// completed?val false\n\t@ $mol_mem\n\tcompleted( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// Title $mol_string \n\t/// \thint <= title_hint - \n\t/// \tvalue?val <=> title?val -\n\t@ $mol_mem\n\tTitle() {\n\t\treturn (( obj )=>{\n\t\t\tobj.hint = () => this.title_hint()\n\t\t\tobj.value = ( val? : any ) => this.title( val )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_string )\n\t}\n\n\t/// title_hint \\Task title\n\ttitle_hint() {\n\t\treturn \"Task title\"\n\t}\n\n\t/// title?val \\\n\t@ $mol_mem\n\ttitle( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// Drop $mol_button_typed \n\t/// \tsub / \\✖\n\t/// \tevent_click?event <=> event_drop?event -\n\t@ $mol_mem\n\tDrop() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( \"✖\" )\n\t\t\tobj.event_click = ( event? : any ) => this.event_drop( event )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_button_typed )\n\t}\n\n\t/// event_drop?event null\n\t@ $mol_mem\n\tevent_drop( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// attr * \n\t/// \t^ \n\t/// \tmol_app_todomvc_task_row_completed <= completed?val -\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"mol_app_todomvc_task_row_completed\" : this.completed() ,\n\t\t})\n\t}\n\n} }\n\n","interface $mol_app_todomvc_task {\n\tcompleted? : boolean\n\ttitle? : string\n}\n\nnamespace $.$$ {\n\t\n\texport class $mol_app_todomvc_add extends $.$mol_app_todomvc_add {\n\t\t\n\t\tevent_press( next? : KeyboardEvent ) {\n\t\t\tswitch( next.keyCode ) {\n\t\t\t\tcase $mol_keyboard_code.enter : return this.event_done( next )\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\texport class $mol_app_todomvc extends $.$mol_app_todomvc {\n\t\t\n\t\ttask_ids( next? : number[] ) : number[] {\n\t\t\treturn $mol_state_local.value( this.state_key( 'mol-todos' ) , next ) || []\n\t\t}\n\t\t\n\t\targ_completed() {\n\t\t\treturn $mol_state_arg.value( this.state_key( 'completed' ) )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tgroups_completed() {\n\t\t\tvar groups : { [ index : string ] : number[] } = { 'true' : [] , 'false' : [] }\n\t\t\tfor( let id of this.task_ids() ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tgroups[ String( task.completed ) ].push( id )\n\t\t\t}\n\t\t\treturn groups\n\t\t}\n\n\t\t@ $mol_mem\n\t\ttask_ids_filtered() {\n\t\t\tvar completed = this.arg_completed()\n\t\t\tif( completed ) {\n\t\t\t\treturn this.groups_completed()[ completed ] || []\n\t\t\t} else {\n\t\t\t\treturn this.task_ids()\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_mem\n\t\tcompleted_all( next? : boolean ) {\n\t\t\tif( next === void 0 ) return this.groups_completed()[ 'false' ].length === 0\n\t\t\t\n\t\t\tfor( let id of this.groups_completed()[ String( !next ) ] ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tthis.task( id , { title : task.title , completed : next } )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\thead_complete_enabled() {\n\t\t\treturn this.task_ids().length > 0 \n\t\t}\n\n\t\t@ $mol_mem\n\t\tpending_message() {\n\t\t\tlet count = this.groups_completed()[ 'false' ].length\n\t\t\treturn ( count === 1 ) ? '1 item left' : `${count} items left`\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tnew_id() {\n\t\t\treturn Math.max( 1 , 1 + Math.max( ... this.task_ids() ) )\n\t\t}\n\t\t\n\t\tevent_add( next : Event ) {\n\t\t\tvar title = this.task_title_new() \n\t\t\tif( !title ) return\n\t\t\t\n\t\t\tvar id = this.new_id()\n\t\t\tvar task = { completed : false , title }\n\t\t\tthis.task( id , task )\n\t\t\t\n\t\t\tthis.task_ids( this.task_ids().concat( id ) )\n\t\t\tthis.task_title_new( '' )\n\t\t}\n\n\t\t@ $mol_mem\n\t\ttask_rows() {\n\t\t\treturn this.task_ids_filtered().map( id => this.Task_row( id ) )\n\t\t}\n\t\t\n\t\ttask( id : number , next? : $mol_app_todomvc_task ) {\n\t\t\tconst key = this.state_key( `mol-todos-${id}` )\n\t\t\tif( next === void 0 ) {\n\t\t\t\treturn $mol_state_local.value<$mol_app_todomvc_task>( key ) || { title : '' , completed : false }\n\t\t\t}\n\t\t\t\n\t\t\t$mol_state_local.value( key , next )\n\t\t\t\n\t\t\treturn next || void 0\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttask_completed( id : number , next? : boolean ) {\n\t\t\treturn this.task( id , next === undefined ? undefined : { ... this.task( id ) , completed : next } ).completed\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttask_title( id : number , next? : string ) {\n\t\t\treturn this.task( id , next === undefined ? undefined : { ... this.task( id ) , title : next } ).title\n\t\t}\n\t\t\n\t\tevent_task_drop( id : number , next? : Event ) {\n\t\t\tthis.task( id , null )\n\t\t\tthis.task_ids( this.task_ids().filter( id2 => id !== id2 ) )\n\t\t}\n\n\t\tevent_sweep() {\n\t\t\tthis.task_ids( this.task_ids().filter( id => {\n\t\t\t\tif( !this.task( id ).completed ) return true\n\t\t\t\tthis.task( id , null )\n\t\t\t\treturn false\n\t\t\t} ) )\n\t\t}\n\t\t\n\t\tpanels() {\n\t\t\treturn [\n\t\t\t\tthis.Head() , \n\t\t\t\tthis.List() ,\n\t\t\t\t... this.foot_visible() ? [ this.Foot() ] : [] ,\n\t\t\t]\n\t\t}\n\t\t\n\t\tfoot_visible() {\n\t\t\treturn this.task_ids().length > 0\n\t\t}\n\n\t\tsweep_enabled() {\n\t\t\treturn this.groups_completed()[ 'true' ].length > 0\n\t\t}\n\t\t\n\t}\n\t\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../../../mol.jam.js","../../../func/name/name.ts","../../../object/object.ts","../../../conform/conform.ts","../../../log/log.ts","../../../log/log_context.ts","../../../log/log_debug.web.ts","../../../log/log_filter.web.ts","../../../log/log_group.ts","../../../defer/defer.ts","../../../state/stack/stack.ts","../../../atom/atom.ie.web.js","../../../atom/atom.ts","../../../mem/mem.ts","../../../window/window.web.ts","../../../dom/context/context.ts","../../../dom/context/context.web.ts","../../../dom/render/render.ts","../../../view/view.ts","../../../view/view.web.ts","../../../view/selection/selection.ts","../../../view/selection/selection.web.ts","code.ts","../../../string/-view.tree/string.view.tree.ts","../../../string/string.view.ts","../../../button/-view.tree/button.view.tree.ts","../../../button/button.view.ts","../../../button/-view.tree/button_types.view.tree.ts","../../../merge/dict/dict.ts","../../../state/arg/arg.web.ts","../../../link/-view.tree/link.view.tree.ts","../../../link/link.view.ts","../../../check/-view.tree/check.view.tree.ts","../../../check/check.view.ts","../../../scroll/-view.tree/scroll.view.tree.ts","../../../scroll/scroll.view.ts","../../../list/-view.tree/list.view.tree.ts","../../../list/list.view.ts","../../../bar/-view.tree/bar.view.tree.ts","../../../state/local/local.ts","../../../state/local/local.web.ts","../-view.tree/todomvc.view.tree.ts","../todomvc.view.ts"],"names":[],"mappings":"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","file":"web.js","sourcesContent":[null,"namespace $ {\n\t\n\texport var $mol_func_name_dict = new WeakMap< Function , string >()\n\n\texport function $mol_func_name( func : Function ) : string {\n\t\tlet name = $mol_func_name_dict.get( func )\n\t\tif( name != null ) return name\n\t\tname = func.name || Function.prototype.toString.call( func ).match( /([a-z0-9_$]*) ?(\\(|\\{|extends)/ )[ 1 ]\n\t\t$mol_func_name_dict.set( func , name )\n\t\t\n\t\treturn name\n\t}\n\n}\n","namespace $ {\n\n\texport namespace $$ { let $ }\n\t\n\texport type $mol_object_context = ( Window )&( typeof $.$$ )&( typeof $ )\n\t\n\texport class $mol_object {\n\t\t\n\t\tget $() {\n\t\t\tconst owner = this.object_owner()\n\t\t\treturn ( owner && owner.$ || $ ) as $mol_object_context\n\t\t}\n\t\t\n\t\tpublic static make< Instance >( this : { new() : Instance } , config : Partial< Instance > ) : Instance {\n\t\t\tconst instance = new this\n\t\t\tfor( let key in config ) instance[ key ] = config[ key ]\n\t\t\treturn instance\n\t\t}\n\t\t\n\t\tstatic toString() : string {\n\t\t\treturn $mol_func_name( this )\n\t\t}\n\t\t\n\t\t'object_owner()' : any\n\t\tobject_owner( next? : any ) {\n\t\t\treturn this[ 'object_owner()' ] || ( this[ 'object_owner()' ] = next )\n\t\t}\n\t\t\n\t\t'object_host()' : any\n\t\tobject_host( next? : any ) {\n\t\t\treturn this[ 'object_host()' ] || ( this[ 'object_host()' ] = next )\n\t\t}\n\t\t\n\t\t'object_field()' : string\n\t\tobject_field( next? : string ) {\n\t\t\treturn this[ 'object_field()' ] || ( this[ 'object_field()' ] = next ) || ''\n\t\t}\n\t\t\n\t\t'object_id()' : string\n\t\tobject_id( next? : string ) {\n\t\t\treturn this[ 'object_id()' ] || ( this[ 'object_id()' ] = next ) || ''\n\t\t}\n\n\t\ttoString() {\n\t\t\treturn this.object_id()\n\t\t}\n\t\t\n\t\ttoJSON() {\n\t\t\treturn this.toString()\n\t\t}\n\t\t\n\t\tdestructor() { }\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\tconst cache = new WeakMap< any , boolean >()\n\n\texport function $mol_conform< Target , Source >( target : Target , source : Source , stack : any[] = [] ) : Target {\n\n\t\tif( target as any === source as any ) return source as any\n\n\t\tif( !target || typeof target !== 'object' ) return target\n\t\tif( !source || typeof source !== 'object' ) return target\n\n\t\tif( target instanceof Error ) return target\n\t\tif( source instanceof Error ) return target\n\t\t\n\t\tif( target.constructor !== source.constructor ) return target\n\n\t\tif( cache.get( target ) ) return target\n\t\tcache.set( target , true )\n\t\t\n\t\tconst conform = $mol_conform_handlers.get( target.constructor )\n\t\tif( !conform ) return target\n\n\t\tif( stack.indexOf( target ) !== -1 ) return target\n\n\t\tstack.push( target )\n\n\t\tconst res = conform( target , source , stack )\n\n\t\tstack.pop()\n\n\t\treturn res\n\t}\n\n\texport const $mol_conform_handlers = new WeakMap< Object , ( target : any , source : any , stack : any[] )=> any >()\n\n\texport function $mol_conform_handler< Class >(\n\t\tcl : { new( ... args : any[] ) : Class } ,\n\t\thandler : ( target : Class , source : Class , stack : any[] )=> Class ,\n\t) {\n\t\t$mol_conform_handlers.set( cl , handler )\n\t}\n\n\t$mol_conform_handler( Array , ( target , source , stack )=> {\n\t\t\n\t\tlet equal = target.length === source.length\n\n\t\tfor( let i = 0 ; i < target.length ; ++i ) {\n\t\t\tconst conformed = target[i] = $mol_conform( target[i] , source[i] , stack )\n\t\t\tif( equal && conformed !== source[i] ) equal = false\n\t\t}\n\n\t\treturn equal ? source : target\n\t} )\n\n\t$mol_conform_handler( Object , ( target , source , stack )=> {\n\n\t\tlet count = 0\n\t\tlet equal = true\n\n\t\tfor( let key in target ) {\n\t\t\tconst conformed = target[key] = $mol_conform( target[key] , source[key] , stack )\n\t\t\tif( equal && conformed !== source[key] ) equal = false\n\t\t\t++ count\n\t\t}\n\n\t\tfor( let key in source ) if( -- count < 0 ) break\n\n\t\treturn ( equal && count === 0 ) ? source : target\n\t} )\n\n\t$mol_conform_handler( Date , ( target , source )=> ( target.getTime() === source.getTime() ) ? source : target )\n\n\t$mol_conform_handler( RegExp , ( target , source )=> ( target.toString() === source.toString() ) ? source : target )\n\n}\n","namespace $ {\n\n\texport function $mol_log( path : any , ... values : any[] ) {\n\t\t\n\t\tif( $mol_log_filter() == null ) return\n\t\t\n\t\tpath = String( path )\n\t\tif( path.indexOf( $mol_log_filter() ) === -1 ) return\n\t\t\n\t\tif( $mol_log_context() ) $mol_log_context()()\n\t\t\n\t\tconsole.debug( path , ... values.map( val => val instanceof Error ? { ... val } : val ) )\n\n\t\tif( $mol_log_debug() == null ) return\n\t\tif( path.indexOf( $mol_log_debug() ) === -1 ) return\n\t\t\n\t\tdebugger\n\t}\n\t\n}\n","namespace $ {\n\n\tlet context : ()=> void = null\n\texport function $mol_log_context( next = context ) {\n\t\treturn context = next\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_log_debug( next? : string ) {\n\n\t\tif( next !== undefined ) {\n\t\t\tif( next == null ) {\n\t\t\t\tsessionStorage.removeItem( '$mol_log_debug()' )\n\t\t\t} else {\n\t\t\t\tsessionStorage.setItem( '$mol_log_debug()' , next )\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn sessionStorage.getItem( '$mol_log_debug()' )\n\t}\n\n}\n","namespace $ {\n\t\n\tlet filter : string\n\texport function $mol_log_filter( next? : string ) {\n\n\t\tif( next !== undefined ) {\n\t\t\tif( next == null ) {\n\t\t\t\tsessionStorage.removeItem( '$mol_log_filter()' )\n\t\t\t} else {\n\t\t\t\tsessionStorage.setItem( '$mol_log_filter()' , next )\n\t\t\t}\n\n\t\t\tfilter = next\n\t\t}\n\n\t\tif( filter !== undefined ) return filter\n\t\t\n\t\treturn filter = sessionStorage.getItem( '$mol_log_filter()' )\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_log_group< Task extends Function >( name : string , task : Task ) {\n\t\t\n\t\treturn function $mol_log_group_wrapper( ... args : any [] ) {\n\t\t\tconst filter = $mol_log_filter()\n\t\t\tif( filter == null ) return task.apply( this , args )\n\n\t\t\tlet started = false\n\t\t\tlet prev = $mol_log_context()\n\n\t\t\t$mol_log_context( ()=> {\n\t\t\t\tif( prev ) prev()\n\t\t\t\tstarted = true\n\t\t\t\tif( filter ) console.group( name )\n\t\t\t\telse console.groupCollapsed( name )\n\t\t\t\t$mol_log_context( prev = null )\n\t\t\t} )\n\t\t\t\n\t\t\ttry {\n\t\t\t\treturn task.apply( this , args )\n\t\t\t} finally {\n\t\t\t\tif( started ) console.groupEnd()\n\t\t\t\t$mol_log_context( prev )\n\t\t\t}\n\n\t\t} as any as Task\n\n\t}\n\n}\n","namespace $ {\n\t\n\texport class $mol_defer extends $mol_object {\n\t\t\n\t\tconstructor( public run : ()=> void ) {\n\t\t\tsuper()\n\t\t\t$mol_defer.add( this )\n\t\t}\n\t\t\n\t\tdestructor() {\n\t\t\t$mol_defer.drop( this )\n\t\t}\n\t\t\n\t\tstatic all : $mol_defer[] = []\n\t\tstatic timer = 0\n\t\t\n\t\tstatic scheduleNative : ( handler : ()=> void ) => number = ( typeof requestAnimationFrame == 'function' )\n\t\t\t? handler => requestAnimationFrame( handler )\n\t\t\t: handler => setTimeout( handler , 16 )\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.timer ) return\n\t\t\t\n\t\t\tthis.timer = this.scheduleNative( ()=> {\n\t\t\t\tthis.timer = 0\n\t\t\t\tthis.run()\n\t\t\t} )\n\t\t}\n\t\t\n\t\tstatic unschedule() {\n\t\t\tif( !this.timer ) return\n\t\t\t\n\t\t\tcancelAnimationFrame( this.timer )\n\t\t\tthis.timer = 0\n\t\t}\n\t\t\n\t\tstatic add( defer : $mol_defer ) {\n\t\t\tthis.all.push( defer )\n\t\t\tthis.schedule()\n\t\t}\n\t\t\n\t\tstatic drop( defer : $mol_defer ) {\n\t\t\tvar index = this.all.indexOf( defer )\n\t\t\tif( index >= 0 ) this.all.splice( index , 1 )\n\t\t}\n\t\t\n\t\tstatic run() {\n\t\t\tif( this.all.length === 0 ) return\n\t\t\tthis.schedule()\n\t\t\tfor( var defer : $mol_defer ; defer = this.all.shift() ; ) defer.run()\n\t\t\t//this.unschedule()\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\t/// Global storage of temporary state\n\texport var $mol_state_stack = new Map< string , any >()\n\t\n}\n",null,"namespace $ {\n\t\n\texport enum $mol_atom_status {\n\t\tobsolete = 'obsolete' ,\n\t\tchecking = 'checking' ,\n\t\tpulling = 'pulling' ,\n\t\tactual = 'actual' ,\n\t}\n\t\n\texport class $mol_atom< Value = any > extends $mol_object {\n\t\t\n\t\tmasters : Set< $mol_atom > | null = null\n\t\tslaves : Set< $mol_atom > | null = null\n\t\t\n\t\tstatus = $mol_atom_status.obsolete\n\t\t\n\t\treadonly handler : ( next? : Value|Error , force? : $mol_atom_force )=> Value|void\n\n\t\t'value()' : Value|Error\n\t\t\n\t\tconstructor(\n\t\t\tid : string ,\n\t\t\thandler : ( next? : Value , force? : $mol_atom_force )=> Value|void = next => next ,\n\t\t) {\n\t\t\tsuper()\n\t\t\t\n\t\t\tthis.object_id( id )\n\t\t\tthis.handler = handler\n\t\t}\n\t\t\n\t\tdestructor() {\n\t\t\tthis.unlink()\n\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\n\t\t\tconst value = this['value()']\n\t\t\t\n\t\t\tif( value instanceof $mol_object ) {\n\t\t\t\tif( value.object_owner() === this ) value.destructor();\n\t\t\t}\n\n\t\t\tthis['value()'] = undefined\n\t\t}\n\t\t\n\t\tunlink() {\n\t\t\tthis.disobey_all()\n\t\t\tif( this.slaves ) this.check_slaves()\n\t\t}\n\t\t\n\t\tget( force? : $mol_atom_force ) {\n\t\t\t\n\t\t\tconst slave = $mol_atom.stack[0]\n\t\t\tif( slave ) {\n\t\t\t\tthis.lead( slave )\n\t\t\t\tslave.obey( this )\n\t\t\t}\n\t\t\t\n\t\t\tthis.actualize( force )\n\t\t\t\n\t\t\tconst value = this['value()'] as Value\n\t\t\t\n\t\t\tif( typeof Proxy !== 'function' && value instanceof Error ) {\n\t\t\t\tthrow value\n\t\t\t}\n\t\t\t\n\t\t\treturn value as Value\n\t\t}\n\t\t\n\t\tactualize( force? : $mol_atom_force ) {\n\t\t\t\n\t\t\tif( this.status === $mol_atom_status.pulling ) {\n\t\t\t\tthrow new Error( `Cyclic atom dependency of ${ this }` )\n\t\t\t}\n\t\t\t\n\t\t\tif( !force && this.status === $mol_atom_status.actual ) return\n\t\t\t\n\t\t\tconst slave = $mol_atom.stack[0]\n\t\t\t$mol_atom.stack[0] = this\n\t\t\t\n\t\t\tif( !force && this.status === $mol_atom_status.checking ) {\n\t\t\t\t\n\t\t\t\tthis.masters!.forEach(\n\t\t\t\t\tmaster => {\n\t\t\t\t\t\tif( this.status !== $mol_atom_status.checking ) return\n\t\t\t\t\t\tmaster.actualize()\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tif( this.status === $mol_atom_status.checking ) {\n\t\t\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif( force || this.status !== $mol_atom_status.actual ) {\n\t\t\t\t\n\t\t\t\tconst oldMasters = this.masters\n\t\t\t\tthis.masters = null\n\t\t\t\t\n\t\t\t\tif( oldMasters ) oldMasters.forEach(\n\t\t\t\t\tmaster => {\n\t\t\t\t\t\tmaster.dislead( this )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tthis.status = $mol_atom_status.pulling\n\t\t\t\tconst next = this.pull( force )\n\t\t\t\t\n\t\t\t\tif( next === undefined ) {\n\t\t\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\t} else {\n\t\t\t\t\tthis.push( next )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t$mol_atom.stack[0] = slave\n\t\t}\n\t\t\n\t\tpull( force? : $mol_atom_force ) {\n\t\t\ttry {\n\t\t\t\treturn this.handler( this._next , force )\n\t\t\t} catch( error ) {\n\t\t\t\tif( error[ '$mol_atom_catched' ] ) return error\n\t\t\t\tif( error instanceof $mol_atom_wait ) return error\n\t\t\t\t\n\t\t\t\tconsole.error( error.stack || error )\n\t\t\t\t\n\t\t\t\tif(!( error instanceof Error )) {\n\t\t\t\t\terror = new Error( error.stack || error )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\terror['$mol_atom_catched'] = true\n\t\t\t\treturn error\n\t\t\t}\n\t\t}\n\t\t\n\t\t_next : Value|Error\n\t\t_ignore : Value|Error\n\t\t\n\t\tset( next : Value ) {\n\t\t\treturn this.value( next )\n\t\t}\n\t\t\n\t\tpush( next_raw? : Value|Error ) : Value {\n\t\t\tif(!( next_raw instanceof $mol_atom_wait )) {\n\t\t\t\tthis._ignore = this._next\n\t\t\t\tthis._next = undefined\n\t\t\t}\n\t\t\t\n\t\t\tthis.status = next_raw === undefined ? $mol_atom_status.obsolete : $mol_atom_status.actual\n\t\t\t\n\t\t\tconst prev = this['value()']\n\t\t\t\n\t\t\tlet next = ( next_raw instanceof Error || prev instanceof Error ) ? next_raw : $mol_conform( next_raw , prev )\n\t\t\t\n\t\t\tif( next === prev ) return prev as Value\n\t\t\t\n\t\t\tif( prev instanceof $mol_object ) {\n\t\t\t\tif( prev.object_owner() === this ) prev.destructor()\n\t\t\t}\n\t\t\t\n\t\t\tif( next instanceof $mol_object ) {\n\t\t\t\tnext.object_owner( this )\n\t\t\t}\n\t\t\t\n\t\t\tif(( typeof Proxy === 'function' )&&( next instanceof Error )) {\n\t\t\t\tnext = new Proxy( next , {\n\t\t\t\t\tget( target : Error ) {\n\t\t\t\t\t\tthrow target.valueOf()\n\t\t\t\t\t} ,\n\t\t\t\t\townKeys( target : Error ) : string[] {\n\t\t\t\t\t\tthrow target.valueOf()\n\t\t\t\t\t} ,\n\t\t\t\t} )\n\t\t\t}\n\t\t\t\n\t\t\tthis['value()'] = next\n\t\t\t$mol_log( this , prev , '➔' , next )\n\t\t\t\n\t\t\tthis.obsolete_slaves()\n\t\t\t\n\t\t\treturn next as Value\n\t\t}\n\t\t\n\t\tobsolete_slaves() {\n\t\t\tif( !this.slaves ) return\n\t\t\t\n\t\t\tthis.slaves.forEach( slave => slave.obsolete() )\n\t\t}\n\t\t\n\t\tcheck_slaves() {\n\t\t\tif( this.slaves ) {\n\t\t\t\tthis.slaves.forEach( slave => slave.check() )\n\t\t\t} else {\n\t\t\t\t$mol_atom.actualize( this )\n\t\t\t}\n\t\t}\n\t\t\n\t\tcheck() {\n\t\t\t//if( this.status === $mol_atom_status.pulling ) {\n\t\t\t//\tthrow new Error( `May be obsolated while pulling ${ this }` )\n\t\t\t//}\n\t\t\t\n\t\t\tif( this.status === $mol_atom_status.actual ) {\n\t\t\t\tthis.status = $mol_atom_status.checking\n\t\t\t\t\n\t\t\t\tthis.check_slaves()\n\t\t\t}\n\t\t}\n\t\t\n\t\tobsolete() {\n\t\t\tif( this.status === $mol_atom_status.obsolete ) return\n\t\t\t\n\t\t\t//if( this.status === $mol_atom_status.pulling ) {\n\t\t\t//\tthrow new Error( `Obsolated while pulling ${ this }` )\n\t\t\t//} \n\t\t\t\n\t\t\tthis.status = $mol_atom_status.obsolete\n\t\t\t\n\t\t\tthis.check_slaves()\n\t\t\t\n\t\t\treturn\n\t\t}\n\t\t\n\t\tlead( slave : $mol_atom ) {\n\t\t\tif( !this.slaves ) {\n\t\t\t\tthis.slaves = new Set<$mol_atom>()\n\t\t\t\t$mol_atom.unreap( this )\n\t\t\t}\n\t\t\tthis.slaves.add( slave )\n\t\t}\n\t\t\n\t\tdislead( slave : $mol_atom ) {\n\t\t\tif( !this.slaves ) return\n\t\t\t\n\t\t\tif( this.slaves.size === 1 ) {\n\t\t\t\tthis.slaves = null\n\t\t\t\t$mol_atom.reap( this )\n\t\t\t} else {\n\t\t\t\tthis.slaves.delete( slave )\n\t\t\t}\n\t\t}\n\t\t\n\t\tobey( master : $mol_atom ) {\n\t\t\tif( !this.masters ) this.masters = new Set< $mol_atom >()\n\t\t\tthis.masters.add( master )\n\t\t}\n\t\t\n\t\tdisobey( master : $mol_atom ) {\n\t\t\tif( !this.masters ) return\n\t\t\tthis.masters.delete( master )\n\t\t}\n\t\t\n\t\tdisobey_all() {\n\t\t\tif( !this.masters ) return\n\t\t\t\n\t\t\tthis.masters.forEach( master => master.dislead( this ) )\n\t\t\t\n\t\t\tthis.masters = null\n\t\t}\n\n\t\tcache( next? : Value|Error ) {\n\t\t\tif( next === undefined ) return this['value()']\n\t\t\treturn this['value()'] = next\n\t\t}\n\t\t\n\t\tvalue( next? : Value , force? : $mol_atom_force ) : Value {\n\n\t\t\tif( force === $mol_atom_force_cache ) return this.push( next )\n\n\t\t\tif( next !== undefined ) {\n\t\t\t\t\n\t\t\t\tif( force === $mol_atom_force ) return this.push( next )\n\n\t\t\t\tlet next_normal = $mol_conform( next , this._ignore )\n\t\t\t\tif( next_normal === this._ignore ) return this.get( force )\n\n\t\t\t\tif(!( this['value()'] instanceof Error )) {\n\t\t\t\t\tnext_normal = $mol_conform( next , this['value()'] )\n\t\t\t\t\tif( next_normal === this['value()'] ) return this.get( force )\n\t\t\t\t}\n\n\t\t\t\tthis._next = next_normal\n\t\t\t\tthis._ignore = next_normal\n\n\t\t\t\tforce = $mol_atom_force_update\n\t\t\t}\n\t\t\t\n\t\t\treturn this.get( force )\n\t\t}\n\t\t\n\t\tstatic stack = [] as $mol_atom[]\n\t\tstatic updating : $mol_atom[] = []\n\t\tstatic reaping = new Set< $mol_atom >()\n\t\tstatic scheduled = false\n\t\t\n\t\tstatic actualize( atom : $mol_atom ) {\n\t\t\t$mol_atom.updating.push( atom )\n\t\t\t$mol_atom.schedule()\n\t\t}\n\t\t\n\t\tstatic reap( atom : $mol_atom ) {\n\t\t\t$mol_atom.reaping.add( atom )\n\t\t\t$mol_atom.schedule()\n\t\t}\n\t\t\n\t\tstatic unreap( atom : $mol_atom ) {\n\t\t\t$mol_atom.reaping.delete( atom )\n\t\t}\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.scheduled ) return\n\t\t\t\n\t\t\tnew $mol_defer(\n\t\t\t\t$mol_log_group( '$mol_atom.sync()' , () => {\n\t\t\t\t\tif( !this.scheduled ) return\n\t\t\t\t\tthis.scheduled = false\n\t\t\t\t\tthis.sync()\n\t\t\t\t} )\n\t\t\t)\n\t\t\t\n\t\t\tthis.scheduled = true\n\t\t}\n\t\t\n\t\tstatic sync() {\n\t\t\tthis.schedule()\n\t\t\t\n\t\t\twhile( true ) {\n\t\t\t\tconst atom = this.updating.shift()\n\t\t\t\tif( !atom ) break\n\t\t\t\tif( this.reaping.has( atom ) ) continue\n\t\t\t\tif( atom.status !== $mol_atom_status.actual ) atom.get()\n\t\t\t}\n\t\t\t\n\t\t\twhile( this.reaping.size ) {\n\t\t\t\tthis.reaping.forEach(\n\t\t\t\t\tatom => {\n\t\t\t\t\t\tthis.reaping.delete( atom )\n\t\t\t\t\t\tif( !atom.slaves ) atom.destructor()\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\t\n\t\t\tthis.scheduled = false\n\t\t}\n\t\t\n\t\tthen< Next >( done : ( prev? : Value )=> Next , fail? : ( error : Error )=> Next ) {\n\t\t\t\n\t\t\tlet prev : Value\n\t\t\tlet next : Next\n\t\t\t\n\t\t\tconst atom = new $mol_atom(\n\t\t\t\t`${ this }.then(${ done })` ,\n\t\t\t\t() => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( prev == undefined ) {\n\t\t\t\t\t\t\tconst val = this.get()\n\t\t\t\t\t\t\tif( val instanceof $mol_atom_wait ) return val\n\t\t\t\t\t\t\tif( val ) val.valueOf()\n\t\t\t\t\t\t\tprev = val\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( next == undefined ) {\n\t\t\t\t\t\t\tconst val = done( prev )\n\t\t\t\t\t\t\tif( val instanceof $mol_atom_wait ) return val\n\t\t\t\t\t\t\tif( val ) val.valueOf()\n\t\t\t\t\t\t\tnext = val\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn next\n\n\t\t\t\t\t} catch( error ) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( error instanceof $mol_atom_wait ) return error\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( fail ) return fail( error )\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn error\n\t\t\t\t\t}\n\n\t\t\t\t} ,\n\t\t\t)\n\t\t\t\n\t\t\t$mol_atom.actualize( atom )\n\t\t\t\n\t\t\treturn atom\n\t\t}\n\t\t\n\t\tcatch( fail : ( error : Error )=> Value ) {\n\t\t\treturn this.then( next => next , fail )\n\t\t}\n\t\t\n\t}\n\t\n\t$mol_state_stack.set( '$mol_atom.stack' , $mol_atom.stack )\n\n\texport function $mol_atom_current< Value = any >() {\n\t\treturn $mol_atom.stack[0] as $mol_atom< Value >\n\t}\n\t\n\texport class $mol_atom_wait extends Error {\n\t\tname = '$mol_atom_wait'\n\t}\n\t\n\texport class $mol_atom_force extends Object {\n\t\t$mol_atom_force : boolean\n\t\tstatic $mol_atom_force : boolean\n\t\tstatic toString() { return this.name }\n\t}\n\n\texport class $mol_atom_force_cache extends $mol_atom_force {}\n\texport class $mol_atom_force_update extends $mol_atom_force {}\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_mem< Host , Value >(\n\t\tobj? : Host ,\n\t\tname? : string ,\n\t\tdescr? : TypedPropertyDescriptor< ( next? : Value , force? : $mol_atom_force )=> Value >\n\t) {\n\n\t\tconst value = descr.value\n\t\tconst store = new WeakMap< Object , $mol_atom >()\n\t\t\n\t\tdescr.value = function $mol_mem_value( next? : Value , force? : $mol_atom_force ) {\n\t\t\tconst host : any = this\n\t\t\n\t\t\tlet atom : $mol_atom = store.get( host )\n\t\t\tif( !atom ) {\n\t\t\t\t\n\t\t\t\tconst id = `${ host }.${ name }()`\n\t\t\t\tatom = new $mol_atom( id , function() {\n\t\t\t\t\tconst v = value.apply( host , arguments )\n\t\t\t\t\tif( v instanceof $mol_object ) {\n\t\t\t\t\t\tif( !v.object_host() ) {\n\t\t\t\t\t\t\tv.object_host( host )\n\t\t\t\t\t\t\tv.object_field( name )\n\t\t\t\t\t\t\tv.object_id( id )\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn v\n\t\t\t\t} )\n\n\t\t\t\tatom.object_owner( host )\n\t\t\t\t\n\t\t\t\tconst destructor = atom.destructor\n\t\t\t\tatom.destructor = ()=> {\n\t\t\t\t\tstore.delete( host )\n\t\t\t\t\tdestructor.call( atom )\n\t\t\t\t}\n\n\t\t\t\tstore.set( host , atom )\n\t\t\t}\n\t\t\t\n\t\t\treturn atom.value( next , force )\n\t\t}\n\t\t\n\t\tObject.defineProperty( obj , name + \"()\" , { get : function() { return store.get( this ) } } )\n\n\t\tdescr.value[ 'value' ] = value\n\n\t\treturn descr\n\t}\n\t\n\texport function $mol_mem_key< Host , Key , Value >(\n\t\tobj : Host ,\n\t\tname : string ,\n\t\tdescr : TypedPropertyDescriptor< ( key : Key , next? : Value , force? : $mol_atom_force )=> Value >\n\t) {\n\t\tconst value = descr.value\n\t\tconst store = new WeakMap< Object , { [ key : string ] : $mol_atom } >()\n\t\t\n\t\tdescr.value = function $mol_mem_key_value( key : Key , next : Value , force? : $mol_atom_force ) {\n\t\t\tconst host : any = this\n\t\t\tconst key_str = JSON.stringify( key )\n\t\t\t\n\t\t\tlet dict = store.get( host )\n\t\t\tif( !dict ) store.set( host , dict = {} )\n\t\t\t\n\t\t\tlet atom : $mol_atom = dict[ key_str ]\n\t\t\tif( !atom ) {\n\t\t\t\t\n\t\t\t\tconst id = `${ host }.${ name }(${ key_str })`\n\t\t\t\tatom = new $mol_atom( id , function( ... args: any[] ) {\n\t\t\t\t\tconst v = value.apply( host , [ key , ... args ] )\n\t\t\t\t\tif( v instanceof $mol_object ) {\n\t\t\t\t\t\tif( !v.object_host() ) {\n\t\t\t\t\t\t\tv.object_host( host )\n\t\t\t\t\t\t\tv.object_field( name )\n\t\t\t\t\t\t\tv.object_id( id )\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn v\n\t\t\t\t} )\n\n\t\t\t\tconst destructor = atom.destructor\n\t\t\t\tatom.destructor = ()=> {\n\t\t\t\t\tdelete dict[ key_str ]\n\t\t\t\t\tdestructor.call( atom )\n\t\t\t\t}\n\n\t\t\t\tdict[ key_str ] = atom\n\n\t\t\t}\n\t\t\t\n\t\t\treturn atom.value( next , force )\n\t\t}\n\t\t\n\t\tObject.defineProperty( obj , name + \"()\" , { get : function() { return store.get( this ) } } )\n\t\tvoid( ( descr.value as any )[ 'value' ] = value )\n\n\t\treturn descr\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_window extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic size( next? : {\n\t\t\twidth : number\n\t\t\theight : number\n\t\t} , force? : $mol_atom_force ) {\n\t\t\treturn next || {\n\t\t\t\twidth : window.innerWidth ,\n\t\t\t\theight : window.innerHeight ,\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\twindow.addEventListener( 'resize' , $mol_log_group( `$mol_window resize` , ()=> {\n\t\t$mol_window.size( undefined , $mol_atom_force_cache )\n\t} ) )\n\t\n}\n","namespace $ {\n\t\n\texport var $mol_dom_context : Window & {\n\t\tNode : typeof Node\n\t\tElement : typeof Element\n\t\tHTMLElement : typeof HTMLElement\n\t\tXMLHttpRequest : typeof XMLHttpRequest\n\t}\n\t\n}\n","namespace $ {\n\t\n\t$mol_dom_context = window as any\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_dom_render_fields (\n\t\tel : Element ,\n\t\tfields : { [ key : string ] : any }\n\t) {\n\t\tfor( let key in fields ) {\n\t\t\t\n\t\t\tconst val : any = fields[ key ]\n\t\t\t\n\t\t\tif( val === undefined ) continue\n\t\t\tif( el[ key ] === val ) continue\n\t\t\t\n\t\t\tel[ key ] = val\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_children (\n\t\tel : Element ,\n\t\tchildNodes : NodeList | Array< Node | string | number | boolean | { dom_tree : ()=> Node } >\n\t) {\n\t\tconst node_list = [] as ( Node | string )[]\n\t\tconst node_set = new Set()\n\t\t\n\t\tfor( let i = 0 ; i < childNodes.length ; ++i ) {\n\t\t\tlet node = childNodes[ i ] as any\n\t\t\tif( node == null ) continue\n\t\t\tif( Object( node ) === node ) {\n\t\t\t\tif( node[ 'dom_tree' ] ) node = node[ 'dom_tree' ]()\n\t\t\t\tnode_list.push( node )\n\t\t\t\tnode_set.add( node )\n\t\t\t} else {\n\t\t\t\tnode_list.push( String( node ) )\n\t\t\t}\n\t\t}\n\t\t\n\t\tlet nextNode = el.firstChild\n\t\tfor( let view_ of node_list ) {\n\t\t\tconst view = view_.valueOf() as Node\n\t\t\t\n\t\t\tif( view instanceof $mol_dom_context.Node ) {\n\t\t\t\t\n\t\t\t\twhile( true ) {\n\t\t\t\t\tif( !nextNode ) {\n\t\t\t\t\t\tel.appendChild( view )\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tif( nextNode == view ) {\n\t\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t\t\tbreak\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif( node_set.has( nextNode ) ) {\n\t\t\t\t\t\t\tel.insertBefore( view , nextNode )\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst nn = nextNode.nextSibling\n\t\t\t\t\t\t\tel.removeChild( nextNode )\n\t\t\t\t\t\t\tnextNode = nn\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\tif( nextNode && nextNode.nodeName === '#text' ) {\n\t\t\t\t\tnextNode.nodeValue = String( view )\n\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t} else {\n\t\t\t\t\tconst textNode = $mol_dom_context.document.createTextNode( String( view ) )\n\t\t\t\t\tel.insertBefore( textNode , nextNode )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\twhile( nextNode ) {\n\t\t\tconst currNode = nextNode\n\t\t\tnextNode = currNode.nextSibling\n\t\t\tel.removeChild( currNode )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_attributes (\n\t\tel : Element ,\n\t\tattrs : { [ key : string ] : string|number|boolean }\n\t) {\n\t\tfor( let name in attrs ) {\n\t\t\tlet val = attrs[ name ] as any\n\t\t\tif( val === null || val === false ) el.removeAttribute( name )\n\t\t\telse el.setAttribute( name , String( val ) )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_styles (\n\t\tel : Element ,\n\t\tstyles : { [ key : string ] : string|number }\n\t) {\n\t\tfor( let name in styles ) {\n\t\t\tlet val = styles[ name ]\n\t\t\t\n\t\t\tconst style = ( el as HTMLElement ).style as any\n\t\t\tconst cur = style[ name ]\n\t\t\t\n\t\t\tif( typeof val === 'number' ) {\n\t\t\t\tif( parseFloat( cur ) == val ) continue\n\t\t\t\tstyle[ name ] = `${ val }px`\n\t\t\t}\n\t\t\t\n\t\t\tif( cur !== val ) style[ name ] = val\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_events (\n\t\tel : Element ,\n\t\tevents : { [ key : string ] : ( event : Event )=> any }\n\t) {\n\t\tfor( let name in events ) {\n\t\t\tel.addEventListener( name , $mol_log_group( el.id + ' ' + name , events[ name ] ) , { passive : false } as any )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_events_async (\n\t\tel : Element ,\n\t\tevents : { [ key : string ] : ( event : Event )=> any }\n\t) {\n\t\tfor( let name in events ) {\n\t\t\tel.addEventListener( name , $mol_log_group( el.id + ' ' + name , events[ name ] ) , { passive : true } as any )\n\t\t}\n\t}\n\t\n}\n","\nnamespace $ {\n\t\n\texport namespace $$ { let $$ }\n\texport namespace $mol { let $mol }\n\t\n\t/// Use $mol_object_context instead\n\texport type $mol_view_context = $mol_object_context\n\t\n\texport function $mol_view_visible_width() {\n\t\treturn $mol_window.size().width\n\t}\n\t\n\texport function $mol_view_visible_height() {\n\t\treturn $mol_window.size().height\n\t}\n\t\n\texport function $mol_view_state_key( suffix : string ) {\n\t\treturn suffix\n\t}\n\n\t/// Reactive statefull lazy ViewModel\n\texport class $mol_view extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic Root( id : number ) {\n\t\t\treturn new this\n\t\t}\n\n\t\t@ $mol_mem\n\t\tstatic autobind() {\n\t\t\tconst nodes = $mol_dom_context.document.querySelectorAll( '[mol_view_root]' )\n\t\t\t\n\t\t\tfor( let i = nodes.length - 1 ; i >= 0 ; --i ) {\n\t\t\t\tconst name = nodes.item( i ).getAttribute( 'mol_view_root' )\n\t\t\t\t\n\t\t\t\tconst View = $[ name ]\n\t\t\t\tif( !View ) {\n\t\t\t\t\tconsole.error( `Can not attach view. Class not found: ${ name }` )\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tconst view = View.Root( i )\n\t\t\t\t\n\t\t\t\tview.dom_tree( nodes.item( i ) )\n\t\t\t\t\n\t\t\t\tdocument.title = view.title()\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\ttitle() : string {\n\t\t\treturn this.constructor.toString()\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tfocused( next?: boolean ) {\n\t\t\tlet node = this.dom_node()\n\t\t\tconst value = $mol_view_selection.focused( next === undefined ? undefined : next ? [ node ] : [] ) || []\n\t\t\treturn value.indexOf( node ) !== -1\n\t\t} \n\t\t\n\t\t@ $mol_mem\n\t\tcontext( next? : $mol_object_context ) {\n\t\t\treturn next || $ as $mol_object_context\n\t\t}\n\t\tget $() {\n\t\t\treturn this.context()\n\t\t}\n\t\tset $( next : $mol_view_context ) {\n\t\t\tthis.context( next )\n\t\t}\n\t\t\n\t\tcontext_sub() {\n\t\t\treturn this.context()\n\t\t}\n\t\t\n\t\tstate_key( suffix = '' ) {\n\t\t\treturn this.$.$mol_view_state_key( suffix )\n\t\t}\n\t\t\n\t\t/// Name of element that created when element not found in DOM\n\t\tdom_name() {\n\t\t\treturn this.constructor.toString().replace( '$' , '' )\n\t\t}\n\t\t\n\t\t/// NameSpace of element that created when element not found in DOM\n\t\tdom_name_space() { return 'http://www.w3.org/1999/xhtml' }\n\t\t\n\t\t/// Raw child views\n\t\tsub() {\n\t\t\treturn null as Array<$mol_view|Node|string|number|boolean>\n\t\t}\n\t\t\n\t\t/// Visible sub views with defined context()\n\t\t/// Render all by default\n\t\tsub_visible() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return sub\n\t\t\t\n\t\t\tconst context = this.context_sub()\n\t\t\tsub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.$ = context\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn sub\n\t\t}\n\t\t\n\t\t/// Minimal width that used for lazy rendering\n\t\t@ $mol_mem\n\t\tminimal_width() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return 0\n\t\t\t\n\t\t\tlet min = 0\n\t\t\tsub.forEach( view => {\n\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\tmin = Math.max( min , view.minimal_width() )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn min\n\t\t}\n\t\t\n\t\t/// Minimal height that used for lazy rendering\n\t\tminimal_height() {\n\t\t\treturn this.content_height()\n\t\t}\n\n\t\t@ $mol_mem\n\t\tcontent_height() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return 0\n\t\t\t\n\t\t\tlet min = 0\n\t\t\tsub.forEach( view => {\n\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\tmin = Math.max( min , view.minimal_height() )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn min\n\t\t}\n\n\t\tdom_id() {\n\t\t\treturn this.toString()\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tdom_node( next? : Element ) {\n\t\t\tconst node = next || this.$.$mol_dom_context.document.createElementNS( this.dom_name_space() , this.dom_name() )\n\n\t\t\tnode.setAttribute( 'id' , this.dom_id() )\n\t\t\t$mol_dom_render_attributes( node , this.attr_static() )\n\t\t\t$mol_dom_render_events( node , this.event() )\n\t\t\t$mol_dom_render_events_async( node , this.event_async() )\n\n\t\t\treturn node\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tdom_tree( next? : Element ) : Element {\n\t\t\tconst node = this.dom_node( next )\n\t\t\t\n\t\t\ttry {\n\t\t\t\t\n\t\t\t\tfor( let plugin of this.plugins() ) plugin.render()\n\t\t\t\tthis.render()\n\t\t\t\t\n\t\t\t} catch( error ) {\n\t\t\t\t\n\t\t\t\t$mol_dom_render_attributes( node , { mol_view_error : error.name } )\n\t\t\t\t\n\t\t\t\tif( error instanceof $mol_atom_wait ) return node\n\t\t\t\t\n\t\t\t\ttry { void( ( node as HTMLElement ).innerText = error.message ) } catch( e ) {}\n\t\t\t\t\n\t\t\t\tif( error[ '$mol_atom_catched' ] ) return node\n\t\t\t\t\n\t\t\t\tconsole.error( error )\n\n\t\t\t\terror[ '$mol_atom_catched' ] = true\n\t\t\t}\n\t\t\t\n\t\t\treturn node\n\t\t}\n\t\t\n\t\trender() {\n\t\t\tconst node = this.dom_node()\n\t\t\t\n\t\t\tconst sub = this.sub_visible()\n\t\t\tif( sub ) $mol_dom_render_children( node , sub )\n\t\t\t\n\t\t\t$mol_dom_render_attributes( node , this.attr() )\n\t\t\t$mol_dom_render_styles( node , this.style() )\n\t\t\t\n\t\t\tconst fields = this.field()\n\t\t\t$mol_dom_render_fields( node , fields )\n\t\t\tnew $mol_defer( ()=> $mol_dom_render_fields( node , fields ) )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tstatic view_classes() {\n\t\t\tconst proto = this.prototype\n\t\t\t\n\t\t\tlet current = proto\n\t\t\tconst classes = [] as ( typeof $mol_view )[]\n\t\t\t\n\t\t\twhile( current ) {\n\t\t\t\tclasses.push( current.constructor as typeof $mol_view )\n\t\t\t\tif(!( current instanceof $mol_view )) break\n\t\t\t\tcurrent = Object.getPrototypeOf( current )\n\t\t\t}\n\t\t\t\n\t\t\treturn classes\n\t\t}\n\t\t\n\t\tview_names_owned() {\n\t\t\tconst names = [] as string[]\n\t\t\tlet owner = this.object_host()\n\n\t\t\tif( owner instanceof $mol_view ) {\n\n\t\t\t\tconst suffix = this.object_field()\n\t\t\t\tconst suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1)\n\t\t\t\t\n\t\t\t\tfor( let Class of ( owner.constructor as typeof $mol_view ).view_classes() ) {\n\t\t\t\t\tif( suffix in Class.prototype ) names.push( $mol_func_name( Class ) + suffix2 )\n\t\t\t\t\telse break\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor( let prefix of owner.view_names_owned() ) {\n\t\t\t\t\tnames.push( prefix + suffix2 )\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn names\n\t\t}\n\n\t\t@ $mol_mem\n\t\tview_names() {\n\t\t\tconst names = [] as string[]\n\t\t\t\n\t\t\tfor( let name of this.view_names_owned() ) {\n\t\t\t\tif( names.indexOf( name ) < 0 ) names.push( name )\n\t\t\t}\n\n\t\t\tfor( let Class of ( this.constructor as typeof $mol_view ).view_classes() ) {\n\t\t\t\tconst name = $mol_func_name( Class )\n\t\t\t\tif( names.indexOf( name ) < 0 ) names.push( name )\n\t\t\t}\n\n\t\t\treturn names\n\t\t}\n\t\t\n\t\tattr_static() : { [ key : string ] : string|number|boolean } {\n\t\t\tlet attrs : any = {}\n\t\t\t\n\t\t\tfor( let name of this.view_names() ) attrs[ name.replace( /\\$/g , '' ).toLowerCase() ] = ''\n\t\t\t\n\t\t\treturn attrs\n\t\t}\n\t\t\n\t\tattr() : { [ key : string ] : string|number|boolean } {\n\t\t\treturn {\n\t\t\t\t'mol_view_error' : false ,\n\t\t\t}\n\t\t}\n\t\t\n\t\tstyle() : { [ key : string ] : string|number } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tfield() : { [ key : string ] : any } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tevent() : { [ key : string ] : ( event : Event )=> void } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tevent_async() : { [ key : string ] : ( event : Event )=> void } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tplugins() {\n\t\t\treturn [] as $mol_view[]\n\t\t}\n\t\t\n\t}\n\t\n}\n","interface Window {\n\tcordova : any\n}\n\nnamespace $ {\n\n\t/// Autoattach view roots to loaded DOM.\n\tconst event_name = window.cordova ? 'deviceready' : 'DOMContentLoaded'\n\t$mol_dom_context.document.addEventListener( event_name , $mol_log_group( `$mol_view ${ event_name }` , ( event : Event )=> {\n\t\t$mol_view.autobind()\n\t\t$mol_defer.run()\n\t} ) )\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_view_selection extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic focused( next? : Element[] , force? : $mol_atom_force ) {\n\t\t\tif( next === undefined ) return [] as Element[]\n\t\t\t\n\t\t\tconst node = next[ 0 ] as HTMLElement\n\t\t\t\n\t\t\tconst atom = $mol_atom_current< HTMLElement >()\n\t\t\tnew $mol_defer( ()=> {\n\t\t\t\tif( node ) return node.focus()\n\n\t\t\t\tconst el = atom.cache()[0]\n\t\t\t\tif( el ) el.blur()\n\t\t\t} )\n\n\t\t\treturn undefined\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic position( ...diff : any[] ) {\n\t\t\tif( diff.length ) {\n\t\t\t\tif( !diff[ 0 ] ) return diff[ 0 ]\n\t\t\t\t\n\t\t\t\tvar start = diff[ 0 ].start\n\t\t\t\tvar end = diff[ 0 ].end\n\t\t\t\tif( !( start <= end ) ) throw new Error( `Wrong offsets (${start},${end})` )\n\t\t\t\t\n\t\t\t\tvar root = $mol_dom_context.document.getElementById( diff[ 0 ].id )\n\t\t\t\troot.focus()\n\t\t\t\t\n\t\t\t\tvar range = new Range\n\t\t\t\t\n\t\t\t\tvar cur = root.firstChild\n\t\t\t\twhile( cur !== root ) {\n\t\t\t\t\twhile( cur.firstChild ) cur = cur.firstChild\n\t\t\t\t\tif( cur.nodeValue ) {\n\t\t\t\t\t\tvar length = cur.nodeValue.length\n\t\t\t\t\t\tif( length >= start ) break\n\t\t\t\t\t\tstart -= length\n\t\t\t\t\t}\n\t\t\t\t\twhile( !cur.nextSibling ) {\n\t\t\t\t\t\tcur = cur.parentNode\n\t\t\t\t\t\tif( cur === root ) {\n\t\t\t\t\t\t\tstart = root.childNodes.length\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trange.setStart( cur , start )\n\t\t\t\t\n\t\t\t\tvar cur = root.firstChild\n\t\t\t\twhile( cur !== root ) {\n\t\t\t\t\twhile( cur.firstChild ) cur = cur.firstChild\n\t\t\t\t\tif( cur.nodeValue ) {\n\t\t\t\t\t\tvar length = cur.nodeValue.length\n\t\t\t\t\t\tif( length >= end ) break\n\t\t\t\t\t\tend -= length\n\t\t\t\t\t}\n\t\t\t\t\twhile( !cur.nextSibling ) {\n\t\t\t\t\t\tcur = cur.parentNode\n\t\t\t\t\t\tif( cur === root ) {\n\t\t\t\t\t\t\tend = root.childNodes.length\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trange.setEnd( cur , end )\n\t\t\t\t\n\t\t\t\tvar sel = $mol_dom_context.document.getSelection()\n\t\t\t\tsel.removeAllRanges()\n\t\t\t\tsel.addRange( range )\n\t\t\t\t\n\t\t\t\treturn diff[ 0 ]\n\t\t\t} else {\n\t\t\t\tvar sel = $mol_dom_context.document.getSelection()\n\t\t\t\tif( sel.rangeCount === 0 ) return null\n\t\t\t\tvar range = sel.getRangeAt( 0 )\n\t\t\t\t\n\t\t\t\tvar el = range.commonAncestorContainer as Element\n\t\t\t\twhile( el && !el.id ) el = el.parentElement\n\t\t\t\t\n\t\t\t\tif( !el ) return { id : null , start : 0 , end : 0 }\n\t\t\t\t\n\t\t\t\tvar meter = new Range\n\t\t\t\tmeter.selectNodeContents( el )\n\t\t\t\t\n\t\t\t\tmeter.setEnd( range.startContainer , range.startOffset )\n\t\t\t\tvar startOffset = meter.toString().length\n\t\t\t\t\n\t\t\t\tmeter.setEnd( range.endContainer , range.endOffset )\n\t\t\t\tvar endOffset = meter.toString().length\n\t\t\t\t\n\t\t\t\treturn { id : el.id , start : startOffset , end : endOffset }\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic onFocus( event : FocusEvent ) {\n\t\t\tconst parents : Element[] = []\n\t\t\tlet element = event.target as HTMLElement\n\t\t\t\n\t\t\twhile( element ) {\n\t\t\t\tparents.push( element )\n\t\t\t\telement = element.parentNode as HTMLElement\n\t\t\t}\n\n\t\t\tthis.focused( parents , $mol_atom_force_cache )\n\t\t}\n\t\t\n\t\tstatic onBlur( event : FocusEvent ) {\n\t\t\tconst focused = this.focused()\n\t\t\tsetTimeout( $mol_log_group( '$mol_view_selection blur' , ()=> {\n\t\t\t\tif( focused !== this.focused() ) return\n\t\t\t\tthis.focused( [] , $mol_atom_force_cache )\n\t\t\t} ) )\n\t\t}\n\t}\n\t\n}\n","namespace $ {\n\t\n\t$mol_dom_context.document.addEventListener( 'selectionchange' , event => {\n\t\t$mol_view_selection.position( undefined , $mol_atom_force_cache )\n\t} )\n\t\n\t$mol_dom_context.document.addEventListener(\n\t\t'focus' ,\n\t\t$mol_log_group( '$mol_view_selection focus' , ( event : FocusEvent )=> $mol_view_selection.onFocus( event ) ) ,\n\t\ttrue\n\t)\n\t\n\t$mol_dom_context.document.addEventListener(\n\t\t'blur' ,\n\t\t( event : FocusEvent )=> $mol_view_selection.onBlur( event ) ,\n\t\ttrue\n\t)\n\t\n}\n","namespace $ {\n export const enum $mol_keyboard_code {\n backspace = 8,\n tab = 9,\n enter = 13,\n shift= 16,\n ctrl = 17,\n alt = 18,\n pause = 19,\n capsLock = 20,\n escape = 27,\n space = 32,\n pageUp = 33,\n pageDown = 34,\n end = 35,\n home = 36,\n left = 37,\n up = 38,\n right = 39,\n down = 40,\n insert = 45,\n delete = 46,\n key0 = 48,\n key1 = 49,\n key2 = 50,\n key3 = 51,\n key4 = 52,\n key5 = 53,\n key6 = 54,\n key7 = 55,\n key8 = 56,\n key9 = 57,\n A = 65,\n B = 66,\n C = 67,\n D = 68,\n E = 69,\n F = 70,\n G = 71,\n H = 72,\n I = 73,\n J = 74,\n K = 75,\n L = 76,\n M = 77,\n N = 78,\n O = 79,\n P = 80,\n Q = 81,\n R = 82,\n S = 83,\n T = 84,\n U = 85,\n V = 86,\n W = 87,\n X = 88,\n Y = 89,\n Z = 90,\n metaLeft = 91,\n metaRight = 92,\n select = 93,\n numpad0 = 96,\n numpad1 = 97,\n numpad2 = 98,\n numpad3 = 99,\n numpad4 = 100,\n numpad5 = 101,\n numpad6 = 102,\n numpad7 = 103,\n numpad8 = 104,\n numpad9 = 105,\n multiply = 106,\n add = 107,\n subtract = 109,\n decimal = 110,\n divide = 111,\n F1 = 112,\n F2 = 113,\n F3 = 114,\n F4 = 115,\n F5 = 116,\n F6 = 117,\n F7 = 118,\n F8 = 119,\n F9 = 120,\n F10 = 121,\n F11 = 122,\n F12 = 123,\n numLock = 144,\n scrollLock = 145,\n semicolon = 186,\n equals = 187,\n comma = 188,\n dash = 189,\n period = 190,\n forwardSlash = 191,\n graveAccent = 192,\n bracketOpen = 219,\n slashBack = 220,\n bracketClose = 221,\n quoteSingle = 222\n }\n}\n","namespace $ { export class $mol_string extends $mol_view {\n\n\t/// dom_name \\input\n\tdom_name() {\n\t\treturn \"input\"\n\t}\n\n\t/// enabled true\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/// debounce 200\n\tdebounce() {\n\t\treturn 200\n\t}\n\n\t/// minimal_height 40\n\tminimal_height() {\n\t\treturn 40\n\t}\n\n\t/// field * \n\t/// \t^ \n\t/// \tdisabled <= disabled - \n\t/// \tvalue <= value_changed?val - \n\t/// \tplaceholder <= hint - \n\t/// \ttype <= type?val -\n\tfield() {\n\t\treturn ({\n\t\t\t...super.field() ,\n\t\t\t\"disabled\" : this.disabled() ,\n\t\t\t\"value\" : this.value_changed() ,\n\t\t\t\"placeholder\" : this.hint() ,\n\t\t\t\"type\" : this.type() ,\n\t\t})\n\t}\n\n\t/// disabled false\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/// value_changed?val <=> value?val -\n\t@ $mol_mem\n\tvalue_changed( val? : any , force? : $mol_atom_force ) {\n\t\treturn this.value( val )\n\t}\n\n\t/// value?val \\\n\t@ $mol_mem\n\tvalue( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// type?val \\text\n\t@ $mol_mem\n\ttype( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"text\"\n\t}\n\n\t/// attr * \n\t/// \t^ \n\t/// \tmaxlength <= length_max -\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"maxlength\" : this.length_max() ,\n\t\t})\n\t}\n\n\t/// length_max Infinity\n\tlength_max() {\n\t\treturn Infinity\n\t}\n\n\t/// event * \n\t/// \t^ \n\t/// \tinput?event <=> event_change?event - \n\t/// \tkeypress?event <=> event_key_press?event -\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"input\" : ( event? : any )=> this.event_change( event ) ,\n\t\t\t\"keypress\" : ( event? : any )=> this.event_key_press( event ) ,\n\t\t})\n\t}\n\n\t/// event_change?event null\n\t@ $mol_mem\n\tevent_change( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// event_key_press?event null\n\t@ $mol_mem\n\tevent_key_press( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_string extends $.$mol_string {\n\t\t\n\t\t_timer = 0\n\t\t\n\t\tevent_change( next? : Event ) {\n\t\t\tif( !next ) return\n\t\t\t\n\t\t\tclearTimeout( this._timer )\n\t\t\tthis._timer = setTimeout( $mol_log_group( `${ this }.event_change()` , () => {\n\t\t\t\tthis.value( ( next.target as HTMLInputElement ).value ) \n\t\t\t} ) , this.debounce() )\n\t\t}\n\t\t\n\t\tevent_key_press( next? : KeyboardEvent ) { \n\t\t\tif( !next ) return\n\t\t\t\n\t\t\tif( next.keyCode === $mol_keyboard_code.enter ) {\n\t\t\t\tthis.value( ( next.target as HTMLInputElement ).value )\n\t\t\t}\n\t\t} \n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t}\n}\n","namespace $ { export class $mol_button extends $mol_view {\n\n\t/// enabled true\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/// minimal_height 40\n\tminimal_height() {\n\t\treturn 40\n\t}\n\n\t/// click?event null\n\t@ $mol_mem\n\tclick( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// event_click?event null\n\t@ $mol_mem\n\tevent_click( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// event * \n\t/// \t^ \n\t/// \tclick?event <=> event_activate?event - \n\t/// \tkeypress?event <=> event_key_press?event -\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"click\" : ( event? : any )=> this.event_activate( event ) ,\n\t\t\t\"keypress\" : ( event? : any )=> this.event_key_press( event ) ,\n\t\t})\n\t}\n\n\t/// event_activate?event null\n\t@ $mol_mem\n\tevent_activate( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// event_key_press?event null\n\t@ $mol_mem\n\tevent_key_press( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// attr * \n\t/// \t^ \n\t/// \tdisabled <= disabled - \n\t/// \trole \\button\n\t/// \ttabindex <= tab_index - \n\t/// \ttitle <= hint -\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"disabled\" : this.disabled() ,\n\t\t\t\"role\" : \"button\" ,\n\t\t\t\"tabindex\" : this.tab_index() ,\n\t\t\t\"title\" : this.hint() ,\n\t\t})\n\t}\n\n\t/// disabled false\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/// tab_index 0\n\ttab_index() {\n\t\treturn 0\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// sub / <= title -\n\tsub() {\n\t\treturn [].concat( this.title() )\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_button extends $.$mol_button {\n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t\t\n\t\tevent_activate( next : Event ) {\n\t\t\tif( !next ) return\n\t\t\tif( !this.enabled() ) return\n\t\t\t\n\t\t\tthis.event_click( next )\n\t\t\tthis.click( next )\n\t\t}\n\t\t\n\t\tevent_key_press ( event: KeyboardEvent ) { \n\t\t\tif( event.keyCode === $mol_keyboard_code.enter ) {\n\t\t\t\treturn this.event_activate( event )\n\t\t\t}\n\t\t} \n\t\t\n\t\ttab_index() {\n\t\t\treturn this.enabled() ? super.tab_index() : null\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { export class $mol_button_typed extends $mol_button {\n\n} }\n\nnamespace $ { export class $mol_button_major extends $mol_button_typed {\n\n} }\n\nnamespace $ { export class $mol_button_minor extends $mol_button_typed {\n\n} }\n\nnamespace $ { export class $mol_button_danger extends $mol_button_typed {\n\n} }\n\n","namespace $ {\n\t\n\texport function $mol_merge_dict< Target , Source >( target : Target , source : Source ) : Target & Source {\n\t\tlet result = {} as any\n\t\tfor( let key in target ) result[ key ] = ( target as any )[ key ]\n\t\tfor( let key in source ) result[ key ] = ( source as any )[ key ]\n\t\treturn result\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_state_arg< Value > extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic href( next? : string , force? : $mol_atom_force ) {\n\t\t\tif( next ) history.replaceState( history.state , $mol_dom_context.document.title , `${ next }` )\n\t\t\treturn window.location.search + window.location.hash\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic dict( next? : { [ key : string ] : string } ) {\n\t\t\tvar href = this.href( next && this.make_link( next ) )\n\t\t\tvar chunks = href.split( /[\\/\\?#&;]/g )\n\t\t\t\n\t\t\tvar params : { [ key : string ] : string } = {}\n\t\t\tchunks.forEach(\n\t\t\t\tchunk => {\n\t\t\t\t\tif( !chunk ) return\n\t\t\t\t\tvar vals = chunk.split( '=' ).map( decodeURIComponent )\n\t\t\t\t\tparams[ vals.shift() ] = vals.join( '=' )\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\treturn params\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic value( key : string , next? : string ) {\n\t\t\tconst nextDict = ( next === void 0 ) ? void 0 : $mol_merge_dict( this.dict() , { [ key ] : next } ) \n\t\t\tconst next2 = this.dict( nextDict )[ key ]\n\t\t\treturn ( next2 == null ) ? null : next2\n\t\t}\n\t\t\n\t\tstatic link( next : { [ key : string ] : string } ) {\n\t\t\treturn this.make_link( $mol_merge_dict( this.dict() , next ) )\n\t\t}\n\t\t\n\t\tstatic make_link( next : { [ key : string ] : string } ) {\n\t\t\tconst chunks : string[] = []\n\t\t\tfor( let key in next ) {\n\t\t\t\tif( null == next[ key ] ) continue\n\t\t\t\tchunks.push( [ key ].concat( next[ key ] ? next[ key ] : [] ).map( this.encode ).join( '=' ) )\n\t\t\t}\n\t\t\t\n\t\t\treturn new URL( '#' + chunks.join( '/' ) , window.location.href ).toString()\n\t\t}\n\n\t\tstatic encode( str : string ) {\n\t\t\treturn encodeURIComponent( str ).replace( /\\(/g , '%28' ).replace( /\\)/g , '%29' )\n\t\t}\n\t\t\n\t\tconstructor( public prefix = '' ) {\n\t\t\tsuper()\n\t\t}\n\t\t\n\t\tvalue( key : string , next? : string ) {\n\t\t\treturn $mol_state_arg.value( this.prefix + key , next )\n\t\t}\n\t\t\n\t\tsub( postfix : string ) {\n\t\t\treturn new $mol_state_arg( this.prefix + postfix + '.' )\n\t\t}\n\t\t\n\t\tlink( next : { [ key : string ] : string } ) {\n\t\t\tvar prefix = this.prefix\n\t\t\tvar dict : { [ key : string ] : string } = {}\n\t\t\tfor( var key in next ) {\n\t\t\t\tdict[ prefix + key ] = next[ key ]\n\t\t\t}\n\t\t\treturn $mol_state_arg.link( dict )\n\t\t}\n\t\t\n\t}\n\t\n\twindow.addEventListener( 'hashchange' , $mol_log_group( '$mol_state_arg hashchange' , ( event : HashChangeEvent )=> {\n\t\t$mol_state_arg.href( undefined , $mol_atom_force_cache ) \n\t} ) )\n\t\n}\n","namespace $ { export class $mol_link extends $mol_view {\n\n\t/// minimal_height 40\n\tminimal_height() {\n\t\treturn 40\n\t}\n\n\t/// dom_name \\a\n\tdom_name() {\n\t\treturn \"a\"\n\t}\n\n\t/// attr * \n\t/// \t^ \n\t/// \thref <= uri - \n\t/// \ttitle <= hint - \n\t/// \ttarget <= target - \n\t/// \tdownload <= file_name - \n\t/// \tmol_link_current <= current -\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"href\" : this.uri() ,\n\t\t\t\"title\" : this.hint() ,\n\t\t\t\"target\" : this.target() ,\n\t\t\t\"download\" : this.file_name() ,\n\t\t\t\"mol_link_current\" : this.current() ,\n\t\t})\n\t}\n\n\t/// uri \\\n\turi() {\n\t\treturn \"\"\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// target \\_self\n\ttarget() {\n\t\treturn \"_self\"\n\t}\n\n\t/// file_name \\\n\tfile_name() {\n\t\treturn \"\"\n\t}\n\n\t/// current false\n\tcurrent() {\n\t\treturn false\n\t}\n\n\t/// sub / <= title -\n\tsub() {\n\t\treturn [].concat( this.title() )\n\t}\n\n\t/// arg *\n\targ() {\n\t\treturn ({\n\t\t})\n\t}\n\n\t/// event * \n\t/// \t^ \n\t/// \tclick?event <=> click?event -\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"click\" : ( event? : any )=> this.click( event ) ,\n\t\t})\n\t}\n\n\t/// click?event <=> event_click?event -\n\t@ $mol_mem\n\tclick( event? : any , force? : $mol_atom_force ) {\n\t\treturn this.event_click( event )\n\t}\n\n\t/// event_click?event null\n\t@ $mol_mem\n\tevent_click( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\n","namespace $.$$ {\n\t\n\texport class $mol_link extends $.$mol_link {\n\t\t\n\t\t@ $mol_mem\n\t\turi() {\n\t\t\treturn new $mol_state_arg( this.state_key() ).link( this.arg() )\n\t\t}\n\t\t\n\t\tcurrent() {\n\t\t\treturn this.uri() === $mol_state_arg.link( {} )\n\t\t}\n\n\t\tevent_click( event? : Event ) {\n\t\t\tsetTimeout( $mol_log_group( `${ this }.event_click()` , ()=> this.focused( false ) ) , 200 )\n\t\t}\n\n\t\tfile_name() {\n\t\t\treturn null as string\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_check extends $mol_button_typed {\n\n\t/// attr * \n\t/// \t^ \n\t/// \tmol_check_checked <= checked?val - \n\t/// \taria-checked <= checked?val - \n\t/// \trole \\checkbox\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"mol_check_checked\" : this.checked() ,\n\t\t\t\"aria-checked\" : this.checked() ,\n\t\t\t\"role\" : \"checkbox\" ,\n\t\t})\n\t}\n\n\t/// checked?val false\n\t@ $mol_mem\n\tchecked( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// sub / \n\t/// \t<= Icon - \n\t/// \t<= label -\n\tsub() {\n\t\treturn [].concat( this.Icon() , this.label() )\n\t}\n\n\t/// Icon null\n\tIcon() {\n\t\treturn null as any\n\t}\n\n\t/// label / <= Title -\n\tlabel() {\n\t\treturn [].concat( this.Title() )\n\t}\n\n\t/// Title $mol_view sub / <= title -\n\t@ $mol_mem\n\tTitle() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.title() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// title \\\n\ttitle() {\n\t\treturn \"\"\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_check extends $.$mol_check {\n\n\t\tevent_click( next? : Event ) {\n\t\t\tthis.checked( !this.checked() )\n\t\t\tif( next ) next.preventDefault()\n\t\t}\n\n\t}\n}\n","namespace $ { export class $mol_scroll extends $mol_view {\n\n\t/// minimal_height 0\n\tminimal_height() {\n\t\treturn 0\n\t}\n\n\t/// moving_hor?val false\n\t@ $mol_mem\n\tmoving_hor( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// moving_vert?val false\n\t@ $mol_mem\n\tmoving_vert( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// field * \n\t/// \t^ \n\t/// \tscrollTop <= scroll_top?val - \n\t/// \tscrollLeft <= scroll_left?val - \n\t/// \tscrollBottom <= scroll_bottom?val - \n\t/// \tscrollRight <= scroll_right?val -\n\tfield() {\n\t\treturn ({\n\t\t\t...super.field() ,\n\t\t\t\"scrollTop\" : this.scroll_top() ,\n\t\t\t\"scrollLeft\" : this.scroll_left() ,\n\t\t\t\"scrollBottom\" : this.scroll_bottom() ,\n\t\t\t\"scrollRight\" : this.scroll_right() ,\n\t\t})\n\t}\n\n\t/// scroll_top?val 0\n\t@ $mol_mem\n\tscroll_top( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// scroll_left?val 0\n\t@ $mol_mem\n\tscroll_left( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// scroll_bottom?val 0\n\t@ $mol_mem\n\tscroll_bottom( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// scroll_right?val 0\n\t@ $mol_mem\n\tscroll_right( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// event_async * \n\t/// \t^ \n\t/// \tscroll?event <=> event_scroll?event -\n\tevent_async() {\n\t\treturn ({\n\t\t\t...super.event_async() ,\n\t\t\t\"scroll\" : ( event? : any )=> this.event_scroll( event ) ,\n\t\t})\n\t}\n\n\t/// event_scroll?event null\n\t@ $mol_mem\n\tevent_scroll( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// Strut $mol_view style * transform <= strut_transform -\n\t@ $mol_mem\n\tStrut() {\n\t\treturn (( obj )=>{\n\t\t\tobj.style = () => ({\n\t\t\t\"transform\" : this.strut_transform() ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// strut_transform \\\n\tstrut_transform() {\n\t\treturn \"\"\n\t}\n\n} }\n\n","namespace $.$$ {\n\t\n\texport function $mol_scroll_top() {\n\t\treturn 0\n\t}\n\t\n\texport function $mol_scroll_left() {\n\t\treturn 0\n\t}\n\t\n\texport function $mol_scroll_moving() {\n\t\treturn false\n\t}\n\t\n\texport function $mol_scroll_moving_vert() {\n\t\treturn false\n\t}\n\t\n\texport function $mol_scroll_moving_hor() {\n\t\treturn false\n\t}\n\t\n\texport class $mol_scroll extends $.$mol_scroll {\n\n\t\t// scroll_top( next? : number ) {\n\t\t// \treturn $mol_state_session.value( `${ this }.scroll_top()` , next ) || 0\n\t\t// }\n\t\t// \n\t\t// scroll_left( next? : number ) {\n\t\t// \treturn $mol_state_session.value( `${ this }.scroll_left()` , next ) || 0\n\t\t// }\n\t\t\n\t\t@ $mol_mem\n\t\tscroll_bottom( next? : number ) {\n\t\t\treturn next || 0\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tscroll_right( next? : number ) {\n\t\t\treturn next || 0\n\t\t}\n\t\t\n\t\tevent_scroll( next? : Event ) {\n\t\t\tthis.moving_vert( this.scroll_top() !== this.dom_node().scrollTop )\n\t\t\tthis.moving_hor( this.scroll_left() !== this.dom_node().scrollLeft )\n\t\t\tthis.moving_task_stop()\n\t\t\t\n\t\t\tnew $mol_defer( $mol_log_group( `${ this }.event_scroll()` , ()=> {\n\t\t\t\tconst el = this.dom_node() as HTMLElement\n\t\t\t\t\n\t\t\t\tconst top = Math.max( 0 , el.scrollTop )\n\t\t\t\tconst left = Math.max( 0 , el.scrollLeft )\n\t\t\t\t\n\t\t\t\tthis.scroll_top( top )\n\t\t\t\tthis.scroll_left( left )\n\t\t\t\t\n\t\t\t\tthis.scroll_bottom( Math.max( 0 , el.scrollHeight - top - el.offsetHeight ) )\n\t\t\t\tthis.scroll_right( Math.max( 0 , el.scrollWidth - left - el.offsetWidth ) )\n\t\t\t} ) )\n\t\t}\n\t\t\n\t\tevent_repos( next? : Event ) {\n\t\t\tnew $mol_defer( ()=> {\n\t\t\t\tconst el = this.dom_node() as HTMLElement\n\t\t\t\t\n\t\t\t\tthis.scroll_bottom( Math.max( 0 , el.scrollHeight - this.scroll_top() - el.offsetHeight ) )\n\t\t\t\tthis.scroll_right( Math.max( 0 , el.scrollWidth - this.scroll_left() - el.offsetWidth ) )\n\t\t\t} )\n\t\t}\n\t\t\n\t\t_moving_task_timer = 0\n\t\tmoving_task_stop() {\n\t\t\tclearTimeout( this._moving_task_timer )\n\t\t\tthis._moving_task_timer = setTimeout( $mol_log_group( `${ this }.moving_task_stop()` , ()=> {\n\t\t\t\tthis.moving_vert( false )\n\t\t\t\tthis.moving_hor( false )\n\t\t\t} ) , 50 )\n\t\t}\n\t\t\n\t\tmoving() {\n\t\t\treturn this.moving_hor() || this.moving_vert()\n\t\t}\n\n\t\t@ $mol_mem\n\t\tcontext_sub( ) {\n\t\t\tconst context = this.context()\n\t\t\tconst subContext : typeof context = Object.create( context )\n\t\t\tsubContext.$mol_view_visible_height = ()=> {\n\t\t\t\tconst sizeWin = $mol_window.size()\n\t\t\t\tconst limit = context.$mol_view_visible_height()\n\t\t\t\treturn this.scroll_top() + Math.min( sizeWin.height , limit )\n\t\t\t}\n\t\t\tsubContext.$mol_view_visible_width = ()=> {\n\t\t\t\tconst sizeWin = $mol_window.size()\n\t\t\t\tconst limit = context.$mol_view_visible_width()\n\t\t\t\treturn this.scroll_left() + Math.min( sizeWin.width , limit )\n\t\t\t}\n\t\t\tsubContext.$mol_scroll_top = ()=> this.scroll_top()\n\t\t\tsubContext.$mol_scroll_left = ()=> this.scroll_left()\n\t\t\tsubContext.$mol_scroll_moving = ()=> this.moving()\n\t\t\tsubContext.$mol_scroll_moving_vert = ()=> this.moving_vert()\n\t\t\tsubContext.$mol_scroll_moving_hor = ()=> this.moving_hor()\n\t\t\treturn subContext\n\t\t}\n\t\t\n\t\tstrut_transform() {\n\t\t\ttry {\n\t\t\t\treturn `translate3d( 0 , ${ this.content_height() }px , 0 )`\n\t\t\t} catch( error ) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t}\n\n\t\tsub_visible() {\n\t\t\tconst sub = [\n\t\t\t\tthis.Strut() ,\n\t\t\t\t... ( this.sub() || [] ) ,\n\t\t\t]\n\n\t\t\tconst context = this.context_sub()\n\t\t\tsub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.$ = context\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn sub\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ { export class $mol_list extends $mol_view {\n\n\t/// sub <= rows -\n\tsub() {\n\t\treturn this.rows()\n\t}\n\n\t/// rows /\n\trows() {\n\t\treturn [] as any[]\n\t}\n\n\t/// Empty null\n\tEmpty() {\n\t\treturn null as any\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_list extends $.$mol_list {\n\t\t\n\t\tsub() {\n\t\t\tconst rows = this.rows()\n\t\t\treturn ( rows.length === 0 ) ? [ this.Empty() ] : rows\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\trow_offsets() : number[] {\n\t\t\tvar sub = this.sub()\n\t\t\tif( !sub ) return null\n\t\t\t\n\t\t\tlet heightLimit = this.$.$mol_view_visible_height()\n\t\t\tvar offset = 0\n\t\t\t\n\t\t\tvar next : number[] = []\n\t\t\tfor( let child of sub ) {\n\t\t\t\tnext.push( offset )\n\t\t\t\t\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\toffset += child.minimal_height()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( offset > heightLimit ) break\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\trow_context( index : number ) {\n\t\t\tlet context = this.context()\n\t\t\tlet next = Object.create( context )\n\t\t\tnext.$mol_view_visible_height = ()=> {\n\t\t\t\tconst limit = context.$mol_view_visible_height()\n\t\t\t\treturn limit - this.row_offsets()[ index ]\n\t\t\t}\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tsub_visible() {\n\t\t\tvar sub = this.sub()\n\t\t\tif( !sub ) return sub\n\t\t\t\n\t\t\tvar limit = this.row_offsets().length\n\t\t\t\n\t\t\tvar next : $mol_view[] = []\n\t\t\tfor( let i = 0 ; i < limit ; ++ i ) {\n\t\t\t\tconst child = sub[ i ]\n\t\t\t\tif( child == null ) continue \n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.$ = this.row_context( i )\n\t\t\t\t}\n\t\t\t\tnext.push( child )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tminimal_height() {\n\t\t\tvar height = 0\n\t\t\tvar sub = this.sub()\n\t\t\tif( sub ) sub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\theight += child.minimal_height()\n\t\t\t\t}\n\t\t\t} )\n\t\t\treturn height\n\t\t}\n\n\t}\n}\n","namespace $ { export class $mol_bar extends $mol_view {\n\n} }\n\n","namespace $ {\n\t\n\texport class $mol_state_local< Value > extends $mol_object {\n\t\t\n\t\tstatic 'native()' : Pick< Storage , 'getItem'|'setItem'|'removeItem' >\n\t\tstatic native() {\n\t\t\tif( this['native()'] ) return this['native()']\n\n\t\t\tcheck : try {\n\t\t\t\tconst native = $mol_dom_context.localStorage\n\t\t\t\tif( !native ) break check\n\t\t\t\t\n\t\t\t\tnative.setItem( '' , '' )\n\t\t\t\tnative.removeItem( '' )\n\t\t\t\treturn this['native()'] = native\n\t\t\t} catch( error ) {\n\t\t\t\tconsole.warn( error )\n\t\t\t}\n\n\t\t\treturn this['native()'] = {\n\t\t\t\tgetItem( key : string ) {\n\t\t\t\t\treturn this[ ':' + key ]\n\t\t\t\t} ,\n\t\t\t\tsetItem( key : string , value : string ) {\n\t\t\t\t\tthis[ ':' + key ] = value\n\t\t\t\t} ,\n\t\t\t\tremoveItem( key : string ) {\n\t\t\t\t\tthis[ ':' + key ] = void 0\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\tstatic value< Value >( key : string , next? : Value , force? : $mol_atom_force ) : Value {\n\t\t\tif( next === void 0 ) return JSON.parse( this.native().getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) this.native().removeItem( key )\n\t\t\telse this.native().setItem( key , JSON.stringify( next ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_local.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\twindow.addEventListener( 'storage' , event => {\n\t\t$.$mol_state_local.value( event.key , void 0 , $mol_atom_force_cache )\n\t} )\n}\n","namespace $ { export class $mol_app_todomvc extends $mol_scroll {\n\n\t/// title \\Todos\n\ttitle() {\n\t\treturn \"Todos\"\n\t}\n\n\t/// sub / <= Page -\n\tsub() {\n\t\treturn [].concat( this.Page() )\n\t}\n\n\t/// Page $mol_list rows / \n\t/// \t<= Title - \n\t/// \t<= Panel -\n\t@ $mol_mem\n\tPage() {\n\t\treturn (( obj )=>{\n\t\t\tobj.rows = () => [].concat( this.Title() , this.Panel() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_list )\n\t}\n\n\t/// Title $mol_view \n\t/// \tminimal_height 176 \n\t/// \tsub / <= title -\n\t@ $mol_mem\n\tTitle() {\n\t\treturn (( obj )=>{\n\t\t\tobj.minimal_height = () => 176\n\t\t\tobj.sub = () => [].concat( this.title() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// Panel $mol_list rows <= panels -\n\t@ $mol_mem\n\tPanel() {\n\t\treturn (( obj )=>{\n\t\t\tobj.rows = () => this.panels()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_list )\n\t}\n\n\t/// panels / \n\t/// \t<= Head - \n\t/// \t<= List - \n\t/// \t<= Foot -\n\tpanels() {\n\t\treturn [].concat( this.Head() , this.List() , this.Foot() )\n\t}\n\n\t/// Head $mol_view \n\t/// \tminimal_height 64 \n\t/// \tsub <= Head_content -\n\t@ $mol_mem\n\tHead() {\n\t\treturn (( obj )=>{\n\t\t\tobj.minimal_height = () => 64\n\t\t\tobj.sub = () => this.Head_content()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// Head_content / \n\t/// \t<= Head_complete - \n\t/// \t<= Add -\n\tHead_content() {\n\t\treturn [].concat( this.Head_complete() , this.Add() )\n\t}\n\n\t/// Head_complete $mol_check \n\t/// \tenabled <= head_complete_enabled - \n\t/// \tchecked?val <=> completed_all?val - \n\t/// \ttitle \\❯\n\t@ $mol_mem\n\tHead_complete() {\n\t\treturn (( obj )=>{\n\t\t\tobj.enabled = () => this.head_complete_enabled()\n\t\t\tobj.checked = ( val? : any ) => this.completed_all( val )\n\t\t\tobj.title = () => \"❯\"\n\t\t\treturn obj\n\t\t})( new this.$.$mol_check )\n\t}\n\n\t/// head_complete_enabled false\n\thead_complete_enabled() {\n\t\treturn false\n\t}\n\n\t/// completed_all?val false\n\t@ $mol_mem\n\tcompleted_all( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// Add $mol_app_todomvc_add \n\t/// \tvalue?val <=> task_title_new?val - \n\t/// \tevent_done?event <=> event_add?event -\n\t@ $mol_mem\n\tAdd() {\n\t\treturn (( obj )=>{\n\t\t\tobj.value = ( val? : any ) => this.task_title_new( val )\n\t\t\tobj.event_done = ( event? : any ) => this.event_add( event )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_app_todomvc_add )\n\t}\n\n\t/// task_title_new?val \\\n\t@ $mol_mem\n\ttask_title_new( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// event_add?event null\n\t@ $mol_mem\n\tevent_add( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// List $mol_list rows <= task_rows -\n\t@ $mol_mem\n\tList() {\n\t\treturn (( obj )=>{\n\t\t\tobj.rows = () => this.task_rows()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_list )\n\t}\n\n\t/// task_rows /\n\ttask_rows() {\n\t\treturn [] as any[]\n\t}\n\n\t/// Foot $mol_view sub <= foot_content -\n\t@ $mol_mem\n\tFoot() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => this.foot_content()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// foot_content / \n\t/// \t<= Pending - \n\t/// \t<= Filter - \n\t/// \t<= Sweep -\n\tfoot_content() {\n\t\treturn [].concat( this.Pending() , this.Filter() , this.Sweep() )\n\t}\n\n\t/// Pending $mol_view sub / <= pending_message -\n\t@ $mol_mem\n\tPending() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.pending_message() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// pending_message \\0 items left\n\tpending_message() {\n\t\treturn \"0 items left \"\n\t}\n\n\t/// Filter $mol_bar sub <= filterOptions -\n\t@ $mol_mem\n\tFilter() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => this.filterOptions()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_bar )\n\t}\n\n\t/// filterOptions / \n\t/// \t<= Filter_all - \n\t/// \t<= Filter_active - \n\t/// \t<= Filter_completed -\n\tfilterOptions() {\n\t\treturn [].concat( this.Filter_all() , this.Filter_active() , this.Filter_completed() )\n\t}\n\n\t/// Filter_all $mol_link \n\t/// \tsub / <= filter_all_label - \n\t/// \targ * completed null\n\t@ $mol_mem\n\tFilter_all() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.filter_all_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : null as any ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_link )\n\t}\n\n\t/// filter_all_label \\All\n\tfilter_all_label() {\n\t\treturn \"All\"\n\t}\n\n\t/// Filter_active $mol_link \n\t/// \tsub / <= filter_active_label - \n\t/// \targ * completed \\false\n\t@ $mol_mem\n\tFilter_active() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.filter_active_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : \"false\" ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_link )\n\t}\n\n\t/// filter_active_label \\Active\n\tfilter_active_label() {\n\t\treturn \"Active\"\n\t}\n\n\t/// Filter_completed $mol_link \n\t/// \tsub / <= filter_completed_label - \n\t/// \targ * completed \\true\n\t@ $mol_mem\n\tFilter_completed() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.filter_completed_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : \"true\" ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_link )\n\t}\n\n\t/// filter_completed_label \\Completed\n\tfilter_completed_label() {\n\t\treturn \"Completed\"\n\t}\n\n\t/// Sweep $mol_button_minor \n\t/// \tenabled <= sweep_enabled - \n\t/// \tevent_click?event <=> event_sweep?event - \n\t/// \tsub / <= sweep_label -\n\t@ $mol_mem\n\tSweep() {\n\t\treturn (( obj )=>{\n\t\t\tobj.enabled = () => this.sweep_enabled()\n\t\t\tobj.event_click = ( event? : any ) => this.event_sweep( event )\n\t\t\tobj.sub = () => [].concat( this.sweep_label() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_button_minor )\n\t}\n\n\t/// sweep_enabled true\n\tsweep_enabled() {\n\t\treturn true\n\t}\n\n\t/// event_sweep?event null\n\t@ $mol_mem\n\tevent_sweep( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// sweep_label \\Clear completed\n\tsweep_label() {\n\t\treturn \"Clear completed\"\n\t}\n\n\t/// Task_row!id $mol_app_todomvc_task_row \n\t/// \tcompleted?val <=> task_completed!id?val - \n\t/// \ttitle?val <=> task_title!id?val - \n\t/// \tevent_drop?event <=> event_task_drop!id?event -\n\t@ $mol_mem_key\n\tTask_row( id : any ) {\n\t\treturn (( obj )=>{\n\t\t\tobj.completed = ( val? : any ) => this.task_completed(id , val )\n\t\t\tobj.title = ( val? : any ) => this.task_title(id , val )\n\t\t\tobj.event_drop = ( event? : any ) => this.event_task_drop(id , event )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_app_todomvc_task_row )\n\t}\n\n\t/// task_completed!id?val false\n\t@ $mol_mem_key\n\ttask_completed( id : any , val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// task_title!id?val \\\n\t@ $mol_mem_key\n\ttask_title( id : any , val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// event_task_drop!id?event null\n\t@ $mol_mem_key\n\tevent_task_drop( id : any , event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\nnamespace $ { export class $mol_app_todomvc_add extends $mol_string {\n\n\t/// hint \\What needs to be done?\n\thint() {\n\t\treturn \"What needs to be done?\"\n\t}\n\n\t/// event * \n\t/// \t^ \n\t/// \tkeyup?event <=> event_press?event -\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"keyup\" : ( event? : any )=> this.event_press( event ) ,\n\t\t})\n\t}\n\n\t/// event_press?event null\n\t@ $mol_mem\n\tevent_press( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// event_done?event null\n\t@ $mol_mem\n\tevent_done( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\nnamespace $ { export class $mol_app_todomvc_task_row extends $mol_view {\n\n\t/// minimal_height 64\n\tminimal_height() {\n\t\treturn 64\n\t}\n\n\t/// sub / \n\t/// \t<= Complete - \n\t/// \t<= Title - \n\t/// \t<= Drop -\n\tsub() {\n\t\treturn [].concat( this.Complete() , this.Title() , this.Drop() )\n\t}\n\n\t/// Complete $mol_check checked?val <=> completed?val -\n\t@ $mol_mem\n\tComplete() {\n\t\treturn (( obj )=>{\n\t\t\tobj.checked = ( val? : any ) => this.completed( val )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_check )\n\t}\n\n\t/// completed?val false\n\t@ $mol_mem\n\tcompleted( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// Title $mol_string \n\t/// \thint <= title_hint - \n\t/// \tvalue?val <=> title?val -\n\t@ $mol_mem\n\tTitle() {\n\t\treturn (( obj )=>{\n\t\t\tobj.hint = () => this.title_hint()\n\t\t\tobj.value = ( val? : any ) => this.title( val )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_string )\n\t}\n\n\t/// title_hint \\Task title\n\ttitle_hint() {\n\t\treturn \"Task title\"\n\t}\n\n\t/// title?val \\\n\t@ $mol_mem\n\ttitle( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// Drop $mol_button_typed \n\t/// \tsub / \\✖\n\t/// \tevent_click?event <=> event_drop?event -\n\t@ $mol_mem\n\tDrop() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( \"✖\" )\n\t\t\tobj.event_click = ( event? : any ) => this.event_drop( event )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_button_typed )\n\t}\n\n\t/// event_drop?event null\n\t@ $mol_mem\n\tevent_drop( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// attr * \n\t/// \t^ \n\t/// \tmol_app_todomvc_task_row_completed <= completed?val -\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"mol_app_todomvc_task_row_completed\" : this.completed() ,\n\t\t})\n\t}\n\n} }\n\n","interface $mol_app_todomvc_task {\n\tcompleted? : boolean\n\ttitle? : string\n}\n\nnamespace $.$$ {\n\t\n\texport class $mol_app_todomvc_add extends $.$mol_app_todomvc_add {\n\t\t\n\t\tevent_press( next? : KeyboardEvent ) {\n\t\t\tswitch( next.keyCode ) {\n\t\t\t\tcase $mol_keyboard_code.enter : return this.event_done( next )\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\texport class $mol_app_todomvc extends $.$mol_app_todomvc {\n\t\t\n\t\ttask_ids( next? : number[] ) : number[] {\n\t\t\treturn $mol_state_local.value( this.state_key( 'mol-todos' ) , next ) || []\n\t\t}\n\t\t\n\t\targ_completed() {\n\t\t\treturn $mol_state_arg.value( this.state_key( 'completed' ) )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tgroups_completed() {\n\t\t\tvar groups : { [ index : string ] : number[] } = { 'true' : [] , 'false' : [] }\n\t\t\tfor( let id of this.task_ids() ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tgroups[ String( task.completed ) ].push( id )\n\t\t\t}\n\t\t\treturn groups\n\t\t}\n\n\t\t@ $mol_mem\n\t\ttask_ids_filtered() {\n\t\t\tvar completed = this.arg_completed()\n\t\t\tif( completed ) {\n\t\t\t\treturn this.groups_completed()[ completed ] || []\n\t\t\t} else {\n\t\t\t\treturn this.task_ids()\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_mem\n\t\tcompleted_all( next? : boolean ) {\n\t\t\tif( next === void 0 ) return this.groups_completed()[ 'false' ].length === 0\n\t\t\t\n\t\t\tfor( let id of this.groups_completed()[ String( !next ) ] ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tthis.task( id , { title : task.title , completed : next } )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\thead_complete_enabled() {\n\t\t\treturn this.task_ids().length > 0 \n\t\t}\n\n\t\t@ $mol_mem\n\t\tpending_message() {\n\t\t\tlet count = this.groups_completed()[ 'false' ].length\n\t\t\treturn ( count === 1 ) ? '1 item left' : `${count} items left`\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tnew_id() {\n\t\t\treturn Math.max( 1 , 1 + Math.max( ... this.task_ids() ) )\n\t\t}\n\t\t\n\t\tevent_add( next : Event ) {\n\t\t\tvar title = this.task_title_new() \n\t\t\tif( !title ) return\n\t\t\t\n\t\t\tvar id = this.new_id()\n\t\t\tvar task = { completed : false , title }\n\t\t\tthis.task( id , task )\n\t\t\t\n\t\t\tthis.task_ids( this.task_ids().concat( id ) )\n\t\t\tthis.task_title_new( '' )\n\t\t}\n\n\t\t@ $mol_mem\n\t\ttask_rows() {\n\t\t\treturn this.task_ids_filtered().map( id => this.Task_row( id ) )\n\t\t}\n\t\t\n\t\ttask( id : number , next? : $mol_app_todomvc_task ) {\n\t\t\tconst key = this.state_key( `mol-todos-${id}` )\n\t\t\tif( next === void 0 ) {\n\t\t\t\treturn $mol_state_local.value<$mol_app_todomvc_task>( key ) || { title : '' , completed : false }\n\t\t\t}\n\t\t\t\n\t\t\t$mol_state_local.value( key , next )\n\t\t\t\n\t\t\treturn next || void 0\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttask_completed( id : number , next? : boolean ) {\n\t\t\treturn this.task( id , next === undefined ? undefined : { ... this.task( id ) , completed : next } ).completed\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttask_title( id : number , next? : string ) {\n\t\t\treturn this.task( id , next === undefined ? undefined : { ... this.task( id ) , title : next } ).title\n\t\t}\n\t\t\n\t\tevent_task_drop( id : number , next? : Event ) {\n\t\t\tthis.task( id , null )\n\t\t\tthis.task_ids( this.task_ids().filter( id2 => id !== id2 ) )\n\t\t}\n\n\t\tevent_sweep() {\n\t\t\tthis.task_ids( this.task_ids().filter( id => {\n\t\t\t\tif( !this.task( id ).completed ) return true\n\t\t\t\tthis.task( id , null )\n\t\t\t\treturn false\n\t\t\t} ) )\n\t\t}\n\t\t\n\t\tpanels() {\n\t\t\treturn [\n\t\t\t\tthis.Head() , \n\t\t\t\tthis.List() ,\n\t\t\t\t... this.foot_visible() ? [ this.Foot() ] : [] ,\n\t\t\t]\n\t\t}\n\t\t\n\t\tfoot_visible() {\n\t\t\treturn this.task_ids().length > 0\n\t\t}\n\n\t\tsweep_enabled() {\n\t\t\treturn this.groups_completed()[ 'true' ].length > 0\n\t\t}\n\t\t\n\t}\n\t\n}\n"]} \ No newline at end of file From e3a9f64e9ce349c9519d0fb268dd477cfe8b7b56 Mon Sep 17 00:00:00 2001 From: nin-jin Date: Fri, 2 Mar 2018 18:36:25 +0300 Subject: [PATCH 37/53] More specific events. --- benchmark/index.html | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/benchmark/index.html b/benchmark/index.html index 5b0358ae99..c59b46899c 100644 --- a/benchmark/index.html +++ b/benchmark/index.html @@ -150,16 +150,16 @@ step() function step() { adder.value = 'Something to do ' + i - adder.dispatchEvent( new Event( 'input' , { bubbles : true } ) ) - adder.dispatchEvent( new Event( 'change' , { bubbles : true } ) ) + adder.dispatchEvent( new KeyboardEvent( 'input' , { bubbles : true } ) ) + adder.dispatchEvent( new KeyboardEvent( 'change' , { bubbles : true } ) ) - var event = new Event( 'keydown' , { bubbles : true } ) + var event = new KeyboardEvent( 'keydown' , { bubbles : true } ) event.keyCode = 13 event.which = 13 event.key = 'Enter' adder.dispatchEvent( event ) - var event = new Event( 'keypress' , { bubbles : true } ) + var event = new KeyboardEvent( 'keypress' , { bubbles : true } ) event.keyCode = 13 event.which = 13 event.key = 'Enter' @@ -171,7 +171,7 @@ event.key = 'Enter' adder.dispatchEvent( event ) - var event = new Event( 'keyup' , { bubbles : true } ) + var event = new KeyboardEvent( 'keyup' , { bubbles : true } ) event.keyCode = 13 event.which = 13 event.key = 'Enter' @@ -210,7 +210,7 @@ step() function step() { - completer.click() + completer.dispatchEvent( new MouseEvent( 'mousedown' , { bubbles : true } ) ) if( ++i <= params.blinks ) setImmediate( step ) else { @@ -249,9 +249,9 @@ var dropper = droppers[ index++ % droppers.length ] - dropper.dispatchEvent( new Event( 'mousedown' , { bubbles : true } ) ) - dropper.dispatchEvent( new Event( 'mouseup' , { bubbles : true } ) ) - dropper.dispatchEvent( new Event( 'click' , { bubbles : true } ) ) + dropper.dispatchEvent( new MouseEvent( 'mousedown' , { bubbles : true } ) ) + dropper.dispatchEvent( new MouseEvent( 'mouseup' , { bubbles : true } ) ) + dropper.dispatchEvent( new MouseEvent( 'click' , { bubbles : true } ) ) setImmediate( step ) } From ec10bf22e6c1ebca1d3a770129c90cfa68c8c590 Mon Sep 17 00:00:00 2001 From: nin-jin Date: Fri, 2 Mar 2018 18:56:46 +0300 Subject: [PATCH 38/53] +1 --- benchmark/index.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/benchmark/index.html b/benchmark/index.html index c59b46899c..652b456bd2 100644 --- a/benchmark/index.html +++ b/benchmark/index.html @@ -150,16 +150,16 @@ step() function step() { adder.value = 'Something to do ' + i - adder.dispatchEvent( new KeyboardEvent( 'input' , { bubbles : true } ) ) - adder.dispatchEvent( new KeyboardEvent( 'change' , { bubbles : true } ) ) + adder.dispatchEvent( new Event( 'input' , { bubbles : true } ) ) + adder.dispatchEvent( new Event( 'change' , { bubbles : true } ) ) - var event = new KeyboardEvent( 'keydown' , { bubbles : true } ) + var event = new Event( 'keydown' , { bubbles : true } ) event.keyCode = 13 event.which = 13 event.key = 'Enter' adder.dispatchEvent( event ) - var event = new KeyboardEvent( 'keypress' , { bubbles : true } ) + var event = new Event( 'keypress' , { bubbles : true } ) event.keyCode = 13 event.which = 13 event.key = 'Enter' @@ -171,7 +171,7 @@ event.key = 'Enter' adder.dispatchEvent( event ) - var event = new KeyboardEvent( 'keyup' , { bubbles : true } ) + var event = new Event( 'keyup' , { bubbles : true } ) event.keyCode = 13 event.which = 13 event.key = 'Enter' @@ -210,7 +210,7 @@ step() function step() { - completer.dispatchEvent( new MouseEvent( 'mousedown' , { bubbles : true } ) ) + completer.click() if( ++i <= params.blinks ) setImmediate( step ) else { From 2e66e2a0f946eb2f357b6be475dacfae41a9520b Mon Sep 17 00:00:00 2001 From: nin-jin Date: Fri, 2 Mar 2018 18:58:51 +0300 Subject: [PATCH 39/53] +1 --- benchmark/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmark/index.html b/benchmark/index.html index 652b456bd2..c4790c68e4 100644 --- a/benchmark/index.html +++ b/benchmark/index.html @@ -239,7 +239,7 @@ requestAnimationFrame( function(){ setTimeout( function() { // wait for message processed sandbox.style.animation = 'measure .001s' } ) } ) - function end() { // wait for painting ends + function end() { // wait for painting ends done( Date.now() - start + ' ms' ) sandbox.style.animation = '' sandbox.removeEventListener( 'animationend' , end ) From 14040a4b23a10c18558f75c717b1b119d1577dab Mon Sep 17 00:00:00 2001 From: nin-jin Date: Thu, 12 Mar 2020 09:03:01 +0300 Subject: [PATCH 40/53] vscode launch --- .vscode/launch.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .vscode/launch.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000000..709b5a4b10 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,14 @@ +{ + // Используйте IntelliSense, чтобы узнать о возможных атрибутах. + // Наведите указатель мыши, чтобы просмотреть описания существующих атрибутов. + // Для получения дополнительной информации посетите: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Launch Program", + "program": "${workspaceFolder}\\server.js" + } + ] +} \ No newline at end of file From 0876b974fffa89d4f1b20a774de6f63da7b174bc Mon Sep 17 00:00:00 2001 From: nin-jin Date: Thu, 12 Mar 2020 09:26:10 +0300 Subject: [PATCH 41/53] mol up --- examples/mol/-/web.css | 393 -- examples/mol/-/web.css.map | 28 - examples/mol/-/web.deps.json | 1 - examples/mol/-/web.js | 2662 ----------- examples/mol/-/web.js.map | 1 - .../todomvc.view.tree.locale=en.json | 10 - examples/mol/-view.tree/todomvc.view.tree.ts | 417 -- .../app => hyoo}/todomvc/todomvc_active.svg | 0 .../todomvc/todomvc_completed.svg | 0 examples/mol/index.html | 7 +- examples/mol/package.json | 6 - examples/mol/src/CNAME | 1 + examples/mol/src/index.html | 20 + examples/mol/{ => src}/todomvc.css | 84 +- examples/mol/src/todomvc.meta.tree | 2 + examples/mol/src/todomvc.test.ts | 81 + examples/mol/{ => src}/todomvc.view.tree | 52 +- examples/mol/{ => src}/todomvc.view.ts | 49 +- examples/mol/{ => src}/todomvc_active.svg | 0 examples/mol/{ => src}/todomvc_completed.svg | 0 examples/mol/test.html | 20 + examples/mol/todomvc.meta.tree | 2 - examples/mol/web.esm.js | 4243 +++++++++++++++++ examples/mol/web.esm.js.map | 1 + examples/mol/web.js | 4242 ++++++++++++++++ examples/mol/web.js.map | 1 + examples/mol/web.test.js | 2367 +++++++++ examples/mol/web.test.js.map | 1 + 28 files changed, 11074 insertions(+), 3617 deletions(-) delete mode 100644 examples/mol/-/web.css delete mode 100644 examples/mol/-/web.css.map delete mode 100644 examples/mol/-/web.deps.json delete mode 100644 examples/mol/-/web.js delete mode 100644 examples/mol/-/web.js.map delete mode 100644 examples/mol/-view.tree/todomvc.view.tree.locale=en.json delete mode 100644 examples/mol/-view.tree/todomvc.view.tree.ts rename examples/mol/{-/mol/app => hyoo}/todomvc/todomvc_active.svg (100%) rename examples/mol/{-/mol/app => hyoo}/todomvc/todomvc_completed.svg (100%) delete mode 100644 examples/mol/package.json create mode 100644 examples/mol/src/CNAME create mode 100644 examples/mol/src/index.html rename examples/mol/{ => src}/todomvc.css (51%) create mode 100644 examples/mol/src/todomvc.meta.tree create mode 100644 examples/mol/src/todomvc.test.ts rename examples/mol/{ => src}/todomvc.view.tree (59%) rename examples/mol/{ => src}/todomvc.view.ts (62%) rename examples/mol/{ => src}/todomvc_active.svg (100%) rename examples/mol/{ => src}/todomvc_completed.svg (100%) create mode 100644 examples/mol/test.html delete mode 100644 examples/mol/todomvc.meta.tree create mode 100644 examples/mol/web.esm.js create mode 100644 examples/mol/web.esm.js.map create mode 100644 examples/mol/web.js create mode 100644 examples/mol/web.js.map create mode 100644 examples/mol/web.test.js create mode 100644 examples/mol/web.test.js.map diff --git a/examples/mol/-/web.css b/examples/mol/-/web.css deleted file mode 100644 index ab7c930d87..0000000000 --- a/examples/mol/-/web.css +++ /dev/null @@ -1,393 +0,0 @@ -[mol_view] { - transition-property: background-color, height, width, min-height, min-width, max-width, max-height, transform; - transition-duration: .2s; - -webkit-appearance: none; - word-break: break-word -} -[mol_view] > * { - word-break: inherit -} -[mol_view_root] { - margin: 0; - padding: 0; - width: 100%; - height: 100%; - box-sizing: border-box; - font: 1rem/1.5 "-apple-system", BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; - background: #fcfcfc -} -[mol_view][mol_view_error]:not([mol_view_error="$mol_atom_wait"]) { - background-image: repeating-linear-gradient( - 135deg, - rgba(255, 220, 220, 1), - rgba(255, 220, 220, 1) 11px, - rgba(255, 255, 220, 1) 10px, - rgba(255, 255, 220, 1) 20px - ); - background-size: 28px 28px; - color: black -} -[mol_view][mol_view_error] * { - background: none -} -@keyframes mol_view_wait_show { - from { - background: none - } -} -@keyframes mol_view_wait_move { - from { - background-position: 0 0 - } - to { - background-position: -28px 0 - } -} -[mol_view][mol_view_error="$mol_atom_wait"] { - background-image: repeating-linear-gradient( - 45deg, - rgba(58, 140, 203, 0.05), - rgba(58, 140, 203, 0.05) 9px, - rgba(255, 255, 255, .015) 10px, - rgba(255, 255, 255, .015) 20px - ); - background-size: 28px 28px; - animation: mol_view_wait_show .5s ease-in , mol_view_wait_move .25s steps(6) infinite -} -[mol_view][mol_view_error="$mol_atom_wait"] * { - background: none -} -[mol_string] { - box-sizing: border-box; - box-shadow: 0 0 0 1px rgba(230, 230, 230, .75); - outline-offset: 0; - border: none; - border-radius: 2px; - white-space: nowrap; - overflow: hidden; - padding: .5rem 1rem; - text-align: left; - position: relative; - z-index: 0; - font: inherit; - flex: 0 1 auto; - width: 100%; - background: #eee; - color: rgba(0, 0, 0, .9); - margin: 0 -} -[mol_string]:enabled { - background: white -} -[mol_string]:enabled:hover , -[mol_string]:focus { - outline: none; - z-index: 1 -} -[mol_string]:focus { - box-shadow: 0 0 0 1px rgba(0, 0, 0, .2) -} -[mol_string]::-ms-clear { - display: none -} -[mol_button] { - border: none; - font: inherit; - background-color: none; - display: inline-flex; - flex-shrink: 0; - text-decoration: inherit; - color: inherit; - cursor: inherit; - position: relative; - box-sizing: border-box; - word-break: normal; - cursor: default -} -[mol_button]:focus { - outline: none -} -[mol_button_typed] { - justify-content: center; - align-content: center; - align-items: center; - vertical-align: middle; - text-align: center; - padding: .5rem 1rem; - border-radius: 2px -} -[mol_button_typed][disabled] { - color: rgba(0, 0, 0, .5); - background: none; - pointer-events: none -} -[mol_button_minor] { - box-shadow: 0 0 0 1px rgba(230, 230, 230, .75); - background-color: #fcfcfc; - color: rgba(0, 0, 0, .9) -} -[mol_button_major] { - background-color: rgb(221, 14, 62); - color: rgb(250, 255, 254); - box-shadow: 0 0 0 1px rgba(230, 230, 230, .75) -} -[mol_button_danger] { - background-color: rgba(255, 50, 50, .75); - color: white -} -[mol_button_typed]:hover , -[mol_button_typed]:focus { - cursor: pointer; - background-color: rgba(0, 0, 0, .05) -} -[mol_button_minor]:hover , -[mol_button_minor]:focus { - background-color: rgb(247, 247, 247); - color: rgba(0, 0, 0, .9) -} -[mol_button_major]:hover , -[mol_button_major]:focus { - background-color: rgb(197, 13, 55) -} -[mol_button_danger]:hover , -[mol_button_danger]:focus { - background-color: rgba(255, 26, 26, 0.75) -} -[mol_link] { - text-decoration: none; - color: inherit; - cursor: pointer; - border-radius: 2px; - padding: .5rem; - box-sizing: border-box; - position: relative -} -[mol_link]:not([mol_link_current]):hover { - background-color: rgba(0, 0, 0, .05) -} -[mol_link]:not([mol_link_current]):focus { - background-color: rgba(0, 0, 0, .05); - box-shadow: 0 0 0 1px var(--mol_skin_hover_line) -} -[mol_link_current] { - background-color: #3a8ccb; - color: white -} -[mol_link]:focus { - outline: none -} -[mol_check] { - flex: 0 0 auto; - justify-content: flex-start; - align-content: center; - align-items: flex-start; - border: none; - font-weight: inherit; - box-shadow: none; - text-align: left; - padding: .5rem; - display: inline-flex; - flex-wrap: nowrap; - color: inherit -} -[mol_scroll] { - display: block; - overflow: auto; - flex: 1 1 auto; - -ms-grid-row-align: stretch; - align-self: stretch; - box-sizing: border-box; - will-change: scroll-position; - transform: translateZ(0); - /* enforce gpu scroll in all agents */ - box-shadow: 0 0 0 1px rgba(230, 230, 230, .75); - max-height: 100%; - max-width: 100%; - -webkit-overflow-scrolling: touch -} -/* prevent large gpu layer */ -[mol_scroll][mol_scroll] { - background: none -} -[mol_scroll] > * { - transform: translateZ(0) -} -@media print { - [mol_scroll] { - overflow: visible - } -} -[mol_scroll_strut] { - position: absolute; - display: block; - padding: 1px; - margin: -1px; - z-index: 0; - transition: none -} -[mol_list] { - will-change: contents; - display: block -} -[mol_bar] { - display: flex; - box-shadow: 0 0 0 1px rgba(230, 230, 230, .75); - border-radius: 2px -} -[mol_bar] > * { - border-radius: 0 -} -[mol_bar] > *:first-child { - border-top-left-radius: 2px; - border-bottom-left-radius: 2px -} -[mol_bar] > *:not(:first-child) { - margin-left: 1px -} -[mol_bar] > *:last-child { - border-top-right-radius: 2px; - border-bottom-right-radius: 2px -} -[mol_app_todomvc] { - -ms-grid-row-align: stretch; - align-self: stretch; - width: 100%; - background-color: #f5f5f5; - margin: 0; - transition: none -} -[mol_app_todomvc] [mol_string] , -[mol_app_todomvc] [mol_string]:focus , -[mol_app_todomvc] [mol_string]:hover , -[mol_app_todomvc] [mol_button] , -[mol_app_todomvc] [mol_button]:focus , -[mol_app_todomvc] [mol_button]:hover , -[mol_app_todomvc] [mol_link] , -[mol_app_todomvc] [mol_link]:focus , -[mol_app_todomvc] [mol_link]:hover { - box-shadow: none; - background-color: transparent -} -[mol_app_todomvc] [mol_link_current] { - color: black -} -[mol_app_todomvc] [mol_link]:not([mol_link_current]):hover , -[mol_app_todomvc] [mol_link]:not([mol_link_current]):focus { - text-decoration: underline -} -[mol_app_todomvc_head_complete] { - flex: 0 0 4rem; - transform: rotate( 90deg ); - align-items: center; - opacity: .5; - padding: 0; - justify-content: center -} -[mol_app_todomvc_head_complete]:disabled { - visibility: hidden -} -[mol_app_todomvc_head_complete][mol_check_checked] { - opacity: 1 -} -[mol_app_todomvc_add] { - padding: 0; - flex: 1 1 auto -} -[mol_app_todomvc_list] { - font-size: 1.5rem; - transition: none -} -[mol_app_todomvc_page] { - flex: 1 1 auto; - transition: none -} -[mol_app_todomvc_panel] { - box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .2), 0 25px 50px 0 rgba(0, 0, 0, .1); - max-width: 38rem; - background-color: white; - display: flex; - flex-direction: column; - margin: 0 auto 2rem; - transition: none -} -[mol_app_todomvc_head] { - font-size: 1.5rem; - padding: 0; - display: flex; - height: 4rem -} -[mol_app_todomvc_title] { - word-break: normal; - display: block; - padding: .25rem; - font-size: 7rem; - font-weight: 100; - text-align: center; - color: rgba(175, 47, 47, .15); - text-rendering: optimizeLegibility; - text-transform: lowercase -} -[mol_app_todomvc_task_row] { - display: flex; - background-color: white; - box-shadow: 0 -1px 0 0 #ededed; - height: 4rem -} -[mol_app_todomvc_task_row_complete] { - flex: 0 0 4rem; - padding: 1rem; - background: no-repeat center center url('mol/app/todomvc/todomvc_active.svg') -} -[mol_app_todomvc_task_row_complete][mol_check_checked] { - background: no-repeat center center url('mol/app/todomvc/todomvc_completed.svg') -} -[mol_app_todomvc_task_row_title] { - padding: 0; - flex: 1 1 auto -} -[mol_app_todomvc_task_row_completed] [mol_app_todomvc_task_row_title] { - color: #d9d9d9; - text-decoration: line-through -} -[mol_app_todomvc_task_row_drop] { - font-size: 1.25rem; - flex: 0 04rem -} -[mol_app_todomvc_task_row]:not(:hover) [mol_app_todomvc_task_row_drop]:not(:focus) { - opacity: 0; - color: #cc9a9a -} -[mol_app_todomvc_foot] { - display: flex; - flex-wrap: wrap; - align-items: baseline; - padding: .5rem 1rem; - color: #777; - font-size: .85rem; - border-top: 1px solid #ededed; - box-shadow: 0 1px 1px rgba(0, 0, 0, .2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, .2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, .2) -} -[mol_app_todomvc_pending] { - padding: .25rem; - flex: 0 1 6rem -} -[mol_app_todomvc_filter] { - flex: 1 100 auto; - display: flex; - justify-content: center; - margin: .25rem; - box-shadow: none -} -[mol_app_todomvc_sweep] { - flex: 0 1 auto; - padding: .25rem -} -[mol_app_todomvc_sweep][disabled] { - visibility: hidden -} -[mol_app_todomvc_sweep]:hover , -[mol_app_todomvc_sweep]:focus { - text-decoration: underline -} - -/*# sourceMappingURL=web.css.map */ \ No newline at end of file diff --git a/examples/mol/-/web.css.map b/examples/mol/-/web.css.map deleted file mode 100644 index ab50ab22bc..0000000000 --- a/examples/mol/-/web.css.map +++ /dev/null @@ -1,28 +0,0 @@ -{ - "version": 3, - "sources": [ - "../../../view/view.css", - "../../../string/string.css", - "../../../button/button.css", - "../../../link/link.view.css", - "../../../check/check.css", - "../../../scroll/scroll.view.css", - "../../../list/list.view.css", - "../../../bar/bar.view.css", - "../todomvc.css" - ], - "names": [], - "mappings": "AAAA;IACC,8GAA8G;IAC9G,yBAAyB;IACzB,yBAAyB;IACzB,sBAAuB;CACvB;AAED;IACC,mBAAoB;CACpB;AAED;IACC,UAAU;IACV,WAAW;IACX,YAAY;IACZ,aAAa;IACb,uBAAuB;IACvB,qGAA2B;IAC3B,mBAAkC;CAClC;AAED;IACC;;;;;;GAME;IACF,2BAA2B;IAC3B,YAAa;CACb;AACD;IACC,gBAAiB;CACjB;AAED;IACC;QACC,gBAAiB;KACjB;CACD;AAED;IACC;QACC,wBAAyB;KACzB;IACD;QACC,4BAA6B;KAC7B;CACD;AAED;IACE;;;;;;GAMC;IACF,2BAA2B;IAC3B,qFAAsF;CACtF;AAED;IACE,gBAAiB;CAClB;ACjED;IACC,uBAAuB;IACvB,+CAA0C;IAC1C,kBAAkB;IAClB,aAAa;IACb,mBAAqC;IACrC,oBAAoB;IACpB,iBAAiB;IACjB,oBAAoB;IACpB,iBAAiB;IACjB,mBAAmB;IACnB,WAAW;IACX,cAAc;IACd,eAAe;IACf,YAAY;IACZ,iBAAoC;IACpC,yBAAkC;IAClC,SAAU;CACV;AAED;IACC,iBAAiC;CACjC;AAED;;IAEC,cAAc;IACd,UAAW;CACX;AAED;IACC,uCAA0C;CAC1C;AAED;IACC,aAAc;CACd;ACpCD;IACC,aAAa;IACb,cAAc;IACd,uBAAuB;IACvB,qBAAqB;IACrB,eAAe;IACf,yBAAyB;IACzB,eAAe;IACf,gBAAgB;IAChB,mBAAmB;IACnB,uBAAuB;IACvB,mBAAmB;IACnB,eAAgB;CAChB;AACD;IACC,aAAc;CACd;AAED;IACC,wBAAwB;IACxB,sBAAsB;IACtB,oBAAoB;IACpB,uBAAuB;IACvB,mBAAmB;IACnB,oBAAoB;IACpB,kBAAqC;CACrC;AAED;IACC,yBAAoC;IACpC,iBAAiB;IACjB,oBAAqB;CACrB;AAED;IACC,+CAA0C;IAC1C,0BAAwC;IACxC,wBAAkC;CAClC;AAED;IACC,mCAAyC;IACzC,0BAAmC;IACnC,8CAA0C;CAC1C;AAED;IACC,yCAAuC;IACvC,YAAiC;CACjC;AAED;;IAEC,gBAAgB;IAChB,oCAAwC;CACxC;AAED;;IAEC,qCAA8C;IAC9C,wBAAkC;CAClC;AAED;;IAEC,kCAA+C;CAC/C;AAED;;IAEC,yCAA6C;CAC7C;ACvED;IACC,sBAAsB;IACtB,eAAe;IACf,gBAAgB;IAChB,mBAAqC;IACrC,eAAe;IACf,uBAAuB;IACvB,kBAAmB;CACnB;AAED;IACC,oCAAwC;CACxC;AAED;IACC,qCAAwC;IACxC,gDAAiD;CACjD;AAED;IACC,0BAA0C;IAC1C,YAAoC;CACpC;AAED;IACC,aAAc;CACd;AC1BD;IACC,eAAe;IACf,4BAA4B;IAC5B,sBAAsB;IACtB,wBAAwB;IACxB,aAAa;IACb,qBAAqB;IACrB,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,qBAAqB;IACrB,kBAAkB;IAClB,cAAe;CACf;ACbD;IACC,eAAe;IACf,eAAe;IACf,eAAe;IACf,4BAAoB;QAApB,oBAAoB;IACpB,uBAAuB;IACvB,6BAA6B;IAC7B,yBAAyB;IAAC,sCAAsC;IAChE,+CAA0C;IAC1C,iBAAiB;IACjB,gBAAgB;IAChB,iCAAkC;CAClC;AAED,6BAA6B;AAC7B;IACC,gBAAiB;CACjB;AAED;IACC,wBAAyB;CACzB;AAED;IACC;QACC,iBAAkB;KAClB;CACD;AAED;IACC,mBAAmB;IACnB,eAAe;IACf,aAAa;IACb,aAAa;IACb,WAAW;IACX,gBAAiB;CACjB;ACpCD;IACC,sBAAsB;IACtB,cAAe;CACf;ACHD;IACC,cAAc;IACd,+CAA0C;IAC1C,kBAAqC;CACrC;AAED;IACC,gBAAiB;CACjB;AAED;IACC,4BAA8C;IAC9C,8BAAiD;CACjD;AAED;IACC,gBAAiB;CACjB;AAED;IACC,6BAA+C;IAC/C,+BAAkD;CAClD;ACtBD;IACC,4BAAoB;QAApB,oBAAoB;IACpB,YAAY;IACZ,0BAA0B;IAC1B,UAAU;IACV,gBAAiB;CACjB;AAED;;;;;;;;;IASC,iBAAiB;IACjB,6BAA8B;CAC9B;AAED;IACC,YAAa;CACb;AAED;;IAEC,0BAA2B;CAC3B;AAED;IACC,eAAe;IACf,2BAA2B;IAC3B,oBAAoB;IACpB,YAAY;IACZ,WAAW;IACX,uBAAwB;CACxB;AACD;IACC,kBAAmB;CACnB;AACD;IACC,UAAW;CACX;AAED;IACC,WAAW;IACX,cAAe;CACf;AAED;IACC,kBAAkB;IAClB,gBAAiB;CACjB;AAED;IACC,eAAe;IACf,gBAAiB;CACjB;AAED;IACC,2EAA6E;IAC7E,iBAAiB;IACjB,wBAAwB;IACxB,cAAc;IACd,uBAAuB;IACvB,oBAAoB;IACpB,gBAAiB;CACjB;AAED;IACC,kBAAkB;IAClB,WAAW;IACX,cAAc;IACd,YAAa;CACb;AAED;IACC,mBAAmB;IACnB,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;IACjB,mBAAmB;IACnB,8BAA+B;IAC/B,mCAAmC;IACnC,yBAA0B;CAC1B;AAED;IACC,cAAc;IACd,wBAAwB;IACxB,+BAA+B;IAC/B,YAAa;CACb;AAED;IACC,eAAe;IACf,cAAc;IACd,6EAA8E;CAC9E;AACD;IACC,gFAAiF;CACjF;AAED;IACC,WAAW;IACX,cAAe;CACf;AAED;IACC,eAAe;IACf,6BAA8B;CAC9B;AAED;IACC,mBAAmB;IACnB,aAAe;CACf;AACD;IACC,WAAW;IACX,cAAe;CACf;AAED;IACC,cAAc;IACd,gBAAgB;IAChB,sBAAsB;IACtB,oBAAoB;IACpB,YAAY;IACZ,kBAAkB;IAClB,8BAA8B;IAC9B,yJAA6J;CAC7J;AAED;IACC,gBAAgB;IAChB,cAAe;CACf;AAED;IACC,iBAAiB;IACjB,cAAc;IACd,wBAAwB;IACxB,eAAe;IACf,gBAAiB;CACjB;AAED;IACC,eAAe;IACf,eAAgB;CAChB;AACD;IACC,kBAAmB;CACnB;AAED;;IAEC,0BAA2B;CAC3B", - "file": "web.css", - "sourcesContent": [ - "[mol_view] {\n\ttransition-property: background-color, height, width, min-height, min-width, max-width, max-height, transform;\n\ttransition-duration: .2s;\n\t-webkit-appearance: none;\n\tword-break: break-word;\n}\n\n[mol_view] > * {\n\tword-break: inherit;\n}\n\n[mol_view_root] {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\theight: 100%;\n\tbox-sizing: border-box;\n\tfont: var(--mol_skin_font);\n\tbackground: var(--mol_skin_light);\n}\n\n[mol_view][mol_view_error]:not([mol_view_error=\"$mol_atom_wait\"]) {\n\tbackground-image: repeating-linear-gradient(\n\t\t135deg,\n\t\trgba(255,220,220,1),\n\t\trgba(255,220,220,1) 11px,\n\t\trgba(255,255,220,1) 10px,\n\t\trgba(255,255,220,1) 20px\n\t);\n\tbackground-size: 28px 28px;\n\tcolor: black;\n}\n[mol_view][mol_view_error] * {\n\tbackground: none;\n}\n\n@keyframes mol_view_wait_show {\n\tfrom {\n\t\tbackground: none;\n\t}\n}\n\n@keyframes mol_view_wait_move {\n\tfrom {\n\t\tbackground-position: 0 0;\n\t}\n\tto {\n\t\tbackground-position: -28px 0;\n\t}\n}\n\n[mol_view][mol_view_error=\"$mol_atom_wait\"] {\n\t\tbackground-image: repeating-linear-gradient(\n\t\t45deg,\n\t\tcolor( var(--mol_skin_base) alpha(.05) ),\n\t\tcolor( var(--mol_skin_base) alpha(.05) ) 9px,\n\t\trgba(255,255,255,.015) 10px,\n\t\trgba(255,255,255,.015) 20px\n\t);\n\tbackground-size: 28px 28px;\n\tanimation: mol_view_wait_show .5s ease-in , mol_view_wait_move .25s steps(6) infinite;\n}\n\n[mol_view][mol_view_error=\"$mol_atom_wait\"] * {\n\t\tbackground: none;\n}\n", - "[mol_string] {\n\tbox-sizing: border-box;\n\tbox-shadow: var(--mol_skin_light_outline);\n\toutline-offset: 0;\n\tborder: none;\n\tborder-radius: var(--mol_skin_round);\n\twhite-space: nowrap;\n\toverflow: hidden;\n\tpadding: .5rem 1rem;\n\ttext-align: left;\n\tposition: relative;\n\tz-index: 0;\n\tfont: inherit;\n\tflex: 0 1 auto;\n\twidth: 100%;\n\tbackground: var(--mol_skin_passive);\n\tcolor: var(--mol_skin_light_text);\n\tmargin: 0;\n}\n\n[mol_string]:enabled {\n\tbackground: var(--mol_skin_card);\n}\n\n[mol_string]:enabled:hover ,\n[mol_string]:focus {\n\toutline: none;\n\tz-index: 1;\n}\n\n[mol_string]:focus {\n\tbox-shadow: var(--mol_skin_focus_outline);\n}\n\n[mol_string]::-ms-clear {\n\tdisplay: none;\n}\n", - "[mol_button] {\n\tborder: none;\n\tfont: inherit;\n\tbackground-color: none;\n\tdisplay: inline-flex;\n\tflex-shrink: 0;\n\ttext-decoration: inherit;\n\tcolor: inherit;\n\tcursor: inherit;\n\tposition: relative;\n\tbox-sizing: border-box;\n\tword-break: normal;\n\tcursor: default;\n}\n[mol_button]:focus {\n\toutline: none;\n}\n\n[mol_button_typed] {\n\tjustify-content: center;\n\talign-content: center;\n\talign-items: center;\n\tvertical-align: middle;\n\ttext-align: center;\n\tpadding: .5rem 1rem;\n\tborder-radius: var(--mol_skin_round);\n}\n\n[mol_button_typed][disabled] {\n\tcolor: var(--mol_skin_passive_text);\n\tbackground: none;\n\tpointer-events: none;\n}\n\n[mol_button_minor] {\n\tbox-shadow: var(--mol_skin_light_outline);\n\tbackground-color: var(--mol_skin_light);\n\tcolor: var(--mol_skin_light_text);\n}\n\n[mol_button_major] {\n\tbackground-color: var(--mol_skin_accent);\n\tcolor: var(--mol_skin_accent_text);\n\tbox-shadow: var(--mol_skin_light_outline);\n}\n\n[mol_button_danger] {\n\tbackground-color: var(--mol_skin_warn);\n\tcolor: var(--mol_skin_warn_text);\n}\n\n[mol_button_typed]:hover ,\n[mol_button_typed]:focus {\n\tcursor: pointer;\n\tbackground-color: var(--mol_skin_hover);\n}\n\n[mol_button_minor]:hover ,\n[mol_button_minor]:focus {\n\tbackground-color: var(--mol_skin_light_hover);\n\tcolor: var(--mol_skin_light_text);\n}\n\n[mol_button_major]:hover ,\n[mol_button_major]:focus {\n\tbackground-color: var(--mol_skin_accent_hover);\n}\n\n[mol_button_danger]:hover ,\n[mol_button_danger]:focus {\n\tbackground-color: var(--mol_skin_warn_hover);\n}\n", - "[mol_link] {\n\ttext-decoration: none;\n\tcolor: inherit;\n\tcursor: pointer;\n\tborder-radius: var(--mol_skin_round);\n\tpadding: .5rem;\n\tbox-sizing: border-box;\n\tposition: relative;\n}\n\n[mol_link]:not([mol_link_current]):hover {\n\tbackground-color: var(--mol_skin_hover);\n}\n\n[mol_link]:not([mol_link_current]):focus {\n\tbackground-color: var(--mol_skin_hover);\n\tbox-shadow: 0 0 0 1px var(--mol_skin_hover_line);\n}\n\n[mol_link_current] {\n\tbackground-color: var(--mol_skin_current);\n\tcolor: var(--mol_skin_current_text);\n}\n\n[mol_link]:focus {\n\toutline: none;\n}\n", - "[mol_check] {\n\tflex: 0 0 auto;\n\tjustify-content: flex-start;\n\talign-content: center;\n\talign-items: flex-start;\n\tborder: none;\n\tfont-weight: inherit;\n\tbox-shadow: none;\n\ttext-align: left;\n\tpadding: .5rem;\n\tdisplay: inline-flex;\n\tflex-wrap: nowrap;\n\tcolor: inherit;\n}\n", - "[mol_scroll] {\n\tdisplay: block;\n\toverflow: auto;\n\tflex: 1 1 auto;\n\talign-self: stretch;\n\tbox-sizing: border-box;\n\twill-change: scroll-position;\n\ttransform: translateZ(0); /* enforce gpu scroll in all agents */\n\tbox-shadow: var(--mol_skin_light_outline);\n\tmax-height: 100%;\n\tmax-width: 100%;\n\t-webkit-overflow-scrolling: touch;\n}\n\n/* prevent large gpu layer */\n[mol_scroll][mol_scroll] {\n\tbackground: none;\n}\n\n[mol_scroll] > * {\n\ttransform: translateZ(0);\n}\n\n@media print {\n\t[mol_scroll] {\n\t\toverflow: visible;\n\t}\n}\n\n[mol_scroll_strut] {\n\tposition: absolute;\n\tdisplay: block;\n\tpadding: 1px;\n\tmargin: -1px;\n\tz-index: 0; \n\ttransition: none;\n}\n", - "[mol_list] {\n\twill-change: contents;\n\tdisplay: block;\n}\n", - "[mol_bar] {\n\tdisplay: flex;\n\tbox-shadow: var(--mol_skin_light_outline);\n\tborder-radius: var(--mol_skin_round);\n}\n\n[mol_bar] > * {\n\tborder-radius: 0;\n}\n\n[mol_bar] > *:first-child {\n\tborder-top-left-radius: var(--mol_skin_round);\n\tborder-bottom-left-radius: var(--mol_skin_round);\n}\n\n[mol_bar] > *:not(:first-child) {\n\tmargin-left: 1px;\n}\n\n[mol_bar] > *:last-child {\n\tborder-top-right-radius: var(--mol_skin_round);\n\tborder-bottom-right-radius: var(--mol_skin_round);\n}\n", - "[mol_app_todomvc] {\n\talign-self: stretch;\n\twidth: 100%;\n\tbackground-color: #f5f5f5;\n\tmargin: 0;\n\ttransition: none;\n}\n\n[mol_app_todomvc] [mol_string] ,\n[mol_app_todomvc] [mol_string]:focus ,\n[mol_app_todomvc] [mol_string]:hover ,\n[mol_app_todomvc] [mol_button] ,\n[mol_app_todomvc] [mol_button]:focus ,\n[mol_app_todomvc] [mol_button]:hover ,\n[mol_app_todomvc] [mol_link] ,\n[mol_app_todomvc] [mol_link]:focus ,\n[mol_app_todomvc] [mol_link]:hover {\n\tbox-shadow: none;\n\tbackground-color: transparent;\n}\n\n[mol_app_todomvc] [mol_link_current] {\n\tcolor: black;\n}\n\n[mol_app_todomvc] [mol_link]:not([mol_link_current]):hover ,\n[mol_app_todomvc] [mol_link]:not([mol_link_current]):focus {\n\ttext-decoration: underline;\n}\n\n[mol_app_todomvc_head_complete] {\n\tflex: 0 0 4rem;\n\ttransform: rotate( 90deg );\n\talign-items: center;\n\topacity: .5;\n\tpadding: 0;\n\tjustify-content: center;\n}\n[mol_app_todomvc_head_complete]:disabled {\n\tvisibility: hidden;\n}\n[mol_app_todomvc_head_complete][mol_check_checked] {\n\topacity: 1;\n}\n\n[mol_app_todomvc_add] {\n\tpadding: 0;\n\tflex: 1 1 auto;\n}\n\n[mol_app_todomvc_list] {\n\tfont-size: 1.5rem;\n\ttransition: none;\n}\n\n[mol_app_todomvc_page] {\n\tflex: 1 1 auto;\n\ttransition: none;\n}\n\n[mol_app_todomvc_panel] {\n\tbox-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1);\n\tmax-width: 38rem;\n\tbackground-color: white;\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 0 auto 2rem;\n\ttransition: none;\n}\n\n[mol_app_todomvc_head] {\n\tfont-size: 1.5rem;\n\tpadding: 0;\n\tdisplay: flex;\n\theight: 4rem;\n}\n\n[mol_app_todomvc_title] {\n\tword-break: normal;\n\tdisplay: block;\n\tpadding: .25rem;\n\tfont-size: 7rem;\n\tfont-weight: 100;\n\ttext-align: center;\n\tcolor: rgba(175, 47, 47, 0.15);\n\ttext-rendering: optimizeLegibility;\n\ttext-transform: lowercase;\n}\n\n[mol_app_todomvc_task_row] {\n\tdisplay: flex;\n\tbackground-color: white;\n\tbox-shadow: 0 -1px 0 0 #ededed;\n\theight: 4rem;\n}\n\n[mol_app_todomvc_task_row_complete] {\n\tflex: 0 0 4rem;\n\tpadding: 1rem;\n\tbackground: no-repeat center center url('mol/app/todomvc/todomvc_active.svg');\n}\n[mol_app_todomvc_task_row_complete][mol_check_checked] {\n\tbackground: no-repeat center center url('mol/app/todomvc/todomvc_completed.svg');\n}\n\n[mol_app_todomvc_task_row_title] {\n\tpadding: 0;\n\tflex: 1 1 auto;\n}\n\n[mol_app_todomvc_task_row_completed] [mol_app_todomvc_task_row_title] {\n\tcolor: #d9d9d9;\n\ttext-decoration: line-through;\n}\n\n[mol_app_todomvc_task_row_drop] {\n\tfont-size: 1.25rem;\n\tflex: 0 04rem;\n}\n[mol_app_todomvc_task_row]:not(:hover) [mol_app_todomvc_task_row_drop]:not(:focus) {\n\topacity: 0;\n\tcolor: #cc9a9a;\n}\n\n[mol_app_todomvc_foot] {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: baseline;\n\tpadding: .5rem 1rem;\n\tcolor: #777;\n\tfont-size: .85rem;\n\tborder-top: 1px solid #ededed;\n\tbox-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2);\n}\n\n[mol_app_todomvc_pending] {\n\tpadding: .25rem;\n\tflex: 0 1 6rem;\n}\n\n[mol_app_todomvc_filter] {\n\tflex: 1 100 auto;\n\tdisplay: flex;\n\tjustify-content: center;\n\tmargin: .25rem;\n\tbox-shadow: none;\n}\n\n[mol_app_todomvc_sweep] {\n\tflex: 0 1 auto;\n\tpadding: .25rem;\n}\n[mol_app_todomvc_sweep][disabled] {\n\tvisibility: hidden;\n}\n\n[mol_app_todomvc_sweep]:hover ,\n[mol_app_todomvc_sweep]:focus {\n\ttext-decoration: underline;\n}\n" - ] -} \ No newline at end of file diff --git a/examples/mol/-/web.deps.json b/examples/mol/-/web.deps.json deleted file mode 100644 index c066bf9593..0000000000 --- a/examples/mol/-/web.deps.json +++ /dev/null @@ -1 +0,0 @@ -{"files":["mol/CNAME","mol/index.html","mol/LICENSE","mol/manifest.json","mol/mol.jam.js","mol/readme.md","mol/skin/skin.view.css","mol/func/name/name.ts","mol/object/object.ts","mol/object/readme.md","mol/conform/conform.ts","mol/conform/index.html","mol/log/log.ts","mol/log/log_context.ts","mol/log/log_debug.web.ts","mol/log/log_filter.web.ts","mol/log/log_group.ts","mol/defer/defer.ts","mol/defer/readme.md","mol/state/stack/stack.ts","mol/atom/atom.ie.web.js","mol/atom/atom.ts","mol/atom/index.html","mol/atom/readme.md","mol/mem/mem.ts","mol/mem/readme.md","mol/window/window.web.ts","mol/dom/context/context.ts","mol/dom/context/context.web.ts","mol/dom/render/render.ts","mol/view/readme.md","mol/view/view.css","mol/view/view.ts","mol/view/view.web.ts","mol/view/selection/selection.ts","mol/view/selection/selection.web.ts","mol/string/string.view.tree","mol/keyboard/code.ts","mol/string/readme.md","mol/string/string.css","mol/string/-view.tree/string.view.tree.ts","mol/string/-view.tree/string.view.tree.locale=en.json","mol/string/string.view.ts","mol/button/button.view.tree","mol/button/button.css","mol/button/-view.tree/button.view.tree.ts","mol/button/-view.tree/button.view.tree.locale=en.json","mol/button/button.view.ts","mol/button/-view.tree/button_types.view.tree.ts","mol/button/-view.tree/button_types.view.tree.locale=en.json","mol/button/button_types.view.tree","mol/button/readme.md","mol/link/link.view.tree","mol/merge/dict/dict.ts","mol/state/arg/arg.web.ts","mol/state/arg/readme.md","mol/link/link.view.css","mol/link/-view.tree/link.view.tree.ts","mol/link/-view.tree/link.view.tree.locale=en.json","mol/link/link.view.ts","mol/link/readme.md","mol/check/check.view.tree","mol/check/check.css","mol/check/-view.tree/check.view.tree.ts","mol/check/-view.tree/check.view.tree.locale=en.json","mol/check/check.view.ts","mol/check/readme.md","mol/scroll/scroll.view.tree","mol/scroll/readme.md","mol/scroll/scroll.view.css","mol/scroll/-view.tree/scroll.view.tree.ts","mol/scroll/-view.tree/scroll.view.tree.locale=en.json","mol/scroll/scroll.view.ts","mol/state/local/local.ts","mol/state/local/local.web.ts","mol/const/const.ts","mol/const/readme.md","mol/maybe/maybe.ts","mol/http/http.ts","mol/http/readme.md","mol/deprecated/deprecated.ts","mol/http/resource/resource.ts","mol/file/file.web.ts","mol/locale/locale.ts","mol/list/list.view.tree","mol/list/list.view.css","mol/list/-view.tree/list.view.tree.ts","mol/list/-view.tree/list.view.tree.locale=en.json","mol/list/list.view.ts","mol/list/readme.md","mol/bar/bar.view.css","mol/bar/-view.tree/bar.view.tree.ts","mol/bar/-view.tree/bar.view.tree.locale=en.json","mol/bar/bar.view.tree","mol/bar/readme.md","mol/app/todomvc/todomvc.view.tree","mol/app/todomvc/index.html","mol/app/todomvc/todomvc.css","mol/app/todomvc/todomvc.meta.tree","mol/app/todomvc/-view.tree/todomvc.view.tree.ts","mol/app/todomvc/-view.tree/todomvc.view.tree.locale=en.json","mol/app/todomvc/todomvc.view.ts","mol/app/todomvc/todomvc_active.svg","mol/app/todomvc/todomvc_completed.svg"],"edgesIn":{"mol/app":{"mol/app/todomvc":{"priority":0}},"mol":{"mol/app":{"priority":0},"mol/string":{"priority":0},"mol/skin":{"priority":0},"mol/view":{"priority":-1},"mol/object":{"priority":0},"mol/func":{"priority":0},"mol/window":{"priority":0},"mol/mem":{"priority":0},"mol/atom":{"priority":0},"mol/conform":{"priority":0},"mol/log":{"priority":0},"mol/defer":{"priority":0},"mol/state":{"priority":0},"mol/dom":{"priority":0},"mol/keyboard":{"priority":0},"mol/button":{"priority":0},"mol/link":{"priority":0},"mol/merge":{"priority":0},"mol/check":{"priority":0},"mol/scroll":{"priority":0},"mol/locale":{"priority":0},"mol/file":{"priority":0},"mol/const":{"priority":0},"mol/http":{"priority":0},"mol/maybe":{"priority":0},"mol/deprecated":{"priority":0},"mol/list":{"priority":0},"mol/bar":{"priority":0}},"mol/string":{"mol/app/todomvc":{"priority":0}},"mol/skin":{"mol/string":{"priority":-1},"mol/view":{"priority":-2},"mol/button":{"priority":-1},"mol/link":{"priority":-1},"mol/scroll":{"priority":-1},"mol/bar":{"priority":-1}},"mol/view":{"mol/string":{"priority":0},"mol/view/selection":{"priority":0},"mol/button":{"priority":0},"mol/link":{"priority":0},"mol/check":{"priority":-2},"mol/scroll":{"priority":-3},"mol/list":{"priority":-3},"mol/app/todomvc":{"priority":0},"mol/bar":{"priority":0}},"mol/object":{"mol/view":{"priority":-1},"mol/window":{"priority":-1},"mol/atom":{"priority":-1},"mol/defer":{"priority":-1},"mol/mem":{"priority":-5},"mol/view/selection":{"priority":-1},"mol/state/arg":{"priority":-1},"mol/locale":{"priority":-1},"mol/state/local":{"priority":-1},"mol/file":{"priority":-1},"mol/http":{"priority":-1}},"mol/func/name":{"mol/object":{"priority":-3},"mol/view":{"priority":-4}},"mol/func":{"mol/func/name":{"priority":0}},"mol/window":{"mol/view":{"priority":-2},"mol/scroll":{"priority":-4}},"mol/mem":{"mol/window":{"priority":-2},"mol/view":{"priority":-2},"mol/view/selection":{"priority":-2},"mol/string":{"priority":-1},"mol/button":{"priority":-1},"mol/link":{"priority":-1},"mol/state/arg":{"priority":-2},"mol/check":{"priority":-1},"mol/scroll":{"priority":-1},"mol/locale":{"priority":-2},"mol/state/local":{"priority":-2},"mol/file":{"priority":-2},"mol/http":{"priority":-2},"mol/app/todomvc":{"priority":-1},"mol/list":{"priority":-2}},"mol/atom":{"mol/mem":{"priority":-2},"mol/window":{"priority":-2},"mol/view/selection":{"priority":-2},"mol/view":{"priority":-4},"mol/string":{"priority":-1},"mol/button":{"priority":-1},"mol/link":{"priority":-1},"mol/state/arg":{"priority":-2},"mol/check":{"priority":-1},"mol/scroll":{"priority":-1},"mol/state/local":{"priority":-2},"mol/file":{"priority":-2},"mol/http":{"priority":-3},"mol/locale":{"priority":-4},"mol/app/todomvc":{"priority":-1}},"mol/conform":{"mol/atom":{"priority":-3}},"mol/log":{"mol/atom":{"priority":-4},"mol/window":{"priority":-1},"mol/view/selection":{"priority":-2},"mol/dom/render":{"priority":-3},"mol/view":{"priority":-1},"mol/string":{"priority":-3},"mol/state/arg":{"priority":-1},"mol/link":{"priority":-3},"mol/scroll":{"priority":-3},"mol/http":{"priority":-3}},"mol/defer":{"mol/atom":{"priority":-3},"mol/view/selection":{"priority":-3},"mol/view":{"priority":-2},"mol/scroll":{"priority":-3},"mol/http":{"priority":-4}},"mol/state/stack":{"mol/atom":{"priority":-1}},"mol/state":{"mol/state/stack":{"priority":0},"mol/state/arg":{"priority":0},"mol/state/local":{"priority":0}},"mol/dom/context":{"mol/view":{"priority":-1},"mol/view/selection":{"priority":-1},"mol/dom/render":{"priority":-5},"mol/state/arg":{"priority":-3},"mol/state/local":{"priority":-4},"mol/locale":{"priority":-3},"mol/http":{"priority":-3}},"mol/dom":{"mol/dom/context":{"priority":0},"mol/dom/render":{"priority":0}},"mol/view/selection":{"mol/view":{"priority":-3}},"mol/dom/render":{"mol/view":{"priority":-3}},"mol/string/string.view.tree":{"mol/string":{"priority":0}},"mol/keyboard":{"mol/string":{"priority":-3},"mol/button":{"priority":-3},"mol/app/todomvc":{"priority":-4}},"mol/button":{"mol/app/todomvc":{"priority":-2},"mol/check":{"priority":0}},"mol/button/button.view.tree":{"mol/button":{"priority":0}},"mol/link":{"mol/app/todomvc":{"priority":0}},"mol/link/link.view.tree":{"mol/link":{"priority":0}},"mol/state/arg":{"mol/link":{"priority":-3},"mol/app/todomvc":{"priority":-3}},"mol/merge/dict":{"mol/state/arg":{"priority":-3},"mol/app/todomvc":{"priority":-3}},"mol/merge":{"mol/merge/dict":{"priority":0}},"mol/check":{"mol/app/todomvc":{"priority":-2}},"mol/check/check.view.tree":{"mol/check":{"priority":0}},"mol/scroll":{"mol/app/todomvc":{"priority":0}},"mol/scroll/scroll.view.tree":{"mol/scroll":{"priority":0}},"mol/locale":{"mol/app/todomvc":{"priority":-2}},"mol/state/local":{"mol/locale":{"priority":-3},"mol/app/todomvc":{"priority":-3}},"mol/file":{"mol/locale":{"priority":-3}},"mol/const":{"mol/file":{"priority":-4},"mol/http":{"priority":-4}},"mol/http/resource":{"mol/file":{"priority":-3}},"mol/http":{"mol/http/resource":{"priority":-1}},"mol/maybe":{"mol/http":{"priority":-3}},"mol/deprecated":{"mol/http/resource":{"priority":-2}},"mol/list":{"mol/app/todomvc":{"priority":-2}},"mol/list/list.view.tree":{"mol/list":{"priority":0}},"mol/bar":{"mol/app/todomvc":{"priority":-2}},"mol/app/todomvc/todomvc.view.tree":{"mol/app/todomvc":{"priority":0}}},"edgesOut":{"mol/app/todomvc":{"mol/app":{"priority":0},"mol/string":{"priority":0},"mol/button":{"priority":-2},"mol/link":{"priority":0},"mol/check":{"priority":-2},"mol/scroll":{"priority":0},"mol/locale":{"priority":-2},"mol/mem":{"priority":-1},"mol/list":{"priority":-2},"mol/view":{"priority":0},"mol/atom":{"priority":-1},"mol/bar":{"priority":-2},"mol/app/todomvc/todomvc.view.tree":{"priority":0},"mol/keyboard":{"priority":-4},"mol/state/local":{"priority":-3},"mol/state/arg":{"priority":-3},"mol/merge/dict":{"priority":-3}},"mol/app":{"mol":{"priority":0}},"mol/string":{"mol":{"priority":0},"mol/skin":{"priority":-1},"mol/view":{"priority":0},"mol/mem":{"priority":-1},"mol/atom":{"priority":-1},"mol/string/string.view.tree":{"priority":0},"mol/log":{"priority":-3},"mol/keyboard":{"priority":-3}},"mol/skin":{"mol":{"priority":0}},"mol/view":{"mol":{"priority":-1},"mol/skin":{"priority":-2},"mol/object":{"priority":-1},"mol/window":{"priority":-2},"mol/mem":{"priority":-2},"mol/dom/context":{"priority":-1},"mol/view/selection":{"priority":-3},"mol/dom/render":{"priority":-3},"mol/atom":{"priority":-4},"mol/defer":{"priority":-2},"mol/func/name":{"priority":-4},"mol/log":{"priority":-1}},"mol/object":{"mol":{"priority":0},"mol/func/name":{"priority":-3}},"mol/func/name":{"mol/func":{"priority":0}},"mol/func":{"mol":{"priority":0}},"mol/window":{"mol":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2},"mol/atom":{"priority":-2},"mol/log":{"priority":-1}},"mol/mem":{"mol":{"priority":0},"mol/atom":{"priority":-2},"mol/object":{"priority":-5}},"mol/atom":{"mol":{"priority":0},"mol/object":{"priority":-1},"mol/conform":{"priority":-3},"mol/log":{"priority":-4},"mol/defer":{"priority":-3},"mol/state/stack":{"priority":-1}},"mol/conform":{"mol":{"priority":0}},"mol/log":{"mol":{"priority":0}},"mol/defer":{"mol":{"priority":0},"mol/object":{"priority":-1}},"mol/state/stack":{"mol/state":{"priority":0}},"mol/state":{"mol":{"priority":0}},"mol/dom/context":{"mol/dom":{"priority":0}},"mol/dom":{"mol":{"priority":0}},"mol/view/selection":{"mol/view":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2},"mol/atom":{"priority":-2},"mol/defer":{"priority":-3},"mol/dom/context":{"priority":-1},"mol/log":{"priority":-2}},"mol/dom/render":{"mol/dom":{"priority":0},"mol/dom/context":{"priority":-5},"mol/log":{"priority":-3}},"mol/keyboard":{"mol":{"priority":0}},"mol/button":{"mol":{"priority":0},"mol/skin":{"priority":-1},"mol/view":{"priority":0},"mol/mem":{"priority":-1},"mol/atom":{"priority":-1},"mol/button/button.view.tree":{"priority":0},"mol/keyboard":{"priority":-3}},"mol/link":{"mol":{"priority":0},"mol/skin":{"priority":-1},"mol/view":{"priority":0},"mol/mem":{"priority":-1},"mol/atom":{"priority":-1},"mol/link/link.view.tree":{"priority":0},"mol/state/arg":{"priority":-3},"mol/log":{"priority":-3}},"mol/state/arg":{"mol/state":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2},"mol/atom":{"priority":-2},"mol/dom/context":{"priority":-3},"mol/merge/dict":{"priority":-3},"mol/log":{"priority":-1}},"mol/merge/dict":{"mol/merge":{"priority":0}},"mol/merge":{"mol":{"priority":0}},"mol/check":{"mol":{"priority":0},"mol/button":{"priority":0},"mol/mem":{"priority":-1},"mol/atom":{"priority":-1},"mol/view":{"priority":-2},"mol/check/check.view.tree":{"priority":0}},"mol/scroll":{"mol":{"priority":0},"mol/skin":{"priority":-1},"mol/view":{"priority":-3},"mol/mem":{"priority":-1},"mol/atom":{"priority":-1},"mol/scroll/scroll.view.tree":{"priority":0},"mol/defer":{"priority":-3},"mol/log":{"priority":-3},"mol/window":{"priority":-4}},"mol/locale":{"mol":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2},"mol/state/local":{"priority":-3},"mol/dom/context":{"priority":-3},"mol/file":{"priority":-3},"mol/atom":{"priority":-4}},"mol/state/local":{"mol/state":{"priority":0},"mol/object":{"priority":-1},"mol/dom/context":{"priority":-4},"mol/mem":{"priority":-2},"mol/atom":{"priority":-2}},"mol/file":{"mol":{"priority":0},"mol/object":{"priority":-1},"mol/mem":{"priority":-2},"mol/const":{"priority":-4},"mol/atom":{"priority":-2},"mol/http/resource":{"priority":-3}},"mol/const":{"mol":{"priority":0}},"mol/http/resource":{"mol/http":{"priority":-1},"mol/deprecated":{"priority":-2}},"mol/http":{"mol":{"priority":0},"mol/object":{"priority":-1},"mol/dom/context":{"priority":-3},"mol/mem":{"priority":-2},"mol/const":{"priority":-4},"mol/log":{"priority":-3},"mol/atom":{"priority":-3},"mol/defer":{"priority":-4},"mol/maybe":{"priority":-3}},"mol/maybe":{"mol":{"priority":0}},"mol/deprecated":{"mol":{"priority":0}},"mol/list":{"mol":{"priority":0},"mol/view":{"priority":-3},"mol/list/list.view.tree":{"priority":0},"mol/mem":{"priority":-2}},"mol/bar":{"mol":{"priority":0},"mol/skin":{"priority":-1},"mol/view":{"priority":0}}},"deps":{"mol/app/todomvc":{"..":0,"/mol/app/todomvc":0,"/mol/string":0,"/mol/button":0,"/mol/link":0,"/mol/link/current":0,"/mol/app/todomvc/head/complete":0,"/mol/check/checked":0,"/mol/app/todomvc/add":0,"/mol/app/todomvc/list":0,"/mol/app/todomvc/page":0,"/mol/app/todomvc/panel":0,"/mol/app/todomvc/head":0,"/mol/app/todomvc/title":0,"/mol/app/todomvc/task/row":0,"/mol/app/todomvc/task/row/complete":0,"/mol/app/todomvc/task/row/title":0,"/mol/app/todomvc/task/row/completed":0,"/mol/app/todomvc/task/row/drop":0,"/mol/app/todomvc/foot":0,"/mol/app/todomvc/pending":0,"/mol/app/todomvc/filter":0,"/mol/app/todomvc/sweep":0,"/mol/scroll":0,"/mol/locale/text":-2,"/mol/mem":-1,"/mol/list":-2,"/mol/view":0,"/mol/check":-2,"/mol/atom/force":-1,"/mol/app/todomvc/pending/message":-2,"/mol/bar":-2,"/mol/app/todomvc/filter/all/label":-2,"/mol/app/todomvc/filter/active/label":-2,"/mol/app/todomvc/filter/completed/label":-2,"/mol/button/minor":-2,"/mol/app/todomvc/sweep/label":-2,"/mol/mem/key":-1,"/mol/app/todomvc/add/hint":-2,"/mol/app/todomvc/task/row/title/hint":-2,"/mol/button/typed":-2,"todomvc.view.tree":0,"/mol/app/todomvc/task":0,"/mol/keyboard/code/enter":-4,"/mol/state/local/value":-3,"/mol/state/arg/value":-3,"/mol/merge/dict":-3},"mol/app":{"..":0},"mol":{"..":0,"/mol":0},"mol/string":{"..":0,"/mol/string":0,"/mol/skin/light/outline":-1,"/mol/skin/round":-1,"/mol/skin/passive":-1,"/mol/skin/light/text":-1,"/mol/skin/card":-1,"/mol/skin/focus/outline":-1,"/mol/view":0,"/mol/mem":-1,"/mol/atom/force":-1,"string.view.tree":0,"/mol/log/group":-3,"/mol/keyboard/code/enter":-3},"mol/skin":{"..":0,"/mol/skin/font":-1,"/mol/skin/font/monospace":-1,"/mol/skin/base":-1,"/mol/skin/base/text":-1,"/mol/skin/current":-1,"/mol/skin/current/text":-1,"/mol/skin/current/line":-1,"/mol/skin/button":-1,"/mol/skin/card":-1,"/mol/skin/hover":-1,"/mol/skin/round":-1,"/mol/skin/focus/line":-1,"/mol/skin/focus/outline":-1,"/mol/skin/float":-1,"/mol/skin/passive":-1,"/mol/skin/passive/text":-1,"/mol/skin/light":-1,"/mol/skin/light/line":-1,"/mol/skin/light/text":-1,"/mol/skin/light/hover":-1,"/mol/skin/light/outline":-1,"/mol/skin/card/text":-1,"/mol/skin/accent":-1,"/mol/skin/accent/text":-1,"/mol/skin/accent/hover":-1,"/mol/skin/warn":-1,"/mol/skin/warn/text":-1,"/mol/skin/warn/hover":-1,"/mol/skin/good":-1,"/mol/skin/good/text":-1,"/mol/skin/bad":-1,"/mol/skin/bad/text":-1},"mol/view":{"..":0,"/mol/view":0,"/mol/view/root":0,"/mol/skin/font":-1,"/mol/skin/light":-1,"/mol/view/error":0,"/mol/skin/base":-2,"/mol":-1,"/mol/view/context":-1,"/mol/object/context":-1,"/mol/view/visible/width":-1,"/mol/window/size":-2,"/mol/view/visible/height":-1,"/mol/view/state/key":-1,"/mol/object":-1,"/mol/mem/key":-2,"/mol/mem":-2,"/mol/dom/context/document/querySelectorAll":-3,"/mol/view/selection/focused":-3,"/mol/dom/context/document/createElementNS":-3,"/mol/dom/render/attributes":-3,"/mol/dom/render/events":-3,"/mol/dom/render/events/async":-3,"/mol/atom/wait":-4,"/mol/atom/catched":-4,"/mol/dom/render/children":-3,"/mol/dom/render/styles":-3,"/mol/dom/render/fields":-3,"/mol/defer":-3,"/mol/func/name":-4,"/mol/dom/context/document/addEventListener":-1,"/mol/log/group":-1,"/mol/view/autobind":-2,"/mol/defer/run":-2},"mol/object":{"..":0,"/mol/object/context":-1,"/mol/object":-1,"/mol/func/name":-3},"mol/func/name":{"..":0,"/mol/func/name/dict":-1,"/mol/func/name":-1,"/mol/func/name/dict/get":-2,"/mol/func/name/dict/set":-2},"mol/func":{"..":0},"mol/window":{"..":0,"/mol/window":-1,"/mol/object":-1,"/mol/mem":-2,"/mol/atom/force":-2,"/mol/log/group":-1,"/mol/window/size":-2,"/mol/atom/force/cache":-2},"mol/mem":{"..":0,"/mol/mem":-1,"/mol/atom/force":-2,"/mol/atom":-2,"/mol/mem/value":-2,"/mol/object":-5,"/mol/mem/key":-1,"/mol/mem/key/value":-2},"mol/atom":{"..":0,"/mol/atom/status":-1,"/mol/atom":-1,"/mol/object":-1,"/mol/atom/status/obsolete":-2,"/mol/atom/force":-1,"/mol/atom/status/actual":-3,"/mol/atom/stack":-1,"/mol/atom/status/pulling":-3,"/mol/atom/status/checking":-3,"/mol/atom/catched":-4,"/mol/atom/wait":-1,"/mol/conform":-3,"/mol/log":-3,"/mol/atom/actualize":-3,"/mol/atom/unreap":-4,"/mol/atom/reap":-4,"/mol/atom/force/cache":-1,"/mol/atom/force/update":-1,"/mol/atom/updating/push":-3,"/mol/atom/schedule":-3,"/mol/atom/reaping/add":-3,"/mol/atom/reaping/delete":-3,"/mol/defer":-3,"/mol/log/group":-4,"/mol/atom/sync":-4,"/mol/state/stack/set":-1,"/mol/atom/current":-1},"mol/conform":{"..":0,"/mol/conform":-1,"/mol/conform/handlers/get":-2,"/mol/conform/handlers":-1,"/mol/conform/handler":-1,"/mol/conform/handlers/set":-2},"mol/log":{"..":0,"/mol/log":-1,"/mol/log/filter":-1,"/mol/log/context":-1,"/mol/log/debug":-1,"/mol/log/group":-1,"/mol/log/group/wrapper":-2},"mol/defer":{"..":0,"/mol/defer":-1,"/mol/object":-1,"/mol/defer/add":-3,"/mol/defer/drop":-3},"mol/state/stack":{"..":0,"/mol/state/stack":-1},"mol/state":{"..":0},"mol/dom/context":{"..":0,"/mol/dom/context":-1},"mol/dom":{"..":0},"mol/view/selection":{"..":0,"/mol/view/selection":-1,"/mol/object":-1,"/mol/mem":-2,"/mol/atom/force":-2,"/mol/atom/current":-3,"/mol/defer":-3,"/mol/dom/context/document/getElementById":-4,"/mol/dom/context/document/getSelection":-4,"/mol/atom/force/cache":-2,"/mol/log/group":-2,"/mol/dom/context/document/addEventListener":-1,"/mol/view/selection/position":-2,"/mol/view/selection/onFocus":-2,"/mol/view/selection/onBlur":-2},"mol/dom/render":{"..":0,"/mol/dom/render/fields":-1,"/mol/dom/render/children":-1,"/mol/dom/context/Node":-3,"/mol/dom/context/document/createTextNode":-5,"/mol/dom/render/attributes":-1,"/mol/dom/render/styles":-1,"/mol/dom/render/events":-1,"/mol/log/group":-3,"/mol/dom/render/events/async":-1},"mol/string/string.view.tree":{},"mol/keyboard":{"..":0,"/mol/keyboard/code":-0.5},"mol/button":{"..":0,"/mol/button":0,"/mol/button/typed":0,"/mol/skin/round":-1,"/mol/skin/passive/text":-1,"/mol/button/minor":0,"/mol/skin/light/outline":-1,"/mol/skin/light":-1,"/mol/skin/light/text":-1,"/mol/button/major":0,"/mol/skin/accent":-1,"/mol/skin/accent/text":-1,"/mol/button/danger":0,"/mol/skin/warn":-1,"/mol/skin/warn/text":-1,"/mol/skin/hover":-1,"/mol/skin/light/hover":-1,"/mol/skin/accent/hover":-1,"/mol/skin/warn/hover":-1,"/mol/view":0,"/mol/mem":-1,"/mol/atom/force":-1,"button.view.tree":0,"/mol/keyboard/code/enter":-3},"mol/button/button.view.tree":{},"mol/link":{"..":0,"/mol/link":0,"/mol/skin/round":-1,"/mol/link/current":0,"/mol/skin/hover":-1,"/mol/skin/hover/line":-1,"/mol/skin/current":-1,"/mol/skin/current/text":-1,"/mol/view":0,"/mol/mem":-1,"/mol/atom/force":-1,"link.view.tree":0,"/mol/state/arg":-3,"/mol/state/arg/link":-3,"/mol/log/group":-3},"mol/link/link.view.tree":{},"mol/state/arg":{"..":0,"/mol/state/arg":-1,"/mol/object":-1,"/mol/mem":-2,"/mol/atom/force":-2,"/mol/dom/context/document/title":-3,"/mol/mem/key":-2,"/mol/merge/dict":-3,"/mol/state/arg/value":-3,"/mol/state/arg/link":-3,"/mol/log/group":-1,"/mol/state/arg/href":-2,"/mol/atom/force/cache":-2},"mol/merge/dict":{"..":0,"/mol/merge/dict":-1},"mol/merge":{"..":0},"mol/check":{"..":0,"/mol/check":0,"/mol/button/typed":0,"/mol/mem":-1,"/mol/atom/force":-1,"/mol/view":-2,"check.view.tree":0},"mol/check/check.view.tree":{},"mol/scroll":{"..":0,"/mol/scroll":0,"/mol/skin/light/outline":-1,"/mol/scroll/strut":0,"/mol/view":0,"/mol/mem":-1,"/mol/atom/force":-1,"scroll.view.tree":0,"/mol/scroll/top":-1,"/mol/scroll/left":-1,"/mol/scroll/moving":-1,"/mol/scroll/moving/vert":-1,"/mol/scroll/moving/hor":-1,"/mol/defer":-3,"/mol/log/group":-3,"/mol/view/visible/height":-3,"/mol/window/size":-4,"/mol/view/visible/width":-3},"mol/scroll/scroll.view.tree":{},"mol/locale":{"..":0,"/mol/locale/dict":-1,"/mol/locale":-1,"/mol/object":-1,"/mol/mem":-2,"/mol/state/local/value":-3,"/mol/dom/context/navigator/language/replace":-3,"/mol/mem/key":-2,"/mol/file/relative":-3,"/mol/atom/wait":-4},"mol/state/local":{"..":0,"/mol/state/local":-1,"/mol/object":-1,"/mol/dom/context/localStorage":-4,"/mol/mem/key":-2,"/mol/atom/force":-2,"/mol/state/local/value":-2,"/mol/atom/force/cache":-2},"mol/file":{"..":0,"/mol/file":-1,"/mol/object":-1,"/mol/mem/key":-2,"/mol/file/make":-3,"/mol/const":-4,"/mol/mem":-2,"/mol/atom/force":-2,"/mol/http/resource":-3},"mol/const":{"..":0,"/mol/const":-1},"mol/http/resource":{"..":0,"/mol/http/resource":-1,"/mol/http":-1,"/mol/deprecated":-2,"/mol/http/resource/json":-1},"mol/http":{"..":0,"/mol/http":-1,"/mol/object":-1,"/mol/dom/context/document/createElement":-3,"/mol/mem/key":-2,"/mol/http/make":-3,"/mol/const":-4,"/mol/dom/context/XMLHttpRequest":-3,"/mol/log/group":-3,"/mol/atom/force/cache":-5,"/mol/defer":-4,"/mol/mem":-2,"/mol/atom/force":-2,"/mol/maybe":-3,"/mol/atom/wait":-3},"mol/maybe":{"..":0,"/mol/maybe":-1},"mol/deprecated":{"..":0,"/mol/deprecated":-1,"/mol/deprecated/wrapper":-3},"mol/list":{"..":0,"/mol/list":0,"/mol/view":0,"list.view.tree":0,"/mol/mem":-2,"/mol/view/visible/height":-3,"/mol/mem/key":-2},"mol/list/list.view.tree":{},"mol/bar":{"..":0,"/mol/bar":0,"/mol/skin/light/outline":-1,"/mol/skin/round":-1,"/mol/view":0},"mol/app/todomvc/todomvc.view.tree":{}}} \ No newline at end of file diff --git a/examples/mol/-/web.js b/examples/mol/-/web.js deleted file mode 100644 index 5508fc22b9..0000000000 --- a/examples/mol/-/web.js +++ /dev/null @@ -1,2662 +0,0 @@ -"use strict" -/// Fake namespace for optional overrides -/// -/// namespace $ { export var x = 1 , y = 1 } // defaults -/// namespace $.$$ { export var x = 2 } // overrides -/// namespace $.$$ { console.log( x , y ) } // usage -/// -this.$ = this.$ || this -var $ = this.$ -$.$$ = $ - -$.$mol = $ // deprecated - -; -"use strict"; -var $; -(function ($) { - $.$mol_func_name_dict = new WeakMap(); - function $mol_func_name(func) { - let name = $.$mol_func_name_dict.get(func); - if (name != null) - return name; - name = func.name || Function.prototype.toString.call(func).match(/([a-z0-9_$]*) ?(\(|\{|extends)/)[1]; - $.$mol_func_name_dict.set(func, name); - return name; - } - $.$mol_func_name = $mol_func_name; -})($ || ($ = {})); -//name.js.map -; -"use strict"; -var $; -(function ($_1) { - let $$; - (function ($$) { - let $; - })($$ = $_1.$$ || ($_1.$$ = {})); - class $mol_object { - get $() { - const owner = this.object_owner(); - return (owner && owner.$ || $); - } - static make(config) { - const instance = new this; - for (let key in config) - instance[key] = config[key]; - return instance; - } - static toString() { - return $_1.$mol_func_name(this); - } - object_owner(next) { - return this['object_owner()'] || (this['object_owner()'] = next); - } - object_host(next) { - return this['object_host()'] || (this['object_host()'] = next); - } - object_field(next) { - return this['object_field()'] || (this['object_field()'] = next) || ''; - } - object_id(next) { - return this['object_id()'] || (this['object_id()'] = next) || ''; - } - toString() { - return this.object_id(); - } - toJSON() { - return this.toString(); - } - destructor() { } - } - $_1.$mol_object = $mol_object; -})($ || ($ = {})); -//object.js.map -; -"use strict"; -var $; -(function ($) { - const cache = new WeakMap(); - function $mol_conform(target, source, stack = []) { - if (target === source) - return source; - if (!target || typeof target !== 'object') - return target; - if (!source || typeof source !== 'object') - return target; - if (target instanceof Error) - return target; - if (source instanceof Error) - return target; - if (target.constructor !== source.constructor) - return target; - if (cache.get(target)) - return target; - cache.set(target, true); - const conform = $.$mol_conform_handlers.get(target.constructor); - if (!conform) - return target; - if (stack.indexOf(target) !== -1) - return target; - stack.push(target); - const res = conform(target, source, stack); - stack.pop(); - return res; - } - $.$mol_conform = $mol_conform; - $.$mol_conform_handlers = new WeakMap(); - function $mol_conform_handler(cl, handler) { - $.$mol_conform_handlers.set(cl, handler); - } - $.$mol_conform_handler = $mol_conform_handler; - $mol_conform_handler(Array, (target, source, stack) => { - let equal = target.length === source.length; - for (let i = 0; i < target.length; ++i) { - const conformed = target[i] = $mol_conform(target[i], source[i], stack); - if (equal && conformed !== source[i]) - equal = false; - } - return equal ? source : target; - }); - $mol_conform_handler(Object, (target, source, stack) => { - let count = 0; - let equal = true; - for (let key in target) { - const conformed = target[key] = $mol_conform(target[key], source[key], stack); - if (equal && conformed !== source[key]) - equal = false; - ++count; - } - for (let key in source) - if (--count < 0) - break; - return (equal && count === 0) ? source : target; - }); - $mol_conform_handler(Date, (target, source) => (target.getTime() === source.getTime()) ? source : target); - $mol_conform_handler(RegExp, (target, source) => (target.toString() === source.toString()) ? source : target); -})($ || ($ = {})); -//conform.js.map -; -"use strict"; -var $; -(function ($) { - function $mol_log(path, ...values) { - if ($.$mol_log_filter() == null) - return; - path = String(path); - if (path.indexOf($.$mol_log_filter()) === -1) - return; - if ($.$mol_log_context()) - $.$mol_log_context()(); - console.debug(path, ...values.map(val => val instanceof Error ? Object.assign({}, val) : val)); - if ($.$mol_log_debug() == null) - return; - if (path.indexOf($.$mol_log_debug()) === -1) - return; - debugger; - } - $.$mol_log = $mol_log; -})($ || ($ = {})); -//log.js.map -; -"use strict"; -var $; -(function ($) { - let context = null; - function $mol_log_context(next = context) { - return context = next; - } - $.$mol_log_context = $mol_log_context; -})($ || ($ = {})); -//log_context.js.map -; -"use strict"; -var $; -(function ($) { - function $mol_log_debug(next) { - if (next !== undefined) { - if (next == null) { - sessionStorage.removeItem('$mol_log_debug()'); - } - else { - sessionStorage.setItem('$mol_log_debug()', next); - } - } - return sessionStorage.getItem('$mol_log_debug()'); - } - $.$mol_log_debug = $mol_log_debug; -})($ || ($ = {})); -//log_debug.web.js.map -; -"use strict"; -var $; -(function ($) { - let filter; - function $mol_log_filter(next) { - if (next !== undefined) { - if (next == null) { - sessionStorage.removeItem('$mol_log_filter()'); - } - else { - sessionStorage.setItem('$mol_log_filter()', next); - } - filter = next; - } - if (filter !== undefined) - return filter; - return filter = sessionStorage.getItem('$mol_log_filter()'); - } - $.$mol_log_filter = $mol_log_filter; -})($ || ($ = {})); -//log_filter.web.js.map -; -"use strict"; -var $; -(function ($) { - function $mol_log_group(name, task) { - return function $mol_log_group_wrapper(...args) { - const filter = $.$mol_log_filter(); - if (filter == null) - return task.apply(this, args); - let started = false; - let prev = $.$mol_log_context(); - $.$mol_log_context(() => { - if (prev) - prev(); - started = true; - if (filter) - console.group(name); - else - console.groupCollapsed(name); - $.$mol_log_context(prev = null); - }); - try { - return task.apply(this, args); - } - finally { - if (started) - console.groupEnd(); - $.$mol_log_context(prev); - } - }; - } - $.$mol_log_group = $mol_log_group; -})($ || ($ = {})); -//log_group.js.map -; -"use strict"; -var $; -(function ($) { - class $mol_defer extends $.$mol_object { - constructor(run) { - super(); - this.run = run; - $mol_defer.add(this); - } - destructor() { - $mol_defer.drop(this); - } - static schedule() { - if (this.timer) - return; - this.timer = this.scheduleNative(() => { - this.timer = 0; - this.run(); - }); - } - static unschedule() { - if (!this.timer) - return; - cancelAnimationFrame(this.timer); - this.timer = 0; - } - static add(defer) { - this.all.push(defer); - this.schedule(); - } - static drop(defer) { - var index = this.all.indexOf(defer); - if (index >= 0) - this.all.splice(index, 1); - } - static run() { - if (this.all.length === 0) - return; - this.schedule(); - for (var defer; defer = this.all.shift();) - defer.run(); - } - } - $mol_defer.all = []; - $mol_defer.timer = 0; - $mol_defer.scheduleNative = (typeof requestAnimationFrame == 'function') - ? handler => requestAnimationFrame(handler) - : handler => setTimeout(handler, 16); - $.$mol_defer = $mol_defer; -})($ || ($ = {})); -//defer.js.map -; -"use strict"; -var $; -(function ($) { - $.$mol_state_stack = new Map(); -})($ || ($ = {})); -//stack.js.map -; -void function() { - - if( typeof alert === 'function' ) { - var nativeAlert = alert - window.alert = function alert( message ) { - console.warn( 'Alerts causes atom synchronization problems in IE. Use custom notificator instead.' ) - return nativeAlert( message ) - } - } - - if( typeof confirm === 'function' ) { - var nativeConfirm = confirm - window.confirm = function confirm( question ) { - console.warn( 'Confirms causes atom synchronization problems in IE. Use custom dialog instead.' ) - return nativeConfirm( question ) - } - } - - if( typeof confirm === 'function' ) { - var nativePrompt = prompt - window.prompt = function prompt( question , def ) { - console.warn( 'Prompts causes atom synchronization problems in IE. Use custom dialog instead.' ) - return nativePrompt( question , def ) - } - } - -}() - -; -"use strict"; -var $; -(function ($) { - let $mol_atom_status; - (function ($mol_atom_status) { - $mol_atom_status["obsolete"] = "obsolete"; - $mol_atom_status["checking"] = "checking"; - $mol_atom_status["pulling"] = "pulling"; - $mol_atom_status["actual"] = "actual"; - })($mol_atom_status = $.$mol_atom_status || ($.$mol_atom_status = {})); - class $mol_atom extends $.$mol_object { - constructor(id, handler = next => next) { - super(); - this.masters = null; - this.slaves = null; - this.status = $mol_atom_status.obsolete; - this.object_id(id); - this.handler = handler; - } - destructor() { - this.unlink(); - this.status = $mol_atom_status.actual; - const value = this['value()']; - if (value instanceof $.$mol_object) { - if (value.object_owner() === this) - value.destructor(); - } - this['value()'] = undefined; - } - unlink() { - this.disobey_all(); - if (this.slaves) - this.check_slaves(); - } - get(force) { - const slave = $mol_atom.stack[0]; - if (slave) { - this.lead(slave); - slave.obey(this); - } - this.actualize(force); - const value = this['value()']; - if (typeof Proxy !== 'function' && value instanceof Error) { - throw value; - } - return value; - } - actualize(force) { - if (this.status === $mol_atom_status.pulling) { - throw new Error(`Cyclic atom dependency of ${this}`); - } - if (!force && this.status === $mol_atom_status.actual) - return; - const slave = $mol_atom.stack[0]; - $mol_atom.stack[0] = this; - if (!force && this.status === $mol_atom_status.checking) { - this.masters.forEach(master => { - if (this.status !== $mol_atom_status.checking) - return; - master.actualize(); - }); - if (this.status === $mol_atom_status.checking) { - this.status = $mol_atom_status.actual; - } - } - if (force || this.status !== $mol_atom_status.actual) { - const oldMasters = this.masters; - this.masters = null; - if (oldMasters) - oldMasters.forEach(master => { - master.dislead(this); - }); - this.status = $mol_atom_status.pulling; - const next = this.pull(force); - if (next === undefined) { - this.status = $mol_atom_status.actual; - } - else { - this.push(next); - } - } - $mol_atom.stack[0] = slave; - } - pull(force) { - try { - return this.handler(this._next, force); - } - catch (error) { - if (error['$mol_atom_catched']) - return error; - if (error instanceof $mol_atom_wait) - return error; - console.error(error.stack || error); - if (!(error instanceof Error)) { - error = new Error(error.stack || error); - } - error['$mol_atom_catched'] = true; - return error; - } - } - set(next) { - return this.value(next); - } - push(next_raw) { - if (!(next_raw instanceof $mol_atom_wait)) { - this._ignore = this._next; - this._next = undefined; - } - this.status = next_raw === undefined ? $mol_atom_status.obsolete : $mol_atom_status.actual; - const prev = this['value()']; - let next = (next_raw instanceof Error || prev instanceof Error) ? next_raw : $.$mol_conform(next_raw, prev); - if (next === prev) - return prev; - if (prev instanceof $.$mol_object) { - if (prev.object_owner() === this) - prev.destructor(); - } - if (next instanceof $.$mol_object) { - next.object_owner(this); - } - if ((typeof Proxy === 'function') && (next instanceof Error)) { - next = new Proxy(next, { - get(target) { - throw target.valueOf(); - }, - ownKeys(target) { - throw target.valueOf(); - }, - }); - } - this['value()'] = next; - $.$mol_log(this, prev, '➔', next); - this.obsolete_slaves(); - return next; - } - obsolete_slaves() { - if (!this.slaves) - return; - this.slaves.forEach(slave => slave.obsolete()); - } - check_slaves() { - if (this.slaves) { - this.slaves.forEach(slave => slave.check()); - } - else { - $mol_atom.actualize(this); - } - } - check() { - if (this.status === $mol_atom_status.actual) { - this.status = $mol_atom_status.checking; - this.check_slaves(); - } - } - obsolete() { - if (this.status === $mol_atom_status.obsolete) - return; - this.status = $mol_atom_status.obsolete; - this.check_slaves(); - return; - } - lead(slave) { - if (!this.slaves) { - this.slaves = new Set(); - $mol_atom.unreap(this); - } - this.slaves.add(slave); - } - dislead(slave) { - if (!this.slaves) - return; - if (this.slaves.size === 1) { - this.slaves = null; - $mol_atom.reap(this); - } - else { - this.slaves.delete(slave); - } - } - obey(master) { - if (!this.masters) - this.masters = new Set(); - this.masters.add(master); - } - disobey(master) { - if (!this.masters) - return; - this.masters.delete(master); - } - disobey_all() { - if (!this.masters) - return; - this.masters.forEach(master => master.dislead(this)); - this.masters = null; - } - cache(next) { - if (next === undefined) - return this['value()']; - return this['value()'] = next; - } - value(next, force) { - if (force === $mol_atom_force_cache) - return this.push(next); - if (next !== undefined) { - if (force === $mol_atom_force) - return this.push(next); - let next_normal = $.$mol_conform(next, this._ignore); - if (next_normal === this._ignore) - return this.get(force); - if (!(this['value()'] instanceof Error)) { - next_normal = $.$mol_conform(next, this['value()']); - if (next_normal === this['value()']) - return this.get(force); - } - this._next = next_normal; - this._ignore = next_normal; - force = $mol_atom_force_update; - } - return this.get(force); - } - static actualize(atom) { - $mol_atom.updating.push(atom); - $mol_atom.schedule(); - } - static reap(atom) { - $mol_atom.reaping.add(atom); - $mol_atom.schedule(); - } - static unreap(atom) { - $mol_atom.reaping.delete(atom); - } - static schedule() { - if (this.scheduled) - return; - new $.$mol_defer($.$mol_log_group('$mol_atom.sync()', () => { - if (!this.scheduled) - return; - this.scheduled = false; - this.sync(); - })); - this.scheduled = true; - } - static sync() { - this.schedule(); - while (true) { - const atom = this.updating.shift(); - if (!atom) - break; - if (this.reaping.has(atom)) - continue; - if (atom.status !== $mol_atom_status.actual) - atom.get(); - } - while (this.reaping.size) { - this.reaping.forEach(atom => { - this.reaping.delete(atom); - if (!atom.slaves) - atom.destructor(); - }); - } - this.scheduled = false; - } - then(done, fail) { - let prev; - let next; - const atom = new $mol_atom(`${this}.then(${done})`, () => { - try { - if (prev == undefined) { - const val = this.get(); - if (val instanceof $mol_atom_wait) - return val; - if (val) - val.valueOf(); - prev = val; - } - if (next == undefined) { - const val = done(prev); - if (val instanceof $mol_atom_wait) - return val; - if (val) - val.valueOf(); - next = val; - } - return next; - } - catch (error) { - if (error instanceof $mol_atom_wait) - return error; - if (fail) - return fail(error); - return error; - } - }); - $mol_atom.actualize(atom); - return atom; - } - catch(fail) { - return this.then(next => next, fail); - } - } - $mol_atom.stack = []; - $mol_atom.updating = []; - $mol_atom.reaping = new Set(); - $mol_atom.scheduled = false; - $.$mol_atom = $mol_atom; - $.$mol_state_stack.set('$mol_atom.stack', $mol_atom.stack); - function $mol_atom_current() { - return $mol_atom.stack[0]; - } - $.$mol_atom_current = $mol_atom_current; - class $mol_atom_wait extends Error { - constructor() { - super(...arguments); - this.name = '$mol_atom_wait'; - } - } - $.$mol_atom_wait = $mol_atom_wait; - class $mol_atom_force extends Object { - static toString() { return this.name; } - } - $.$mol_atom_force = $mol_atom_force; - class $mol_atom_force_cache extends $mol_atom_force { - } - $.$mol_atom_force_cache = $mol_atom_force_cache; - class $mol_atom_force_update extends $mol_atom_force { - } - $.$mol_atom_force_update = $mol_atom_force_update; -})($ || ($ = {})); -//atom.js.map -; -"use strict"; -var $; -(function ($) { - function $mol_mem(obj, name, descr) { - const value = descr.value; - const store = new WeakMap(); - descr.value = function $mol_mem_value(next, force) { - const host = this; - let atom = store.get(host); - if (!atom) { - const id = `${host}.${name}()`; - atom = new $.$mol_atom(id, function () { - const v = value.apply(host, arguments); - if (v instanceof $.$mol_object) { - if (!v.object_host()) { - v.object_host(host); - v.object_field(name); - v.object_id(id); - } - } - return v; - }); - atom.object_owner(host); - const destructor = atom.destructor; - atom.destructor = () => { - store.delete(host); - destructor.call(atom); - }; - store.set(host, atom); - } - return atom.value(next, force); - }; - Object.defineProperty(obj, name + "()", { get: function () { return store.get(this); } }); - descr.value['value'] = value; - return descr; - } - $.$mol_mem = $mol_mem; - function $mol_mem_key(obj, name, descr) { - const value = descr.value; - const store = new WeakMap(); - descr.value = function $mol_mem_key_value(key, next, force) { - const host = this; - const key_str = JSON.stringify(key); - let dict = store.get(host); - if (!dict) - store.set(host, dict = {}); - let atom = dict[key_str]; - if (!atom) { - const id = `${host}.${name}(${key_str})`; - atom = new $.$mol_atom(id, function (...args) { - const v = value.apply(host, [key, ...args]); - if (v instanceof $.$mol_object) { - if (!v.object_host()) { - v.object_host(host); - v.object_field(name); - v.object_id(id); - } - } - return v; - }); - const destructor = atom.destructor; - atom.destructor = () => { - delete dict[key_str]; - destructor.call(atom); - }; - dict[key_str] = atom; - } - return atom.value(next, force); - }; - Object.defineProperty(obj, name + "()", { get: function () { return store.get(this); } }); - void (descr.value['value'] = value); - return descr; - } - $.$mol_mem_key = $mol_mem_key; -})($ || ($ = {})); -//mem.js.map -; -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var $; -(function ($) { - class $mol_window extends $.$mol_object { - static size(next, force) { - return next || { - width: window.innerWidth, - height: window.innerHeight, - }; - } - } - __decorate([ - $.$mol_mem - ], $mol_window, "size", null); - $.$mol_window = $mol_window; - window.addEventListener('resize', $.$mol_log_group(`$mol_window resize`, () => { - $mol_window.size(undefined, $.$mol_atom_force_cache); - })); -})($ || ($ = {})); -//window.web.js.map -; -"use strict"; -var $; -(function ($) { -})($ || ($ = {})); -//context.js.map -; -"use strict"; -var $; -(function ($) { - $.$mol_dom_context = window; -})($ || ($ = {})); -//context.web.js.map -; -"use strict"; -var $; -(function ($) { - function $mol_dom_render_fields(el, fields) { - for (let key in fields) { - const val = fields[key]; - if (val === undefined) - continue; - if (el[key] === val) - continue; - el[key] = val; - } - } - $.$mol_dom_render_fields = $mol_dom_render_fields; - function $mol_dom_render_children(el, childNodes) { - const node_list = []; - const node_set = new Set(); - for (let i = 0; i < childNodes.length; ++i) { - let node = childNodes[i]; - if (node == null) - continue; - if (Object(node) === node) { - if (node['dom_tree']) - node = node['dom_tree'](); - node_list.push(node); - node_set.add(node); - } - else { - node_list.push(String(node)); - } - } - let nextNode = el.firstChild; - for (let view_ of node_list) { - const view = view_.valueOf(); - if (view instanceof $.$mol_dom_context.Node) { - while (true) { - if (!nextNode) { - el.appendChild(view); - break; - } - if (nextNode == view) { - nextNode = nextNode.nextSibling; - break; - } - else { - if (node_set.has(nextNode)) { - el.insertBefore(view, nextNode); - break; - } - else { - const nn = nextNode.nextSibling; - el.removeChild(nextNode); - nextNode = nn; - } - } - } - } - else { - if (nextNode && nextNode.nodeName === '#text') { - nextNode.nodeValue = String(view); - nextNode = nextNode.nextSibling; - } - else { - const textNode = $.$mol_dom_context.document.createTextNode(String(view)); - el.insertBefore(textNode, nextNode); - } - } - } - while (nextNode) { - const currNode = nextNode; - nextNode = currNode.nextSibling; - el.removeChild(currNode); - } - } - $.$mol_dom_render_children = $mol_dom_render_children; - function $mol_dom_render_attributes(el, attrs) { - for (let name in attrs) { - let val = attrs[name]; - if (val === null || val === false) - el.removeAttribute(name); - else - el.setAttribute(name, String(val)); - } - } - $.$mol_dom_render_attributes = $mol_dom_render_attributes; - function $mol_dom_render_styles(el, styles) { - for (let name in styles) { - let val = styles[name]; - const style = el.style; - const cur = style[name]; - if (typeof val === 'number') { - if (parseFloat(cur) == val) - continue; - style[name] = `${val}px`; - } - if (cur !== val) - style[name] = val; - } - } - $.$mol_dom_render_styles = $mol_dom_render_styles; - function $mol_dom_render_events(el, events) { - for (let name in events) { - el.addEventListener(name, $.$mol_log_group(el.id + ' ' + name, events[name]), { passive: false }); - } - } - $.$mol_dom_render_events = $mol_dom_render_events; - function $mol_dom_render_events_async(el, events) { - for (let name in events) { - el.addEventListener(name, $.$mol_log_group(el.id + ' ' + name, events[name]), { passive: true }); - } - } - $.$mol_dom_render_events_async = $mol_dom_render_events_async; -})($ || ($ = {})); -//render.js.map -; -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var $; -(function ($) { - let $$; - (function ($$_1) { - let $$; - })($$ = $.$$ || ($.$$ = {})); - let $mol; - (function ($mol_1) { - let $mol; - })($mol = $.$mol || ($.$mol = {})); - function $mol_view_visible_width() { - return $.$mol_window.size().width; - } - $.$mol_view_visible_width = $mol_view_visible_width; - function $mol_view_visible_height() { - return $.$mol_window.size().height; - } - $.$mol_view_visible_height = $mol_view_visible_height; - function $mol_view_state_key(suffix) { - return suffix; - } - $.$mol_view_state_key = $mol_view_state_key; - class $mol_view extends $.$mol_object { - static Root(id) { - return new this; - } - static autobind() { - const nodes = $.$mol_dom_context.document.querySelectorAll('[mol_view_root]'); - for (let i = nodes.length - 1; i >= 0; --i) { - const name = nodes.item(i).getAttribute('mol_view_root'); - const View = $[name]; - if (!View) { - console.error(`Can not attach view. Class not found: ${name}`); - continue; - } - const view = View.Root(i); - view.dom_tree(nodes.item(i)); - document.title = view.title(); - } - } - title() { - return this.constructor.toString(); - } - focused(next) { - let node = this.dom_node(); - const value = $.$mol_view_selection.focused(next === undefined ? undefined : next ? [node] : []) || []; - return value.indexOf(node) !== -1; - } - context(next) { - return next || $; - } - get $() { - return this.context(); - } - set $(next) { - this.context(next); - } - context_sub() { - return this.context(); - } - state_key(suffix = '') { - return this.$.$mol_view_state_key(suffix); - } - dom_name() { - return this.constructor.toString().replace('$', ''); - } - dom_name_space() { return 'http://www.w3.org/1999/xhtml'; } - sub() { - return null; - } - sub_visible() { - const sub = this.sub(); - if (!sub) - return sub; - const context = this.context_sub(); - sub.forEach(child => { - if (child instanceof $mol_view) { - child.$ = context; - } - }); - return sub; - } - minimal_width() { - const sub = this.sub(); - if (!sub) - return 0; - let min = 0; - sub.forEach(view => { - if (view instanceof $mol_view) { - min = Math.max(min, view.minimal_width()); - } - }); - return min; - } - minimal_height() { - return this.content_height(); - } - content_height() { - const sub = this.sub(); - if (!sub) - return 0; - let min = 0; - sub.forEach(view => { - if (view instanceof $mol_view) { - min = Math.max(min, view.minimal_height()); - } - }); - return min; - } - dom_id() { - return this.toString(); - } - dom_node(next) { - const node = next || this.$.$mol_dom_context.document.createElementNS(this.dom_name_space(), this.dom_name()); - node.setAttribute('id', this.dom_id()); - $.$mol_dom_render_attributes(node, this.attr_static()); - $.$mol_dom_render_events(node, this.event()); - $.$mol_dom_render_events_async(node, this.event_async()); - return node; - } - dom_tree(next) { - const node = this.dom_node(next); - try { - for (let plugin of this.plugins()) - plugin.render(); - this.render(); - } - catch (error) { - $.$mol_dom_render_attributes(node, { mol_view_error: error.name }); - if (error instanceof $.$mol_atom_wait) - return node; - try { - void (node.innerText = error.message); - } - catch (e) { } - if (error['$mol_atom_catched']) - return node; - console.error(error); - error['$mol_atom_catched'] = true; - } - return node; - } - render() { - const node = this.dom_node(); - const sub = this.sub_visible(); - if (sub) - $.$mol_dom_render_children(node, sub); - $.$mol_dom_render_attributes(node, this.attr()); - $.$mol_dom_render_styles(node, this.style()); - const fields = this.field(); - $.$mol_dom_render_fields(node, fields); - new $.$mol_defer(() => $.$mol_dom_render_fields(node, fields)); - } - static view_classes() { - const proto = this.prototype; - let current = proto; - const classes = []; - while (current) { - classes.push(current.constructor); - if (!(current instanceof $mol_view)) - break; - current = Object.getPrototypeOf(current); - } - return classes; - } - view_names_owned() { - const names = []; - let owner = this.object_host(); - if (owner instanceof $mol_view) { - const suffix = this.object_field(); - const suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1); - for (let Class of owner.constructor.view_classes()) { - if (suffix in Class.prototype) - names.push($.$mol_func_name(Class) + suffix2); - else - break; - } - for (let prefix of owner.view_names_owned()) { - names.push(prefix + suffix2); - } - } - return names; - } - view_names() { - const names = []; - for (let name of this.view_names_owned()) { - if (names.indexOf(name) < 0) - names.push(name); - } - for (let Class of this.constructor.view_classes()) { - const name = $.$mol_func_name(Class); - if (names.indexOf(name) < 0) - names.push(name); - } - return names; - } - attr_static() { - let attrs = {}; - for (let name of this.view_names()) - attrs[name.replace(/\$/g, '').toLowerCase()] = ''; - return attrs; - } - attr() { - return { - 'mol_view_error': false, - }; - } - style() { - return {}; - } - field() { - return {}; - } - event() { - return {}; - } - event_async() { - return {}; - } - plugins() { - return []; - } - } - __decorate([ - $.$mol_mem - ], $mol_view.prototype, "focused", null); - __decorate([ - $.$mol_mem - ], $mol_view.prototype, "context", null); - __decorate([ - $.$mol_mem - ], $mol_view.prototype, "minimal_width", null); - __decorate([ - $.$mol_mem - ], $mol_view.prototype, "content_height", null); - __decorate([ - $.$mol_mem - ], $mol_view.prototype, "dom_node", null); - __decorate([ - $.$mol_mem - ], $mol_view.prototype, "dom_tree", null); - __decorate([ - $.$mol_mem - ], $mol_view.prototype, "view_names", null); - __decorate([ - $.$mol_mem_key - ], $mol_view, "Root", null); - __decorate([ - $.$mol_mem - ], $mol_view, "autobind", null); - __decorate([ - $.$mol_mem - ], $mol_view, "view_classes", null); - $.$mol_view = $mol_view; -})($ || ($ = {})); -//view.js.map -; -"use strict"; -var $; -(function ($) { - const event_name = window.cordova ? 'deviceready' : 'DOMContentLoaded'; - $.$mol_dom_context.document.addEventListener(event_name, $.$mol_log_group(`$mol_view ${event_name}`, (event) => { - $.$mol_view.autobind(); - $.$mol_defer.run(); - })); -})($ || ($ = {})); -//view.web.js.map -; -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var $; -(function ($) { - class $mol_view_selection extends $.$mol_object { - static focused(next, force) { - if (next === undefined) - return []; - const node = next[0]; - const atom = $.$mol_atom_current(); - new $.$mol_defer(() => { - if (node) - return node.focus(); - const el = atom.cache()[0]; - if (el) - el.blur(); - }); - return undefined; - } - static position(...diff) { - if (diff.length) { - if (!diff[0]) - return diff[0]; - var start = diff[0].start; - var end = diff[0].end; - if (!(start <= end)) - throw new Error(`Wrong offsets (${start},${end})`); - var root = $.$mol_dom_context.document.getElementById(diff[0].id); - root.focus(); - var range = new Range; - var cur = root.firstChild; - while (cur !== root) { - while (cur.firstChild) - cur = cur.firstChild; - if (cur.nodeValue) { - var length = cur.nodeValue.length; - if (length >= start) - break; - start -= length; - } - while (!cur.nextSibling) { - cur = cur.parentNode; - if (cur === root) { - start = root.childNodes.length; - break; - } - } - } - range.setStart(cur, start); - var cur = root.firstChild; - while (cur !== root) { - while (cur.firstChild) - cur = cur.firstChild; - if (cur.nodeValue) { - var length = cur.nodeValue.length; - if (length >= end) - break; - end -= length; - } - while (!cur.nextSibling) { - cur = cur.parentNode; - if (cur === root) { - end = root.childNodes.length; - break; - } - } - } - range.setEnd(cur, end); - var sel = $.$mol_dom_context.document.getSelection(); - sel.removeAllRanges(); - sel.addRange(range); - return diff[0]; - } - else { - var sel = $.$mol_dom_context.document.getSelection(); - if (sel.rangeCount === 0) - return null; - var range = sel.getRangeAt(0); - var el = range.commonAncestorContainer; - while (el && !el.id) - el = el.parentElement; - if (!el) - return { id: null, start: 0, end: 0 }; - var meter = new Range; - meter.selectNodeContents(el); - meter.setEnd(range.startContainer, range.startOffset); - var startOffset = meter.toString().length; - meter.setEnd(range.endContainer, range.endOffset); - var endOffset = meter.toString().length; - return { id: el.id, start: startOffset, end: endOffset }; - } - } - static onFocus(event) { - const parents = []; - let element = event.target; - while (element) { - parents.push(element); - element = element.parentNode; - } - this.focused(parents, $.$mol_atom_force_cache); - } - static onBlur(event) { - const focused = this.focused(); - setTimeout($.$mol_log_group('$mol_view_selection blur', () => { - if (focused !== this.focused()) - return; - this.focused([], $.$mol_atom_force_cache); - })); - } - } - __decorate([ - $.$mol_mem - ], $mol_view_selection, "focused", null); - __decorate([ - $.$mol_mem - ], $mol_view_selection, "position", null); - $.$mol_view_selection = $mol_view_selection; -})($ || ($ = {})); -//selection.js.map -; -"use strict"; -var $; -(function ($) { - $.$mol_dom_context.document.addEventListener('selectionchange', event => { - $.$mol_view_selection.position(undefined, $.$mol_atom_force_cache); - }); - $.$mol_dom_context.document.addEventListener('focus', $.$mol_log_group('$mol_view_selection focus', (event) => $.$mol_view_selection.onFocus(event)), true); - $.$mol_dom_context.document.addEventListener('blur', (event) => $.$mol_view_selection.onBlur(event), true); -})($ || ($ = {})); -//selection.web.js.map -; -"use strict"; -//code.js.map -; -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var $; -(function ($) { - class $mol_string extends $.$mol_view { - dom_name() { - return "input"; - } - enabled() { - return true; - } - debounce() { - return 200; - } - minimal_height() { - return 40; - } - field() { - return (Object.assign({}, super.field(), { "disabled": this.disabled(), "value": this.value_changed(), "placeholder": this.hint(), "type": this.type() })); - } - disabled() { - return false; - } - value_changed(val, force) { - return this.value(val); - } - value(val, force) { - return (val !== void 0) ? val : ""; - } - hint() { - return ""; - } - type(val, force) { - return (val !== void 0) ? val : "text"; - } - attr() { - return (Object.assign({}, super.attr(), { "maxlength": this.length_max() })); - } - length_max() { - return Infinity; - } - event() { - return (Object.assign({}, super.event(), { "input": (event) => this.event_change(event), "keypress": (event) => this.event_key_press(event) })); - } - event_change(event, force) { - return (event !== void 0) ? event : null; - } - event_key_press(event, force) { - return (event !== void 0) ? event : null; - } - } - __decorate([ - $.$mol_mem - ], $mol_string.prototype, "value_changed", null); - __decorate([ - $.$mol_mem - ], $mol_string.prototype, "value", null); - __decorate([ - $.$mol_mem - ], $mol_string.prototype, "type", null); - __decorate([ - $.$mol_mem - ], $mol_string.prototype, "event_change", null); - __decorate([ - $.$mol_mem - ], $mol_string.prototype, "event_key_press", null); - $.$mol_string = $mol_string; -})($ || ($ = {})); -//string.view.tree.js.map -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_string extends $.$mol_string { - constructor() { - super(...arguments); - this._timer = 0; - } - event_change(next) { - if (!next) - return; - clearTimeout(this._timer); - this._timer = setTimeout($.$mol_log_group(`${this}.event_change()`, () => { - this.value(next.target.value); - }), this.debounce()); - } - event_key_press(next) { - if (!next) - return; - if (next.keyCode === 13) { - this.value(next.target.value); - } - } - disabled() { - return !this.enabled(); - } - } - $$.$mol_string = $mol_string; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); -//string.view.js.map -; -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var $; -(function ($) { - class $mol_button extends $.$mol_view { - enabled() { - return true; - } - minimal_height() { - return 40; - } - click(event, force) { - return (event !== void 0) ? event : null; - } - event_click(event, force) { - return (event !== void 0) ? event : null; - } - event() { - return (Object.assign({}, super.event(), { "click": (event) => this.event_activate(event), "keypress": (event) => this.event_key_press(event) })); - } - event_activate(event, force) { - return (event !== void 0) ? event : null; - } - event_key_press(event, force) { - return (event !== void 0) ? event : null; - } - attr() { - return (Object.assign({}, super.attr(), { "disabled": this.disabled(), "role": "button", "tabindex": this.tab_index(), "title": this.hint() })); - } - disabled() { - return false; - } - tab_index() { - return 0; - } - hint() { - return ""; - } - sub() { - return [].concat(this.title()); - } - } - __decorate([ - $.$mol_mem - ], $mol_button.prototype, "click", null); - __decorate([ - $.$mol_mem - ], $mol_button.prototype, "event_click", null); - __decorate([ - $.$mol_mem - ], $mol_button.prototype, "event_activate", null); - __decorate([ - $.$mol_mem - ], $mol_button.prototype, "event_key_press", null); - $.$mol_button = $mol_button; -})($ || ($ = {})); -//button.view.tree.js.map -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_button extends $.$mol_button { - disabled() { - return !this.enabled(); - } - event_activate(next) { - if (!next) - return; - if (!this.enabled()) - return; - this.event_click(next); - this.click(next); - } - event_key_press(event) { - if (event.keyCode === 13) { - return this.event_activate(event); - } - } - tab_index() { - return this.enabled() ? super.tab_index() : null; - } - } - $$.$mol_button = $mol_button; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); -//button.view.js.map -; -"use strict"; -var $; -(function ($) { - class $mol_button_typed extends $.$mol_button { - } - $.$mol_button_typed = $mol_button_typed; -})($ || ($ = {})); -(function ($) { - class $mol_button_major extends $.$mol_button_typed { - } - $.$mol_button_major = $mol_button_major; -})($ || ($ = {})); -(function ($) { - class $mol_button_minor extends $.$mol_button_typed { - } - $.$mol_button_minor = $mol_button_minor; -})($ || ($ = {})); -(function ($) { - class $mol_button_danger extends $.$mol_button_typed { - } - $.$mol_button_danger = $mol_button_danger; -})($ || ($ = {})); -//button_types.view.tree.js.map -; -"use strict"; -var $; -(function ($) { - function $mol_merge_dict(target, source) { - let result = {}; - for (let key in target) - result[key] = target[key]; - for (let key in source) - result[key] = source[key]; - return result; - } - $.$mol_merge_dict = $mol_merge_dict; -})($ || ($ = {})); -//dict.js.map -; -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var $; -(function ($) { - class $mol_state_arg extends $.$mol_object { - constructor(prefix = '') { - super(); - this.prefix = prefix; - } - static href(next, force) { - if (next) - history.replaceState(history.state, $.$mol_dom_context.document.title, `${next}`); - return window.location.search + window.location.hash; - } - static dict(next) { - var href = this.href(next && this.make_link(next)); - var chunks = href.split(/[\/\?#&;]/g); - var params = {}; - chunks.forEach(chunk => { - if (!chunk) - return; - var vals = chunk.split('=').map(decodeURIComponent); - params[vals.shift()] = vals.join('='); - }); - return params; - } - static value(key, next) { - const nextDict = (next === void 0) ? void 0 : $.$mol_merge_dict(this.dict(), { [key]: next }); - const next2 = this.dict(nextDict)[key]; - return (next2 == null) ? null : next2; - } - static link(next) { - return this.make_link($.$mol_merge_dict(this.dict(), next)); - } - static make_link(next) { - const chunks = []; - for (let key in next) { - if (null == next[key]) - continue; - chunks.push([key].concat(next[key] ? next[key] : []).map(this.encode).join('=')); - } - return new URL('#' + chunks.join('/'), window.location.href).toString(); - } - static encode(str) { - return encodeURIComponent(str).replace(/\(/g, '%28').replace(/\)/g, '%29'); - } - value(key, next) { - return $mol_state_arg.value(this.prefix + key, next); - } - sub(postfix) { - return new $mol_state_arg(this.prefix + postfix + '.'); - } - link(next) { - var prefix = this.prefix; - var dict = {}; - for (var key in next) { - dict[prefix + key] = next[key]; - } - return $mol_state_arg.link(dict); - } - } - __decorate([ - $.$mol_mem - ], $mol_state_arg, "href", null); - __decorate([ - $.$mol_mem - ], $mol_state_arg, "dict", null); - __decorate([ - $.$mol_mem_key - ], $mol_state_arg, "value", null); - $.$mol_state_arg = $mol_state_arg; - window.addEventListener('hashchange', $.$mol_log_group('$mol_state_arg hashchange', (event) => { - $mol_state_arg.href(undefined, $.$mol_atom_force_cache); - })); -})($ || ($ = {})); -//arg.web.js.map -; -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var $; -(function ($) { - class $mol_link extends $.$mol_view { - minimal_height() { - return 40; - } - dom_name() { - return "a"; - } - attr() { - return (Object.assign({}, super.attr(), { "href": this.uri(), "title": this.hint(), "target": this.target(), "download": this.file_name(), "mol_link_current": this.current() })); - } - uri() { - return ""; - } - hint() { - return ""; - } - target() { - return "_self"; - } - file_name() { - return ""; - } - current() { - return false; - } - sub() { - return [].concat(this.title()); - } - arg() { - return ({}); - } - event() { - return (Object.assign({}, super.event(), { "click": (event) => this.click(event) })); - } - click(event, force) { - return this.event_click(event); - } - event_click(event, force) { - return (event !== void 0) ? event : null; - } - } - __decorate([ - $.$mol_mem - ], $mol_link.prototype, "click", null); - __decorate([ - $.$mol_mem - ], $mol_link.prototype, "event_click", null); - $.$mol_link = $mol_link; -})($ || ($ = {})); -//link.view.tree.js.map -; -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_link extends $.$mol_link { - uri() { - return new $.$mol_state_arg(this.state_key()).link(this.arg()); - } - current() { - return this.uri() === $.$mol_state_arg.link({}); - } - event_click(event) { - setTimeout($.$mol_log_group(`${this}.event_click()`, () => this.focused(false)), 200); - } - file_name() { - return null; - } - } - __decorate([ - $.$mol_mem - ], $mol_link.prototype, "uri", null); - $$.$mol_link = $mol_link; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); -//link.view.js.map -; -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var $; -(function ($) { - class $mol_check extends $.$mol_button_typed { - attr() { - return (Object.assign({}, super.attr(), { "mol_check_checked": this.checked(), "aria-checked": this.checked(), "role": "checkbox" })); - } - checked(val, force) { - return (val !== void 0) ? val : false; - } - sub() { - return [].concat(this.Icon(), this.label()); - } - Icon() { - return null; - } - label() { - return [].concat(this.Title()); - } - Title() { - return ((obj) => { - obj.sub = () => [].concat(this.title()); - return obj; - })(new this.$.$mol_view); - } - title() { - return ""; - } - } - __decorate([ - $.$mol_mem - ], $mol_check.prototype, "checked", null); - __decorate([ - $.$mol_mem - ], $mol_check.prototype, "Title", null); - $.$mol_check = $mol_check; -})($ || ($ = {})); -//check.view.tree.js.map -; -"use strict"; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_check extends $.$mol_check { - event_click(next) { - this.checked(!this.checked()); - if (next) - next.preventDefault(); - } - } - $$.$mol_check = $mol_check; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); -//check.view.js.map -; -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var $; -(function ($) { - class $mol_scroll extends $.$mol_view { - minimal_height() { - return 0; - } - moving_hor(val, force) { - return (val !== void 0) ? val : false; - } - moving_vert(val, force) { - return (val !== void 0) ? val : false; - } - field() { - return (Object.assign({}, super.field(), { "scrollTop": this.scroll_top(), "scrollLeft": this.scroll_left(), "scrollBottom": this.scroll_bottom(), "scrollRight": this.scroll_right() })); - } - scroll_top(val, force) { - return (val !== void 0) ? val : 0; - } - scroll_left(val, force) { - return (val !== void 0) ? val : 0; - } - scroll_bottom(val, force) { - return (val !== void 0) ? val : 0; - } - scroll_right(val, force) { - return (val !== void 0) ? val : 0; - } - event_async() { - return (Object.assign({}, super.event_async(), { "scroll": (event) => this.event_scroll(event) })); - } - event_scroll(event, force) { - return (event !== void 0) ? event : null; - } - Strut() { - return ((obj) => { - obj.style = () => ({ - "transform": this.strut_transform(), - }); - return obj; - })(new this.$.$mol_view); - } - strut_transform() { - return ""; - } - } - __decorate([ - $.$mol_mem - ], $mol_scroll.prototype, "moving_hor", null); - __decorate([ - $.$mol_mem - ], $mol_scroll.prototype, "moving_vert", null); - __decorate([ - $.$mol_mem - ], $mol_scroll.prototype, "scroll_top", null); - __decorate([ - $.$mol_mem - ], $mol_scroll.prototype, "scroll_left", null); - __decorate([ - $.$mol_mem - ], $mol_scroll.prototype, "scroll_bottom", null); - __decorate([ - $.$mol_mem - ], $mol_scroll.prototype, "scroll_right", null); - __decorate([ - $.$mol_mem - ], $mol_scroll.prototype, "event_scroll", null); - __decorate([ - $.$mol_mem - ], $mol_scroll.prototype, "Strut", null); - $.$mol_scroll = $mol_scroll; -})($ || ($ = {})); -//scroll.view.tree.js.map -; -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var $; -(function ($) { - var $$; - (function ($$) { - function $mol_scroll_top() { - return 0; - } - $$.$mol_scroll_top = $mol_scroll_top; - function $mol_scroll_left() { - return 0; - } - $$.$mol_scroll_left = $mol_scroll_left; - function $mol_scroll_moving() { - return false; - } - $$.$mol_scroll_moving = $mol_scroll_moving; - function $mol_scroll_moving_vert() { - return false; - } - $$.$mol_scroll_moving_vert = $mol_scroll_moving_vert; - function $mol_scroll_moving_hor() { - return false; - } - $$.$mol_scroll_moving_hor = $mol_scroll_moving_hor; - class $mol_scroll extends $.$mol_scroll { - constructor() { - super(...arguments); - this._moving_task_timer = 0; - } - scroll_bottom(next) { - return next || 0; - } - scroll_right(next) { - return next || 0; - } - event_scroll(next) { - this.moving_vert(this.scroll_top() !== this.dom_node().scrollTop); - this.moving_hor(this.scroll_left() !== this.dom_node().scrollLeft); - this.moving_task_stop(); - new $.$mol_defer($.$mol_log_group(`${this}.event_scroll()`, () => { - const el = this.dom_node(); - const top = Math.max(0, el.scrollTop); - const left = Math.max(0, el.scrollLeft); - this.scroll_top(top); - this.scroll_left(left); - this.scroll_bottom(Math.max(0, el.scrollHeight - top - el.offsetHeight)); - this.scroll_right(Math.max(0, el.scrollWidth - left - el.offsetWidth)); - })); - } - event_repos(next) { - new $.$mol_defer(() => { - const el = this.dom_node(); - this.scroll_bottom(Math.max(0, el.scrollHeight - this.scroll_top() - el.offsetHeight)); - this.scroll_right(Math.max(0, el.scrollWidth - this.scroll_left() - el.offsetWidth)); - }); - } - moving_task_stop() { - clearTimeout(this._moving_task_timer); - this._moving_task_timer = setTimeout($.$mol_log_group(`${this}.moving_task_stop()`, () => { - this.moving_vert(false); - this.moving_hor(false); - }), 50); - } - moving() { - return this.moving_hor() || this.moving_vert(); - } - context_sub() { - const context = this.context(); - const subContext = Object.create(context); - subContext.$mol_view_visible_height = () => { - const sizeWin = $.$mol_window.size(); - const limit = context.$mol_view_visible_height(); - return this.scroll_top() + Math.min(sizeWin.height, limit); - }; - subContext.$mol_view_visible_width = () => { - const sizeWin = $.$mol_window.size(); - const limit = context.$mol_view_visible_width(); - return this.scroll_left() + Math.min(sizeWin.width, limit); - }; - subContext.$mol_scroll_top = () => this.scroll_top(); - subContext.$mol_scroll_left = () => this.scroll_left(); - subContext.$mol_scroll_moving = () => this.moving(); - subContext.$mol_scroll_moving_vert = () => this.moving_vert(); - subContext.$mol_scroll_moving_hor = () => this.moving_hor(); - return subContext; - } - strut_transform() { - try { - return `translate3d( 0 , ${this.content_height()}px , 0 )`; - } - catch (error) { - return ''; - } - } - sub_visible() { - const sub = [ - this.Strut(), - ...(this.sub() || []), - ]; - const context = this.context_sub(); - sub.forEach(child => { - if (child instanceof $.$mol_view) { - child.$ = context; - } - }); - return sub; - } - } - __decorate([ - $.$mol_mem - ], $mol_scroll.prototype, "scroll_bottom", null); - __decorate([ - $.$mol_mem - ], $mol_scroll.prototype, "scroll_right", null); - __decorate([ - $.$mol_mem - ], $mol_scroll.prototype, "context_sub", null); - $$.$mol_scroll = $mol_scroll; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); -//scroll.view.js.map -; -"use strict"; -var $; -(function ($) { - class $mol_list extends $.$mol_view { - sub() { - return this.rows(); - } - rows() { - return []; - } - Empty() { - return null; - } - } - $.$mol_list = $mol_list; -})($ || ($ = {})); -//list.view.tree.js.map -; -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_list extends $.$mol_list { - sub() { - const rows = this.rows(); - return (rows.length === 0) ? [this.Empty()] : rows; - } - row_offsets() { - var sub = this.sub(); - if (!sub) - return null; - let heightLimit = this.$.$mol_view_visible_height(); - var offset = 0; - var next = []; - for (let child of sub) { - next.push(offset); - if (child instanceof $.$mol_view) { - offset += child.minimal_height(); - } - if (offset > heightLimit) - break; - } - return next; - } - row_context(index) { - let context = this.context(); - let next = Object.create(context); - next.$mol_view_visible_height = () => { - const limit = context.$mol_view_visible_height(); - return limit - this.row_offsets()[index]; - }; - return next; - } - sub_visible() { - var sub = this.sub(); - if (!sub) - return sub; - var limit = this.row_offsets().length; - var next = []; - for (let i = 0; i < limit; ++i) { - const child = sub[i]; - if (child == null) - continue; - if (child instanceof $.$mol_view) { - child.$ = this.row_context(i); - } - next.push(child); - } - return next; - } - minimal_height() { - var height = 0; - var sub = this.sub(); - if (sub) - sub.forEach(child => { - if (child instanceof $.$mol_view) { - height += child.minimal_height(); - } - }); - return height; - } - } - __decorate([ - $.$mol_mem - ], $mol_list.prototype, "row_offsets", null); - __decorate([ - $.$mol_mem_key - ], $mol_list.prototype, "row_context", null); - __decorate([ - $.$mol_mem - ], $mol_list.prototype, "sub_visible", null); - __decorate([ - $.$mol_mem - ], $mol_list.prototype, "minimal_height", null); - $$.$mol_list = $mol_list; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); -//list.view.js.map -; -"use strict"; -var $; -(function ($) { - class $mol_bar extends $.$mol_view { - } - $.$mol_bar = $mol_bar; -})($ || ($ = {})); -//bar.view.tree.js.map -; -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var $; -(function ($) { - class $mol_state_local extends $.$mol_object { - static native() { - if (this['native()']) - return this['native()']; - check: try { - const native = $.$mol_dom_context.localStorage; - if (!native) - break check; - native.setItem('', ''); - native.removeItem(''); - return this['native()'] = native; - } - catch (error) { - console.warn(error); - } - return this['native()'] = { - getItem(key) { - return this[':' + key]; - }, - setItem(key, value) { - this[':' + key] = value; - }, - removeItem(key) { - this[':' + key] = void 0; - } - }; - } - static value(key, next, force) { - if (next === void 0) - return JSON.parse(this.native().getItem(key) || 'null'); - if (next === null) - this.native().removeItem(key); - else - this.native().setItem(key, JSON.stringify(next)); - return next; - } - prefix() { return ''; } - value(key, next) { - return $mol_state_local.value(this.prefix() + '.' + key, next); - } - } - __decorate([ - $.$mol_mem_key - ], $mol_state_local, "value", null); - $.$mol_state_local = $mol_state_local; -})($ || ($ = {})); -//local.js.map -; -"use strict"; -var $; -(function ($) { - window.addEventListener('storage', event => { - $.$mol_state_local.value(event.key, void 0, $.$mol_atom_force_cache); - }); -})($ || ($ = {})); -//local.web.js.map -; -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var $; -(function ($) { - class $mol_app_todomvc extends $.$mol_scroll { - title() { - return "Todos"; - } - sub() { - return [].concat(this.Page()); - } - Page() { - return ((obj) => { - obj.rows = () => [].concat(this.Title(), this.Panel()); - return obj; - })(new this.$.$mol_list); - } - Title() { - return ((obj) => { - obj.minimal_height = () => 176; - obj.sub = () => [].concat(this.title()); - return obj; - })(new this.$.$mol_view); - } - Panel() { - return ((obj) => { - obj.rows = () => this.panels(); - return obj; - })(new this.$.$mol_list); - } - panels() { - return [].concat(this.Head(), this.List(), this.Foot()); - } - Head() { - return ((obj) => { - obj.minimal_height = () => 64; - obj.sub = () => this.Head_content(); - return obj; - })(new this.$.$mol_view); - } - Head_content() { - return [].concat(this.Head_complete(), this.Add()); - } - Head_complete() { - return ((obj) => { - obj.enabled = () => this.head_complete_enabled(); - obj.checked = (val) => this.completed_all(val); - obj.title = () => "❯"; - return obj; - })(new this.$.$mol_check); - } - head_complete_enabled() { - return false; - } - completed_all(val, force) { - return (val !== void 0) ? val : false; - } - Add() { - return ((obj) => { - obj.value = (val) => this.task_title_new(val); - obj.event_done = (event) => this.event_add(event); - return obj; - })(new this.$.$mol_app_todomvc_add); - } - task_title_new(val, force) { - return (val !== void 0) ? val : ""; - } - event_add(event, force) { - return (event !== void 0) ? event : null; - } - List() { - return ((obj) => { - obj.rows = () => this.task_rows(); - return obj; - })(new this.$.$mol_list); - } - task_rows() { - return []; - } - Foot() { - return ((obj) => { - obj.sub = () => this.foot_content(); - return obj; - })(new this.$.$mol_view); - } - foot_content() { - return [].concat(this.Pending(), this.Filter(), this.Sweep()); - } - Pending() { - return ((obj) => { - obj.sub = () => [].concat(this.pending_message()); - return obj; - })(new this.$.$mol_view); - } - pending_message() { - return "0 items left "; - } - Filter() { - return ((obj) => { - obj.sub = () => this.filterOptions(); - return obj; - })(new this.$.$mol_bar); - } - filterOptions() { - return [].concat(this.Filter_all(), this.Filter_active(), this.Filter_completed()); - } - Filter_all() { - return ((obj) => { - obj.sub = () => [].concat(this.filter_all_label()); - obj.arg = () => ({ - "completed": null, - }); - return obj; - })(new this.$.$mol_link); - } - filter_all_label() { - return "All"; - } - Filter_active() { - return ((obj) => { - obj.sub = () => [].concat(this.filter_active_label()); - obj.arg = () => ({ - "completed": "false", - }); - return obj; - })(new this.$.$mol_link); - } - filter_active_label() { - return "Active"; - } - Filter_completed() { - return ((obj) => { - obj.sub = () => [].concat(this.filter_completed_label()); - obj.arg = () => ({ - "completed": "true", - }); - return obj; - })(new this.$.$mol_link); - } - filter_completed_label() { - return "Completed"; - } - Sweep() { - return ((obj) => { - obj.enabled = () => this.sweep_enabled(); - obj.event_click = (event) => this.event_sweep(event); - obj.sub = () => [].concat(this.sweep_label()); - return obj; - })(new this.$.$mol_button_minor); - } - sweep_enabled() { - return true; - } - event_sweep(event, force) { - return (event !== void 0) ? event : null; - } - sweep_label() { - return "Clear completed"; - } - Task_row(id) { - return ((obj) => { - obj.completed = (val) => this.task_completed(id, val); - obj.title = (val) => this.task_title(id, val); - obj.event_drop = (event) => this.event_task_drop(id, event); - return obj; - })(new this.$.$mol_app_todomvc_task_row); - } - task_completed(id, val, force) { - return (val !== void 0) ? val : false; - } - task_title(id, val, force) { - return (val !== void 0) ? val : ""; - } - event_task_drop(id, event, force) { - return (event !== void 0) ? event : null; - } - } - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Page", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Title", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Panel", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Head", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Head_complete", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "completed_all", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Add", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "task_title_new", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "event_add", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "List", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Foot", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Pending", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Filter", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Filter_all", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Filter_active", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Filter_completed", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "Sweep", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "event_sweep", null); - __decorate([ - $.$mol_mem_key - ], $mol_app_todomvc.prototype, "Task_row", null); - __decorate([ - $.$mol_mem_key - ], $mol_app_todomvc.prototype, "task_completed", null); - __decorate([ - $.$mol_mem_key - ], $mol_app_todomvc.prototype, "task_title", null); - __decorate([ - $.$mol_mem_key - ], $mol_app_todomvc.prototype, "event_task_drop", null); - $.$mol_app_todomvc = $mol_app_todomvc; -})($ || ($ = {})); -(function ($) { - class $mol_app_todomvc_add extends $.$mol_string { - hint() { - return "What needs to be done?"; - } - event() { - return (Object.assign({}, super.event(), { "keyup": (event) => this.event_press(event) })); - } - event_press(event, force) { - return (event !== void 0) ? event : null; - } - event_done(event, force) { - return (event !== void 0) ? event : null; - } - } - __decorate([ - $.$mol_mem - ], $mol_app_todomvc_add.prototype, "event_press", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc_add.prototype, "event_done", null); - $.$mol_app_todomvc_add = $mol_app_todomvc_add; -})($ || ($ = {})); -(function ($) { - class $mol_app_todomvc_task_row extends $.$mol_view { - minimal_height() { - return 64; - } - sub() { - return [].concat(this.Complete(), this.Title(), this.Drop()); - } - Complete() { - return ((obj) => { - obj.checked = (val) => this.completed(val); - return obj; - })(new this.$.$mol_check); - } - completed(val, force) { - return (val !== void 0) ? val : false; - } - Title() { - return ((obj) => { - obj.hint = () => this.title_hint(); - obj.value = (val) => this.title(val); - return obj; - })(new this.$.$mol_string); - } - title_hint() { - return "Task title"; - } - title(val, force) { - return (val !== void 0) ? val : ""; - } - Drop() { - return ((obj) => { - obj.sub = () => [].concat("✖"); - obj.event_click = (event) => this.event_drop(event); - return obj; - })(new this.$.$mol_button_typed); - } - event_drop(event, force) { - return (event !== void 0) ? event : null; - } - attr() { - return (Object.assign({}, super.attr(), { "mol_app_todomvc_task_row_completed": this.completed() })); - } - } - __decorate([ - $.$mol_mem - ], $mol_app_todomvc_task_row.prototype, "Complete", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc_task_row.prototype, "completed", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc_task_row.prototype, "Title", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc_task_row.prototype, "title", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc_task_row.prototype, "Drop", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc_task_row.prototype, "event_drop", null); - $.$mol_app_todomvc_task_row = $mol_app_todomvc_task_row; -})($ || ($ = {})); -//todomvc.view.tree.js.map -; -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var $; -(function ($) { - var $$; - (function ($$) { - class $mol_app_todomvc_add extends $.$mol_app_todomvc_add { - event_press(next) { - switch (next.keyCode) { - case 13: return this.event_done(next); - } - } - } - $$.$mol_app_todomvc_add = $mol_app_todomvc_add; - class $mol_app_todomvc extends $.$mol_app_todomvc { - task_ids(next) { - return $.$mol_state_local.value(this.state_key('mol-todos'), next) || []; - } - arg_completed() { - return $.$mol_state_arg.value(this.state_key('completed')); - } - groups_completed() { - var groups = { 'true': [], 'false': [] }; - for (let id of this.task_ids()) { - var task = this.task(id); - groups[String(task.completed)].push(id); - } - return groups; - } - task_ids_filtered() { - var completed = this.arg_completed(); - if (completed) { - return this.groups_completed()[completed] || []; - } - else { - return this.task_ids(); - } - } - completed_all(next) { - if (next === void 0) - return this.groups_completed()['false'].length === 0; - for (let id of this.groups_completed()[String(!next)]) { - var task = this.task(id); - this.task(id, { title: task.title, completed: next }); - } - return next; - } - head_complete_enabled() { - return this.task_ids().length > 0; - } - pending_message() { - let count = this.groups_completed()['false'].length; - return (count === 1) ? '1 item left' : `${count} items left`; - } - new_id() { - return Math.max(1, 1 + Math.max(...this.task_ids())); - } - event_add(next) { - var title = this.task_title_new(); - if (!title) - return; - var id = this.new_id(); - var task = { completed: false, title }; - this.task(id, task); - this.task_ids(this.task_ids().concat(id)); - this.task_title_new(''); - } - task_rows() { - return this.task_ids_filtered().map(id => this.Task_row(id)); - } - task(id, next) { - const key = this.state_key(`mol-todos-${id}`); - if (next === void 0) { - return $.$mol_state_local.value(key) || { title: '', completed: false }; - } - $.$mol_state_local.value(key, next); - return next || void 0; - } - task_completed(id, next) { - return this.task(id, next === undefined ? undefined : Object.assign({}, this.task(id), { completed: next })).completed; - } - task_title(id, next) { - return this.task(id, next === undefined ? undefined : Object.assign({}, this.task(id), { title: next })).title; - } - event_task_drop(id, next) { - this.task(id, null); - this.task_ids(this.task_ids().filter(id2 => id !== id2)); - } - event_sweep() { - this.task_ids(this.task_ids().filter(id => { - if (!this.task(id).completed) - return true; - this.task(id, null); - return false; - })); - } - panels() { - return [ - this.Head(), - this.List(), - ...this.foot_visible() ? [this.Foot()] : [], - ]; - } - foot_visible() { - return this.task_ids().length > 0; - } - sweep_enabled() { - return this.groups_completed()['true'].length > 0; - } - } - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "groups_completed", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "task_ids_filtered", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "completed_all", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "pending_message", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "new_id", null); - __decorate([ - $.$mol_mem - ], $mol_app_todomvc.prototype, "task_rows", null); - __decorate([ - $.$mol_mem_key - ], $mol_app_todomvc.prototype, "task_completed", null); - __decorate([ - $.$mol_mem_key - ], $mol_app_todomvc.prototype, "task_title", null); - $$.$mol_app_todomvc = $mol_app_todomvc; - })($$ = $.$$ || ($.$$ = {})); -})($ || ($ = {})); -//todomvc.view.js.map -//# sourceMappingURL=web.js.map \ No newline at end of file diff --git a/examples/mol/-/web.js.map b/examples/mol/-/web.js.map deleted file mode 100644 index 5da9df1126..0000000000 --- a/examples/mol/-/web.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../../mol.jam.js","../../../func/name/name.ts","../../../object/object.ts","../../../conform/conform.ts","../../../log/log.ts","../../../log/log_context.ts","../../../log/log_debug.web.ts","../../../log/log_filter.web.ts","../../../log/log_group.ts","../../../defer/defer.ts","../../../state/stack/stack.ts","../../../atom/atom.ie.web.js","../../../atom/atom.ts","../../../mem/mem.ts","../../../window/window.web.ts","../../../dom/context/context.ts","../../../dom/context/context.web.ts","../../../dom/render/render.ts","../../../view/view.ts","../../../view/view.web.ts","../../../view/selection/selection.ts","../../../view/selection/selection.web.ts","code.ts","../../../string/-view.tree/string.view.tree.ts","../../../string/string.view.ts","../../../button/-view.tree/button.view.tree.ts","../../../button/button.view.ts","../../../button/-view.tree/button_types.view.tree.ts","../../../merge/dict/dict.ts","../../../state/arg/arg.web.ts","../../../link/-view.tree/link.view.tree.ts","../../../link/link.view.ts","../../../check/-view.tree/check.view.tree.ts","../../../check/check.view.ts","../../../scroll/-view.tree/scroll.view.tree.ts","../../../scroll/scroll.view.ts","../../../list/-view.tree/list.view.tree.ts","../../../list/list.view.ts","../../../bar/-view.tree/bar.view.tree.ts","../../../state/local/local.ts","../../../state/local/local.web.ts","../-view.tree/todomvc.view.tree.ts","../todomvc.view.ts"],"names":[],"mappings":"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","file":"web.js","sourcesContent":[null,"namespace $ {\n\t\n\texport var $mol_func_name_dict = new WeakMap< Function , string >()\n\n\texport function $mol_func_name( func : Function ) : string {\n\t\tlet name = $mol_func_name_dict.get( func )\n\t\tif( name != null ) return name\n\t\tname = func.name || Function.prototype.toString.call( func ).match( /([a-z0-9_$]*) ?(\\(|\\{|extends)/ )[ 1 ]\n\t\t$mol_func_name_dict.set( func , name )\n\t\t\n\t\treturn name\n\t}\n\n}\n","namespace $ {\n\n\texport namespace $$ { let $ }\n\t\n\texport type $mol_object_context = ( Window )&( typeof $.$$ )&( typeof $ )\n\t\n\texport class $mol_object {\n\t\t\n\t\tget $() {\n\t\t\tconst owner = this.object_owner()\n\t\t\treturn ( owner && owner.$ || $ ) as $mol_object_context\n\t\t}\n\t\t\n\t\tpublic static make< Instance >( this : { new() : Instance } , config : Partial< Instance > ) : Instance {\n\t\t\tconst instance = new this\n\t\t\tfor( let key in config ) instance[ key ] = config[ key ]\n\t\t\treturn instance\n\t\t}\n\t\t\n\t\tstatic toString() : string {\n\t\t\treturn $mol_func_name( this )\n\t\t}\n\t\t\n\t\t'object_owner()' : any\n\t\tobject_owner( next? : any ) {\n\t\t\treturn this[ 'object_owner()' ] || ( this[ 'object_owner()' ] = next )\n\t\t}\n\t\t\n\t\t'object_host()' : any\n\t\tobject_host( next? : any ) {\n\t\t\treturn this[ 'object_host()' ] || ( this[ 'object_host()' ] = next )\n\t\t}\n\t\t\n\t\t'object_field()' : string\n\t\tobject_field( next? : string ) {\n\t\t\treturn this[ 'object_field()' ] || ( this[ 'object_field()' ] = next ) || ''\n\t\t}\n\t\t\n\t\t'object_id()' : string\n\t\tobject_id( next? : string ) {\n\t\t\treturn this[ 'object_id()' ] || ( this[ 'object_id()' ] = next ) || ''\n\t\t}\n\n\t\ttoString() {\n\t\t\treturn this.object_id()\n\t\t}\n\t\t\n\t\ttoJSON() {\n\t\t\treturn this.toString()\n\t\t}\n\t\t\n\t\tdestructor() { }\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\tconst cache = new WeakMap< any , boolean >()\n\n\texport function $mol_conform< Target , Source >( target : Target , source : Source , stack : any[] = [] ) : Target {\n\n\t\tif( target as any === source as any ) return source as any\n\n\t\tif( !target || typeof target !== 'object' ) return target\n\t\tif( !source || typeof source !== 'object' ) return target\n\n\t\tif( target instanceof Error ) return target\n\t\tif( source instanceof Error ) return target\n\t\t\n\t\tif( target.constructor !== source.constructor ) return target\n\n\t\tif( cache.get( target ) ) return target\n\t\tcache.set( target , true )\n\t\t\n\t\tconst conform = $mol_conform_handlers.get( target.constructor )\n\t\tif( !conform ) return target\n\n\t\tif( stack.indexOf( target ) !== -1 ) return target\n\n\t\tstack.push( target )\n\n\t\tconst res = conform( target , source , stack )\n\n\t\tstack.pop()\n\n\t\treturn res\n\t}\n\n\texport const $mol_conform_handlers = new WeakMap< Object , ( target : any , source : any , stack : any[] )=> any >()\n\n\texport function $mol_conform_handler< Class >(\n\t\tcl : { new( ... args : any[] ) : Class } ,\n\t\thandler : ( target : Class , source : Class , stack : any[] )=> Class ,\n\t) {\n\t\t$mol_conform_handlers.set( cl , handler )\n\t}\n\n\t$mol_conform_handler( Array , ( target , source , stack )=> {\n\t\t\n\t\tlet equal = target.length === source.length\n\n\t\tfor( let i = 0 ; i < target.length ; ++i ) {\n\t\t\tconst conformed = target[i] = $mol_conform( target[i] , source[i] , stack )\n\t\t\tif( equal && conformed !== source[i] ) equal = false\n\t\t}\n\n\t\treturn equal ? source : target\n\t} )\n\n\t$mol_conform_handler( Object , ( target , source , stack )=> {\n\n\t\tlet count = 0\n\t\tlet equal = true\n\n\t\tfor( let key in target ) {\n\t\t\tconst conformed = target[key] = $mol_conform( target[key] , source[key] , stack )\n\t\t\tif( equal && conformed !== source[key] ) equal = false\n\t\t\t++ count\n\t\t}\n\n\t\tfor( let key in source ) if( -- count < 0 ) break\n\n\t\treturn ( equal && count === 0 ) ? source : target\n\t} )\n\n\t$mol_conform_handler( Date , ( target , source )=> ( target.getTime() === source.getTime() ) ? source : target )\n\n\t$mol_conform_handler( RegExp , ( target , source )=> ( target.toString() === source.toString() ) ? source : target )\n\n}\n","namespace $ {\n\n\texport function $mol_log( path : any , ... values : any[] ) {\n\t\t\n\t\tif( $mol_log_filter() == null ) return\n\t\t\n\t\tpath = String( path )\n\t\tif( path.indexOf( $mol_log_filter() ) === -1 ) return\n\t\t\n\t\tif( $mol_log_context() ) $mol_log_context()()\n\t\t\n\t\tconsole.debug( path , ... values.map( val => val instanceof Error ? { ... val } : val ) )\n\n\t\tif( $mol_log_debug() == null ) return\n\t\tif( path.indexOf( $mol_log_debug() ) === -1 ) return\n\t\t\n\t\tdebugger\n\t}\n\t\n}\n","namespace $ {\n\n\tlet context : ()=> void = null\n\texport function $mol_log_context( next = context ) {\n\t\treturn context = next\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_log_debug( next? : string ) {\n\n\t\tif( next !== undefined ) {\n\t\t\tif( next == null ) {\n\t\t\t\tsessionStorage.removeItem( '$mol_log_debug()' )\n\t\t\t} else {\n\t\t\t\tsessionStorage.setItem( '$mol_log_debug()' , next )\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn sessionStorage.getItem( '$mol_log_debug()' )\n\t}\n\n}\n","namespace $ {\n\t\n\tlet filter : string\n\texport function $mol_log_filter( next? : string ) {\n\n\t\tif( next !== undefined ) {\n\t\t\tif( next == null ) {\n\t\t\t\tsessionStorage.removeItem( '$mol_log_filter()' )\n\t\t\t} else {\n\t\t\t\tsessionStorage.setItem( '$mol_log_filter()' , next )\n\t\t\t}\n\n\t\t\tfilter = next\n\t\t}\n\n\t\tif( filter !== undefined ) return filter\n\t\t\n\t\treturn filter = sessionStorage.getItem( '$mol_log_filter()' )\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_log_group< Task extends Function >( name : string , task : Task ) {\n\t\t\n\t\treturn function $mol_log_group_wrapper( ... args : any [] ) {\n\t\t\tconst filter = $mol_log_filter()\n\t\t\tif( filter == null ) return task.apply( this , args )\n\n\t\t\tlet started = false\n\t\t\tlet prev = $mol_log_context()\n\n\t\t\t$mol_log_context( ()=> {\n\t\t\t\tif( prev ) prev()\n\t\t\t\tstarted = true\n\t\t\t\tif( filter ) console.group( name )\n\t\t\t\telse console.groupCollapsed( name )\n\t\t\t\t$mol_log_context( prev = null )\n\t\t\t} )\n\t\t\t\n\t\t\ttry {\n\t\t\t\treturn task.apply( this , args )\n\t\t\t} finally {\n\t\t\t\tif( started ) console.groupEnd()\n\t\t\t\t$mol_log_context( prev )\n\t\t\t}\n\n\t\t} as any as Task\n\n\t}\n\n}\n","namespace $ {\n\t\n\texport class $mol_defer extends $mol_object {\n\t\t\n\t\tconstructor( public run : ()=> void ) {\n\t\t\tsuper()\n\t\t\t$mol_defer.add( this )\n\t\t}\n\t\t\n\t\tdestructor() {\n\t\t\t$mol_defer.drop( this )\n\t\t}\n\t\t\n\t\tstatic all : $mol_defer[] = []\n\t\tstatic timer = 0\n\t\t\n\t\tstatic scheduleNative : ( handler : ()=> void ) => number = ( typeof requestAnimationFrame == 'function' )\n\t\t\t? handler => requestAnimationFrame( handler )\n\t\t\t: handler => setTimeout( handler , 16 )\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.timer ) return\n\t\t\t\n\t\t\tthis.timer = this.scheduleNative( ()=> {\n\t\t\t\tthis.timer = 0\n\t\t\t\tthis.run()\n\t\t\t} )\n\t\t}\n\t\t\n\t\tstatic unschedule() {\n\t\t\tif( !this.timer ) return\n\t\t\t\n\t\t\tcancelAnimationFrame( this.timer )\n\t\t\tthis.timer = 0\n\t\t}\n\t\t\n\t\tstatic add( defer : $mol_defer ) {\n\t\t\tthis.all.push( defer )\n\t\t\tthis.schedule()\n\t\t}\n\t\t\n\t\tstatic drop( defer : $mol_defer ) {\n\t\t\tvar index = this.all.indexOf( defer )\n\t\t\tif( index >= 0 ) this.all.splice( index , 1 )\n\t\t}\n\t\t\n\t\tstatic run() {\n\t\t\tif( this.all.length === 0 ) return\n\t\t\tthis.schedule()\n\t\t\tfor( var defer : $mol_defer ; defer = this.all.shift() ; ) defer.run()\n\t\t\t//this.unschedule()\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\t/// Global storage of temporary state\n\texport var $mol_state_stack = new Map< string , any >()\n\t\n}\n",null,"namespace $ {\n\t\n\texport enum $mol_atom_status {\n\t\tobsolete = 'obsolete' ,\n\t\tchecking = 'checking' ,\n\t\tpulling = 'pulling' ,\n\t\tactual = 'actual' ,\n\t}\n\t\n\texport class $mol_atom< Value = any > extends $mol_object {\n\t\t\n\t\tmasters : Set< $mol_atom > | null = null\n\t\tslaves : Set< $mol_atom > | null = null\n\t\t\n\t\tstatus = $mol_atom_status.obsolete\n\t\t\n\t\treadonly handler : ( next? : Value|Error , force? : $mol_atom_force )=> Value|void\n\n\t\t'value()' : Value|Error\n\t\t\n\t\tconstructor(\n\t\t\tid : string ,\n\t\t\thandler : ( next? : Value , force? : $mol_atom_force )=> Value|void = next => next ,\n\t\t) {\n\t\t\tsuper()\n\t\t\t\n\t\t\tthis.object_id( id )\n\t\t\tthis.handler = handler\n\t\t}\n\t\t\n\t\tdestructor() {\n\t\t\tthis.unlink()\n\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\n\t\t\tconst value = this['value()']\n\t\t\t\n\t\t\tif( value instanceof $mol_object ) {\n\t\t\t\tif( value.object_owner() === this ) value.destructor();\n\t\t\t}\n\n\t\t\tthis['value()'] = undefined\n\t\t}\n\t\t\n\t\tunlink() {\n\t\t\tthis.disobey_all()\n\t\t\tif( this.slaves ) this.check_slaves()\n\t\t}\n\t\t\n\t\tget( force? : $mol_atom_force ) {\n\t\t\t\n\t\t\tconst slave = $mol_atom.stack[0]\n\t\t\tif( slave ) {\n\t\t\t\tthis.lead( slave )\n\t\t\t\tslave.obey( this )\n\t\t\t}\n\t\t\t\n\t\t\tthis.actualize( force )\n\t\t\t\n\t\t\tconst value = this['value()'] as Value\n\t\t\t\n\t\t\tif( typeof Proxy !== 'function' && value instanceof Error ) {\n\t\t\t\tthrow value\n\t\t\t}\n\t\t\t\n\t\t\treturn value as Value\n\t\t}\n\t\t\n\t\tactualize( force? : $mol_atom_force ) {\n\t\t\t\n\t\t\tif( this.status === $mol_atom_status.pulling ) {\n\t\t\t\tthrow new Error( `Cyclic atom dependency of ${ this }` )\n\t\t\t}\n\t\t\t\n\t\t\tif( !force && this.status === $mol_atom_status.actual ) return\n\t\t\t\n\t\t\tconst slave = $mol_atom.stack[0]\n\t\t\t$mol_atom.stack[0] = this\n\t\t\t\n\t\t\tif( !force && this.status === $mol_atom_status.checking ) {\n\t\t\t\t\n\t\t\t\tthis.masters!.forEach(\n\t\t\t\t\tmaster => {\n\t\t\t\t\t\tif( this.status !== $mol_atom_status.checking ) return\n\t\t\t\t\t\tmaster.actualize()\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tif( this.status === $mol_atom_status.checking ) {\n\t\t\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif( force || this.status !== $mol_atom_status.actual ) {\n\t\t\t\t\n\t\t\t\tconst oldMasters = this.masters\n\t\t\t\tthis.masters = null\n\t\t\t\t\n\t\t\t\tif( oldMasters ) oldMasters.forEach(\n\t\t\t\t\tmaster => {\n\t\t\t\t\t\tmaster.dislead( this )\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t\n\t\t\t\tthis.status = $mol_atom_status.pulling\n\t\t\t\tconst next = this.pull( force )\n\t\t\t\t\n\t\t\t\tif( next === undefined ) {\n\t\t\t\t\tthis.status = $mol_atom_status.actual\n\t\t\t\t} else {\n\t\t\t\t\tthis.push( next )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t$mol_atom.stack[0] = slave\n\t\t}\n\t\t\n\t\tpull( force? : $mol_atom_force ) {\n\t\t\ttry {\n\t\t\t\treturn this.handler( this._next , force )\n\t\t\t} catch( error ) {\n\t\t\t\tif( error[ '$mol_atom_catched' ] ) return error\n\t\t\t\tif( error instanceof $mol_atom_wait ) return error\n\t\t\t\t\n\t\t\t\tconsole.error( error.stack || error )\n\t\t\t\t\n\t\t\t\tif(!( error instanceof Error )) {\n\t\t\t\t\terror = new Error( error.stack || error )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\terror['$mol_atom_catched'] = true\n\t\t\t\treturn error\n\t\t\t}\n\t\t}\n\t\t\n\t\t_next : Value|Error\n\t\t_ignore : Value|Error\n\t\t\n\t\tset( next : Value ) {\n\t\t\treturn this.value( next )\n\t\t}\n\t\t\n\t\tpush( next_raw? : Value|Error ) : Value {\n\t\t\tif(!( next_raw instanceof $mol_atom_wait )) {\n\t\t\t\tthis._ignore = this._next\n\t\t\t\tthis._next = undefined\n\t\t\t}\n\t\t\t\n\t\t\tthis.status = next_raw === undefined ? $mol_atom_status.obsolete : $mol_atom_status.actual\n\t\t\t\n\t\t\tconst prev = this['value()']\n\t\t\t\n\t\t\tlet next = ( next_raw instanceof Error || prev instanceof Error ) ? next_raw : $mol_conform( next_raw , prev )\n\t\t\t\n\t\t\tif( next === prev ) return prev as Value\n\t\t\t\n\t\t\tif( prev instanceof $mol_object ) {\n\t\t\t\tif( prev.object_owner() === this ) prev.destructor()\n\t\t\t}\n\t\t\t\n\t\t\tif( next instanceof $mol_object ) {\n\t\t\t\tnext.object_owner( this )\n\t\t\t}\n\t\t\t\n\t\t\tif(( typeof Proxy === 'function' )&&( next instanceof Error )) {\n\t\t\t\tnext = new Proxy( next , {\n\t\t\t\t\tget( target : Error ) {\n\t\t\t\t\t\tthrow target.valueOf()\n\t\t\t\t\t} ,\n\t\t\t\t\townKeys( target : Error ) : string[] {\n\t\t\t\t\t\tthrow target.valueOf()\n\t\t\t\t\t} ,\n\t\t\t\t} )\n\t\t\t}\n\t\t\t\n\t\t\tthis['value()'] = next\n\t\t\t$mol_log( this , prev , '➔' , next )\n\t\t\t\n\t\t\tthis.obsolete_slaves()\n\t\t\t\n\t\t\treturn next as Value\n\t\t}\n\t\t\n\t\tobsolete_slaves() {\n\t\t\tif( !this.slaves ) return\n\t\t\t\n\t\t\tthis.slaves.forEach( slave => slave.obsolete() )\n\t\t}\n\t\t\n\t\tcheck_slaves() {\n\t\t\tif( this.slaves ) {\n\t\t\t\tthis.slaves.forEach( slave => slave.check() )\n\t\t\t} else {\n\t\t\t\t$mol_atom.actualize( this )\n\t\t\t}\n\t\t}\n\t\t\n\t\tcheck() {\n\t\t\t//if( this.status === $mol_atom_status.pulling ) {\n\t\t\t//\tthrow new Error( `May be obsolated while pulling ${ this }` )\n\t\t\t//}\n\t\t\t\n\t\t\tif( this.status === $mol_atom_status.actual ) {\n\t\t\t\tthis.status = $mol_atom_status.checking\n\t\t\t\t\n\t\t\t\tthis.check_slaves()\n\t\t\t}\n\t\t}\n\t\t\n\t\tobsolete() {\n\t\t\tif( this.status === $mol_atom_status.obsolete ) return\n\t\t\t\n\t\t\t//if( this.status === $mol_atom_status.pulling ) {\n\t\t\t//\tthrow new Error( `Obsolated while pulling ${ this }` )\n\t\t\t//} \n\t\t\t\n\t\t\tthis.status = $mol_atom_status.obsolete\n\t\t\t\n\t\t\tthis.check_slaves()\n\t\t\t\n\t\t\treturn\n\t\t}\n\t\t\n\t\tlead( slave : $mol_atom ) {\n\t\t\tif( !this.slaves ) {\n\t\t\t\tthis.slaves = new Set<$mol_atom>()\n\t\t\t\t$mol_atom.unreap( this )\n\t\t\t}\n\t\t\tthis.slaves.add( slave )\n\t\t}\n\t\t\n\t\tdislead( slave : $mol_atom ) {\n\t\t\tif( !this.slaves ) return\n\t\t\t\n\t\t\tif( this.slaves.size === 1 ) {\n\t\t\t\tthis.slaves = null\n\t\t\t\t$mol_atom.reap( this )\n\t\t\t} else {\n\t\t\t\tthis.slaves.delete( slave )\n\t\t\t}\n\t\t}\n\t\t\n\t\tobey( master : $mol_atom ) {\n\t\t\tif( !this.masters ) this.masters = new Set< $mol_atom >()\n\t\t\tthis.masters.add( master )\n\t\t}\n\t\t\n\t\tdisobey( master : $mol_atom ) {\n\t\t\tif( !this.masters ) return\n\t\t\tthis.masters.delete( master )\n\t\t}\n\t\t\n\t\tdisobey_all() {\n\t\t\tif( !this.masters ) return\n\t\t\t\n\t\t\tthis.masters.forEach( master => master.dislead( this ) )\n\t\t\t\n\t\t\tthis.masters = null\n\t\t}\n\n\t\tcache( next? : Value|Error ) {\n\t\t\tif( next === undefined ) return this['value()']\n\t\t\treturn this['value()'] = next\n\t\t}\n\t\t\n\t\tvalue( next? : Value , force? : $mol_atom_force ) : Value {\n\n\t\t\tif( force === $mol_atom_force_cache ) return this.push( next )\n\n\t\t\tif( next !== undefined ) {\n\t\t\t\t\n\t\t\t\tif( force === $mol_atom_force ) return this.push( next )\n\n\t\t\t\tlet next_normal = $mol_conform( next , this._ignore )\n\t\t\t\tif( next_normal === this._ignore ) return this.get( force )\n\n\t\t\t\tif(!( this['value()'] instanceof Error )) {\n\t\t\t\t\tnext_normal = $mol_conform( next , this['value()'] )\n\t\t\t\t\tif( next_normal === this['value()'] ) return this.get( force )\n\t\t\t\t}\n\n\t\t\t\tthis._next = next_normal\n\t\t\t\tthis._ignore = next_normal\n\n\t\t\t\tforce = $mol_atom_force_update\n\t\t\t}\n\t\t\t\n\t\t\treturn this.get( force )\n\t\t}\n\t\t\n\t\tstatic stack = [] as $mol_atom[]\n\t\tstatic updating : $mol_atom[] = []\n\t\tstatic reaping = new Set< $mol_atom >()\n\t\tstatic scheduled = false\n\t\t\n\t\tstatic actualize( atom : $mol_atom ) {\n\t\t\t$mol_atom.updating.push( atom )\n\t\t\t$mol_atom.schedule()\n\t\t}\n\t\t\n\t\tstatic reap( atom : $mol_atom ) {\n\t\t\t$mol_atom.reaping.add( atom )\n\t\t\t$mol_atom.schedule()\n\t\t}\n\t\t\n\t\tstatic unreap( atom : $mol_atom ) {\n\t\t\t$mol_atom.reaping.delete( atom )\n\t\t}\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.scheduled ) return\n\t\t\t\n\t\t\tnew $mol_defer(\n\t\t\t\t$mol_log_group( '$mol_atom.sync()' , () => {\n\t\t\t\t\tif( !this.scheduled ) return\n\t\t\t\t\tthis.scheduled = false\n\t\t\t\t\tthis.sync()\n\t\t\t\t} )\n\t\t\t)\n\t\t\t\n\t\t\tthis.scheduled = true\n\t\t}\n\t\t\n\t\tstatic sync() {\n\t\t\tthis.schedule()\n\t\t\t\n\t\t\twhile( true ) {\n\t\t\t\tconst atom = this.updating.shift()\n\t\t\t\tif( !atom ) break\n\t\t\t\tif( this.reaping.has( atom ) ) continue\n\t\t\t\tif( atom.status !== $mol_atom_status.actual ) atom.get()\n\t\t\t}\n\t\t\t\n\t\t\twhile( this.reaping.size ) {\n\t\t\t\tthis.reaping.forEach(\n\t\t\t\t\tatom => {\n\t\t\t\t\t\tthis.reaping.delete( atom )\n\t\t\t\t\t\tif( !atom.slaves ) atom.destructor()\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\t\n\t\t\tthis.scheduled = false\n\t\t}\n\t\t\n\t\tthen< Next >( done : ( prev? : Value )=> Next , fail? : ( error : Error )=> Next ) {\n\t\t\t\n\t\t\tlet prev : Value\n\t\t\tlet next : Next\n\t\t\t\n\t\t\tconst atom = new $mol_atom(\n\t\t\t\t`${ this }.then(${ done })` ,\n\t\t\t\t() => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( prev == undefined ) {\n\t\t\t\t\t\t\tconst val = this.get()\n\t\t\t\t\t\t\tif( val instanceof $mol_atom_wait ) return val\n\t\t\t\t\t\t\tif( val ) val.valueOf()\n\t\t\t\t\t\t\tprev = val\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( next == undefined ) {\n\t\t\t\t\t\t\tconst val = done( prev )\n\t\t\t\t\t\t\tif( val instanceof $mol_atom_wait ) return val\n\t\t\t\t\t\t\tif( val ) val.valueOf()\n\t\t\t\t\t\t\tnext = val\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn next\n\n\t\t\t\t\t} catch( error ) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( error instanceof $mol_atom_wait ) return error\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( fail ) return fail( error )\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn error\n\t\t\t\t\t}\n\n\t\t\t\t} ,\n\t\t\t)\n\t\t\t\n\t\t\t$mol_atom.actualize( atom )\n\t\t\t\n\t\t\treturn atom\n\t\t}\n\t\t\n\t\tcatch( fail : ( error : Error )=> Value ) {\n\t\t\treturn this.then( next => next , fail )\n\t\t}\n\t\t\n\t}\n\t\n\t$mol_state_stack.set( '$mol_atom.stack' , $mol_atom.stack )\n\n\texport function $mol_atom_current< Value = any >() {\n\t\treturn $mol_atom.stack[0] as $mol_atom< Value >\n\t}\n\t\n\texport class $mol_atom_wait extends Error {\n\t\tname = '$mol_atom_wait'\n\t}\n\t\n\texport class $mol_atom_force extends Object {\n\t\t$mol_atom_force : boolean\n\t\tstatic $mol_atom_force : boolean\n\t\tstatic toString() { return this.name }\n\t}\n\n\texport class $mol_atom_force_cache extends $mol_atom_force {}\n\texport class $mol_atom_force_update extends $mol_atom_force {}\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_mem< Host , Value >(\n\t\tobj? : Host ,\n\t\tname? : string ,\n\t\tdescr? : TypedPropertyDescriptor< ( next? : Value , force? : $mol_atom_force )=> Value >\n\t) {\n\n\t\tconst value = descr.value\n\t\tconst store = new WeakMap< Object , $mol_atom >()\n\t\t\n\t\tdescr.value = function $mol_mem_value( next? : Value , force? : $mol_atom_force ) {\n\t\t\tconst host : any = this\n\t\t\n\t\t\tlet atom : $mol_atom = store.get( host )\n\t\t\tif( !atom ) {\n\t\t\t\t\n\t\t\t\tconst id = `${ host }.${ name }()`\n\t\t\t\tatom = new $mol_atom( id , function() {\n\t\t\t\t\tconst v = value.apply( host , arguments )\n\t\t\t\t\tif( v instanceof $mol_object ) {\n\t\t\t\t\t\tif( !v.object_host() ) {\n\t\t\t\t\t\t\tv.object_host( host )\n\t\t\t\t\t\t\tv.object_field( name )\n\t\t\t\t\t\t\tv.object_id( id )\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn v\n\t\t\t\t} )\n\n\t\t\t\tatom.object_owner( host )\n\t\t\t\t\n\t\t\t\tconst destructor = atom.destructor\n\t\t\t\tatom.destructor = ()=> {\n\t\t\t\t\tstore.delete( host )\n\t\t\t\t\tdestructor.call( atom )\n\t\t\t\t}\n\n\t\t\t\tstore.set( host , atom )\n\t\t\t}\n\t\t\t\n\t\t\treturn atom.value( next , force )\n\t\t}\n\t\t\n\t\tObject.defineProperty( obj , name + \"()\" , { get : function() { return store.get( this ) } } )\n\n\t\tdescr.value[ 'value' ] = value\n\n\t\treturn descr\n\t}\n\t\n\texport function $mol_mem_key< Host , Key , Value >(\n\t\tobj : Host ,\n\t\tname : string ,\n\t\tdescr : TypedPropertyDescriptor< ( key : Key , next? : Value , force? : $mol_atom_force )=> Value >\n\t) {\n\t\tconst value = descr.value\n\t\tconst store = new WeakMap< Object , { [ key : string ] : $mol_atom } >()\n\t\t\n\t\tdescr.value = function $mol_mem_key_value( key : Key , next : Value , force? : $mol_atom_force ) {\n\t\t\tconst host : any = this\n\t\t\tconst key_str = JSON.stringify( key )\n\t\t\t\n\t\t\tlet dict = store.get( host )\n\t\t\tif( !dict ) store.set( host , dict = {} )\n\t\t\t\n\t\t\tlet atom : $mol_atom = dict[ key_str ]\n\t\t\tif( !atom ) {\n\t\t\t\t\n\t\t\t\tconst id = `${ host }.${ name }(${ key_str })`\n\t\t\t\tatom = new $mol_atom( id , function( ... args: any[] ) {\n\t\t\t\t\tconst v = value.apply( host , [ key , ... args ] )\n\t\t\t\t\tif( v instanceof $mol_object ) {\n\t\t\t\t\t\tif( !v.object_host() ) {\n\t\t\t\t\t\t\tv.object_host( host )\n\t\t\t\t\t\t\tv.object_field( name )\n\t\t\t\t\t\t\tv.object_id( id )\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn v\n\t\t\t\t} )\n\n\t\t\t\tconst destructor = atom.destructor\n\t\t\t\tatom.destructor = ()=> {\n\t\t\t\t\tdelete dict[ key_str ]\n\t\t\t\t\tdestructor.call( atom )\n\t\t\t\t}\n\n\t\t\t\tdict[ key_str ] = atom\n\n\t\t\t}\n\t\t\t\n\t\t\treturn atom.value( next , force )\n\t\t}\n\t\t\n\t\tObject.defineProperty( obj , name + \"()\" , { get : function() { return store.get( this ) } } )\n\t\tvoid( ( descr.value as any )[ 'value' ] = value )\n\n\t\treturn descr\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_window extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic size( next? : {\n\t\t\twidth : number\n\t\t\theight : number\n\t\t} , force? : $mol_atom_force ) {\n\t\t\treturn next || {\n\t\t\t\twidth : window.innerWidth ,\n\t\t\t\theight : window.innerHeight ,\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\twindow.addEventListener( 'resize' , $mol_log_group( `$mol_window resize` , ()=> {\n\t\t$mol_window.size( undefined , $mol_atom_force_cache )\n\t} ) )\n\t\n}\n","namespace $ {\n\t\n\texport var $mol_dom_context : Window & {\n\t\tNode : typeof Node\n\t\tElement : typeof Element\n\t\tHTMLElement : typeof HTMLElement\n\t\tXMLHttpRequest : typeof XMLHttpRequest\n\t}\n\t\n}\n","namespace $ {\n\t\n\t$mol_dom_context = window as any\n\t\n}\n","namespace $ {\n\t\n\texport function $mol_dom_render_fields (\n\t\tel : Element ,\n\t\tfields : { [ key : string ] : any }\n\t) {\n\t\tfor( let key in fields ) {\n\t\t\t\n\t\t\tconst val : any = fields[ key ]\n\t\t\t\n\t\t\tif( val === undefined ) continue\n\t\t\tif( el[ key ] === val ) continue\n\t\t\t\n\t\t\tel[ key ] = val\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_children (\n\t\tel : Element ,\n\t\tchildNodes : NodeList | Array< Node | string | number | boolean | { dom_tree : ()=> Node } >\n\t) {\n\t\tconst node_list = [] as ( Node | string )[]\n\t\tconst node_set = new Set()\n\t\t\n\t\tfor( let i = 0 ; i < childNodes.length ; ++i ) {\n\t\t\tlet node = childNodes[ i ] as any\n\t\t\tif( node == null ) continue\n\t\t\tif( Object( node ) === node ) {\n\t\t\t\tif( node[ 'dom_tree' ] ) node = node[ 'dom_tree' ]()\n\t\t\t\tnode_list.push( node )\n\t\t\t\tnode_set.add( node )\n\t\t\t} else {\n\t\t\t\tnode_list.push( String( node ) )\n\t\t\t}\n\t\t}\n\t\t\n\t\tlet nextNode = el.firstChild\n\t\tfor( let view_ of node_list ) {\n\t\t\tconst view = view_.valueOf() as Node\n\t\t\t\n\t\t\tif( view instanceof $mol_dom_context.Node ) {\n\t\t\t\t\n\t\t\t\twhile( true ) {\n\t\t\t\t\tif( !nextNode ) {\n\t\t\t\t\t\tel.appendChild( view )\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tif( nextNode == view ) {\n\t\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t\t\tbreak\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif( node_set.has( nextNode ) ) {\n\t\t\t\t\t\t\tel.insertBefore( view , nextNode )\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst nn = nextNode.nextSibling\n\t\t\t\t\t\t\tel.removeChild( nextNode )\n\t\t\t\t\t\t\tnextNode = nn\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\tif( nextNode && nextNode.nodeName === '#text' ) {\n\t\t\t\t\tnextNode.nodeValue = String( view )\n\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t} else {\n\t\t\t\t\tconst textNode = $mol_dom_context.document.createTextNode( String( view ) )\n\t\t\t\t\tel.insertBefore( textNode , nextNode )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\twhile( nextNode ) {\n\t\t\tconst currNode = nextNode\n\t\t\tnextNode = currNode.nextSibling\n\t\t\tel.removeChild( currNode )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_attributes (\n\t\tel : Element ,\n\t\tattrs : { [ key : string ] : string|number|boolean }\n\t) {\n\t\tfor( let name in attrs ) {\n\t\t\tlet val = attrs[ name ] as any\n\t\t\tif( val === null || val === false ) el.removeAttribute( name )\n\t\t\telse el.setAttribute( name , String( val ) )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_styles (\n\t\tel : Element ,\n\t\tstyles : { [ key : string ] : string|number }\n\t) {\n\t\tfor( let name in styles ) {\n\t\t\tlet val = styles[ name ]\n\t\t\t\n\t\t\tconst style = ( el as HTMLElement ).style as any\n\t\t\tconst cur = style[ name ]\n\t\t\t\n\t\t\tif( typeof val === 'number' ) {\n\t\t\t\tif( parseFloat( cur ) == val ) continue\n\t\t\t\tstyle[ name ] = `${ val }px`\n\t\t\t}\n\t\t\t\n\t\t\tif( cur !== val ) style[ name ] = val\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_events (\n\t\tel : Element ,\n\t\tevents : { [ key : string ] : ( event : Event )=> any }\n\t) {\n\t\tfor( let name in events ) {\n\t\t\tel.addEventListener( name , $mol_log_group( el.id + ' ' + name , events[ name ] ) , { passive : false } as any )\n\t\t}\n\t}\n\t\n\texport function $mol_dom_render_events_async (\n\t\tel : Element ,\n\t\tevents : { [ key : string ] : ( event : Event )=> any }\n\t) {\n\t\tfor( let name in events ) {\n\t\t\tel.addEventListener( name , $mol_log_group( el.id + ' ' + name , events[ name ] ) , { passive : true } as any )\n\t\t}\n\t}\n\t\n}\n","\nnamespace $ {\n\t\n\texport namespace $$ { let $$ }\n\texport namespace $mol { let $mol }\n\t\n\t/// Use $mol_object_context instead\n\texport type $mol_view_context = $mol_object_context\n\t\n\texport function $mol_view_visible_width() {\n\t\treturn $mol_window.size().width\n\t}\n\t\n\texport function $mol_view_visible_height() {\n\t\treturn $mol_window.size().height\n\t}\n\t\n\texport function $mol_view_state_key( suffix : string ) {\n\t\treturn suffix\n\t}\n\n\t/// Reactive statefull lazy ViewModel\n\texport class $mol_view extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic Root( id : number ) {\n\t\t\treturn new this\n\t\t}\n\n\t\t@ $mol_mem\n\t\tstatic autobind() {\n\t\t\tconst nodes = $mol_dom_context.document.querySelectorAll( '[mol_view_root]' )\n\t\t\t\n\t\t\tfor( let i = nodes.length - 1 ; i >= 0 ; --i ) {\n\t\t\t\tconst name = nodes.item( i ).getAttribute( 'mol_view_root' )\n\t\t\t\t\n\t\t\t\tconst View = $[ name ]\n\t\t\t\tif( !View ) {\n\t\t\t\t\tconsole.error( `Can not attach view. Class not found: ${ name }` )\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tconst view = View.Root( i )\n\t\t\t\t\n\t\t\t\tview.dom_tree( nodes.item( i ) )\n\t\t\t\t\n\t\t\t\tdocument.title = view.title()\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\ttitle() : string {\n\t\t\treturn this.constructor.toString()\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tfocused( next?: boolean ) {\n\t\t\tlet node = this.dom_node()\n\t\t\tconst value = $mol_view_selection.focused( next === undefined ? undefined : next ? [ node ] : [] ) || []\n\t\t\treturn value.indexOf( node ) !== -1\n\t\t} \n\t\t\n\t\t@ $mol_mem\n\t\tcontext( next? : $mol_object_context ) {\n\t\t\treturn next || $ as $mol_object_context\n\t\t}\n\t\tget $() {\n\t\t\treturn this.context()\n\t\t}\n\t\tset $( next : $mol_view_context ) {\n\t\t\tthis.context( next )\n\t\t}\n\t\t\n\t\tcontext_sub() {\n\t\t\treturn this.context()\n\t\t}\n\t\t\n\t\tstate_key( suffix = '' ) {\n\t\t\treturn this.$.$mol_view_state_key( suffix )\n\t\t}\n\t\t\n\t\t/// Name of element that created when element not found in DOM\n\t\tdom_name() {\n\t\t\treturn this.constructor.toString().replace( '$' , '' )\n\t\t}\n\t\t\n\t\t/// NameSpace of element that created when element not found in DOM\n\t\tdom_name_space() { return 'http://www.w3.org/1999/xhtml' }\n\t\t\n\t\t/// Raw child views\n\t\tsub() {\n\t\t\treturn null as Array<$mol_view|Node|string|number|boolean>\n\t\t}\n\t\t\n\t\t/// Visible sub views with defined context()\n\t\t/// Render all by default\n\t\tsub_visible() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return sub\n\t\t\t\n\t\t\tconst context = this.context_sub()\n\t\t\tsub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.$ = context\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn sub\n\t\t}\n\t\t\n\t\t/// Minimal width that used for lazy rendering\n\t\t@ $mol_mem\n\t\tminimal_width() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return 0\n\t\t\t\n\t\t\tlet min = 0\n\t\t\tsub.forEach( view => {\n\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\tmin = Math.max( min , view.minimal_width() )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn min\n\t\t}\n\t\t\n\t\t/// Minimal height that used for lazy rendering\n\t\tminimal_height() {\n\t\t\treturn this.content_height()\n\t\t}\n\n\t\t@ $mol_mem\n\t\tcontent_height() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return 0\n\t\t\t\n\t\t\tlet min = 0\n\t\t\tsub.forEach( view => {\n\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\tmin = Math.max( min , view.minimal_height() )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn min\n\t\t}\n\n\t\tdom_id() {\n\t\t\treturn this.toString()\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tdom_node( next? : Element ) {\n\t\t\tconst node = next || this.$.$mol_dom_context.document.createElementNS( this.dom_name_space() , this.dom_name() )\n\n\t\t\tnode.setAttribute( 'id' , this.dom_id() )\n\t\t\t$mol_dom_render_attributes( node , this.attr_static() )\n\t\t\t$mol_dom_render_events( node , this.event() )\n\t\t\t$mol_dom_render_events_async( node , this.event_async() )\n\n\t\t\treturn node\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tdom_tree( next? : Element ) : Element {\n\t\t\tconst node = this.dom_node( next )\n\t\t\t\n\t\t\ttry {\n\t\t\t\t\n\t\t\t\tfor( let plugin of this.plugins() ) plugin.render()\n\t\t\t\tthis.render()\n\t\t\t\t\n\t\t\t} catch( error ) {\n\t\t\t\t\n\t\t\t\t$mol_dom_render_attributes( node , { mol_view_error : error.name } )\n\t\t\t\t\n\t\t\t\tif( error instanceof $mol_atom_wait ) return node\n\t\t\t\t\n\t\t\t\ttry { void( ( node as HTMLElement ).innerText = error.message ) } catch( e ) {}\n\t\t\t\t\n\t\t\t\tif( error[ '$mol_atom_catched' ] ) return node\n\t\t\t\t\n\t\t\t\tconsole.error( error )\n\n\t\t\t\terror[ '$mol_atom_catched' ] = true\n\t\t\t}\n\t\t\t\n\t\t\treturn node\n\t\t}\n\t\t\n\t\trender() {\n\t\t\tconst node = this.dom_node()\n\t\t\t\n\t\t\tconst sub = this.sub_visible()\n\t\t\tif( sub ) $mol_dom_render_children( node , sub )\n\t\t\t\n\t\t\t$mol_dom_render_attributes( node , this.attr() )\n\t\t\t$mol_dom_render_styles( node , this.style() )\n\t\t\t\n\t\t\tconst fields = this.field()\n\t\t\t$mol_dom_render_fields( node , fields )\n\t\t\tnew $mol_defer( ()=> $mol_dom_render_fields( node , fields ) )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tstatic view_classes() {\n\t\t\tconst proto = this.prototype\n\t\t\t\n\t\t\tlet current = proto\n\t\t\tconst classes = [] as ( typeof $mol_view )[]\n\t\t\t\n\t\t\twhile( current ) {\n\t\t\t\tclasses.push( current.constructor as typeof $mol_view )\n\t\t\t\tif(!( current instanceof $mol_view )) break\n\t\t\t\tcurrent = Object.getPrototypeOf( current )\n\t\t\t}\n\t\t\t\n\t\t\treturn classes\n\t\t}\n\t\t\n\t\tview_names_owned() {\n\t\t\tconst names = [] as string[]\n\t\t\tlet owner = this.object_host()\n\n\t\t\tif( owner instanceof $mol_view ) {\n\n\t\t\t\tconst suffix = this.object_field()\n\t\t\t\tconst suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1)\n\t\t\t\t\n\t\t\t\tfor( let Class of ( owner.constructor as typeof $mol_view ).view_classes() ) {\n\t\t\t\t\tif( suffix in Class.prototype ) names.push( $mol_func_name( Class ) + suffix2 )\n\t\t\t\t\telse break\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor( let prefix of owner.view_names_owned() ) {\n\t\t\t\t\tnames.push( prefix + suffix2 )\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn names\n\t\t}\n\n\t\t@ $mol_mem\n\t\tview_names() {\n\t\t\tconst names = [] as string[]\n\t\t\t\n\t\t\tfor( let name of this.view_names_owned() ) {\n\t\t\t\tif( names.indexOf( name ) < 0 ) names.push( name )\n\t\t\t}\n\n\t\t\tfor( let Class of ( this.constructor as typeof $mol_view ).view_classes() ) {\n\t\t\t\tconst name = $mol_func_name( Class )\n\t\t\t\tif( names.indexOf( name ) < 0 ) names.push( name )\n\t\t\t}\n\n\t\t\treturn names\n\t\t}\n\t\t\n\t\tattr_static() : { [ key : string ] : string|number|boolean } {\n\t\t\tlet attrs : any = {}\n\t\t\t\n\t\t\tfor( let name of this.view_names() ) attrs[ name.replace( /\\$/g , '' ).toLowerCase() ] = ''\n\t\t\t\n\t\t\treturn attrs\n\t\t}\n\t\t\n\t\tattr() : { [ key : string ] : string|number|boolean } {\n\t\t\treturn {\n\t\t\t\t'mol_view_error' : false ,\n\t\t\t}\n\t\t}\n\t\t\n\t\tstyle() : { [ key : string ] : string|number } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tfield() : { [ key : string ] : any } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tevent() : { [ key : string ] : ( event : Event )=> void } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tevent_async() : { [ key : string ] : ( event : Event )=> void } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tplugins() {\n\t\t\treturn [] as $mol_view[]\n\t\t}\n\t\t\n\t}\n\t\n}\n","interface Window {\n\tcordova : any\n}\n\nnamespace $ {\n\n\t/// Autoattach view roots to loaded DOM.\n\tconst event_name = window.cordova ? 'deviceready' : 'DOMContentLoaded'\n\t$mol_dom_context.document.addEventListener( event_name , $mol_log_group( `$mol_view ${ event_name }` , ( event : Event )=> {\n\t\t$mol_view.autobind()\n\t\t$mol_defer.run()\n\t} ) )\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_view_selection extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic focused( next? : Element[] , force? : $mol_atom_force ) {\n\t\t\tif( next === undefined ) return [] as Element[]\n\t\t\t\n\t\t\tconst node = next[ 0 ] as HTMLElement\n\t\t\t\n\t\t\tconst atom = $mol_atom_current< HTMLElement >()\n\t\t\tnew $mol_defer( ()=> {\n\t\t\t\tif( node ) return node.focus()\n\n\t\t\t\tconst el = atom.cache()[0]\n\t\t\t\tif( el ) el.blur()\n\t\t\t} )\n\n\t\t\treturn undefined\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic position( ...diff : any[] ) {\n\t\t\tif( diff.length ) {\n\t\t\t\tif( !diff[ 0 ] ) return diff[ 0 ]\n\t\t\t\t\n\t\t\t\tvar start = diff[ 0 ].start\n\t\t\t\tvar end = diff[ 0 ].end\n\t\t\t\tif( !( start <= end ) ) throw new Error( `Wrong offsets (${start},${end})` )\n\t\t\t\t\n\t\t\t\tvar root = $mol_dom_context.document.getElementById( diff[ 0 ].id )\n\t\t\t\troot.focus()\n\t\t\t\t\n\t\t\t\tvar range = new Range\n\t\t\t\t\n\t\t\t\tvar cur = root.firstChild\n\t\t\t\twhile( cur !== root ) {\n\t\t\t\t\twhile( cur.firstChild ) cur = cur.firstChild\n\t\t\t\t\tif( cur.nodeValue ) {\n\t\t\t\t\t\tvar length = cur.nodeValue.length\n\t\t\t\t\t\tif( length >= start ) break\n\t\t\t\t\t\tstart -= length\n\t\t\t\t\t}\n\t\t\t\t\twhile( !cur.nextSibling ) {\n\t\t\t\t\t\tcur = cur.parentNode\n\t\t\t\t\t\tif( cur === root ) {\n\t\t\t\t\t\t\tstart = root.childNodes.length\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trange.setStart( cur , start )\n\t\t\t\t\n\t\t\t\tvar cur = root.firstChild\n\t\t\t\twhile( cur !== root ) {\n\t\t\t\t\twhile( cur.firstChild ) cur = cur.firstChild\n\t\t\t\t\tif( cur.nodeValue ) {\n\t\t\t\t\t\tvar length = cur.nodeValue.length\n\t\t\t\t\t\tif( length >= end ) break\n\t\t\t\t\t\tend -= length\n\t\t\t\t\t}\n\t\t\t\t\twhile( !cur.nextSibling ) {\n\t\t\t\t\t\tcur = cur.parentNode\n\t\t\t\t\t\tif( cur === root ) {\n\t\t\t\t\t\t\tend = root.childNodes.length\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trange.setEnd( cur , end )\n\t\t\t\t\n\t\t\t\tvar sel = $mol_dom_context.document.getSelection()\n\t\t\t\tsel.removeAllRanges()\n\t\t\t\tsel.addRange( range )\n\t\t\t\t\n\t\t\t\treturn diff[ 0 ]\n\t\t\t} else {\n\t\t\t\tvar sel = $mol_dom_context.document.getSelection()\n\t\t\t\tif( sel.rangeCount === 0 ) return null\n\t\t\t\tvar range = sel.getRangeAt( 0 )\n\t\t\t\t\n\t\t\t\tvar el = range.commonAncestorContainer as Element\n\t\t\t\twhile( el && !el.id ) el = el.parentElement\n\t\t\t\t\n\t\t\t\tif( !el ) return { id : null , start : 0 , end : 0 }\n\t\t\t\t\n\t\t\t\tvar meter = new Range\n\t\t\t\tmeter.selectNodeContents( el )\n\t\t\t\t\n\t\t\t\tmeter.setEnd( range.startContainer , range.startOffset )\n\t\t\t\tvar startOffset = meter.toString().length\n\t\t\t\t\n\t\t\t\tmeter.setEnd( range.endContainer , range.endOffset )\n\t\t\t\tvar endOffset = meter.toString().length\n\t\t\t\t\n\t\t\t\treturn { id : el.id , start : startOffset , end : endOffset }\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatic onFocus( event : FocusEvent ) {\n\t\t\tconst parents : Element[] = []\n\t\t\tlet element = event.target as HTMLElement\n\t\t\t\n\t\t\twhile( element ) {\n\t\t\t\tparents.push( element )\n\t\t\t\telement = element.parentNode as HTMLElement\n\t\t\t}\n\n\t\t\tthis.focused( parents , $mol_atom_force_cache )\n\t\t}\n\t\t\n\t\tstatic onBlur( event : FocusEvent ) {\n\t\t\tconst focused = this.focused()\n\t\t\tsetTimeout( $mol_log_group( '$mol_view_selection blur' , ()=> {\n\t\t\t\tif( focused !== this.focused() ) return\n\t\t\t\tthis.focused( [] , $mol_atom_force_cache )\n\t\t\t} ) )\n\t\t}\n\t}\n\t\n}\n","namespace $ {\n\t\n\t$mol_dom_context.document.addEventListener( 'selectionchange' , event => {\n\t\t$mol_view_selection.position( undefined , $mol_atom_force_cache )\n\t} )\n\t\n\t$mol_dom_context.document.addEventListener(\n\t\t'focus' ,\n\t\t$mol_log_group( '$mol_view_selection focus' , ( event : FocusEvent )=> $mol_view_selection.onFocus( event ) ) ,\n\t\ttrue\n\t)\n\t\n\t$mol_dom_context.document.addEventListener(\n\t\t'blur' ,\n\t\t( event : FocusEvent )=> $mol_view_selection.onBlur( event ) ,\n\t\ttrue\n\t)\n\t\n}\n","namespace $ {\n export const enum $mol_keyboard_code {\n backspace = 8,\n tab = 9,\n enter = 13,\n shift= 16,\n ctrl = 17,\n alt = 18,\n pause = 19,\n capsLock = 20,\n escape = 27,\n space = 32,\n pageUp = 33,\n pageDown = 34,\n end = 35,\n home = 36,\n left = 37,\n up = 38,\n right = 39,\n down = 40,\n insert = 45,\n delete = 46,\n key0 = 48,\n key1 = 49,\n key2 = 50,\n key3 = 51,\n key4 = 52,\n key5 = 53,\n key6 = 54,\n key7 = 55,\n key8 = 56,\n key9 = 57,\n A = 65,\n B = 66,\n C = 67,\n D = 68,\n E = 69,\n F = 70,\n G = 71,\n H = 72,\n I = 73,\n J = 74,\n K = 75,\n L = 76,\n M = 77,\n N = 78,\n O = 79,\n P = 80,\n Q = 81,\n R = 82,\n S = 83,\n T = 84,\n U = 85,\n V = 86,\n W = 87,\n X = 88,\n Y = 89,\n Z = 90,\n metaLeft = 91,\n metaRight = 92,\n select = 93,\n numpad0 = 96,\n numpad1 = 97,\n numpad2 = 98,\n numpad3 = 99,\n numpad4 = 100,\n numpad5 = 101,\n numpad6 = 102,\n numpad7 = 103,\n numpad8 = 104,\n numpad9 = 105,\n multiply = 106,\n add = 107,\n subtract = 109,\n decimal = 110,\n divide = 111,\n F1 = 112,\n F2 = 113,\n F3 = 114,\n F4 = 115,\n F5 = 116,\n F6 = 117,\n F7 = 118,\n F8 = 119,\n F9 = 120,\n F10 = 121,\n F11 = 122,\n F12 = 123,\n numLock = 144,\n scrollLock = 145,\n semicolon = 186,\n equals = 187,\n comma = 188,\n dash = 189,\n period = 190,\n forwardSlash = 191,\n graveAccent = 192,\n bracketOpen = 219,\n slashBack = 220,\n bracketClose = 221,\n quoteSingle = 222\n }\n}\n","namespace $ { export class $mol_string extends $mol_view {\n\n\t/// dom_name \\input\n\tdom_name() {\n\t\treturn \"input\"\n\t}\n\n\t/// enabled true\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/// debounce 200\n\tdebounce() {\n\t\treturn 200\n\t}\n\n\t/// minimal_height 40\n\tminimal_height() {\n\t\treturn 40\n\t}\n\n\t/// field * \n\t/// \t^ \n\t/// \tdisabled <= disabled - \n\t/// \tvalue <= value_changed?val - \n\t/// \tplaceholder <= hint - \n\t/// \ttype <= type?val -\n\tfield() {\n\t\treturn ({\n\t\t\t...super.field() ,\n\t\t\t\"disabled\" : this.disabled() ,\n\t\t\t\"value\" : this.value_changed() ,\n\t\t\t\"placeholder\" : this.hint() ,\n\t\t\t\"type\" : this.type() ,\n\t\t})\n\t}\n\n\t/// disabled false\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/// value_changed?val <=> value?val -\n\t@ $mol_mem\n\tvalue_changed( val? : any , force? : $mol_atom_force ) {\n\t\treturn this.value( val )\n\t}\n\n\t/// value?val \\\n\t@ $mol_mem\n\tvalue( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// type?val \\text\n\t@ $mol_mem\n\ttype( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"text\"\n\t}\n\n\t/// attr * \n\t/// \t^ \n\t/// \tmaxlength <= length_max -\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"maxlength\" : this.length_max() ,\n\t\t})\n\t}\n\n\t/// length_max Infinity\n\tlength_max() {\n\t\treturn Infinity\n\t}\n\n\t/// event * \n\t/// \t^ \n\t/// \tinput?event <=> event_change?event - \n\t/// \tkeypress?event <=> event_key_press?event -\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"input\" : ( event? : any )=> this.event_change( event ) ,\n\t\t\t\"keypress\" : ( event? : any )=> this.event_key_press( event ) ,\n\t\t})\n\t}\n\n\t/// event_change?event null\n\t@ $mol_mem\n\tevent_change( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// event_key_press?event null\n\t@ $mol_mem\n\tevent_key_press( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_string extends $.$mol_string {\n\t\t\n\t\t_timer = 0\n\t\t\n\t\tevent_change( next? : Event ) {\n\t\t\tif( !next ) return\n\t\t\t\n\t\t\tclearTimeout( this._timer )\n\t\t\tthis._timer = setTimeout( $mol_log_group( `${ this }.event_change()` , () => {\n\t\t\t\tthis.value( ( next.target as HTMLInputElement ).value ) \n\t\t\t} ) , this.debounce() )\n\t\t}\n\t\t\n\t\tevent_key_press( next? : KeyboardEvent ) { \n\t\t\tif( !next ) return\n\t\t\t\n\t\t\tif( next.keyCode === $mol_keyboard_code.enter ) {\n\t\t\t\tthis.value( ( next.target as HTMLInputElement ).value )\n\t\t\t}\n\t\t} \n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t}\n}\n","namespace $ { export class $mol_button extends $mol_view {\n\n\t/// enabled true\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/// minimal_height 40\n\tminimal_height() {\n\t\treturn 40\n\t}\n\n\t/// click?event null\n\t@ $mol_mem\n\tclick( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// event_click?event null\n\t@ $mol_mem\n\tevent_click( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// event * \n\t/// \t^ \n\t/// \tclick?event <=> event_activate?event - \n\t/// \tkeypress?event <=> event_key_press?event -\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"click\" : ( event? : any )=> this.event_activate( event ) ,\n\t\t\t\"keypress\" : ( event? : any )=> this.event_key_press( event ) ,\n\t\t})\n\t}\n\n\t/// event_activate?event null\n\t@ $mol_mem\n\tevent_activate( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// event_key_press?event null\n\t@ $mol_mem\n\tevent_key_press( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// attr * \n\t/// \t^ \n\t/// \tdisabled <= disabled - \n\t/// \trole \\button\n\t/// \ttabindex <= tab_index - \n\t/// \ttitle <= hint -\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"disabled\" : this.disabled() ,\n\t\t\t\"role\" : \"button\" ,\n\t\t\t\"tabindex\" : this.tab_index() ,\n\t\t\t\"title\" : this.hint() ,\n\t\t})\n\t}\n\n\t/// disabled false\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/// tab_index 0\n\ttab_index() {\n\t\treturn 0\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// sub / <= title -\n\tsub() {\n\t\treturn [].concat( this.title() )\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_button extends $.$mol_button {\n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t\t\n\t\tevent_activate( next : Event ) {\n\t\t\tif( !next ) return\n\t\t\tif( !this.enabled() ) return\n\t\t\t\n\t\t\tthis.event_click( next )\n\t\t\tthis.click( next )\n\t\t}\n\t\t\n\t\tevent_key_press ( event: KeyboardEvent ) { \n\t\t\tif( event.keyCode === $mol_keyboard_code.enter ) {\n\t\t\t\treturn this.event_activate( event )\n\t\t\t}\n\t\t} \n\t\t\n\t\ttab_index() {\n\t\t\treturn this.enabled() ? super.tab_index() : null\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { export class $mol_button_typed extends $mol_button {\n\n} }\n\nnamespace $ { export class $mol_button_major extends $mol_button_typed {\n\n} }\n\nnamespace $ { export class $mol_button_minor extends $mol_button_typed {\n\n} }\n\nnamespace $ { export class $mol_button_danger extends $mol_button_typed {\n\n} }\n\n","namespace $ {\n\t\n\texport function $mol_merge_dict< Target , Source >( target : Target , source : Source ) : Target & Source {\n\t\tlet result = {} as any\n\t\tfor( let key in target ) result[ key ] = ( target as any )[ key ]\n\t\tfor( let key in source ) result[ key ] = ( source as any )[ key ]\n\t\treturn result\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_state_arg< Value > extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic href( next? : string , force? : $mol_atom_force ) {\n\t\t\tif( next ) history.replaceState( history.state , $mol_dom_context.document.title , `${ next }` )\n\t\t\treturn window.location.search + window.location.hash\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic dict( next? : { [ key : string ] : string } ) {\n\t\t\tvar href = this.href( next && this.make_link( next ) )\n\t\t\tvar chunks = href.split( /[\\/\\?#&;]/g )\n\t\t\t\n\t\t\tvar params : { [ key : string ] : string } = {}\n\t\t\tchunks.forEach(\n\t\t\t\tchunk => {\n\t\t\t\t\tif( !chunk ) return\n\t\t\t\t\tvar vals = chunk.split( '=' ).map( decodeURIComponent )\n\t\t\t\t\tparams[ vals.shift() ] = vals.join( '=' )\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\treturn params\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic value( key : string , next? : string ) {\n\t\t\tconst nextDict = ( next === void 0 ) ? void 0 : $mol_merge_dict( this.dict() , { [ key ] : next } ) \n\t\t\tconst next2 = this.dict( nextDict )[ key ]\n\t\t\treturn ( next2 == null ) ? null : next2\n\t\t}\n\t\t\n\t\tstatic link( next : { [ key : string ] : string } ) {\n\t\t\treturn this.make_link( $mol_merge_dict( this.dict() , next ) )\n\t\t}\n\t\t\n\t\tstatic make_link( next : { [ key : string ] : string } ) {\n\t\t\tconst chunks : string[] = []\n\t\t\tfor( let key in next ) {\n\t\t\t\tif( null == next[ key ] ) continue\n\t\t\t\tchunks.push( [ key ].concat( next[ key ] ? next[ key ] : [] ).map( this.encode ).join( '=' ) )\n\t\t\t}\n\t\t\t\n\t\t\treturn new URL( '#' + chunks.join( '/' ) , window.location.href ).toString()\n\t\t}\n\n\t\tstatic encode( str : string ) {\n\t\t\treturn encodeURIComponent( str ).replace( /\\(/g , '%28' ).replace( /\\)/g , '%29' )\n\t\t}\n\t\t\n\t\tconstructor( public prefix = '' ) {\n\t\t\tsuper()\n\t\t}\n\t\t\n\t\tvalue( key : string , next? : string ) {\n\t\t\treturn $mol_state_arg.value( this.prefix + key , next )\n\t\t}\n\t\t\n\t\tsub( postfix : string ) {\n\t\t\treturn new $mol_state_arg( this.prefix + postfix + '.' )\n\t\t}\n\t\t\n\t\tlink( next : { [ key : string ] : string } ) {\n\t\t\tvar prefix = this.prefix\n\t\t\tvar dict : { [ key : string ] : string } = {}\n\t\t\tfor( var key in next ) {\n\t\t\t\tdict[ prefix + key ] = next[ key ]\n\t\t\t}\n\t\t\treturn $mol_state_arg.link( dict )\n\t\t}\n\t\t\n\t}\n\t\n\twindow.addEventListener( 'hashchange' , $mol_log_group( '$mol_state_arg hashchange' , ( event : HashChangeEvent )=> {\n\t\t$mol_state_arg.href( undefined , $mol_atom_force_cache ) \n\t} ) )\n\t\n}\n","namespace $ { export class $mol_link extends $mol_view {\n\n\t/// minimal_height 40\n\tminimal_height() {\n\t\treturn 40\n\t}\n\n\t/// dom_name \\a\n\tdom_name() {\n\t\treturn \"a\"\n\t}\n\n\t/// attr * \n\t/// \t^ \n\t/// \thref <= uri - \n\t/// \ttitle <= hint - \n\t/// \ttarget <= target - \n\t/// \tdownload <= file_name - \n\t/// \tmol_link_current <= current -\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"href\" : this.uri() ,\n\t\t\t\"title\" : this.hint() ,\n\t\t\t\"target\" : this.target() ,\n\t\t\t\"download\" : this.file_name() ,\n\t\t\t\"mol_link_current\" : this.current() ,\n\t\t})\n\t}\n\n\t/// uri \\\n\turi() {\n\t\treturn \"\"\n\t}\n\n\t/// hint \\\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/// target \\_self\n\ttarget() {\n\t\treturn \"_self\"\n\t}\n\n\t/// file_name \\\n\tfile_name() {\n\t\treturn \"\"\n\t}\n\n\t/// current false\n\tcurrent() {\n\t\treturn false\n\t}\n\n\t/// sub / <= title -\n\tsub() {\n\t\treturn [].concat( this.title() )\n\t}\n\n\t/// arg *\n\targ() {\n\t\treturn ({\n\t\t})\n\t}\n\n\t/// event * \n\t/// \t^ \n\t/// \tclick?event <=> click?event -\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"click\" : ( event? : any )=> this.click( event ) ,\n\t\t})\n\t}\n\n\t/// click?event <=> event_click?event -\n\t@ $mol_mem\n\tclick( event? : any , force? : $mol_atom_force ) {\n\t\treturn this.event_click( event )\n\t}\n\n\t/// event_click?event null\n\t@ $mol_mem\n\tevent_click( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\n","namespace $.$$ {\n\t\n\texport class $mol_link extends $.$mol_link {\n\t\t\n\t\t@ $mol_mem\n\t\turi() {\n\t\t\treturn new $mol_state_arg( this.state_key() ).link( this.arg() )\n\t\t}\n\t\t\n\t\tcurrent() {\n\t\t\treturn this.uri() === $mol_state_arg.link( {} )\n\t\t}\n\n\t\tevent_click( event? : Event ) {\n\t\t\tsetTimeout( $mol_log_group( `${ this }.event_click()` , ()=> this.focused( false ) ) , 200 )\n\t\t}\n\n\t\tfile_name() {\n\t\t\treturn null as string\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ { export class $mol_check extends $mol_button_typed {\n\n\t/// attr * \n\t/// \t^ \n\t/// \tmol_check_checked <= checked?val - \n\t/// \taria-checked <= checked?val - \n\t/// \trole \\checkbox\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"mol_check_checked\" : this.checked() ,\n\t\t\t\"aria-checked\" : this.checked() ,\n\t\t\t\"role\" : \"checkbox\" ,\n\t\t})\n\t}\n\n\t/// checked?val false\n\t@ $mol_mem\n\tchecked( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// sub / \n\t/// \t<= Icon - \n\t/// \t<= label -\n\tsub() {\n\t\treturn [].concat( this.Icon() , this.label() )\n\t}\n\n\t/// Icon null\n\tIcon() {\n\t\treturn null as any\n\t}\n\n\t/// label / <= Title -\n\tlabel() {\n\t\treturn [].concat( this.Title() )\n\t}\n\n\t/// Title $mol_view sub / <= title -\n\t@ $mol_mem\n\tTitle() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.title() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// title \\\n\ttitle() {\n\t\treturn \"\"\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_check extends $.$mol_check {\n\n\t\tevent_click( next? : Event ) {\n\t\t\tthis.checked( !this.checked() )\n\t\t\tif( next ) next.preventDefault()\n\t\t}\n\n\t}\n}\n","namespace $ { export class $mol_scroll extends $mol_view {\n\n\t/// minimal_height 0\n\tminimal_height() {\n\t\treturn 0\n\t}\n\n\t/// moving_hor?val false\n\t@ $mol_mem\n\tmoving_hor( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// moving_vert?val false\n\t@ $mol_mem\n\tmoving_vert( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// field * \n\t/// \t^ \n\t/// \tscrollTop <= scroll_top?val - \n\t/// \tscrollLeft <= scroll_left?val - \n\t/// \tscrollBottom <= scroll_bottom?val - \n\t/// \tscrollRight <= scroll_right?val -\n\tfield() {\n\t\treturn ({\n\t\t\t...super.field() ,\n\t\t\t\"scrollTop\" : this.scroll_top() ,\n\t\t\t\"scrollLeft\" : this.scroll_left() ,\n\t\t\t\"scrollBottom\" : this.scroll_bottom() ,\n\t\t\t\"scrollRight\" : this.scroll_right() ,\n\t\t})\n\t}\n\n\t/// scroll_top?val 0\n\t@ $mol_mem\n\tscroll_top( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// scroll_left?val 0\n\t@ $mol_mem\n\tscroll_left( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// scroll_bottom?val 0\n\t@ $mol_mem\n\tscroll_bottom( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// scroll_right?val 0\n\t@ $mol_mem\n\tscroll_right( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/// event_async * \n\t/// \t^ \n\t/// \tscroll?event <=> event_scroll?event -\n\tevent_async() {\n\t\treturn ({\n\t\t\t...super.event_async() ,\n\t\t\t\"scroll\" : ( event? : any )=> this.event_scroll( event ) ,\n\t\t})\n\t}\n\n\t/// event_scroll?event null\n\t@ $mol_mem\n\tevent_scroll( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// Strut $mol_view style * transform <= strut_transform -\n\t@ $mol_mem\n\tStrut() {\n\t\treturn (( obj )=>{\n\t\t\tobj.style = () => ({\n\t\t\t\"transform\" : this.strut_transform() ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// strut_transform \\\n\tstrut_transform() {\n\t\treturn \"\"\n\t}\n\n} }\n\n","namespace $.$$ {\n\t\n\texport function $mol_scroll_top() {\n\t\treturn 0\n\t}\n\t\n\texport function $mol_scroll_left() {\n\t\treturn 0\n\t}\n\t\n\texport function $mol_scroll_moving() {\n\t\treturn false\n\t}\n\t\n\texport function $mol_scroll_moving_vert() {\n\t\treturn false\n\t}\n\t\n\texport function $mol_scroll_moving_hor() {\n\t\treturn false\n\t}\n\t\n\texport class $mol_scroll extends $.$mol_scroll {\n\n\t\t// scroll_top( next? : number ) {\n\t\t// \treturn $mol_state_session.value( `${ this }.scroll_top()` , next ) || 0\n\t\t// }\n\t\t// \n\t\t// scroll_left( next? : number ) {\n\t\t// \treturn $mol_state_session.value( `${ this }.scroll_left()` , next ) || 0\n\t\t// }\n\t\t\n\t\t@ $mol_mem\n\t\tscroll_bottom( next? : number ) {\n\t\t\treturn next || 0\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tscroll_right( next? : number ) {\n\t\t\treturn next || 0\n\t\t}\n\t\t\n\t\tevent_scroll( next? : Event ) {\n\t\t\tthis.moving_vert( this.scroll_top() !== this.dom_node().scrollTop )\n\t\t\tthis.moving_hor( this.scroll_left() !== this.dom_node().scrollLeft )\n\t\t\tthis.moving_task_stop()\n\t\t\t\n\t\t\tnew $mol_defer( $mol_log_group( `${ this }.event_scroll()` , ()=> {\n\t\t\t\tconst el = this.dom_node() as HTMLElement\n\t\t\t\t\n\t\t\t\tconst top = Math.max( 0 , el.scrollTop )\n\t\t\t\tconst left = Math.max( 0 , el.scrollLeft )\n\t\t\t\t\n\t\t\t\tthis.scroll_top( top )\n\t\t\t\tthis.scroll_left( left )\n\t\t\t\t\n\t\t\t\tthis.scroll_bottom( Math.max( 0 , el.scrollHeight - top - el.offsetHeight ) )\n\t\t\t\tthis.scroll_right( Math.max( 0 , el.scrollWidth - left - el.offsetWidth ) )\n\t\t\t} ) )\n\t\t}\n\t\t\n\t\tevent_repos( next? : Event ) {\n\t\t\tnew $mol_defer( ()=> {\n\t\t\t\tconst el = this.dom_node() as HTMLElement\n\t\t\t\t\n\t\t\t\tthis.scroll_bottom( Math.max( 0 , el.scrollHeight - this.scroll_top() - el.offsetHeight ) )\n\t\t\t\tthis.scroll_right( Math.max( 0 , el.scrollWidth - this.scroll_left() - el.offsetWidth ) )\n\t\t\t} )\n\t\t}\n\t\t\n\t\t_moving_task_timer = 0\n\t\tmoving_task_stop() {\n\t\t\tclearTimeout( this._moving_task_timer )\n\t\t\tthis._moving_task_timer = setTimeout( $mol_log_group( `${ this }.moving_task_stop()` , ()=> {\n\t\t\t\tthis.moving_vert( false )\n\t\t\t\tthis.moving_hor( false )\n\t\t\t} ) , 50 )\n\t\t}\n\t\t\n\t\tmoving() {\n\t\t\treturn this.moving_hor() || this.moving_vert()\n\t\t}\n\n\t\t@ $mol_mem\n\t\tcontext_sub( ) {\n\t\t\tconst context = this.context()\n\t\t\tconst subContext : typeof context = Object.create( context )\n\t\t\tsubContext.$mol_view_visible_height = ()=> {\n\t\t\t\tconst sizeWin = $mol_window.size()\n\t\t\t\tconst limit = context.$mol_view_visible_height()\n\t\t\t\treturn this.scroll_top() + Math.min( sizeWin.height , limit )\n\t\t\t}\n\t\t\tsubContext.$mol_view_visible_width = ()=> {\n\t\t\t\tconst sizeWin = $mol_window.size()\n\t\t\t\tconst limit = context.$mol_view_visible_width()\n\t\t\t\treturn this.scroll_left() + Math.min( sizeWin.width , limit )\n\t\t\t}\n\t\t\tsubContext.$mol_scroll_top = ()=> this.scroll_top()\n\t\t\tsubContext.$mol_scroll_left = ()=> this.scroll_left()\n\t\t\tsubContext.$mol_scroll_moving = ()=> this.moving()\n\t\t\tsubContext.$mol_scroll_moving_vert = ()=> this.moving_vert()\n\t\t\tsubContext.$mol_scroll_moving_hor = ()=> this.moving_hor()\n\t\t\treturn subContext\n\t\t}\n\t\t\n\t\tstrut_transform() {\n\t\t\ttry {\n\t\t\t\treturn `translate3d( 0 , ${ this.content_height() }px , 0 )`\n\t\t\t} catch( error ) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t}\n\n\t\tsub_visible() {\n\t\t\tconst sub = [\n\t\t\t\tthis.Strut() ,\n\t\t\t\t... ( this.sub() || [] ) ,\n\t\t\t]\n\n\t\t\tconst context = this.context_sub()\n\t\t\tsub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.$ = context\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn sub\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ { export class $mol_list extends $mol_view {\n\n\t/// sub <= rows -\n\tsub() {\n\t\treturn this.rows()\n\t}\n\n\t/// rows /\n\trows() {\n\t\treturn [] as any[]\n\t}\n\n\t/// Empty null\n\tEmpty() {\n\t\treturn null as any\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_list extends $.$mol_list {\n\t\t\n\t\tsub() {\n\t\t\tconst rows = this.rows()\n\t\t\treturn ( rows.length === 0 ) ? [ this.Empty() ] : rows\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\trow_offsets() : number[] {\n\t\t\tvar sub = this.sub()\n\t\t\tif( !sub ) return null\n\t\t\t\n\t\t\tlet heightLimit = this.$.$mol_view_visible_height()\n\t\t\tvar offset = 0\n\t\t\t\n\t\t\tvar next : number[] = []\n\t\t\tfor( let child of sub ) {\n\t\t\t\tnext.push( offset )\n\t\t\t\t\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\toffset += child.minimal_height()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( offset > heightLimit ) break\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\trow_context( index : number ) {\n\t\t\tlet context = this.context()\n\t\t\tlet next = Object.create( context )\n\t\t\tnext.$mol_view_visible_height = ()=> {\n\t\t\t\tconst limit = context.$mol_view_visible_height()\n\t\t\t\treturn limit - this.row_offsets()[ index ]\n\t\t\t}\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tsub_visible() {\n\t\t\tvar sub = this.sub()\n\t\t\tif( !sub ) return sub\n\t\t\t\n\t\t\tvar limit = this.row_offsets().length\n\t\t\t\n\t\t\tvar next : $mol_view[] = []\n\t\t\tfor( let i = 0 ; i < limit ; ++ i ) {\n\t\t\t\tconst child = sub[ i ]\n\t\t\t\tif( child == null ) continue \n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\tchild.$ = this.row_context( i )\n\t\t\t\t}\n\t\t\t\tnext.push( child )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tminimal_height() {\n\t\t\tvar height = 0\n\t\t\tvar sub = this.sub()\n\t\t\tif( sub ) sub.forEach( child => {\n\t\t\t\tif( child instanceof $mol_view ) {\n\t\t\t\t\theight += child.minimal_height()\n\t\t\t\t}\n\t\t\t} )\n\t\t\treturn height\n\t\t}\n\n\t}\n}\n","namespace $ { export class $mol_bar extends $mol_view {\n\n} }\n\n","namespace $ {\n\t\n\texport class $mol_state_local< Value > extends $mol_object {\n\t\t\n\t\tstatic 'native()' : Pick< Storage , 'getItem'|'setItem'|'removeItem' >\n\t\tstatic native() {\n\t\t\tif( this['native()'] ) return this['native()']\n\n\t\t\tcheck : try {\n\t\t\t\tconst native = $mol_dom_context.localStorage\n\t\t\t\tif( !native ) break check\n\t\t\t\t\n\t\t\t\tnative.setItem( '' , '' )\n\t\t\t\tnative.removeItem( '' )\n\t\t\t\treturn this['native()'] = native\n\t\t\t} catch( error ) {\n\t\t\t\tconsole.warn( error )\n\t\t\t}\n\n\t\t\treturn this['native()'] = {\n\t\t\t\tgetItem( key : string ) {\n\t\t\t\t\treturn this[ ':' + key ]\n\t\t\t\t} ,\n\t\t\t\tsetItem( key : string , value : string ) {\n\t\t\t\t\tthis[ ':' + key ] = value\n\t\t\t\t} ,\n\t\t\t\tremoveItem( key : string ) {\n\t\t\t\t\tthis[ ':' + key ] = void 0\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\tstatic value< Value >( key : string , next? : Value , force? : $mol_atom_force ) : Value {\n\t\t\tif( next === void 0 ) return JSON.parse( this.native().getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) this.native().removeItem( key )\n\t\t\telse this.native().setItem( key , JSON.stringify( next ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_local.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\twindow.addEventListener( 'storage' , event => {\n\t\t$.$mol_state_local.value( event.key , void 0 , $mol_atom_force_cache )\n\t} )\n}\n","namespace $ { export class $mol_app_todomvc extends $mol_scroll {\n\n\t/// title \\Todos\n\ttitle() {\n\t\treturn \"Todos\"\n\t}\n\n\t/// sub / <= Page -\n\tsub() {\n\t\treturn [].concat( this.Page() )\n\t}\n\n\t/// Page $mol_list rows / \n\t/// \t<= Title - \n\t/// \t<= Panel -\n\t@ $mol_mem\n\tPage() {\n\t\treturn (( obj )=>{\n\t\t\tobj.rows = () => [].concat( this.Title() , this.Panel() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_list )\n\t}\n\n\t/// Title $mol_view \n\t/// \tminimal_height 176 \n\t/// \tsub / <= title -\n\t@ $mol_mem\n\tTitle() {\n\t\treturn (( obj )=>{\n\t\t\tobj.minimal_height = () => 176\n\t\t\tobj.sub = () => [].concat( this.title() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// Panel $mol_list rows <= panels -\n\t@ $mol_mem\n\tPanel() {\n\t\treturn (( obj )=>{\n\t\t\tobj.rows = () => this.panels()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_list )\n\t}\n\n\t/// panels / \n\t/// \t<= Head - \n\t/// \t<= List - \n\t/// \t<= Foot -\n\tpanels() {\n\t\treturn [].concat( this.Head() , this.List() , this.Foot() )\n\t}\n\n\t/// Head $mol_view \n\t/// \tminimal_height 64 \n\t/// \tsub <= Head_content -\n\t@ $mol_mem\n\tHead() {\n\t\treturn (( obj )=>{\n\t\t\tobj.minimal_height = () => 64\n\t\t\tobj.sub = () => this.Head_content()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// Head_content / \n\t/// \t<= Head_complete - \n\t/// \t<= Add -\n\tHead_content() {\n\t\treturn [].concat( this.Head_complete() , this.Add() )\n\t}\n\n\t/// Head_complete $mol_check \n\t/// \tenabled <= head_complete_enabled - \n\t/// \tchecked?val <=> completed_all?val - \n\t/// \ttitle \\❯\n\t@ $mol_mem\n\tHead_complete() {\n\t\treturn (( obj )=>{\n\t\t\tobj.enabled = () => this.head_complete_enabled()\n\t\t\tobj.checked = ( val? : any ) => this.completed_all( val )\n\t\t\tobj.title = () => \"❯\"\n\t\t\treturn obj\n\t\t})( new this.$.$mol_check )\n\t}\n\n\t/// head_complete_enabled false\n\thead_complete_enabled() {\n\t\treturn false\n\t}\n\n\t/// completed_all?val false\n\t@ $mol_mem\n\tcompleted_all( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// Add $mol_app_todomvc_add \n\t/// \tvalue?val <=> task_title_new?val - \n\t/// \tevent_done?event <=> event_add?event -\n\t@ $mol_mem\n\tAdd() {\n\t\treturn (( obj )=>{\n\t\t\tobj.value = ( val? : any ) => this.task_title_new( val )\n\t\t\tobj.event_done = ( event? : any ) => this.event_add( event )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_app_todomvc_add )\n\t}\n\n\t/// task_title_new?val \\\n\t@ $mol_mem\n\ttask_title_new( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// event_add?event null\n\t@ $mol_mem\n\tevent_add( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// List $mol_list rows <= task_rows -\n\t@ $mol_mem\n\tList() {\n\t\treturn (( obj )=>{\n\t\t\tobj.rows = () => this.task_rows()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_list )\n\t}\n\n\t/// task_rows /\n\ttask_rows() {\n\t\treturn [] as any[]\n\t}\n\n\t/// Foot $mol_view sub <= foot_content -\n\t@ $mol_mem\n\tFoot() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => this.foot_content()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// foot_content / \n\t/// \t<= Pending - \n\t/// \t<= Filter - \n\t/// \t<= Sweep -\n\tfoot_content() {\n\t\treturn [].concat( this.Pending() , this.Filter() , this.Sweep() )\n\t}\n\n\t/// Pending $mol_view sub / <= pending_message -\n\t@ $mol_mem\n\tPending() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.pending_message() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view )\n\t}\n\n\t/// pending_message \\0 items left\n\tpending_message() {\n\t\treturn \"0 items left \"\n\t}\n\n\t/// Filter $mol_bar sub <= filterOptions -\n\t@ $mol_mem\n\tFilter() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => this.filterOptions()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_bar )\n\t}\n\n\t/// filterOptions / \n\t/// \t<= Filter_all - \n\t/// \t<= Filter_active - \n\t/// \t<= Filter_completed -\n\tfilterOptions() {\n\t\treturn [].concat( this.Filter_all() , this.Filter_active() , this.Filter_completed() )\n\t}\n\n\t/// Filter_all $mol_link \n\t/// \tsub / <= filter_all_label - \n\t/// \targ * completed null\n\t@ $mol_mem\n\tFilter_all() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.filter_all_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : null as any ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_link )\n\t}\n\n\t/// filter_all_label \\All\n\tfilter_all_label() {\n\t\treturn \"All\"\n\t}\n\n\t/// Filter_active $mol_link \n\t/// \tsub / <= filter_active_label - \n\t/// \targ * completed \\false\n\t@ $mol_mem\n\tFilter_active() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.filter_active_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : \"false\" ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_link )\n\t}\n\n\t/// filter_active_label \\Active\n\tfilter_active_label() {\n\t\treturn \"Active\"\n\t}\n\n\t/// Filter_completed $mol_link \n\t/// \tsub / <= filter_completed_label - \n\t/// \targ * completed \\true\n\t@ $mol_mem\n\tFilter_completed() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( this.filter_completed_label() )\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : \"true\" ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_link )\n\t}\n\n\t/// filter_completed_label \\Completed\n\tfilter_completed_label() {\n\t\treturn \"Completed\"\n\t}\n\n\t/// Sweep $mol_button_minor \n\t/// \tenabled <= sweep_enabled - \n\t/// \tevent_click?event <=> event_sweep?event - \n\t/// \tsub / <= sweep_label -\n\t@ $mol_mem\n\tSweep() {\n\t\treturn (( obj )=>{\n\t\t\tobj.enabled = () => this.sweep_enabled()\n\t\t\tobj.event_click = ( event? : any ) => this.event_sweep( event )\n\t\t\tobj.sub = () => [].concat( this.sweep_label() )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_button_minor )\n\t}\n\n\t/// sweep_enabled true\n\tsweep_enabled() {\n\t\treturn true\n\t}\n\n\t/// event_sweep?event null\n\t@ $mol_mem\n\tevent_sweep( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// sweep_label \\Clear completed\n\tsweep_label() {\n\t\treturn \"Clear completed\"\n\t}\n\n\t/// Task_row!id $mol_app_todomvc_task_row \n\t/// \tcompleted?val <=> task_completed!id?val - \n\t/// \ttitle?val <=> task_title!id?val - \n\t/// \tevent_drop?event <=> event_task_drop!id?event -\n\t@ $mol_mem_key\n\tTask_row( id : any ) {\n\t\treturn (( obj )=>{\n\t\t\tobj.completed = ( val? : any ) => this.task_completed(id , val )\n\t\t\tobj.title = ( val? : any ) => this.task_title(id , val )\n\t\t\tobj.event_drop = ( event? : any ) => this.event_task_drop(id , event )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_app_todomvc_task_row )\n\t}\n\n\t/// task_completed!id?val false\n\t@ $mol_mem_key\n\ttask_completed( id : any , val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// task_title!id?val \\\n\t@ $mol_mem_key\n\ttask_title( id : any , val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// event_task_drop!id?event null\n\t@ $mol_mem_key\n\tevent_task_drop( id : any , event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\nnamespace $ { export class $mol_app_todomvc_add extends $mol_string {\n\n\t/// hint \\What needs to be done?\n\thint() {\n\t\treturn \"What needs to be done?\"\n\t}\n\n\t/// event * \n\t/// \t^ \n\t/// \tkeyup?event <=> event_press?event -\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"keyup\" : ( event? : any )=> this.event_press( event ) ,\n\t\t})\n\t}\n\n\t/// event_press?event null\n\t@ $mol_mem\n\tevent_press( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// event_done?event null\n\t@ $mol_mem\n\tevent_done( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\nnamespace $ { export class $mol_app_todomvc_task_row extends $mol_view {\n\n\t/// minimal_height 64\n\tminimal_height() {\n\t\treturn 64\n\t}\n\n\t/// sub / \n\t/// \t<= Complete - \n\t/// \t<= Title - \n\t/// \t<= Drop -\n\tsub() {\n\t\treturn [].concat( this.Complete() , this.Title() , this.Drop() )\n\t}\n\n\t/// Complete $mol_check checked?val <=> completed?val -\n\t@ $mol_mem\n\tComplete() {\n\t\treturn (( obj )=>{\n\t\t\tobj.checked = ( val? : any ) => this.completed( val )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_check )\n\t}\n\n\t/// completed?val false\n\t@ $mol_mem\n\tcompleted( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/// Title $mol_string \n\t/// \thint <= title_hint - \n\t/// \tvalue?val <=> title?val -\n\t@ $mol_mem\n\tTitle() {\n\t\treturn (( obj )=>{\n\t\t\tobj.hint = () => this.title_hint()\n\t\t\tobj.value = ( val? : any ) => this.title( val )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_string )\n\t}\n\n\t/// title_hint \\Task title\n\ttitle_hint() {\n\t\treturn \"Task title\"\n\t}\n\n\t/// title?val \\\n\t@ $mol_mem\n\ttitle( val? : any , force? : $mol_atom_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/// Drop $mol_button_typed \n\t/// \tsub / \\✖\n\t/// \tevent_click?event <=> event_drop?event -\n\t@ $mol_mem\n\tDrop() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [].concat( \"✖\" )\n\t\t\tobj.event_click = ( event? : any ) => this.event_drop( event )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_button_typed )\n\t}\n\n\t/// event_drop?event null\n\t@ $mol_mem\n\tevent_drop( event? : any , force? : $mol_atom_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/// attr * \n\t/// \t^ \n\t/// \tmol_app_todomvc_task_row_completed <= completed?val -\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"mol_app_todomvc_task_row_completed\" : this.completed() ,\n\t\t})\n\t}\n\n} }\n\n","interface $mol_app_todomvc_task {\n\tcompleted? : boolean\n\ttitle? : string\n}\n\nnamespace $.$$ {\n\t\n\texport class $mol_app_todomvc_add extends $.$mol_app_todomvc_add {\n\t\t\n\t\tevent_press( next? : KeyboardEvent ) {\n\t\t\tswitch( next.keyCode ) {\n\t\t\t\tcase $mol_keyboard_code.enter : return this.event_done( next )\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\texport class $mol_app_todomvc extends $.$mol_app_todomvc {\n\t\t\n\t\ttask_ids( next? : number[] ) : number[] {\n\t\t\treturn $mol_state_local.value( this.state_key( 'mol-todos' ) , next ) || []\n\t\t}\n\t\t\n\t\targ_completed() {\n\t\t\treturn $mol_state_arg.value( this.state_key( 'completed' ) )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tgroups_completed() {\n\t\t\tvar groups : { [ index : string ] : number[] } = { 'true' : [] , 'false' : [] }\n\t\t\tfor( let id of this.task_ids() ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tgroups[ String( task.completed ) ].push( id )\n\t\t\t}\n\t\t\treturn groups\n\t\t}\n\n\t\t@ $mol_mem\n\t\ttask_ids_filtered() {\n\t\t\tvar completed = this.arg_completed()\n\t\t\tif( completed ) {\n\t\t\t\treturn this.groups_completed()[ completed ] || []\n\t\t\t} else {\n\t\t\t\treturn this.task_ids()\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_mem\n\t\tcompleted_all( next? : boolean ) {\n\t\t\tif( next === void 0 ) return this.groups_completed()[ 'false' ].length === 0\n\t\t\t\n\t\t\tfor( let id of this.groups_completed()[ String( !next ) ] ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tthis.task( id , { title : task.title , completed : next } )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\thead_complete_enabled() {\n\t\t\treturn this.task_ids().length > 0 \n\t\t}\n\n\t\t@ $mol_mem\n\t\tpending_message() {\n\t\t\tlet count = this.groups_completed()[ 'false' ].length\n\t\t\treturn ( count === 1 ) ? '1 item left' : `${count} items left`\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tnew_id() {\n\t\t\treturn Math.max( 1 , 1 + Math.max( ... this.task_ids() ) )\n\t\t}\n\t\t\n\t\tevent_add( next : Event ) {\n\t\t\tvar title = this.task_title_new() \n\t\t\tif( !title ) return\n\t\t\t\n\t\t\tvar id = this.new_id()\n\t\t\tvar task = { completed : false , title }\n\t\t\tthis.task( id , task )\n\t\t\t\n\t\t\tthis.task_ids( this.task_ids().concat( id ) )\n\t\t\tthis.task_title_new( '' )\n\t\t}\n\n\t\t@ $mol_mem\n\t\ttask_rows() {\n\t\t\treturn this.task_ids_filtered().map( id => this.Task_row( id ) )\n\t\t}\n\t\t\n\t\ttask( id : number , next? : $mol_app_todomvc_task ) {\n\t\t\tconst key = this.state_key( `mol-todos-${id}` )\n\t\t\tif( next === void 0 ) {\n\t\t\t\treturn $mol_state_local.value<$mol_app_todomvc_task>( key ) || { title : '' , completed : false }\n\t\t\t}\n\t\t\t\n\t\t\t$mol_state_local.value( key , next )\n\t\t\t\n\t\t\treturn next || void 0\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttask_completed( id : number , next? : boolean ) {\n\t\t\treturn this.task( id , next === undefined ? undefined : { ... this.task( id ) , completed : next } ).completed\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttask_title( id : number , next? : string ) {\n\t\t\treturn this.task( id , next === undefined ? undefined : { ... this.task( id ) , title : next } ).title\n\t\t}\n\t\t\n\t\tevent_task_drop( id : number , next? : Event ) {\n\t\t\tthis.task( id , null )\n\t\t\tthis.task_ids( this.task_ids().filter( id2 => id !== id2 ) )\n\t\t}\n\n\t\tevent_sweep() {\n\t\t\tthis.task_ids( this.task_ids().filter( id => {\n\t\t\t\tif( !this.task( id ).completed ) return true\n\t\t\t\tthis.task( id , null )\n\t\t\t\treturn false\n\t\t\t} ) )\n\t\t}\n\t\t\n\t\tpanels() {\n\t\t\treturn [\n\t\t\t\tthis.Head() , \n\t\t\t\tthis.List() ,\n\t\t\t\t... this.foot_visible() ? [ this.Foot() ] : [] ,\n\t\t\t]\n\t\t}\n\t\t\n\t\tfoot_visible() {\n\t\t\treturn this.task_ids().length > 0\n\t\t}\n\n\t\tsweep_enabled() {\n\t\t\treturn this.groups_completed()[ 'true' ].length > 0\n\t\t}\n\t\t\n\t}\n\t\n}\n"]} \ No newline at end of file diff --git a/examples/mol/-view.tree/todomvc.view.tree.locale=en.json b/examples/mol/-view.tree/todomvc.view.tree.locale=en.json deleted file mode 100644 index 0b4d8e39ab..0000000000 --- a/examples/mol/-view.tree/todomvc.view.tree.locale=en.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "$mol_app_todomvc_title": "Todos", - "$mol_app_todomvc_pending_message": "0 items left ", - "$mol_app_todomvc_filter_all_label": "All", - "$mol_app_todomvc_filter_active_label": "Active", - "$mol_app_todomvc_filter_completed_label": "Completed", - "$mol_app_todomvc_sweep_label": "Clear completed", - "$mol_app_todomvc_add_hint": "What needs to be done?", - "$mol_app_todomvc_task_row_title_hint": "Task title" -} \ No newline at end of file diff --git a/examples/mol/-view.tree/todomvc.view.tree.ts b/examples/mol/-view.tree/todomvc.view.tree.ts deleted file mode 100644 index 6f94338adc..0000000000 --- a/examples/mol/-view.tree/todomvc.view.tree.ts +++ /dev/null @@ -1,417 +0,0 @@ -namespace $ { export class $mol_app_todomvc extends $mol_scroll { - - /// title @ \Todos - title() { - return $mol_locale.text( "$mol_app_todomvc_title" ) - } - - /// sub / <= Page - - sub() { - return [].concat( this.Page() ) - } - - /// Page $mol_list rows / - /// <= Title - - /// <= Panel - - @ $mol_mem - Page() { - return (( obj )=>{ - obj.rows = () => [].concat( this.Title() , this.Panel() ) - return obj - })( new this.$.$mol_list ) - } - - /// Title $mol_view - /// minimal_height 176 - /// sub / <= title - - @ $mol_mem - Title() { - return (( obj )=>{ - obj.minimal_height = () => 176 - obj.sub = () => [].concat( this.title() ) - return obj - })( new this.$.$mol_view ) - } - - /// Panel $mol_list rows <= panels - - @ $mol_mem - Panel() { - return (( obj )=>{ - obj.rows = () => this.panels() - return obj - })( new this.$.$mol_list ) - } - - /// panels / - /// <= Head - - /// <= List - - /// <= Foot - - panels() { - return [].concat( this.Head() , this.List() , this.Foot() ) - } - - /// Head $mol_view - /// minimal_height 64 - /// sub <= Head_content - - @ $mol_mem - Head() { - return (( obj )=>{ - obj.minimal_height = () => 64 - obj.sub = () => this.Head_content() - return obj - })( new this.$.$mol_view ) - } - - /// Head_content / - /// <= Head_complete - - /// <= Add - - Head_content() { - return [].concat( this.Head_complete() , this.Add() ) - } - - /// Head_complete $mol_check - /// enabled <= head_complete_enabled - - /// checked?val <=> completed_all?val - - /// title \❯ - @ $mol_mem - Head_complete() { - return (( obj )=>{ - obj.enabled = () => this.head_complete_enabled() - obj.checked = ( val? : any ) => this.completed_all( val ) - obj.title = () => "❯" - return obj - })( new this.$.$mol_check ) - } - - /// head_complete_enabled false - head_complete_enabled() { - return false - } - - /// completed_all?val false - @ $mol_mem - completed_all( val? : any , force? : $mol_atom_force ) { - return ( val !== void 0 ) ? val : false - } - - /// Add $mol_app_todomvc_add - /// value?val <=> task_title_new?val - - /// event_done?event <=> event_add?event - - @ $mol_mem - Add() { - return (( obj )=>{ - obj.value = ( val? : any ) => this.task_title_new( val ) - obj.event_done = ( event? : any ) => this.event_add( event ) - return obj - })( new this.$.$mol_app_todomvc_add ) - } - - /// task_title_new?val \ - @ $mol_mem - task_title_new( val? : any , force? : $mol_atom_force ) { - return ( val !== void 0 ) ? val : "" - } - - /// event_add?event null - @ $mol_mem - event_add( event? : any , force? : $mol_atom_force ) { - return ( event !== void 0 ) ? event : null as any - } - - /// List $mol_list rows <= task_rows - - @ $mol_mem - List() { - return (( obj )=>{ - obj.rows = () => this.task_rows() - return obj - })( new this.$.$mol_list ) - } - - /// task_rows / - task_rows() { - return [] as any[] - } - - /// Foot $mol_view sub <= foot_content - - @ $mol_mem - Foot() { - return (( obj )=>{ - obj.sub = () => this.foot_content() - return obj - })( new this.$.$mol_view ) - } - - /// foot_content / - /// <= Pending - - /// <= Filter - - /// <= Sweep - - foot_content() { - return [].concat( this.Pending() , this.Filter() , this.Sweep() ) - } - - /// Pending $mol_view sub / <= pending_message - - @ $mol_mem - Pending() { - return (( obj )=>{ - obj.sub = () => [].concat( this.pending_message() ) - return obj - })( new this.$.$mol_view ) - } - - /// pending_message @ \0 items left - pending_message() { - return $mol_locale.text( "$mol_app_todomvc_pending_message" ) - } - - /// Filter $mol_bar sub <= filterOptions - - @ $mol_mem - Filter() { - return (( obj )=>{ - obj.sub = () => this.filterOptions() - return obj - })( new this.$.$mol_bar ) - } - - /// filterOptions / - /// <= Filter_all - - /// <= Filter_active - - /// <= Filter_completed - - filterOptions() { - return [].concat( this.Filter_all() , this.Filter_active() , this.Filter_completed() ) - } - - /// Filter_all $mol_link - /// sub / <= filter_all_label - - /// arg * completed null - @ $mol_mem - Filter_all() { - return (( obj )=>{ - obj.sub = () => [].concat( this.filter_all_label() ) - obj.arg = () => ({ - "completed" : null as any , - }) - return obj - })( new this.$.$mol_link ) - } - - /// filter_all_label @ \All - filter_all_label() { - return $mol_locale.text( "$mol_app_todomvc_filter_all_label" ) - } - - /// Filter_active $mol_link - /// sub / <= filter_active_label - - /// arg * completed \false - @ $mol_mem - Filter_active() { - return (( obj )=>{ - obj.sub = () => [].concat( this.filter_active_label() ) - obj.arg = () => ({ - "completed" : "false" , - }) - return obj - })( new this.$.$mol_link ) - } - - /// filter_active_label @ \Active - filter_active_label() { - return $mol_locale.text( "$mol_app_todomvc_filter_active_label" ) - } - - /// Filter_completed $mol_link - /// sub / <= filter_completed_label - - /// arg * completed \true - @ $mol_mem - Filter_completed() { - return (( obj )=>{ - obj.sub = () => [].concat( this.filter_completed_label() ) - obj.arg = () => ({ - "completed" : "true" , - }) - return obj - })( new this.$.$mol_link ) - } - - /// filter_completed_label @ \Completed - filter_completed_label() { - return $mol_locale.text( "$mol_app_todomvc_filter_completed_label" ) - } - - /// Sweep $mol_button_minor - /// enabled <= sweep_enabled - - /// event_click?event <=> event_sweep?event - - /// sub / <= sweep_label - - @ $mol_mem - Sweep() { - return (( obj )=>{ - obj.enabled = () => this.sweep_enabled() - obj.event_click = ( event? : any ) => this.event_sweep( event ) - obj.sub = () => [].concat( this.sweep_label() ) - return obj - })( new this.$.$mol_button_minor ) - } - - /// sweep_enabled true - sweep_enabled() { - return true - } - - /// event_sweep?event null - @ $mol_mem - event_sweep( event? : any , force? : $mol_atom_force ) { - return ( event !== void 0 ) ? event : null as any - } - - /// sweep_label @ \Clear completed - sweep_label() { - return $mol_locale.text( "$mol_app_todomvc_sweep_label" ) - } - - /// Task_row!id $mol_app_todomvc_task_row - /// completed?val <=> task_completed!id?val - - /// title?val <=> task_title!id?val - - /// event_drop?event <=> event_task_drop!id?event - - @ $mol_mem_key - Task_row( id : any ) { - return (( obj )=>{ - obj.completed = ( val? : any ) => this.task_completed(id , val ) - obj.title = ( val? : any ) => this.task_title(id , val ) - obj.event_drop = ( event? : any ) => this.event_task_drop(id , event ) - return obj - })( new this.$.$mol_app_todomvc_task_row ) - } - - /// task_completed!id?val false - @ $mol_mem_key - task_completed( id : any , val? : any , force? : $mol_atom_force ) { - return ( val !== void 0 ) ? val : false - } - - /// task_title!id?val \ - @ $mol_mem_key - task_title( id : any , val? : any , force? : $mol_atom_force ) { - return ( val !== void 0 ) ? val : "" - } - - /// event_task_drop!id?event null - @ $mol_mem_key - event_task_drop( id : any , event? : any , force? : $mol_atom_force ) { - return ( event !== void 0 ) ? event : null as any - } - -} } - -namespace $ { export class $mol_app_todomvc_add extends $mol_string { - - /// hint @ \What needs to be done? - hint() { - return $mol_locale.text( "$mol_app_todomvc_add_hint" ) - } - - /// event * - /// ^ - /// keyup?event <=> event_press?event - - event() { - return ({ - ...super.event() , - "keyup" : ( event? : any )=> this.event_press( event ) , - }) - } - - /// event_press?event null - @ $mol_mem - event_press( event? : any , force? : $mol_atom_force ) { - return ( event !== void 0 ) ? event : null as any - } - - /// event_done?event null - @ $mol_mem - event_done( event? : any , force? : $mol_atom_force ) { - return ( event !== void 0 ) ? event : null as any - } - -} } - -namespace $ { export class $mol_app_todomvc_task_row extends $mol_view { - - /// minimal_height 64 - minimal_height() { - return 64 - } - - /// sub / - /// <= Complete - - /// <= Title - - /// <= Drop - - sub() { - return [].concat( this.Complete() , this.Title() , this.Drop() ) - } - - /// Complete $mol_check checked?val <=> completed?val - - @ $mol_mem - Complete() { - return (( obj )=>{ - obj.checked = ( val? : any ) => this.completed( val ) - return obj - })( new this.$.$mol_check ) - } - - /// completed?val false - @ $mol_mem - completed( val? : any , force? : $mol_atom_force ) { - return ( val !== void 0 ) ? val : false - } - - /// Title $mol_string - /// hint <= title_hint - - /// value?val <=> title?val - - @ $mol_mem - Title() { - return (( obj )=>{ - obj.hint = () => this.title_hint() - obj.value = ( val? : any ) => this.title( val ) - return obj - })( new this.$.$mol_string ) - } - - /// title_hint @ \Task title - title_hint() { - return $mol_locale.text( "$mol_app_todomvc_task_row_title_hint" ) - } - - /// title?val \ - @ $mol_mem - title( val? : any , force? : $mol_atom_force ) { - return ( val !== void 0 ) ? val : "" - } - - /// Drop $mol_button_typed - /// sub / \✖ - /// event_click?event <=> event_drop?event - - @ $mol_mem - Drop() { - return (( obj )=>{ - obj.sub = () => [].concat( "✖" ) - obj.event_click = ( event? : any ) => this.event_drop( event ) - return obj - })( new this.$.$mol_button_typed ) - } - - /// event_drop?event null - @ $mol_mem - event_drop( event? : any , force? : $mol_atom_force ) { - return ( event !== void 0 ) ? event : null as any - } - - /// attr * - /// ^ - /// mol_app_todomvc_task_row_completed <= completed?val - - attr() { - return ({ - ...super.attr() , - "mol_app_todomvc_task_row_completed" : this.completed() , - }) - } - -} } - diff --git a/examples/mol/-/mol/app/todomvc/todomvc_active.svg b/examples/mol/hyoo/todomvc/todomvc_active.svg similarity index 100% rename from examples/mol/-/mol/app/todomvc/todomvc_active.svg rename to examples/mol/hyoo/todomvc/todomvc_active.svg diff --git a/examples/mol/-/mol/app/todomvc/todomvc_completed.svg b/examples/mol/hyoo/todomvc/todomvc_completed.svg similarity index 100% rename from examples/mol/-/mol/app/todomvc/todomvc_completed.svg rename to examples/mol/hyoo/todomvc/todomvc_completed.svg diff --git a/examples/mol/index.html b/examples/mol/index.html index 85719493b4..a9523c6b6f 100644 --- a/examples/mol/index.html +++ b/examples/mol/index.html @@ -4,8 +4,6 @@ - - -
+
- + + diff --git a/examples/mol/package.json b/examples/mol/package.json deleted file mode 100644 index 6ae220b2d8..0000000000 --- a/examples/mol/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "private": true, - "dependencies": { - "todomvc-common": "^1.0.1" - } -} diff --git a/examples/mol/src/CNAME b/examples/mol/src/CNAME new file mode 100644 index 0000000000..06c605688c --- /dev/null +++ b/examples/mol/src/CNAME @@ -0,0 +1 @@ +todomvc.hyoo.ru diff --git a/examples/mol/src/index.html b/examples/mol/src/index.html new file mode 100644 index 0000000000..a9523c6b6f --- /dev/null +++ b/examples/mol/src/index.html @@ -0,0 +1,20 @@ + + + + + + + + +
+ + + diff --git a/examples/mol/todomvc.css b/examples/mol/src/todomvc.css similarity index 51% rename from examples/mol/todomvc.css rename to examples/mol/src/todomvc.css index 4ad243e8f1..21128fa666 100644 --- a/examples/mol/todomvc.css +++ b/examples/mol/src/todomvc.css @@ -1,34 +1,33 @@ -[mol_app_todomvc] { +[hyoo_todomvc] { align-self: stretch; width: 100%; - background-color: #f5f5f5; margin: 0; transition: none; } -[mol_app_todomvc] [mol_string] , -[mol_app_todomvc] [mol_string]:focus , -[mol_app_todomvc] [mol_string]:hover , -[mol_app_todomvc] [mol_button] , -[mol_app_todomvc] [mol_button]:focus , -[mol_app_todomvc] [mol_button]:hover , -[mol_app_todomvc] [mol_link] , -[mol_app_todomvc] [mol_link]:focus , -[mol_app_todomvc] [mol_link]:hover { +[hyoo_todomvc] [mol_string] , +[hyoo_todomvc] [mol_string]:focus , +[hyoo_todomvc] [mol_string]:hover , +[hyoo_todomvc] [mol_button] , +[hyoo_todomvc] [mol_button]:focus , +[hyoo_todomvc] [mol_button]:hover , +[hyoo_todomvc] [mol_link] , +[hyoo_todomvc] [mol_link]:focus , +[hyoo_todomvc] [mol_link]:hover { box-shadow: none; background-color: transparent; } -[mol_app_todomvc] [mol_link_current] { +[hyoo_todomvc] [mol_link_current] { color: black; } -[mol_app_todomvc] [mol_link]:not([mol_link_current]):hover , -[mol_app_todomvc] [mol_link]:not([mol_link_current]):focus { +[hyoo_todomvc] [mol_link]:not([mol_link_current]):hover , +[hyoo_todomvc] [mol_link]:not([mol_link_current]):focus { text-decoration: underline; } -[mol_app_todomvc_head_complete] { +[hyoo_todomvc_head_complete] { flex: 0 0 4rem; transform: rotate( 90deg ); align-items: center; @@ -36,92 +35,95 @@ padding: 0; justify-content: center; } -[mol_app_todomvc_head_complete]:disabled { +[hyoo_todomvc_head_complete]:disabled { visibility: hidden; } -[mol_app_todomvc_head_complete][mol_check_checked] { +[hyoo_todomvc_head_complete][mol_check_checked] { opacity: 1; } -[mol_app_todomvc_add] { +[hyoo_todomvc_add] { padding: 0; flex: 1 1 auto; } -[mol_app_todomvc_list] { +[hyoo_todomvc_list] { font-size: 1.5rem; transition: none; } -[mol_app_todomvc_page] { +[hyoo_todomvc_page] { flex: 1 1 auto; transition: none; } -[mol_app_todomvc_panel] { +[hyoo_todomvc_panel] { box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1); max-width: 38rem; - background-color: white; + --mol_theme_back: white; + --mol_theme_text: black; + background-color: var(--mol_theme_back); display: flex; flex-direction: column; margin: 0 auto 2rem; transition: none; } -[mol_app_todomvc_head] { +[hyoo_todomvc_head] { font-size: 1.5rem; padding: 0; display: flex; height: 4rem; } -[mol_app_todomvc_title] { +[hyoo_todomvc_title] { + word-break: normal; display: block; padding: .25rem; font-size: 7rem; font-weight: 100; text-align: center; - color: rgba(175, 47, 47, 0.15); + color: rgba(275, 147, 147, 0.2); text-rendering: optimizeLegibility; text-transform: lowercase; } -[mol_app_todomvc_task_row] { +[hyoo_todomvc_task_row] { display: flex; background-color: white; box-shadow: 0 -1px 0 0 #ededed; height: 4rem; } -[mol_app_todomvc_task_row_complete] { +[hyoo_todomvc_task_row_complete] { flex: 0 0 4rem; padding: 1rem; - background: no-repeat center center url('mol/app/todomvc/todomvc_active.svg'); + background: no-repeat center center url('hyoo/todomvc/todomvc_active.svg'); } -[mol_app_todomvc_task_row_complete][mol_check_checked] { - background: no-repeat center center url('mol/app/todomvc/todomvc_completed.svg'); +[hyoo_todomvc_task_row_complete][mol_check_checked] { + background: no-repeat center center url('hyoo/todomvc/todomvc_completed.svg'); } -[mol_app_todomvc_task_row_title] { +[hyoo_todomvc_task_row_title] { padding: 0; flex: 1 1 auto; } -[mol_app_todomvc_task_row_completed] [mol_app_todomvc_task_row_title] { +[hyoo_todomvc_task_row_completed] [hyoo_todomvc_task_row_title] { color: #d9d9d9; text-decoration: line-through; } -[mol_app_todomvc_task_row_drop] { +[hyoo_todomvc_task_row_drop] { font-size: 1.25rem; flex: 0 04rem; } -[mol_app_todomvc_task_row]:not(:hover) [mol_app_todomvc_task_row_drop]:not(:focus) { +[hyoo_todomvc_task_row]:not(:hover) [hyoo_todomvc_task_row_drop]:not(:focus) { opacity: 0; color: #cc9a9a; } -[mol_app_todomvc_foot] { +[hyoo_todomvc_foot] { display: flex; flex-wrap: wrap; align-items: baseline; @@ -132,12 +134,12 @@ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2); } -[mol_app_todomvc_pending] { +[hyoo_todomvc_pending] { padding: .25rem; flex: 0 1 6rem; } -[mol_app_todomvc_filter] { +[hyoo_todomvc_filter] { flex: 1 100 auto; display: flex; justify-content: center; @@ -145,15 +147,15 @@ box-shadow: none; } -[mol_app_todomvc_sweep] { +[hyoo_todomvc_sweep] { flex: 0 1 auto; padding: .25rem; } -[mol_app_todomvc_sweep][disabled] { +[hyoo_todomvc_sweep][disabled] { visibility: hidden; } -[mol_app_todomvc_sweep]:hover , -[mol_app_todomvc_sweep]:focus { +[hyoo_todomvc_sweep]:hover , +[hyoo_todomvc_sweep]:focus { text-decoration: underline; } diff --git a/examples/mol/src/todomvc.meta.tree b/examples/mol/src/todomvc.meta.tree new file mode 100644 index 0000000000..c783e4b674 --- /dev/null +++ b/examples/mol/src/todomvc.meta.tree @@ -0,0 +1,2 @@ +deploy \/hyoo/todomvc/todomvc_active.svg +deploy \/hyoo/todomvc/todomvc_completed.svg diff --git a/examples/mol/src/todomvc.test.ts b/examples/mol/src/todomvc.test.ts new file mode 100644 index 0000000000..00bee43255 --- /dev/null +++ b/examples/mol/src/todomvc.test.ts @@ -0,0 +1,81 @@ +namespace $.$$ { + + $mol_test({ + + 'task add'( $ ) { + + const app = $hyoo_todomvc.make({ $ }) + + $mol_assert_like( app.task_ids() , [] ) + + app.Add().value( 'test title' ) + app.Add().done() + + $mol_assert_like( app.task_ids() , [ 1 ] ) + + $mol_assert_equal( app.Task_row(1).title() , 'test title' ) + $mol_assert_equal( app.Task_row(1).completed() , false ) + + $mol_assert_equal( app.Add().value() , '' ) + + } , + + 'task rename'( $ ) { + + const app = $hyoo_todomvc.make({ $ }) + + app.Add().value( 'test title' ) + app.Add().done() + + $mol_assert_equal( app.task_title( 1 ) , 'test title' ) + + app.Task_row(1).Title().value( 'test title 2' ) + $mol_assert_equal( app.task_title( 1 ) , 'test title 2' ) + + } , + + 'task toggle'( $ ) { + + const app = $hyoo_todomvc.make({ $ }) + + app.task_title_new( 'test title' ) + app.add() + + $mol_assert_equal( app.task_completed( 1 ) , false ) + + app.Task_row(1).Complete().click() + $mol_assert_equal( app.task_completed( 1 ) , true ) + + app.Task_row(1).Complete().click() + $mol_assert_equal( app.task_completed( 1 ) , false ) + + } , + + 'navigation'( $ ) { + + const app = $hyoo_todomvc.make({ $ }) + + app.Add().value( 'test title' ) + app.Add().done() + + app.Add().value( 'test title 2' ) + app.Add().done() + + app.Task_row(1).Complete().click() + + $mol_assert_like( app.task_ids_filtered() , [ 1 , 2 ] ) + + $.$mol_state_arg.href( app.Filter_completed().uri() ) + $mol_assert_like( app.task_ids_filtered() , [ 1 ] ) + + $.$mol_state_arg.href( app.Filter_active().uri() ) + $mol_assert_like( app.task_ids_filtered() , [ 2 ] ) + + $.$mol_state_arg.href( app.Filter_all().uri() ) + $mol_assert_like( app.task_ids_filtered() , [ 1 , 2 ] ) + + } , + + }) + +} diff --git a/examples/mol/todomvc.view.tree b/examples/mol/src/todomvc.view.tree similarity index 59% rename from examples/mol/todomvc.view.tree rename to examples/mol/src/todomvc.view.tree index 2fa3874d63..9c83df1bb1 100644 --- a/examples/mol/todomvc.view.tree +++ b/examples/mol/src/todomvc.view.tree @@ -1,12 +1,12 @@ -$mol_app_todomvc $mol_scroll - title @ \Todos +$hyoo_todomvc $mol_scroll + title \Todos sub / <= Page $mol_list rows / <= Title $mol_view minimal_height 176 sub / - <= title - + <= title <= Panel $mol_list rows <= panels / <= Head $mol_view @@ -16,60 +16,68 @@ $mol_app_todomvc $mol_scroll enabled <= head_complete_enabled false checked?val <=> completed_all?val false title \❯ - <= Add $mol_app_todomvc_add + <= Add $hyoo_todomvc_add value?val <=> task_title_new?val \ - event_done?event <=> event_add?event null + done?event <=> add?event null <= List $mol_list - rows <= task_rows / + rows <= task_rows /$mol_view <= Foot $mol_view sub <= foot_content / <= Pending $mol_view sub / - <= pending_message @ \0 items left + <= pending_message \0 items left <= Filter $mol_bar sub <= filterOptions / <= Filter_all $mol_link sub / - <= filter_all_label @ \All + <= filter_all_label \All arg * completed null <= Filter_active $mol_link sub / - <= filter_active_label @ \Active + <= filter_active_label \Active arg * completed \false <= Filter_completed $mol_link sub / - <= filter_completed_label @ \Completed + <= filter_completed_label \Completed arg * completed \true <= Sweep $mol_button_minor enabled <= sweep_enabled true - event_click?event <=> event_sweep?event null - sub / <= sweep_label @ \Clear completed - Task_row!id $mol_app_todomvc_task_row + click?event <=> sweep?event null + sub / <= sweep_label \Clear completed + Task_row!id $hyoo_todomvc_task_row completed?val <=> task_completed!id?val false title?val <=> task_title!id?val \ - event_drop?event <=> event_task_drop!id?event null + drop?event <=> task_drop!id?event null -$mol_app_todomvc_add $mol_string - hint @ \What needs to be done? +$hyoo_todomvc_add $mol_string + hint \What needs to be done? event * ^ - keyup?event <=> event_press?event null - event_done?event null + keydown?event <=> press?event null + done?event null -$mol_app_todomvc_task_row $mol_view +$hyoo_todomvc_task_row $mol_view minimal_height 64 sub / <= Complete $mol_check checked?val <=> completed?val false <= Title $mol_string - hint <= title_hint @ \Task title + hint <= title_hint \Task title value?val <=> title?val \ <= Drop $mol_button_typed sub / \✖ - event_click?event <=> event_drop?event null + click?event <=> drop?event null attr * ^ - mol_app_todomvc_task_row_completed <= completed?val false + hyoo_todomvc_task_row_completed <= completed?val false + + +$my_button_danger $mol_view + sub / + <= Icon $mol_icon_alert_circle + <= title + + diff --git a/examples/mol/todomvc.view.ts b/examples/mol/src/todomvc.view.ts similarity index 62% rename from examples/mol/todomvc.view.ts rename to examples/mol/src/todomvc.view.ts index c02bdb4f1d..645d0a5d6f 100644 --- a/examples/mol/todomvc.view.ts +++ b/examples/mol/src/todomvc.view.ts @@ -1,28 +1,28 @@ -interface $mol_app_todomvc_task { +interface $hyoo_todomvc_task { completed? : boolean title? : string } namespace $.$$ { - export class $mol_app_todomvc_add extends $.$mol_app_todomvc_add { + export class $hyoo_todomvc_add extends $.$hyoo_todomvc_add { - event_press( next? : KeyboardEvent ) { + press( next? : KeyboardEvent ) { switch( next.keyCode ) { - case $mol_keyboard_code.enter : return this.event_done( next ) + case $mol_keyboard_code.enter : return this.done( next ) } } } - export class $mol_app_todomvc extends $.$mol_app_todomvc { + export class $hyoo_todomvc extends $.$hyoo_todomvc { task_ids( next? : number[] ) : number[] { - return $mol_state_local.value( this.state_key( 'mol-todos' ) , next ) || [] + return this.$.$mol_state_local.value( this.state_key( 'mol-todos' ) , next ) || [] } arg_completed() { - return $mol_state_arg.value( this.state_key( 'completed' ) ) + return this.$.$mol_state_arg.value( this.state_key( 'completed' ) ) } @ $mol_mem @@ -36,7 +36,7 @@ namespace $.$$ { } @ $mol_mem - tasks_filtered() { + task_ids_filtered() { var completed = this.arg_completed() if( completed ) { return this.groups_completed()[ completed ] || [] @@ -72,7 +72,7 @@ namespace $.$$ { return Math.max( 1 , 1 + Math.max( ... this.task_ids() ) ) } - event_add( next : Event ) { + add( next? : Event ) { var title = this.task_title_new() if( !title ) return @@ -86,47 +86,36 @@ namespace $.$$ { @ $mol_mem task_rows() { - return this.tasks_filtered().map( ( id , index )=> this.Task_row( index ) ) + return this.task_ids_filtered().map( id => this.Task_row( id ) ) } - task( id : number , next? : $mol_app_todomvc_task ) { + task( id : number , next? : $hyoo_todomvc_task ) { const key = this.state_key( `mol-todos-${id}` ) if( next === void 0 ) { - return $mol_state_local.value<$mol_app_todomvc_task>( key ) || { title : '' , completed : false } + return this.$.$mol_state_local.value<$hyoo_todomvc_task>( key ) || { title : '' , completed : false } } - $mol_state_local.value( key , next ) + this.$.$mol_state_local.value( key , next ) return next || void 0 } @ $mol_mem_key - task_completed( index : number , next? : boolean ) { - var id = this.tasks_filtered()[ index ] - if( next === void 0 ) return this.task( id ).completed - - this.task( id , $mol_merge_dict( this.task( id ) , { completed : next } ) ) - - return next + task_completed( id : number , next? : boolean ) { + return this.task( id , next === undefined ? undefined : { ... this.task( id ) , completed : next } ).completed } @ $mol_mem_key - task_title( index : number , next? : string ) { - var id = this.tasks_filtered()[ index ] - if( next === void 0 ) return this.task( id ).title - - this.task( id , $mol_merge_dict( this.task( id ) , { title : next } ) ) - - return next + task_title( id : number , next? : string ) { + return this.task( id , next === undefined ? undefined : { ... this.task( id ) , title : next } ).title } - event_task_drop( index : number , next? : Event ) { - const id = this.tasks_filtered()[index] + task_drop( id : number , next? : Event ) { this.task( id , null ) this.task_ids( this.task_ids().filter( id2 => id !== id2 ) ) } - event_sweep() { + sweep() { this.task_ids( this.task_ids().filter( id => { if( !this.task( id ).completed ) return true this.task( id , null ) diff --git a/examples/mol/todomvc_active.svg b/examples/mol/src/todomvc_active.svg similarity index 100% rename from examples/mol/todomvc_active.svg rename to examples/mol/src/todomvc_active.svg diff --git a/examples/mol/todomvc_completed.svg b/examples/mol/src/todomvc_completed.svg similarity index 100% rename from examples/mol/todomvc_completed.svg rename to examples/mol/src/todomvc_completed.svg diff --git a/examples/mol/test.html b/examples/mol/test.html new file mode 100644 index 0000000000..a101d7b975 --- /dev/null +++ b/examples/mol/test.html @@ -0,0 +1,20 @@ + + + + + + + + +
+ + + diff --git a/examples/mol/todomvc.meta.tree b/examples/mol/todomvc.meta.tree deleted file mode 100644 index c005962807..0000000000 --- a/examples/mol/todomvc.meta.tree +++ /dev/null @@ -1,2 +0,0 @@ -deploy \/mol/app/todomvc/todomvc_active.svg -deploy \/mol/app/todomvc/todomvc_completed.svg diff --git a/examples/mol/web.esm.js b/examples/mol/web.esm.js new file mode 100644 index 0000000000..1dcb0f8e1f --- /dev/null +++ b/examples/mol/web.esm.js @@ -0,0 +1,4243 @@ +function require( path ){ return $node[ path ] }; + +var $node = $node || {} +void function( module ) { var exports = module.exports = this; function require( id ) { return $node[ id.replace( /^.\// , "../mol/" ) ] }; +; +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +Error.stackTraceLimit = Infinity; +module.exports; +//mol.js.map +; + +$node[ "../mol/mol" ] = $node[ "../mol/mol.js" ] = module.exports }.call( {} , {} ) +; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; + +; +"use strict" +/// Fake namespace for optional overrides +/// +/// namespace $ { export var x = 1 , y = 1 } // defaults +/// namespace $.$$ { export var x = 2 } // overrides +/// namespace $.$$ { console.log( x , y ) } // usage +/// +var $ = ( typeof module === 'object' ) ? Object.setPrototypeOf( module['export'+'s'] , self ) : self +$.$$ = $ + +$.$mol = $ // deprecated + +; +"use strict"; +var $; +(function ($) { + let $$; + (function ($$_1) { + })($$ = $.$$ || ($.$$ = {})); + $.$mol_ambient_ref = Symbol('$mol_ambient_ref'); + function $mol_ambient(overrides) { + return Object.setPrototypeOf(overrides, this || $); + } + $.$mol_ambient = $mol_ambient; +})($ || ($ = {})); +//ambient.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_owning_map = new WeakMap(); + function $mol_owning_allow(having) { + if (!having) + return false; + if (typeof having !== 'object') + return false; + if (typeof having['destructor'] !== 'function') + return false; + return true; + } + $.$mol_owning_allow = $mol_owning_allow; + function $mol_owning_get(having, Owner) { + if (!$mol_owning_allow(having)) + return null; + while (true) { + const owner = $.$mol_owning_map.get(having); + if (!owner) + return owner; + if (!Owner) + return owner; + if (owner instanceof Owner) + return owner; + having = owner; + } + } + $.$mol_owning_get = $mol_owning_get; + function $mol_owning_check(owner, having) { + if (!$mol_owning_allow(having)) + return false; + if ($.$mol_owning_map.get(having) !== owner) + return false; + return true; + } + $.$mol_owning_check = $mol_owning_check; + function $mol_owning_catch(owner, having) { + if (!$mol_owning_allow(having)) + return false; + if ($.$mol_owning_map.get(having)) + return false; + $.$mol_owning_map.set(having, owner); + return true; + } + $.$mol_owning_catch = $mol_owning_catch; +})($ || ($ = {})); +//owning.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_fail(error) { + throw error; + } + $.$mol_fail = $mol_fail; +})($ || ($ = {})); +//fail.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_fail_hidden(error) { + throw error; + } + $.$mol_fail_hidden = $mol_fail_hidden; +})($ || ($ = {})); +//hidden.js.map +; +"use strict"; +var $; +(function ($) { + var _a; + class $mol_object2 { + constructor(init) { + this[_a] = null; + if (init) + init(this); + } + get $() { + if (this[$.$mol_ambient_ref]) + return this[$.$mol_ambient_ref]; + const owner = $.$mol_owning_get(this); + return this[$.$mol_ambient_ref] = (owner === null || owner === void 0 ? void 0 : owner.$) || $mol_object2.$; + } + set $(next) { + if (this[$.$mol_ambient_ref]) + $.$mol_fail_hidden(new Error('Context already defined')); + this[$.$mol_ambient_ref] = next; + } + static create(init) { + return new this(init); + } + static toString() { return this[Symbol.toStringTag] || this.name; } + destructor() { } + toString() { + return this[Symbol.toStringTag] || this.constructor.name + '()'; + } + toJSON() { + return this.toString(); + } + } + _a = $.$mol_ambient_ref; + $mol_object2.$ = $; + $.$mol_object2 = $mol_object2; +})($ || ($ = {})); +//object2.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_after_tick extends $.$mol_object2 { + constructor(task) { + super(); + this.task = task; + this.cancelled = false; + this.promise = Promise.resolve().then(() => { + if (this.cancelled) + return; + task(); + }); + } + destructor() { + this.cancelled = true; + } + } + $.$mol_after_tick = $mol_after_tick; +})($ || ($ = {})); +//tick.js.map +; +"use strict"; +var $; +(function ($) { +})($ || ($ = {})); +//context.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_dom_context = self; +})($ || ($ = {})); +//context.web.js.map +; +"use strict"; +var $; +(function ($) { + let all = []; + let el = null; + let timer = null; + function $mol_style_attach(id, text) { + all.push(`/* ${id} */\n\n${text}`); + if (timer) + return el; + const doc = $.$mol_dom_context.document; + if (!doc) + return null; + el = doc.createElement('style'); + el.id = `$mol_style_attach`; + doc.head.appendChild(el); + timer = new $.$mol_after_tick(() => { + el.innerHTML = '\n' + all.join('\n\n'); + all = []; + el = null; + timer = null; + }); + return el; + } + $.$mol_style_attach = $mol_style_attach; +})($ || ($ = {})); +//attach.js.map +; +"use strict"; +var $; +(function ($) { + let $mol_keyboard_code; + (function ($mol_keyboard_code) { + $mol_keyboard_code[$mol_keyboard_code["backspace"] = 8] = "backspace"; + $mol_keyboard_code[$mol_keyboard_code["tab"] = 9] = "tab"; + $mol_keyboard_code[$mol_keyboard_code["enter"] = 13] = "enter"; + $mol_keyboard_code[$mol_keyboard_code["shift"] = 16] = "shift"; + $mol_keyboard_code[$mol_keyboard_code["ctrl"] = 17] = "ctrl"; + $mol_keyboard_code[$mol_keyboard_code["alt"] = 18] = "alt"; + $mol_keyboard_code[$mol_keyboard_code["pause"] = 19] = "pause"; + $mol_keyboard_code[$mol_keyboard_code["capsLock"] = 20] = "capsLock"; + $mol_keyboard_code[$mol_keyboard_code["escape"] = 27] = "escape"; + $mol_keyboard_code[$mol_keyboard_code["space"] = 32] = "space"; + $mol_keyboard_code[$mol_keyboard_code["pageUp"] = 33] = "pageUp"; + $mol_keyboard_code[$mol_keyboard_code["pageDown"] = 34] = "pageDown"; + $mol_keyboard_code[$mol_keyboard_code["end"] = 35] = "end"; + $mol_keyboard_code[$mol_keyboard_code["home"] = 36] = "home"; + $mol_keyboard_code[$mol_keyboard_code["left"] = 37] = "left"; + $mol_keyboard_code[$mol_keyboard_code["up"] = 38] = "up"; + $mol_keyboard_code[$mol_keyboard_code["right"] = 39] = "right"; + $mol_keyboard_code[$mol_keyboard_code["down"] = 40] = "down"; + $mol_keyboard_code[$mol_keyboard_code["insert"] = 45] = "insert"; + $mol_keyboard_code[$mol_keyboard_code["delete"] = 46] = "delete"; + $mol_keyboard_code[$mol_keyboard_code["key0"] = 48] = "key0"; + $mol_keyboard_code[$mol_keyboard_code["key1"] = 49] = "key1"; + $mol_keyboard_code[$mol_keyboard_code["key2"] = 50] = "key2"; + $mol_keyboard_code[$mol_keyboard_code["key3"] = 51] = "key3"; + $mol_keyboard_code[$mol_keyboard_code["key4"] = 52] = "key4"; + $mol_keyboard_code[$mol_keyboard_code["key5"] = 53] = "key5"; + $mol_keyboard_code[$mol_keyboard_code["key6"] = 54] = "key6"; + $mol_keyboard_code[$mol_keyboard_code["key7"] = 55] = "key7"; + $mol_keyboard_code[$mol_keyboard_code["key8"] = 56] = "key8"; + $mol_keyboard_code[$mol_keyboard_code["key9"] = 57] = "key9"; + $mol_keyboard_code[$mol_keyboard_code["A"] = 65] = "A"; + $mol_keyboard_code[$mol_keyboard_code["B"] = 66] = "B"; + $mol_keyboard_code[$mol_keyboard_code["C"] = 67] = "C"; + $mol_keyboard_code[$mol_keyboard_code["D"] = 68] = "D"; + $mol_keyboard_code[$mol_keyboard_code["E"] = 69] = "E"; + $mol_keyboard_code[$mol_keyboard_code["F"] = 70] = "F"; + $mol_keyboard_code[$mol_keyboard_code["G"] = 71] = "G"; + $mol_keyboard_code[$mol_keyboard_code["H"] = 72] = "H"; + $mol_keyboard_code[$mol_keyboard_code["I"] = 73] = "I"; + $mol_keyboard_code[$mol_keyboard_code["J"] = 74] = "J"; + $mol_keyboard_code[$mol_keyboard_code["K"] = 75] = "K"; + $mol_keyboard_code[$mol_keyboard_code["L"] = 76] = "L"; + $mol_keyboard_code[$mol_keyboard_code["M"] = 77] = "M"; + $mol_keyboard_code[$mol_keyboard_code["N"] = 78] = "N"; + $mol_keyboard_code[$mol_keyboard_code["O"] = 79] = "O"; + $mol_keyboard_code[$mol_keyboard_code["P"] = 80] = "P"; + $mol_keyboard_code[$mol_keyboard_code["Q"] = 81] = "Q"; + $mol_keyboard_code[$mol_keyboard_code["R"] = 82] = "R"; + $mol_keyboard_code[$mol_keyboard_code["S"] = 83] = "S"; + $mol_keyboard_code[$mol_keyboard_code["T"] = 84] = "T"; + $mol_keyboard_code[$mol_keyboard_code["U"] = 85] = "U"; + $mol_keyboard_code[$mol_keyboard_code["V"] = 86] = "V"; + $mol_keyboard_code[$mol_keyboard_code["W"] = 87] = "W"; + $mol_keyboard_code[$mol_keyboard_code["X"] = 88] = "X"; + $mol_keyboard_code[$mol_keyboard_code["Y"] = 89] = "Y"; + $mol_keyboard_code[$mol_keyboard_code["Z"] = 90] = "Z"; + $mol_keyboard_code[$mol_keyboard_code["metaLeft"] = 91] = "metaLeft"; + $mol_keyboard_code[$mol_keyboard_code["metaRight"] = 92] = "metaRight"; + $mol_keyboard_code[$mol_keyboard_code["select"] = 93] = "select"; + $mol_keyboard_code[$mol_keyboard_code["numpad0"] = 96] = "numpad0"; + $mol_keyboard_code[$mol_keyboard_code["numpad1"] = 97] = "numpad1"; + $mol_keyboard_code[$mol_keyboard_code["numpad2"] = 98] = "numpad2"; + $mol_keyboard_code[$mol_keyboard_code["numpad3"] = 99] = "numpad3"; + $mol_keyboard_code[$mol_keyboard_code["numpad4"] = 100] = "numpad4"; + $mol_keyboard_code[$mol_keyboard_code["numpad5"] = 101] = "numpad5"; + $mol_keyboard_code[$mol_keyboard_code["numpad6"] = 102] = "numpad6"; + $mol_keyboard_code[$mol_keyboard_code["numpad7"] = 103] = "numpad7"; + $mol_keyboard_code[$mol_keyboard_code["numpad8"] = 104] = "numpad8"; + $mol_keyboard_code[$mol_keyboard_code["numpad9"] = 105] = "numpad9"; + $mol_keyboard_code[$mol_keyboard_code["multiply"] = 106] = "multiply"; + $mol_keyboard_code[$mol_keyboard_code["add"] = 107] = "add"; + $mol_keyboard_code[$mol_keyboard_code["subtract"] = 109] = "subtract"; + $mol_keyboard_code[$mol_keyboard_code["decimal"] = 110] = "decimal"; + $mol_keyboard_code[$mol_keyboard_code["divide"] = 111] = "divide"; + $mol_keyboard_code[$mol_keyboard_code["F1"] = 112] = "F1"; + $mol_keyboard_code[$mol_keyboard_code["F2"] = 113] = "F2"; + $mol_keyboard_code[$mol_keyboard_code["F3"] = 114] = "F3"; + $mol_keyboard_code[$mol_keyboard_code["F4"] = 115] = "F4"; + $mol_keyboard_code[$mol_keyboard_code["F5"] = 116] = "F5"; + $mol_keyboard_code[$mol_keyboard_code["F6"] = 117] = "F6"; + $mol_keyboard_code[$mol_keyboard_code["F7"] = 118] = "F7"; + $mol_keyboard_code[$mol_keyboard_code["F8"] = 119] = "F8"; + $mol_keyboard_code[$mol_keyboard_code["F9"] = 120] = "F9"; + $mol_keyboard_code[$mol_keyboard_code["F10"] = 121] = "F10"; + $mol_keyboard_code[$mol_keyboard_code["F11"] = 122] = "F11"; + $mol_keyboard_code[$mol_keyboard_code["F12"] = 123] = "F12"; + $mol_keyboard_code[$mol_keyboard_code["numLock"] = 144] = "numLock"; + $mol_keyboard_code[$mol_keyboard_code["scrollLock"] = 145] = "scrollLock"; + $mol_keyboard_code[$mol_keyboard_code["semicolon"] = 186] = "semicolon"; + $mol_keyboard_code[$mol_keyboard_code["equals"] = 187] = "equals"; + $mol_keyboard_code[$mol_keyboard_code["comma"] = 188] = "comma"; + $mol_keyboard_code[$mol_keyboard_code["dash"] = 189] = "dash"; + $mol_keyboard_code[$mol_keyboard_code["period"] = 190] = "period"; + $mol_keyboard_code[$mol_keyboard_code["forwardSlash"] = 191] = "forwardSlash"; + $mol_keyboard_code[$mol_keyboard_code["graveAccent"] = 192] = "graveAccent"; + $mol_keyboard_code[$mol_keyboard_code["bracketOpen"] = 219] = "bracketOpen"; + $mol_keyboard_code[$mol_keyboard_code["slashBack"] = 220] = "slashBack"; + $mol_keyboard_code[$mol_keyboard_code["slashBackLeft"] = 226] = "slashBackLeft"; + $mol_keyboard_code[$mol_keyboard_code["bracketClose"] = 221] = "bracketClose"; + $mol_keyboard_code[$mol_keyboard_code["quoteSingle"] = 222] = "quoteSingle"; + })($mol_keyboard_code = $.$mol_keyboard_code || ($.$mol_keyboard_code = {})); +})($ || ($ = {})); +//code.js.map +; +"use strict"; +//theme.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_style_attach("mol/theme/theme.css", "[mol_theme] , :root {\n\tbackground-color: var(--mol_theme_back);\n\tcolor: var(--mol_theme_text);\n\tfill: var(--mol_theme_text);\n}\n\n@media (prefers-color-scheme: light) {\n\t[mol_theme=\"$mol_theme_auto\"] {\n\t\t--mol_theme_back: hsl( 210 , 50% , 99% );\n\t\t--mol_theme_hover: rgba( 0 , 0 , 0 , .05 );\n\t\t--mol_theme_current: hsl( 210 , 100% , 80% );\n\t\t--mol_theme_text: rgba( 0 , 0 , 0 , .9 );\n\t\t--mol_theme_control: hsla( 210 , 60% , 35% , 1 );\n\t\t--mol_theme_shade: rgba( 0 , 0 , 0 , .5 );\n\t\t--mol_theme_line: rgba( 220 , 220 , 220 , 1 );\n\t\t--mol_theme_focus: hsla( 0 , 60% , 50% , 0.75 );\n\t\t--mol_theme_field: white;\n\t}\n}\n\n@media (prefers-color-scheme: dark) {\n\t[mol_theme=\"$mol_theme_auto\"] {\n\t\t--mol_theme_back: hsl( 210 , 50% , 10% );\n\t\t--mol_theme_hover: #333;\n\t\t--mol_theme_current: hsl( 210 , 100% , 20% );\n\t\t--mol_theme_text: rgba( 255 , 255 , 255 , .8 );\n\t\t--mol_theme_control: hsla( 210 , 60% , 70% , 1 );\n\t\t--mol_theme_shade: rgba( 255 , 255 , 255 , .5 );\n\t\t--mol_theme_line: rgba( 50 , 50 , 50 , 1 );\n\t\t--mol_theme_focus: rgba( 204 , 68 , 50 , .75 );\n\t\t--mol_theme_field: black;\n\t}\n}\n\n[mol_theme=\"$mol_theme_light\"] , :root {\n\t--mol_theme_back: hsl( 210 , 50% , 99% );\n\t--mol_theme_hover: rgba( 0 , 0 , 0 , .05 );\n\t--mol_theme_current: hsl( 210 , 100% , 80% );\n\t--mol_theme_text: rgba( 0 , 0 , 0 , .9 );\n\t--mol_theme_control: hsla( 210 , 60% , 35% , 1 );\n\t--mol_theme_shade: rgba( 0 , 0 , 0 , .5 );\n\t--mol_theme_line: rgba( 220 , 220 , 220 , 1 );\n\t--mol_theme_focus: hsla( 0 , 60% , 50% , 0.75 );\n\t--mol_theme_field: white;\n}\n\n[mol_theme=\"$mol_theme_dark\"] {\n\t--mol_theme_back: hsl( 210 , 50% , 10% );\n\t--mol_theme_hover: #333;\n\t--mol_theme_current: hsl( 210 , 100% , 20% );\n\t--mol_theme_text: rgba( 255 , 255 , 255 , .8 );\n\t--mol_theme_control: hsla( 210 , 60% , 70% , 1 );\n\t--mol_theme_shade: rgba( 255 , 255 , 255 , .5 );\n\t--mol_theme_line: rgba( 50 , 50 , 50 , 1 );\n\t--mol_theme_focus: rgba( 204 , 68 , 50 , .75 );\n\t--mol_theme_field: black;\n}\n\n[mol_theme=\"$mol_theme_base\"] {\n\t--mol_theme_back: hsla( 210 , 60% , 35% , 1 );\n\t--mol_theme_hover: rgba( 0 , 0 , 0 , .05 );\n\t--mol_theme_current: hsl( 210 , 100% , 20% );\n\t--mol_theme_text: white;\n\t--mol_theme_line: white;\n\t--mol_theme_control: white;\n}\n\n[mol_theme=\"$mol_theme_accent\"] {\n\t--mol_theme_back: rgb(204, 68, 50);\n\t--mol_theme_hover: rgb(165, 56, 42);\n\t--mol_theme_text: white;\n\t--mol_theme_line: rgba( 50 , 50 , 50 , 1 );\n\t--mol_theme_control: white;\n}\n"); +})($ || ($ = {})); +//theme.css.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_style_attach("mol/skin/skin.css", ":root {\n\t--mol_skin_font: 1rem/1.5 \"-apple-system\", BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n\t--mol_skin_font_monospace: Monaco, monospace;\n}\n\n/* Deprecated, use mol_theme instead */\n:root {\n\n\t--mol_skin_outline: 0 0 0 1px var(--mol_theme_line);\n\t\n\t--mol_skin_base: #3a8ccb;\n\t--mol_skin_base_text: white;\n\t\n\t--mol_skin_current: var(--mol_skin_base);\n\t--mol_skin_current_text: white;\n\t--mol_skin_current_line: #1471b8;\n\t\n\t--mol_skin_button: var(--mol_skin_card);\n\t--mol_skin_hover: rgba( 0 , 0 , 0 , .05 );\n\t\n\t--mol_skin_round: 0px;\n\t\n\t--mol_skin_focus_line: rgba( 0 , 0 , 0 , .2 );\n\t--mol_skin_focus_outline: 0 0 0 1px var(--mol_skin_focus_line);\n\t\n\t--mol_skin_float: var(--mol_skin_focus_outline);\n\n\t--mol_skin_passive: #eee;\n\t--mol_skin_passive_text: rgba( 0 , 0 , 0 , .5 );\n\t\n\t--mol_skin_light: #fcfcfc;\n\t--mol_skin_light_line: rgba( 230 , 230 , 230 , .75 );\n\t--mol_skin_light_text: rgba( 0 , 0 , 0 , .9 );\n\t--mol_skin_light_hover: #f7f7f7;\n\t--mol_skin_light_outline: 0 0 0 1px var(--mol_theme_line);\n\n\t--mol_skin_card: var(--mol_theme_back);\n\t--mol_skin_card_text: var(--mol_theme_text);\n\t\n\t--mol_skin_accent: #dd0e3e;\n\t--mol_skin_accent_text: white;\n\t--mol_skin_accent_hover: #c50d37;\n\n\t--mol_skin_warn: rgba( 255 , 50 , 50 , 0.75 );\n\t--mol_skin_warn_text: white;\n\t--mol_skin_warn_hover: color( var(--mol_skin_warn) lightness(-5%) );\n\n\t--mol_skin_good: #96DAA9;\n\t--mol_skin_good_text: black;\n\n\t--mol_skin_bad: #CC5252;\n\t--mol_skin_bad_text: white;\n}\n"); +})($ || ($ = {})); +//skin.css.js.map +; +"use strict"; +var $; +(function ($_1) { + let $$; + (function ($$) { + let $; + })($$ = $_1.$$ || ($_1.$$ = {})); + $_1.$mol_object_field = Symbol('$mol_object_field'); + class $mol_object extends $_1.$mol_object2 { + static make(config) { + return super.create(obj => { + for (let key in config) + obj[key] = config[key]; + }); + } + } + $_1.$mol_object = $mol_object; +})($ || ($ = {})); +//object.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_wrapper extends $.$mol_object2 { + static run(task) { + return this.func(task)(); + } + static func(func) { + return this.wrap(func); + } + static get class() { + return (Class) => { + const construct = (target, args) => new Class(...args); + const handler = { + construct: this.func(construct) + }; + handler[Symbol.toStringTag] = Class.name + '#'; + return new Proxy(Class, handler); + }; + } + static get method() { + return (obj, name, descr) => { + descr.value = this.func(descr.value); + return descr; + }; + } + static get field() { + return (obj, name, descr) => { + descr.get = descr.set = this.func(descr.get); + return descr; + }; + } + } + $.$mol_wrapper = $mol_wrapper; +})($ || ($ = {})); +//wrapper.js.map +; +"use strict"; +var $; +(function ($) { + $['devtoolsFormatters'] = $['devtoolsFormatters'] || []; + function $mol_dev_format_register(config) { + $['devtoolsFormatters'].push(config); + } + $.$mol_dev_format_register = $mol_dev_format_register; + $.$mol_dev_format_head = Symbol('$mol_dev_format_head'); + $.$mol_dev_format_body = Symbol('$mol_dev_format_body'); + $mol_dev_format_register({ + header: (val, config = false) => { + if (config) + return null; + if (!val) + return null; + if ($.$mol_dev_format_head in val) { + return val[$.$mol_dev_format_head](); + } + return null; + }, + hasBody: val => val[$.$mol_dev_format_body], + body: val => val[$.$mol_dev_format_body](), + }); + function $mol_dev_format_native(obj) { + if (typeof obj === 'undefined') + return $.$mol_dev_format_shade('undefined'); + if (typeof obj !== 'object') + return obj; + return [ + 'object', + { + object: obj, + config: true, + }, + ]; + } + $.$mol_dev_format_native = $mol_dev_format_native; + function $mol_dev_format_auto(obj) { + if (obj == null) + return $.$mol_dev_format_shade(String(obj)); + if (typeof obj === 'object' && $.$mol_dev_format_head in obj) { + return obj[$.$mol_dev_format_head](); + } + return [ + 'object', + { + object: obj, + config: false, + }, + ]; + } + $.$mol_dev_format_auto = $mol_dev_format_auto; + function $mol_dev_format_element(element, style, ...content) { + const styles = []; + for (let key in style) + styles.push(`${key} : ${style[key]}`); + return [ + element, + { + style: styles.join(' ; '), + }, + ...content, + ]; + } + $.$mol_dev_format_element = $mol_dev_format_element; + function $mol_dev_format_span(style, ...content) { + return $mol_dev_format_element('span', Object.assign({ 'vertical-align': '8%' }, style), ...content); + } + $.$mol_dev_format_span = $mol_dev_format_span; + $.$mol_dev_format_div = $mol_dev_format_element.bind(null, 'div'); + $.$mol_dev_format_ol = $mol_dev_format_element.bind(null, 'ol'); + $.$mol_dev_format_li = $mol_dev_format_element.bind(null, 'li'); + $.$mol_dev_format_table = $mol_dev_format_element.bind(null, 'table'); + $.$mol_dev_format_tr = $mol_dev_format_element.bind(null, 'tr'); + $.$mol_dev_format_td = $mol_dev_format_element.bind(null, 'td'); + $.$mol_dev_format_accent = $mol_dev_format_span.bind(null, { + 'color': 'magenta', + }); + $.$mol_dev_format_strong = $mol_dev_format_span.bind(null, { + 'font-weight': 'bold', + }); + $.$mol_dev_format_string = $mol_dev_format_span.bind(null, { + 'color': 'green', + }); + $.$mol_dev_format_shade = $mol_dev_format_span.bind(null, { + 'color': 'gray', + }); + $.$mol_dev_format_indent = $.$mol_dev_format_div.bind(null, { + 'margin-left': '13px' + }); +})($ || ($ = {})); +//format.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_maybe(value) { + return (value == null) ? [] : [value]; + } + $.$mol_maybe = $mol_maybe; +})($ || ($ = {})); +//maybe.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_log(path, ...values) { + if ($.$mol_log_filter() == null) + return; + path = String(path); + if (path.indexOf($.$mol_log_filter()) === -1) + return; + const context = $.$mol_log_context(); + if (context) + context(); + console.debug(path, ...values); + if ($.$mol_log_debug() == null) + return; + if (path.indexOf($.$mol_log_debug()) === -1) + return; + debugger; + } + $.$mol_log = $mol_log; +})($ || ($ = {})); +//log.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_log_group(name, task) { + const filter = $.$mol_log_filter(); + if (filter == null) + return task; + return function $mol_log_group_wrapper(...args) { + let started = false; + let prev = $.$mol_log_context(); + $.$mol_log_context(() => { + if (prev) + prev(); + started = true; + if (filter || prev) + console.group(name); + else + console.groupCollapsed(name); + $.$mol_log_context(prev = null); + }); + try { + return task.apply(this, args); + } + finally { + if (started) + console.groupEnd(); + $.$mol_log_context(prev); + } + }; + } + $.$mol_log_group = $mol_log_group; +})($ || ($ = {})); +//log_group.js.map +; +"use strict"; +var $; +(function ($) { + let context = null; + function $mol_log_context(next = context) { + return context = next; + } + $.$mol_log_context = $mol_log_context; +})($ || ($ = {})); +//log_context.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_log_debug(next) { + if (next !== undefined) { + if (next == null) { + sessionStorage.removeItem('$mol_log_debug()'); + } + else { + sessionStorage.setItem('$mol_log_debug()', next); + } + } + return sessionStorage.getItem('$mol_log_debug()'); + } + $.$mol_log_debug = $mol_log_debug; +})($ || ($ = {})); +//log_debug.web.js.map +; +"use strict"; +var $; +(function ($) { + let filter = undefined; + $.$mol_log_filter = function $mol_log_filter(next) { + if (next !== undefined) { + if (next == null) { + sessionStorage.removeItem('$mol_log_filter()'); + } + else { + sessionStorage.setItem('$mol_log_filter()', next); + } + filter = next; + } + if (filter !== undefined) + return filter; + return filter = sessionStorage.getItem('$mol_log_filter()'); + }; + if (typeof sessionStorage === 'undefined') + $.$mol_log_filter = (next = null) => filter = next; + if ($.$mol_log_filter() == null) + console.info('Use $mol_log_filter( needle : string|null ) to toggle logs'); +})($ || ($ = {})); +//log_filter.web.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_log2 extends $.$mol_wrapper { + constructor(host, id, args) { + super(); + this.host = host; + this.id = id; + this.args = args; + this.stream = []; + this[Symbol.toStringTag] = host ? `${host}.${id}` : id; + } + static wrap(task) { + const Inner = this; + const wrapped = function (...args) { + const outer = $mol_log2.current; + const inner = $mol_log2.current = new Inner(this, task.name, args); + try { + return task.call(this, ...args); + } + finally { + $mol_log2.current = outer; + inner.flush(); + } + }; + return wrapped; + } + flush() { + if (this.stream.length === 0) + return; + console.debug(this); + } + info(...values) { + this.stream.push(new $mol_log2_line(...$mol_log2.prefix, ...values)); + } + [$.$mol_dev_format_head]() { + return $.$mol_dev_format_span({}, ...$.$mol_maybe(this.host).map($.$mol_dev_format_auto), '.', $.$mol_dev_format_strong(this.id), '(', ...this.args.map($.$mol_dev_format_auto), ') ', $.$mol_dev_format_auto(this.stream)); + } + static info(...values) { + const excludes = $mol_log2.excludes; + if (!excludes) + return; + const skip = excludes.some((regexp, index) => { + return regexp && regexp.test(String(values[index])) || false; + }); + if (skip) + return; + if (!$mol_log2.current) { + console.warn(new Error(`$mol_log.current is not defined. Wrap entry point to $mol_log!`)); + $mol_log2.current = new $mol_log2(null, '$mol_log2_default', []); + console.debug($mol_log2.current); + } + $mol_log2.current.info(...values); + } + } + $mol_log2.current = null; + $mol_log2.excludes = null; + $mol_log2.prefix = []; + $.$mol_log2 = $mol_log2; + class $mol_log2_indent extends $.$mol_wrapper { + static wrap(task) { + const Inner = this; + const wrapped = function (...args) { + try { + $mol_log2.prefix.push($.$mol_log2_token_indent); + return task.call(this, ...args); + } + finally { + $mol_log2.prefix.pop(); + } + }; + return wrapped; + } + } + $.$mol_log2_indent = $mol_log2_indent; + class $mol_log2_table extends $mol_log2 { + [$.$mol_dev_format_head]() { + return $.$mol_dev_format_span({}, $.$mol_dev_format_strong(`${this}(`), ...this.args.map($.$mol_dev_format_auto), $.$mol_dev_format_strong(`) `)); + } + [$.$mol_dev_format_body]() { + return $.$mol_dev_format_table({}, ...this.stream.map($.$mol_dev_format_auto)); + } + } + $.$mol_log2_table = $mol_log2_table; + class $mol_log2_hidden extends $mol_log2 { + flush() { } + } + $.$mol_log2_hidden = $mol_log2_hidden; + class $mol_log2_line extends Array { + constructor(...items) { + super(...items); + } + [$.$mol_dev_format_head]() { + return $.$mol_dev_format_tr({}, ...this.map(item => $.$mol_dev_format_td({}, $.$mol_dev_format_auto(item)))); + } + } + $.$mol_log2_line = $mol_log2_line; + class $mol_log2_token extends Array { + constructor(...items) { + super(...items); + } + [$.$mol_dev_format_head]() { + return $.$mol_dev_format_accent(...this); + } + } + $.$mol_log2_token = $mol_log2_token; + $.$mol_log2_token_empty = new $mol_log2_token(''); + $.$mol_log2_token_indent = new $mol_log2_token('\t'); + $.$mol_log2_legend = new $mol_log2_table(null, '$mol_log2_legend', []); + if (!$mol_log2.excludes) + $.$mol_log2_legend.info($.$mol_log2_token_empty, 'Use `$mol_log2.excludes : null | RegExp[]` to toggle logs'); +})($ || ($ = {})); +//log2.js.map +; +"use strict"; +var $; +(function ($) { + console.debug($.$mol_log2_legend); +})($ || ($ = {})); +//log2.web.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_after_frame extends $.$mol_object2 { + constructor(task) { + super(); + this.task = task; + this.id = requestAnimationFrame(task); + } + destructor() { + cancelAnimationFrame(this.id); + } + } + $.$mol_after_frame = $mol_after_frame; +})($ || ($ = {})); +//frame.web.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_compare_any(a, b) { + if (a === b) + return true; + if (!Number.isNaN(a)) + return false; + if (!Number.isNaN(b)) + return false; + return true; + } + $.$mol_compare_any = $mol_compare_any; +})($ || ($ = {})); +//any.js.map +; +"use strict"; +var $; +(function ($) { + const cache = new WeakMap(); + $.$mol_conform_stack = []; + function $mol_conform(target, source) { + if ($.$mol_compare_any(target, source)) + return source; + if (!target || typeof target !== 'object') + return target; + if (!source || typeof source !== 'object') + return target; + if (target instanceof Error) + return target; + if (source instanceof Error) + return target; + if (target['constructor'] !== source['constructor']) + return target; + if (cache.get(target)) + return target; + cache.set(target, true); + const conform = $.$mol_conform_handlers.get(target['constructor']); + if (!conform) + return target; + if ($.$mol_conform_stack.indexOf(target) !== -1) + return target; + $.$mol_conform_stack.push(target); + try { + return conform(target, source); + } + finally { + $.$mol_conform_stack.pop(); + } + } + $.$mol_conform = $mol_conform; + $.$mol_conform_handlers = new WeakMap(); + function $mol_conform_handler(cl, handler) { + $.$mol_conform_handlers.set(cl, handler); + } + $.$mol_conform_handler = $mol_conform_handler; + function $mol_conform_array(target, source) { + if (source.length !== target.length) + return target; + for (let i = 0; i < target.length; ++i) { + if (!$.$mol_compare_any(source[i], target[i])) + return target; + } + return source; + } + $mol_conform_handler(Array, $mol_conform_array); + $mol_conform_handler(Uint8Array, $mol_conform_array); + $mol_conform_handler(Uint16Array, $mol_conform_array); + $mol_conform_handler(Uint32Array, $mol_conform_array); + $mol_conform_handler(Object, (target, source) => { + let count = 0; + let equal = true; + for (let key in target) { + const conformed = $mol_conform(target[key], source[key]); + if (conformed !== target[key]) { + try { + target[key] = conformed; + } + catch (error) { } + if (!$.$mol_compare_any(conformed, target[key])) + equal = false; + } + if (!$.$mol_compare_any(conformed, source[key])) + equal = false; + ++count; + } + for (let key in source) + if (--count < 0) + break; + return (equal && count === 0) ? source : target; + }); + $mol_conform_handler(Date, (target, source) => { + if (target.getTime() === source.getTime()) + return source; + return target; + }); + $mol_conform_handler(RegExp, (target, source) => { + if (target.toString() === source.toString()) + return source; + return target; + }); +})($ || ($ = {})); +//conform.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_array_trim(array) { + let last = array.length; + while (last > 0) { + --last; + const value = array[last]; + if (value === undefined) + array.pop(); + else + break; + } + return array; + } + $.$mol_array_trim = $mol_array_trim; +})($ || ($ = {})); +//trim.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_fiber_defer(calculate) { + const fiber = new $mol_fiber; + fiber.calculate = calculate; + fiber[Symbol.toStringTag] = calculate.name; + fiber.schedule(); + return fiber; + } + $.$mol_fiber_defer = $mol_fiber_defer; + function $mol_fiber_func(calculate) { + console.warn('$mol_fiber_func is deprecated. Use $mol_fiber.func instead.'); + return $mol_fiber.func(calculate); + } + $.$mol_fiber_func = $mol_fiber_func; + function $mol_fiber_root(calculate) { + const wrapper = function (...args) { + const fiber = new $mol_fiber(); + fiber.calculate = calculate.bind(this, ...args); + return fiber.wake(); + }; + wrapper[Symbol.toStringTag] = calculate.name; + return wrapper; + } + $.$mol_fiber_root = $mol_fiber_root; + function $mol_fiber_method(obj, name, descr) { + console.warn('$mol_fiber_method is deprecated. Use $mol_fiber.method instead.'); + return $mol_fiber.method(obj, name, descr); + } + $.$mol_fiber_method = $mol_fiber_method; + function $mol_fiber_async(task) { + return (...args) => new Promise($mol_fiber_root((done, fail) => { + try { + done(task(...args)); + } + catch (error) { + if ('then' in error) + return $.$mol_fail_hidden(error); + fail(error); + } + })); + } + $.$mol_fiber_async = $mol_fiber_async; + function $mol_fiber_sync(request) { + return function $mol_fiber_sync_wrapper(...args) { + const slave = $mol_fiber.current; + let master = slave && slave.master; + if (!master || master.constructor !== $mol_fiber) { + master = new $mol_fiber; + master.cursor = -3; + master.error = request.call(this, ...args).then($.$mol_log2.func(master.push).bind(master), $.$mol_log2.func(master.fail).bind(master)); + const prefix = slave ? `${slave}/${slave.cursor / 2}:` : '/'; + master[Symbol.toStringTag] = prefix + (request.name || $mol_fiber_sync.name); + } + return master.get(); + }; + } + $.$mol_fiber_sync = $mol_fiber_sync; + async function $mol_fiber_warp() { + const deadline = $mol_fiber.deadline; + try { + $mol_fiber.deadline = Number.POSITIVE_INFINITY; + while ($mol_fiber.queue.length) + await $mol_fiber.tick(); + return Promise.resolve(); + } + finally { + $mol_fiber.deadline = deadline; + } + } + $.$mol_fiber_warp = $mol_fiber_warp; + function $mol_fiber_fence(func) { + const prev = $mol_fiber.current; + try { + $mol_fiber.current = null; + return func(); + } + finally { + $mol_fiber.current = prev; + } + } + $.$mol_fiber_fence = $mol_fiber_fence; + function $mol_fiber_unlimit(task) { + const deadline = $mol_fiber.deadline; + try { + $mol_fiber.deadline = Number.POSITIVE_INFINITY; + return task(); + } + finally { + $mol_fiber.deadline = deadline; + } + } + $.$mol_fiber_unlimit = $mol_fiber_unlimit; + class $mol_fiber_solid extends $.$mol_wrapper { + static func(task) { + function wrapped(...args) { + const deadline = $mol_fiber.deadline; + try { + $mol_fiber.deadline = Number.POSITIVE_INFINITY; + return task.call(this, ...args); + } + catch (error) { + if ('then' in error) + $.$mol_fail(new Error('Solid fiber can not be suspended.')); + return $.$mol_fail_hidden(error); + } + finally { + $mol_fiber.deadline = deadline; + } + } + return $mol_fiber.func(wrapped); + } + } + $.$mol_fiber_solid = $mol_fiber_solid; + class $mol_fiber extends $.$mol_wrapper { + constructor() { + super(...arguments); + this.value = undefined; + this.error = null; + this.cursor = 0; + this.masters = []; + } + static wrap(task) { + return function $mol_fiber_wrapper(...args) { + const slave = $mol_fiber.current; + let master = slave && slave.master; + if (!master || master.constructor !== $mol_fiber) { + master = new $mol_fiber; + master.calculate = task.bind(this, ...args); + const prefix = slave ? `${slave}/${slave.cursor / 2}:` : '/'; + master[Symbol.toStringTag] = `${prefix}${task.name}`; + } + return master.get(); + }; + } + static async tick() { + while ($mol_fiber.queue.length > 0) { + const now = Date.now(); + if (now >= $mol_fiber.deadline) { + $mol_fiber.schedule(); + $mol_fiber.liveline = now; + return; + } + const task = $mol_fiber.queue.shift(); + await task(); + } + } + static schedule() { + if (!$mol_fiber.scheduled) { + $mol_fiber.scheduled = new $.$mol_after_frame(async () => { + const now = Date.now(); + let quant = $mol_fiber.quant; + if ($mol_fiber.liveline) { + quant = Math.max(quant, Math.floor((now - $mol_fiber.liveline) / 2)); + $mol_fiber.liveline = 0; + } + $mol_fiber.deadline = now + quant; + $mol_fiber.scheduled = null; + await $mol_fiber.tick(); + }); + } + const promise = new this.$.Promise(done => this.queue.push(() => (done(), promise))); + return promise; + } + schedule() { + $mol_fiber.schedule().then(() => this.wake()); + } + wake() { + try { + if (this.cursor > -2) + return this.get(); + } + catch (error) { + if ('then' in error) + return; + $.$mol_fail_hidden(error); + } + } + push(value) { + value = this.$.$mol_conform(value, this.value); + if (this.error || !Object.is(this.value, value)) { + this.$.$mol_log2.info(this, $.$mol_fiber_token_changed1, value, $.$mol_fiber_token_changed2, this.error || this.value); + this.obsolete_slaves(); + this.forget(); + } + else { + this.$.$mol_log2.info(this, $.$mol_fiber_token_actualized, value); + } + this.error = null; + this.value = value; + this.complete(); + return value; + } + fail(error) { + this.complete(); + this.$.$mol_log2.info(this, $.$mol_fiber_token_failed, error); + this.error = error; + this.obsolete_slaves(); + return error; + } + wait(promise) { + this.error = promise; + this.$.$mol_log2.info(this, $.$mol_fiber_token_sleeped, promise); + this.cursor = 0; + return promise; + } + complete() { + if (this.cursor <= -2) + return; + for (let index = 0; index < this.masters.length; index += 2) { + this.complete_master(index); + } + this.cursor = -2; + } + complete_master(master_index) { + this.disobey(master_index); + } + pull() { + this.push(this.calculate()); + } + update() { + const slave = $mol_fiber.current; + try { + $mol_fiber.current = this; + this.$.$mol_log2.info(this, $.$mol_fiber_token_runned); + this.pull(); + } + catch (error) { + if ('then' in error) { + if (!slave) { + const listener = () => this.wake(); + error = error.then(listener, listener); + } + this.wait(error); + } + else { + this.fail(error); + } + } + finally { + $mol_fiber.current = slave; + } + } + get() { + if (this.cursor > 0) { + this.$.$mol_fail(new Error(`Cyclic dependency at ${this}`)); + } + const slave = $mol_fiber.current; + if (slave) + slave.master = this; + if (this.cursor > -2) + this.update(); + if (this.error) + return this.$.$mol_fail_hidden(this.error); + return this.value; + } + limit() { + if (!$mol_fiber.deadline) + return; + if (!$mol_fiber.current) + return; + if (Date.now() < $mol_fiber.deadline) + return; + this.$.$mol_fail_hidden($mol_fiber.schedule()); + } + get master() { + return this.masters[this.cursor]; + } + set master(next) { + if (this.cursor === -1) + return; + const cursor = this.cursor; + const prev = this.masters[this.cursor]; + if (prev !== next) { + if (prev) + this.rescue(prev, cursor); + this.masters[cursor] = next; + this.masters[cursor + 1] = this.obey(next, cursor); + } + this.cursor = cursor + 2; + } + rescue(master, master_index) { } + obey(master, master_index) { return -1; } + lead(slave, master_index) { return -1; } + dislead(slave_index) { + this.destructor(); + } + disobey(master_index) { + const master = this.masters[master_index]; + if (!master) + return; + master.dislead(this.masters[master_index + 1]); + this.masters[master_index] = undefined; + this.masters[master_index + 1] = undefined; + this.$.$mol_array_trim(this.masters); + } + obsolete_slaves() { } + obsolete(master_index) { } + forget() { + this.value = undefined; + } + abort() { + this.forget(); + return true; + } + destructor() { + if (!this.abort()) + return; + this.$.$mol_log2.info(this, $.$mol_fiber_token_destructed); + this.complete(); + } + [$.$mol_dev_format_head]() { + return $.$mol_dev_format_native(this); + } + } + $mol_fiber.quant = 16; + $mol_fiber.deadline = 0; + $mol_fiber.liveline = 0; + $mol_fiber.current = null; + $mol_fiber.scheduled = null; + $mol_fiber.queue = []; + __decorate([ + $.$mol_log2.method + ], $mol_fiber.prototype, "wake", null); + __decorate([ + $.$mol_log2_indent.method + ], $mol_fiber.prototype, "update", null); + $.$mol_fiber = $mol_fiber; + $.$mol_fiber_token_runned = new $.$mol_log2_token(' ► '); + $.$mol_fiber_token_changed1 = new $.$mol_log2_token(' ˸ '); + $.$mol_fiber_token_changed2 = new $.$mol_log2_token(' 🠈 '); + $.$mol_fiber_token_actualized = new $.$mol_log2_token(' ✓ '); + $.$mol_fiber_token_sleeped = new $.$mol_log2_token(' 💤 '); + $.$mol_fiber_token_failed = new $.$mol_log2_token(' 🔥 '); + $.$mol_fiber_token_destructed = new $.$mol_log2_token(' 🕱 '); + $.$mol_log2_legend.info($.$mol_fiber_token_runned, '$mol_fiber starts execution'); + $.$mol_log2_legend.info(new $.$mol_log2_line($.$mol_fiber_token_changed1, $.$mol_fiber_token_changed2), '$mol_fiber value is changed to different value'); + $.$mol_log2_legend.info($.$mol_fiber_token_actualized, 'Actual $mol_fiber value is same as before'); + $.$mol_log2_legend.info($.$mol_fiber_token_sleeped, '$mol_fiber can not run now and awaits on promise'); + $.$mol_log2_legend.info($.$mol_fiber_token_failed, '$mol_fiber is failed and will be throw an Error or Promise'); + $.$mol_log2_legend.info($.$mol_fiber_token_destructed, '$mol_fiber fully destructed'); +})($ || ($ = {})); +//fiber.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_atom2_value(task) { + const cached = $mol_atom2.cached; + try { + $mol_atom2.cached = true; + return task(); + } + finally { + $mol_atom2.cached = cached; + } + } + $.$mol_atom2_value = $mol_atom2_value; + class $mol_atom2 extends $.$mol_fiber { + constructor() { + super(...arguments); + this.slaves = []; + this._value = undefined; + this._error = null; + } + static get current() { + const atom = $.$mol_fiber.current; + if (atom instanceof $mol_atom2) + return atom; + return null; + } + static reap(atom) { + this.reap_queue.push(atom); + if (this.reap_task) + return; + this.reap_task = $.$mol_fiber_defer(() => { + this.reap_task = null; + while (true) { + const atom = this.reap_queue.pop(); + if (!atom) + break; + if (!atom.alone) + continue; + atom.destructor(); + } + }); + } + rescue(master, cursor) { + if (!(master instanceof $mol_atom2)) + return; + const master_index = this.masters.length; + const slave_index = this.masters[cursor + 1] + 1; + master.slaves[slave_index] = master_index; + this.masters.push(master, this.masters[cursor + 1]); + } + get() { + if ($mol_atom2.cached) + return this.value; + const value = super.get(); + if (value === undefined) + $.$mol_fail(new Error(`Not defined: ${this}`)); + return value; + } + pull() { + if (this.cursor === 0) + return super.pull(); + this.$.$mol_log2.info(this, $.$mol_atom2_token_revalidation); + const masters = this.masters; + for (let index = 0; index < masters.length; index += 2) { + const master = masters[index]; + if (!master) + continue; + try { + master.get(); + } + catch (error) { + if ('then' in error) + $.$mol_fail_hidden(error); + this.cursor = 0; + } + if (this.cursor !== 0) + continue; + this.$.$mol_log2.info(this, $.$mol_atom2_token_stumbled, this._error || this._value); + return super.pull(); + } + this.$.$mol_log2.info(this, $.$mol_atom2_token_revalidated, this._error || this._value); + this.cursor = -2; + } + get value() { return this._value; } + set value(next) { + const prev = this._value; + if (prev && this.$.$mol_owning_check(this, prev)) + prev.destructor(); + if (next && this.$.$mol_owning_catch(this, next)) { + next[Symbol.toStringTag] = this[Symbol.toStringTag]; + next[$.$mol_object_field] = this[$.$mol_object_field]; + } + this._value = next; + } + get error() { return this._error; } + set error(next) { + const prev = this._error; + if (prev && this.$.$mol_owning_check(this, prev)) + prev.destructor(); + if (next && this.$.$mol_owning_catch(this, next)) { + next[Symbol.toStringTag] = this[Symbol.toStringTag]; + next[$.$mol_object_field] = this[$.$mol_object_field]; + } + this._error = next; + } + put(next) { + this.cursor = this.masters.length; + next = this.push(next); + this.cursor = -3; + return next; + } + complete_master(master_index) { + if (this.masters[master_index] instanceof $mol_atom2) { + if (master_index >= this.cursor) + this.disobey(master_index); + } + else { + this.disobey(master_index); + } + } + obey(master, master_index) { + return master.lead(this, master_index); + } + lead(slave, master_index) { + this.$.$mol_log2.info(this, $.$mol_atom2_token_leaded, slave); + const slave_index = this.slaves.length; + this.slaves[slave_index] = slave; + this.slaves[slave_index + 1] = master_index; + return slave_index; + } + dislead(slave_index) { + if (slave_index < 0) + return; + this.$.$mol_log2.info(this, $.$mol_atom2_token_disleaded, this.slaves[slave_index]); + this.slaves[slave_index] = undefined; + this.slaves[slave_index + 1] = undefined; + $.$mol_array_trim(this.slaves); + if (this.cursor > -3 && this.alone) + $mol_atom2.reap(this); + } + obsolete(master_index = -1) { + if (this.cursor > 0) { + if (master_index >= this.cursor - 2) + return; + const path = []; + let current = this; + collect: while (current) { + path.push(current); + current = current.masters[current.cursor - 2]; + } + this.$.$mol_fail(new Error(`Obsoleted while calculation \n\n${path.join('\n')}\n`)); + } + if (this.cursor === 0) + return; + this.$.$mol_log2.info(this, $.$mol_atom2_token_obsoleted, this._error || this._value); + if (this.cursor !== -1) + this.doubt_slaves(); + this.cursor = 0; + } + doubt(master_index = -1) { + if (this.cursor > 0) { + if (master_index >= this.cursor - 2) + return; + const path = []; + let current = this; + collect: while (current) { + path.push(current); + current = current.masters[current.cursor - 2]; + } + this.$.$mol_fail(new Error(`Doubted while calculation \n\n${path.join('\n')}\n`)); + } + if (this.cursor >= -1) + return; + this.$.$mol_log2.info(this, $.$mol_atom2_token_doubted, this._error || this._value); + this.cursor = -1; + this.doubt_slaves(); + } + obsolete_slaves() { + for (let index = 0; index < this.slaves.length; index += 2) { + const slave = this.slaves[index]; + if (slave) + slave.obsolete(this.slaves[index + 1]); + } + } + doubt_slaves() { + for (let index = 0; index < this.slaves.length; index += 2) { + const slave = this.slaves[index]; + if (slave) + slave.doubt(this.slaves[index + 1]); + } + } + get fresh() { + return $.$mol_log2_hidden.func(() => { + if (this.cursor !== -2) + return; + this.cursor = 0; + $.$mol_fiber_solid.run(() => this.update()); + }); + } + get alone() { + return this.slaves.length === 0; + } + get derived() { + for (let index = 0; index < this.masters.length; index += 2) { + if (this.masters[index]) + return true; + } + return false; + } + destructor() { + if (!this.abort()) + return; + this.$.$mol_log2.info(this, $.$mol_fiber_token_destructed); + this.cursor = -3; + for (let index = 0; index < this.masters.length; index += 2) { + this.complete_master(index); + } + } + } + $mol_atom2.cached = false; + $mol_atom2.reap_task = null; + $mol_atom2.reap_queue = []; + __decorate([ + $.$mol_log2_indent.method + ], $mol_atom2.prototype, "obsolete_slaves", null); + __decorate([ + $.$mol_log2_indent.method + ], $mol_atom2.prototype, "doubt_slaves", null); + $.$mol_atom2 = $mol_atom2; + $.$mol_atom2_token_revalidation = new $.$mol_log2_token(' ⏭ '); + $.$mol_atom2_token_stumbled = new $.$mol_log2_token(' ⏯ '); + $.$mol_atom2_token_revalidated = new $.$mol_log2_token(' ✔ '); + $.$mol_atom2_token_leaded = new $.$mol_log2_token(' ☍ '); + $.$mol_atom2_token_disleaded = new $.$mol_log2_token(' ☌ '); + $.$mol_atom2_token_obsoleted = new $.$mol_log2_token(' ✘ '); + $.$mol_atom2_token_doubted = new $.$mol_log2_token(' � '); + $.$mol_log2_legend.info($.$mol_atom2_token_revalidation, '$mol_atom2 starts masters cheking for changes'); + $.$mol_log2_legend.info($.$mol_atom2_token_stumbled, '$mol_atom2 is obsoleted while masters checking'); + $.$mol_log2_legend.info($.$mol_atom2_token_revalidated, '$mol_atom2 is actual becasue there is no changed masters'); + $.$mol_log2_legend.info($.$mol_atom2_token_leaded, '$mol_atom2 leads some slave'); + $.$mol_log2_legend.info($.$mol_atom2_token_disleaded, '$mol_atom2 disleads some slave'); + $.$mol_log2_legend.info($.$mol_atom2_token_obsoleted, '$mol_atom2 is obsoleted because some master is changed'); + $.$mol_log2_legend.info($.$mol_atom2_token_doubted, '$mol_atom2 is doubted because some master is doubted or obsoleted'); +})($ || ($ = {})); +//atom2.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_mem_force extends Object { + constructor() { + super(); + this.$mol_mem_force = true; + } + static toString() { return this.name; } + } + $mol_mem_force.$mol_mem_force = true; + $.$mol_mem_force = $mol_mem_force; + class $mol_mem_force_cache extends $mol_mem_force { + } + $.$mol_mem_force_cache = $mol_mem_force_cache; + class $mol_mem_force_update extends $mol_mem_force { + } + $.$mol_mem_force_update = $mol_mem_force_update; + class $mol_mem_force_fail extends $mol_mem_force_cache { + } + $.$mol_mem_force_fail = $mol_mem_force_fail; +})($ || ($ = {})); +//force.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_mem_cached = $.$mol_atom2_value; + function $mol_mem_persist() { + const atom = $.$mol_atom2.current; + if (!atom) + return; + if (atom.hasOwnProperty('destructor')) + return; + atom.destructor = () => { }; + } + $.$mol_mem_persist = $mol_mem_persist; + function $mol_mem(proto, name, descr) { + const value = descr.value; + const store = new WeakMap(); + Object.defineProperty(proto, name + "()", { + get: function () { + return store.get(this); + } + }); + const get_cache = (host) => { + let cache = store.get(host); + if (cache) + return cache; + let cache2 = new $.$mol_atom2; + cache2.calculate = value.bind(host); + cache2[Symbol.toStringTag] = `${host}.${name}()`; + cache2.abort = () => { + store.delete(host); + cache2.forget(); + return true; + }; + $.$mol_owning_catch(host, cache2); + cache2[$.$mol_object_field] = name; + store.set(host, cache2); + return cache2; + }; + return Object.assign(Object.assign({}, descr || {}), { value(next, force) { + if (next === undefined) { + const cache = get_cache(this); + if (force === $.$mol_mem_force_cache) + cache.obsolete(Number.NaN); + if ($.$mol_atom2.current) + return cache.get(); + else + return $.$mol_fiber.run(() => cache.get()); + } + return $.$mol_fiber.run(() => { + if (force === $.$mol_mem_force_fail) + return get_cache(this).fail(next); + if (force !== $.$mol_mem_force_cache) + next = value.call(this, next); + return get_cache(this).put(next); + }); + } }); + } + $.$mol_mem = $mol_mem; +})($ || ($ = {})); +//mem.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_window extends $.$mol_object { + static size(next, force) { + return next || { + width: self.innerWidth, + height: self.innerHeight, + }; + } + } + __decorate([ + $.$mol_mem + ], $mol_window, "size", null); + $.$mol_window = $mol_window; + self.addEventListener('resize', $.$mol_fiber_root($.$mol_log_group(`$mol_window resize`, () => { + $mol_window.size(undefined, $.$mol_mem_force_cache); + }))); +})($ || ($ = {})); +//window.web.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_dict_key(value) { + if (!value) + return value; + if (typeof value !== 'object') + return value; + if (Array.isArray(value)) + return value.join(' , '); + if (Object.getPrototypeOf(Object.getPrototypeOf(value)) === null) + return JSON.stringify(value); + return value; + } + $.$mol_dict_key = $mol_dict_key; + class $mol_dict extends Map { + get(key) { + return super.get($mol_dict_key(key)); + } + has(key) { + return super.has($mol_dict_key(key)); + } + set(key, value) { + return super.set($mol_dict_key(key), value); + } + delete(key) { + return super.delete($mol_dict_key(key)); + } + forEach(back, context) { + return super.forEach((val, key, dict) => { + if (typeof key === 'string') + key = JSON.parse(key); + return back.call(this, val, key, dict); + }, context); + } + [Symbol.iterator]() { + const iterator = super[Symbol.iterator](); + return { + [Symbol.iterator]() { + return this; + }, + next() { + const iteration = iterator.next(); + if (!iteration.done) { + const key = iteration.value[0]; + if (typeof key === 'string') + iteration.value[0] = JSON.parse(key); + } + return iteration; + } + }; + } + } + $.$mol_dict = $mol_dict; +})($ || ($ = {})); +//dict.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_mem_key(proto, name, descr) { + const value = descr.value; + const store = new WeakMap(); + Object.defineProperty(proto, name + "()", { + get: function () { + return store.get(this); + } + }); + const get_cache = (host, key) => { + let dict = store.get(host); + if (!dict) + store.set(host, dict = new $.$mol_dict); + let cache = dict.get(key); + if (cache) + return cache; + let cache2 = new $.$mol_atom2; + cache2[Symbol.toStringTag] = `${host}.${name}(${JSON.stringify(key)})`; + cache2.calculate = value.bind(host, key); + cache2.abort = () => { + dict.delete(key); + if (dict.size === 0) + store.delete(host); + cache2.forget(); + return true; + }; + $.$mol_owning_catch(host, cache2); + cache2[$.$mol_object_field] = name; + dict.set(key, cache2); + return cache2; + }; + return { + value(key, next, force) { + if (next === undefined) { + const cache = get_cache(this, key); + if (force === $.$mol_mem_force_cache) + cache.obsolete(); + if ($.$mol_atom2.current) + return cache.get(); + else + return $.$mol_fiber.run(() => cache.get()); + } + return $.$mol_fiber.run(() => { + if (force === $.$mol_mem_force_fail) + return get_cache(this, key).fail(next); + if (force !== $.$mol_mem_force_cache) + next = value.call(this, key, next); + return get_cache(this, key).put(next); + }); + } + }; + } + $.$mol_mem_key = $mol_mem_key; +})($ || ($ = {})); +//key.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_atom2_autorun(calculate) { + return $.$mol_atom2.create(atom => { + atom.calculate = calculate; + atom.obsolete_slaves = atom.schedule; + atom.doubt_slaves = atom.schedule; + atom[Symbol.toStringTag] = calculate[Symbol.toStringTag] || calculate.name || '$mol_atom2_autorun'; + atom.schedule(); + }); + } + $.$mol_atom2_autorun = $mol_atom2_autorun; +})($ || ($ = {})); +//autorun.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_defer extends $.$mol_object { + constructor(run) { + super(); + this.run = run; + $mol_defer.add(this); + } + destructor() { + $mol_defer.drop(this); + } + static schedule() { + if (this.timer) + return; + this.timer = this.scheduleNative(() => { + this.timer = null; + this.run(); + }); + } + static unschedule() { + if (!this.timer) + return; + cancelAnimationFrame(this.timer); + this.timer = null; + } + static add(defer) { + this.all.push(defer); + this.schedule(); + } + static drop(defer) { + var index = this.all.indexOf(defer); + if (index >= 0) + this.all.splice(index, 1); + } + static run() { + if (this.all.length === 0) + return; + this.schedule(); + for (var defer; defer = this.all.shift();) + defer.run(); + } + } + $mol_defer.all = []; + $mol_defer.timer = null; + $mol_defer.scheduleNative = (typeof requestAnimationFrame == 'function') + ? handler => requestAnimationFrame(handler) + : handler => setTimeout(handler, 16); + $.$mol_defer = $mol_defer; +})($ || ($ = {})); +//defer.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_after_timeout extends $.$mol_object2 { + constructor(delay, task) { + super(); + this.delay = delay; + this.task = task; + this.id = setTimeout(task, delay); + } + destructor() { + clearTimeout(this.id); + } + } + $.$mol_after_timeout = $mol_after_timeout; +})($ || ($ = {})); +//timeout.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_view_selection extends $.$mol_object { + static focused(next) { + if (next === undefined) + return []; + const parents = []; + let element = next[0]; + while (element) { + parents.push(element); + element = element.parentNode; + } + new $.$mol_defer($.$mol_log2.func(() => { + const element = $.$mol_mem_cached(() => this.focused())[0]; + if (element) + element.focus(); + else + $.$mol_dom_context.blur(); + })); + return parents; + } + static focus(event) { + this.focused([event.target]); + } + static blur(event) { + const element = $.$mol_mem_cached(() => this.focused())[0]; + if (element === event.target) + this.focused([]); + } + } + __decorate([ + $.$mol_mem + ], $mol_view_selection, "focused", null); + __decorate([ + $.$mol_log2.method + ], $mol_view_selection, "focus", null); + __decorate([ + $.$mol_log2.method + ], $mol_view_selection, "blur", null); + $.$mol_view_selection = $mol_view_selection; +})($ || ($ = {})); +//selection.js.map +; +"use strict"; +var $; +(function ($) { + if ($.$mol_dom_context.document) { + $.$mol_dom_context.document.addEventListener('focus', (event) => { + new $.$mol_after_tick($.$mol_fiber_root(() => $.$mol_view_selection.focus(event))); + }, true); + $.$mol_dom_context.document.addEventListener('blur', (event) => { + new $.$mol_after_timeout(0, $.$mol_fiber_root(() => $.$mol_view_selection.blur(event))); + }, true); + } +})($ || ($ = {})); +//selection.web.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_const(value) { + var getter = (() => value); + getter['()'] = value; + getter[Symbol.toStringTag] = value; + return getter; + } + $.$mol_const = $mol_const; +})($ || ($ = {})); +//const.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_dom_render_attributes(el, attrs) { + for (let name in attrs) { + let val = attrs[name]; + if (val === null || val === false) { + if (!el.hasAttribute(name)) + continue; + el.removeAttribute(name); + } + else { + const str = String(val); + if (el.getAttribute(name) === str) + continue; + el.setAttribute(name, str); + } + } + } + $.$mol_dom_render_attributes = $mol_dom_render_attributes; +})($ || ($ = {})); +//attributes.js.map +; +"use strict"; +var $; +(function ($) { + const cacthed = new WeakMap(); + function $mol_fail_catch(error) { + if (cacthed.get(error)) + return false; + cacthed.set(error, true); + return true; + } + $.$mol_fail_catch = $mol_fail_catch; +})($ || ($ = {})); +//catch.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_dom_render_styles(el, styles) { + for (let name in styles) { + let val = styles[name]; + const style = el.style; + const cur = style[name]; + if (typeof val === 'number') { + if (parseFloat(cur) == val) + continue; + style[name] = `${val}px`; + } + if (cur !== val) + style[name] = val; + } + } + $.$mol_dom_render_styles = $mol_dom_render_styles; +})($ || ($ = {})); +//styles.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_dom_render_fields(el, fields) { + for (let key in fields) { + const val = fields[key]; + if (val === undefined) + continue; + el[key] = val; + } + } + $.$mol_dom_render_fields = $mol_dom_render_fields; +})($ || ($ = {})); +//fields.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_dom_render_children(el, childNodes) { + const node_set = new Set(childNodes); + let nextNode = el.firstChild; + for (let view of childNodes) { + if (view == null) + continue; + if (view instanceof $.$mol_dom_context.Node) { + while (true) { + if (!nextNode) { + el.appendChild(view); + break; + } + if (nextNode == view) { + nextNode = nextNode.nextSibling; + break; + } + else { + if (node_set.has(nextNode)) { + el.insertBefore(view, nextNode); + break; + } + else { + const nn = nextNode.nextSibling; + el.removeChild(nextNode); + nextNode = nn; + } + } + } + } + else { + if (nextNode && nextNode.nodeName === '#text') { + const str = String(view); + if (nextNode.nodeValue !== str) + nextNode.nodeValue = str; + nextNode = nextNode.nextSibling; + } + else { + const textNode = $.$mol_dom_context.document.createTextNode(String(view)); + el.insertBefore(textNode, nextNode); + } + } + } + while (nextNode) { + const currNode = nextNode; + nextNode = currNode.nextSibling; + el.removeChild(currNode); + } + } + $.$mol_dom_render_children = $mol_dom_render_children; +})($ || ($ = {})); +//children.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_func_name(func) { + return func.name; + } + $.$mol_func_name = $mol_func_name; + function $mol_func_name_from(target, source) { + Object.defineProperty(target, 'name', { value: source.name }); + return target; + } + $.$mol_func_name_from = $mol_func_name_from; +})($ || ($ = {})); +//name.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_deprecated(message) { + return (host, field, descr) => { + const value = descr.value; + descr.value = function $mol_deprecated_wrapper(...args) { + console.warn(`${host.constructor.name}::${field} is deprecated. ${message}`); + return value.call(this, ...args); + }; + }; + } + $.$mol_deprecated = $mol_deprecated; +})($ || ($ = {})); +//deprecated.js.map +; +"use strict"; +//extract.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_view_visible_width() { + return $.$mol_window.size().width; + } + $.$mol_view_visible_width = $mol_view_visible_width; + function $mol_view_visible_height() { + return $.$mol_window.size().height; + } + $.$mol_view_visible_height = $mol_view_visible_height; + function $mol_view_state_key(suffix) { + return suffix; + } + $.$mol_view_state_key = $mol_view_state_key; + class $mol_view extends $.$mol_object { + static Root(id) { + return new this; + } + autorun() { + return $.$mol_atom2_autorun(() => { + this.dom_tree(); + document.title = this.title(); + return this; + }); + } + static autobind() { + const nodes = $.$mol_dom_context.document.querySelectorAll('[mol_view_root]'); + for (let i = nodes.length - 1; i >= 0; --i) { + const name = nodes.item(i).getAttribute('mol_view_root'); + const View = $[name]; + if (!View) { + console.error(`Can not attach view. Class not found: ${name}`); + continue; + } + const view = View.Root(i); + view.dom_node(nodes.item(i)); + view.autorun(); + } + } + title() { + return this.constructor.toString(); + } + focused(next) { + let node = this.dom_node(); + const value = $.$mol_view_selection.focused(next === undefined ? undefined : (next ? [node] : [])); + return value.indexOf(node) !== -1; + } + state_key(suffix = '') { + return this.$.$mol_view_state_key(suffix); + } + dom_name() { + return this.constructor.toString().replace('$', '') || 'div'; + } + dom_name_space() { return 'http://www.w3.org/1999/xhtml'; } + sub() { + return []; + } + sub_visible() { + return this.sub(); + } + minimal_width() { + const sub = this.sub(); + if (!sub) + return 0; + let min = 0; + sub.forEach(view => { + if (view instanceof $mol_view) { + min = Math.max(min, view.minimal_width()); + } + }); + return min; + } + maximal_width() { + return this.minimal_width(); + } + minimal_height() { + let min = 0; + try { + for (const view of this.sub()) { + if (view instanceof $mol_view) { + min = Math.max(min, view.minimal_height()); + } + } + } + catch (error) { + if ('then' in error) + $.$mol_fail_hidden(error); + } + return min; + } + view_rect() { + if ($.$mol_atom2.current) + this.view_rect_watcher(); + return this.view_rect_cache(); + } + view_rect_cache(next = null) { + return next; + } + view_rect_watcher() { + $mol_view.watchers.add(this); + return { destructor: () => $mol_view.watchers.delete(this) }; + } + dom_id() { + return this.toString(); + } + dom_node(next) { + const node = next || $.$mol_dom_context.document.createElementNS(this.dom_name_space(), this.dom_name()); + const id = this.dom_id(); + node.setAttribute('id', id); + node.toString = $.$mol_const('<#' + id + '>'); + $.$mol_dom_render_attributes(node, this.attr_static()); + const events = this.event(); + for (let event_name in events) { + node.addEventListener(event_name, $.$mol_log2.func($.$mol_fiber_root(events[event_name])), { passive: false }); + } + return node; + } + dom_tree(next) { + const node = this.dom_node(next); + try { + $.$mol_dom_render_attributes(node, { mol_view_error: null }); + for (let plugin of this.plugins()) { + if (plugin instanceof $.$mol_plugin) { + plugin.render(); + } + } + this.render(); + } + catch (error) { + const need_catch = $.$mol_fail_catch(error); + if (need_catch) { + $.$mol_dom_render_attributes(node, { mol_view_error: error.name || error.constructor.name }); + } + if (error instanceof Promise) + $.$mol_fail_hidden(error); + if (need_catch) { + try { + void (node.innerText = error.message); + } + catch (e) { } + console.error(error); + } + } + return node; + } + dom_node_actual() { + const node = this.dom_node(); + const attr = this.attr(); + const style = this.style(); + const fields = this.field(); + $.$mol_dom_render_attributes(node, attr); + $.$mol_dom_render_styles(node, style); + $.$mol_dom_render_fields(node, fields); + return node; + } + render() { + const node = this.dom_node_actual(); + const sub = this.sub_visible(); + const nodes = sub.map(child => { + if (child == null) + return null; + return (child instanceof $mol_view) ? child.dom_node_actual() : String(child); + }); + $.$mol_dom_render_children(node, nodes); + for (const el of sub) + if (el && typeof el === 'object' && 'dom_tree' in el) + el['dom_tree'](); + } + static view_classes() { + const proto = this.prototype; + let current = proto; + const classes = []; + while (current) { + classes.push(current.constructor); + if (!(current instanceof $mol_view)) + break; + current = Object.getPrototypeOf(current); + } + return classes; + } + view_names_owned() { + const names = []; + let owner = $.$mol_owning_get(this, $mol_view); + if (owner instanceof $mol_view) { + const suffix = this[$.$mol_object_field]; + const suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1); + for (let Class of owner.constructor.view_classes()) { + if (suffix in Class.prototype) + names.push($.$mol_func_name(Class) + suffix2); + else + break; + } + for (let prefix of owner.view_names_owned()) { + names.push(prefix + suffix2); + } + } + return names; + } + view_names() { + const names = []; + for (let name of this.view_names_owned()) { + if (names.indexOf(name) < 0) + names.push(name); + } + for (let Class of this.constructor.view_classes()) { + const name = $.$mol_func_name(Class); + if (!name) + continue; + if (names.indexOf(name) < 0) + names.push(name); + } + return names; + } + attr_static() { + let attrs = {}; + for (let name of this.view_names()) + attrs[name.replace(/\$/g, '').replace(/^(?=\d)/, '_').toLowerCase()] = ''; + return attrs; + } + attr() { + return {}; + } + style() { + return {}; + } + field() { + return {}; + } + event() { + return {}; + } + event_async() { + return {}; + } + plugins() { + return []; + } + [$.$mol_dev_format_head]() { + return $.$mol_dev_format_span({}, $.$mol_dev_format_native(this), $.$mol_dev_format_shade('/'), $.$mol_dev_format_auto($.$mol_mem_cached(() => this.sub()))); + } + } + $mol_view.watchers = new Set(); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "autorun", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "focused", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "minimal_width", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "minimal_height", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "view_rect", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "view_rect_cache", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "view_rect_watcher", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "dom_node", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "dom_tree", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "dom_node_actual", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "view_names", null); + __decorate([ + $.$mol_deprecated('Use $mol_view::event instead.') + ], $mol_view.prototype, "event_async", null); + __decorate([ + $.$mol_mem_key + ], $mol_view, "Root", null); + __decorate([ + $.$mol_mem + ], $mol_view, "view_classes", null); + $.$mol_view = $mol_view; +})($ || ($ = {})); +//view.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_style_attach("mol/view/view.css", "[mol_view] {\n\ttransition-property: background-color, height, width, min-height, min-width, max-width, max-height, transform;\n\ttransition-duration: .2s;\n\ttransition-timing-function: ease-out;\n\t-webkit-appearance: none;\n\tword-break: break-word;\n\tbox-sizing: border-box;\n}\n\n[mol_view] > * {\n\tword-break: inherit;\n}\n\n[mol_view_root] {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\theight: 100%;\n\tbox-sizing: border-box;\n\tfont: var(--mol_skin_font);\n\tbackground: var(--mol_theme_back);\n\tcolor: var(--mol_theme_text);\n}\n\n[mol_view][mol_view_error]:not([mol_view_error=\"Promise\"]) {\n\tbackground-image: repeating-linear-gradient(\n\t\t135deg,\n\t\trgba(255,220,220,1),\n\t\trgba(255,220,220,1) 11px,\n\t\trgba(255,255,220,1) 10px,\n\t\trgba(255,255,220,1) 20px\n\t);\n\tbackground-size: 28px 28px;\n\tcolor: black;\n}\n\n@keyframes mol_view_wait_move {\n\tfrom {\n\t\tbackground-position: 0 0;\n\t}\n\tto {\n\t\tbackground-position: 200vmax 0;\n\t}\n}\n\n@keyframes mol_view_wait_show {\n\tto {\n\t\tbackground-image: repeating-linear-gradient(\n\t\t\t45deg,\n\t\t\thsla( 0 , 0% , 50% , .1 ) 0% ,\n\t\t\thsla( 0 , 0% , 50% , 0 ) 5% ,\n\t\t\thsla( 0 , 0% , 50% , 0 ) 45% ,\n\t\t\thsla( 0 , 0% , 50% , .1 ) 50% ,\n\t\t\thsla( 0 , 0% , 50% , 0 ) 55% ,\n\t\t\thsla( 0 , 0% , 50% , 0 ) 95% ,\n\t\t\thsla( 0 , 0% , 50% , .1 ) 100%\n\t\t);\n\t\tbackground-size: 200vmax 200vmax;\n\t}\n}\n\n[mol_view][mol_view_error=\"Promise\"] {\n\tanimation: mol_view_wait_show .5s .5s linear forwards , mol_view_wait_move 1s linear infinite;\n}\n"); +})($ || ($ = {})); +//view.css.js.map +; +"use strict"; +var $; +(function ($) { + if ($.$mol_dom_context.document) { + const event_name = self.cordova ? 'deviceready' : 'DOMContentLoaded'; + $.$mol_dom_context.document.addEventListener(event_name, $.$mol_fiber_root($.$mol_log2.func((event) => { + $.$mol_view.autobind(); + $.$mol_defer.run(); + }))); + function $mol_view_watch() { + $.$mol_fiber_unlimit(() => { + for (const view of $.$mol_view.watchers) { + view.view_rect_cache(view.dom_node().getBoundingClientRect().toJSON()); + } + new $.$mol_after_frame($mol_view_watch); + }); + } + $mol_view_watch(); + } +})($ || ($ = {})); +//view.web.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_string extends $.$mol_view { + dom_name() { + return "input"; + } + enabled() { + return true; + } + debounce() { + return 0; + } + minimal_height() { + return 40; + } + autocomplete() { + return false; + } + field() { + return (Object.assign(Object.assign({}, super.field()), { "disabled": this.disabled(), "value": this.value_changed(), "placeholder": this.hint(), "type": this.type(), "spellcheck": this.spellcheck(), "autocomplete": this.autocomplete_native() })); + } + disabled() { + return false; + } + value_changed(val, force) { + return this.value(val); + } + value(val, force) { + return (val !== void 0) ? val : ""; + } + hint() { + return ""; + } + type(val, force) { + return (val !== void 0) ? val : "text"; + } + spellcheck() { + return false; + } + autocomplete_native() { + return ""; + } + attr() { + return (Object.assign(Object.assign({}, super.attr()), { "maxlength": this.length_max() })); + } + length_max() { + return Infinity; + } + event() { + return (Object.assign(Object.assign({}, super.event()), { "input": (event) => this.event_change(event), "keydown": (event) => this.event_key_press(event) })); + } + event_change(event, force) { + return (event !== void 0) ? event : null; + } + event_key_press(event, force) { + return (event !== void 0) ? event : null; + } + } + __decorate([ + $.$mol_mem + ], $mol_string.prototype, "value_changed", null); + __decorate([ + $.$mol_mem + ], $mol_string.prototype, "value", null); + __decorate([ + $.$mol_mem + ], $mol_string.prototype, "type", null); + __decorate([ + $.$mol_mem + ], $mol_string.prototype, "event_change", null); + __decorate([ + $.$mol_mem + ], $mol_string.prototype, "event_key_press", null); + $.$mol_string = $mol_string; +})($ || ($ = {})); +//string.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + var $$; + (function ($$) { + class $mol_string extends $.$mol_string { + event_change(next) { + if (!next) + return; + this.value(next.target.value); + } + event_key_press(next) { + if (!next) + return; + if (next.keyCode === $.$mol_keyboard_code.enter) { + this.value(next.target.value); + } + } + disabled() { + return !this.enabled(); + } + autocomplete_native() { + return this.autocomplete() ? 'on' : 'off'; + } + } + $$.$mol_string = $mol_string; + })($$ = $.$$ || ($.$$ = {})); +})($ || ($ = {})); +//string.view.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_style_attach("mol/string/string.view.css", "[mol_string] {\n\tbox-sizing: border-box;\n\toutline-offset: 0;\n\tborder: none;\n\tborder-radius: var(--mol_skin_round);\n\twhite-space: nowrap;\n\toverflow: hidden;\n\tpadding: .5rem 1rem;\n\ttext-align: left;\n\tposition: relative;\n\tz-index: 0;\n\tfont: inherit;\n\tflex: 0 1 auto;\n\twidth: 100%;\n\tbackground: var(--mol_theme_field);\n\tcolor: var(--mol_theme_text);\n\tbox-shadow: inset 0 0 0 .5px var(--mol_theme_line);\n\tmargin: 0;\n}\n\n[mol_string]:disabled {\n\tbackground-color: transparent;\n}\n\n[mol_string]:focus {\n\toutline: none;\n\tz-index: 1;\n\tbox-shadow: inset 0 0 0 .5px var(--mol_theme_focus);\n}\n\n[mol_string]::-ms-clear {\n\tdisplay: none;\n}\n"); +})($ || ($ = {})); +//string.view.css.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_button extends $.$mol_view { + enabled() { + return true; + } + minimal_height() { + return 40; + } + click(event, force) { + return (event !== void 0) ? event : null; + } + event_click(event, force) { + return (event !== void 0) ? event : null; + } + event() { + return (Object.assign(Object.assign({}, super.event()), { "click": (event) => this.event_activate(event), "keypress": (event) => this.event_key_press(event) })); + } + event_activate(event, force) { + return (event !== void 0) ? event : null; + } + event_key_press(event, force) { + return (event !== void 0) ? event : null; + } + attr() { + return (Object.assign(Object.assign({}, super.attr()), { "disabled": this.disabled(), "role": "button", "tabindex": this.tab_index(), "title": this.hint() })); + } + disabled() { + return false; + } + tab_index() { + return 0; + } + hint() { + return ""; + } + sub() { + return [this.title()]; + } + } + __decorate([ + $.$mol_mem + ], $mol_button.prototype, "click", null); + __decorate([ + $.$mol_mem + ], $mol_button.prototype, "event_click", null); + __decorate([ + $.$mol_mem + ], $mol_button.prototype, "event_activate", null); + __decorate([ + $.$mol_mem + ], $mol_button.prototype, "event_key_press", null); + $.$mol_button = $mol_button; +})($ || ($ = {})); +//button.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + var $$; + (function ($$) { + class $mol_button extends $.$mol_button { + disabled() { + return !this.enabled(); + } + event_activate(next) { + if (!next) + return; + if (!this.enabled()) + return; + this.event_click(next); + this.click(next); + } + event_key_press(event) { + if (event.keyCode === $.$mol_keyboard_code.enter) { + return this.event_activate(event); + } + } + tab_index() { + return this.enabled() ? super.tab_index() : -1; + } + } + $$.$mol_button = $mol_button; + })($$ = $.$$ || ($.$$ = {})); +})($ || ($ = {})); +//button.view.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_style_attach("mol/button/button.view.css", "[mol_button] {\n\tborder: none;\n\tfont: inherit;\n\tbackground-color: none;\n\tdisplay: inline-flex;\n\tflex-shrink: 0;\n\ttext-decoration: inherit;\n\tcursor: inherit;\n\tposition: relative;\n\tbox-sizing: border-box;\n\tword-break: normal;\n\tcursor: default;\n}\n[mol_button]:focus {\n\toutline: none;\n}\n\n[mol_button_typed] {\n\tjustify-content: center;\n\talign-content: center;\n\talign-items: center;\n\tvertical-align: middle;\n\ttext-align: center;\n\tpadding: .5rem 1rem;\n\tborder-radius: var(--mol_skin_round);\n}\n\n[mol_button_typed][disabled] {\n\tcolor: var(--mol_theme_text);\n\tpointer-events: none;\n}\n\n[mol_button_major] {\n\tbox-shadow: 0 0 0 1px var(--mol_theme_back);\n}\n\n[mol_button_minor] {\n\tcolor: var(--mol_theme_control);\n}\n\n[mol_button_major][disabled] {\n\topacity: .5;\n}\n\n[mol_button_typed]:hover ,\n[mol_button_typed]:focus {\n\tcursor: pointer;\n\tbackground-color: var(--mol_theme_hover);\n}\n"); +})($ || ($ = {})); +//button.view.css.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_button_typed extends $.$mol_button { + } + $.$mol_button_typed = $mol_button_typed; +})($ || ($ = {})); +(function ($) { + class $mol_button_major extends $.$mol_button_typed { + attr() { + return (Object.assign(Object.assign({}, super.attr()), { "mol_theme": "$mol_theme_accent" })); + } + } + $.$mol_button_major = $mol_button_major; +})($ || ($ = {})); +(function ($) { + class $mol_button_minor extends $.$mol_button_typed { + } + $.$mol_button_minor = $mol_button_minor; +})($ || ($ = {})); +//button_types.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_merge_dict(target, source) { + let result = {}; + for (let key in target) + result[key] = target[key]; + for (let key in source) + result[key] = source[key]; + return result; + } + $.$mol_merge_dict = $mol_merge_dict; +})($ || ($ = {})); +//dict.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_state_arg extends $.$mol_object { + constructor(prefix = '') { + super(); + this.prefix = prefix; + } + static href(next, force) { + if (next === undefined) + return $.$mol_dom_context.location.href; + history.replaceState(history.state, $.$mol_dom_context.document.title, next); + return next; + } + static dict(next) { + var href = this.href(next && this.make_link(next)).split(/#/)[1] || ''; + var chunks = href.split(/[\/\?#&;]/g); + var params = {}; + chunks.forEach(chunk => { + if (!chunk) + return; + var vals = chunk.split('=').map(decodeURIComponent); + params[vals.shift()] = vals.join('='); + }); + return params; + } + static dict_cut(except) { + const dict = this.dict(); + const cut = {}; + for (const key in dict) { + if (except.indexOf(key) >= 0) + continue; + cut[key] = dict[key]; + } + return cut; + } + static value(key, next) { + const nextDict = (next === void 0) ? void 0 : $.$mol_merge_dict(this.dict(), { [key]: next }); + const next2 = this.dict(nextDict)[key]; + return (next2 == null) ? null : next2; + } + static link(next) { + return this.make_link($.$mol_merge_dict(this.dict_cut(Object.keys(next)), next)); + } + static make_link(next) { + const chunks = []; + for (let key in next) { + if (null == next[key]) + continue; + const val = next[key]; + chunks.push([key].concat(val ? [val] : []).map(this.encode).join('=')); + } + return new URL('#' + chunks.join('/'), $.$mol_dom_context.location.href).toString(); + } + static encode(str) { + return encodeURIComponent(str).replace(/\(/g, '%28').replace(/\)/g, '%29'); + } + value(key, next) { + return this.constructor.value(this.prefix + key, next); + } + sub(postfix) { + return new this.constructor(this.prefix + postfix + '.'); + } + link(next) { + var prefix = this.prefix; + var dict = {}; + for (var key in next) { + dict[prefix + key] = next[key]; + } + return this.constructor.link(dict); + } + } + __decorate([ + $.$mol_mem + ], $mol_state_arg, "href", null); + __decorate([ + $.$mol_mem + ], $mol_state_arg, "dict", null); + __decorate([ + $.$mol_mem_key + ], $mol_state_arg, "dict_cut", null); + __decorate([ + $.$mol_mem_key + ], $mol_state_arg, "value", null); + $.$mol_state_arg = $mol_state_arg; + self.addEventListener('hashchange', $.$mol_fiber_root($.$mol_log_group('$mol_state_arg hashchange', (event) => { + $mol_state_arg.href($.$mol_dom_context.location.href); + }))); +})($ || ($ = {})); +//arg.web.js.map +; +"use strict"; +//exclude.js.map +; +"use strict"; +//omit.js.map +; +"use strict"; +//class.js.map +; +"use strict"; +//element.js.map +; +"use strict"; +//deep.js.map +; +"use strict"; +//override.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_decor { + constructor(value) { + this.value = value; + } + prefix() { return ''; } + valueOf() { return this.value; } + postfix() { return ''; } + toString() { + return `${this.prefix()}${this.valueOf()}${this.postfix()}`; + } + } + $.$mol_decor = $mol_decor; +})($ || ($ = {})); +//decor.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_style_unit extends $.$mol_decor { + constructor(value, literal) { + super(value); + this.literal = literal; + } + postfix() { + return this.literal; + } + static per(value) { return new $mol_style_unit(value, '%'); } + static px(value) { return new $mol_style_unit(value, 'px'); } + static mm(value) { return new $mol_style_unit(value, 'mm'); } + static cm(value) { return new $mol_style_unit(value, 'cm'); } + static Q(value) { return new $mol_style_unit(value, 'Q'); } + static in(value) { return new $mol_style_unit(value, 'in'); } + static pc(value) { return new $mol_style_unit(value, 'pc'); } + static pt(value) { return new $mol_style_unit(value, 'pt'); } + static cap(value) { return new $mol_style_unit(value, 'cap'); } + static ch(value) { return new $mol_style_unit(value, 'ch'); } + static em(value) { return new $mol_style_unit(value, 'em'); } + static rem(value) { return new $mol_style_unit(value, 'rem'); } + static ex(value) { return new $mol_style_unit(value, 'ex'); } + static ic(value) { return new $mol_style_unit(value, 'ic'); } + static lh(value) { return new $mol_style_unit(value, 'lh'); } + static rlh(value) { return new $mol_style_unit(value, 'rlh'); } + static vh(value) { return new $mol_style_unit(value, 'vh'); } + static vw(value) { return new $mol_style_unit(value, 'vw'); } + static vi(value) { return new $mol_style_unit(value, 'vi'); } + static vb(value) { return new $mol_style_unit(value, 'vb'); } + static vmin(value) { return new $mol_style_unit(value, 'vmin'); } + static vmax(value) { return new $mol_style_unit(value, 'vmax'); } + } + $.$mol_style_unit = $mol_style_unit; +})($ || ($ = {})); +//unit.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_style_func extends $.$mol_decor { + constructor(value, name) { + super(value); + this.name = name; + } + prefix() { return this.name + '('; } + postfix() { return ')'; } + static calc(value) { + return new $mol_style_func(value, 'calc'); + } + static fit_content(value) { + return new $mol_style_func(value, 'fit-content'); + } + } + $.$mol_style_func = $mol_style_func; +})($ || ($ = {})); +//func.js.map +; +"use strict"; +//properties.js.map +; +"use strict"; +//definition.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_style_sheet(Component, config) { + let rules = []; + const make_class = (prefix, suffix, config) => { + const props = []; + for (const key of Object.keys(config).reverse()) { + if (/^[a-z]/.test(key)) { + const name = key.replace(/[A-Z]/g, letter => '-' + letter.toLowerCase()); + const val = config[key]; + if (val.constructor === Object) { + for (let suffix in val) { + props.push(`\t${name}-${suffix}: ${val[suffix]};\n`); + } + } + else { + props.push(`\t${name}: ${val};\n`); + } + } + else if (/^[A-Z]/.test(key)) { + make_class(prefix + '_' + key.toLowerCase(), suffix, config[key]); + } + else if (key[0] === '$') { + make_class(prefix + '] ' + key.replace('$', '['), suffix, config[key]); + } + else if (key === '>') { + const types = config[key]; + for (let type in types) { + make_class(prefix + '] > ' + type.replace('$', '['), suffix, types[type]); + } + } + else if (key === '@') { + const attrs = config[key]; + for (let name in attrs) { + for (let val in attrs[name]) { + make_class(prefix, suffix + '[' + name + '=' + JSON.stringify(val) + ']', attrs[name][val]); + } + } + } + else if (key === '@media') { + const media = config[key]; + for (let query in media) { + rules.push('}\n'); + make_class(prefix, suffix, media[query]); + rules.push(`${key} ${query} {\n`); + } + } + else { + make_class(prefix, suffix + key, config[key]); + } + } + if (props.length) { + rules.push(`${prefix}${suffix} {\n${props.reverse().join('')}}\n`); + } + }; + make_class(Component.name.replace('$', '['), ']', config); + return rules.reverse().join(''); + } + $.$mol_style_sheet = $mol_style_sheet; +})($ || ($ = {})); +//sheet.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_style_define(Component, config) { + return $.$mol_style_attach(Component.name, $.$mol_style_sheet(Component, config)); + } + $.$mol_style_define = $mol_style_define; +})($ || ($ = {})); +//define.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_link extends $.$mol_view { + dom_name() { + return "a"; + } + attr() { + return (Object.assign(Object.assign({}, super.attr()), { "href": this.uri(), "title": this.hint(), "target": this.target(), "download": this.file_name(), "mol_link_current": this.current() })); + } + uri() { + return ""; + } + hint() { + return ""; + } + target() { + return "_self"; + } + file_name() { + return ""; + } + current() { + return false; + } + sub() { + return [this.title()]; + } + arg() { + return ({}); + } + event() { + return (Object.assign(Object.assign({}, super.event()), { "click": (event) => this.click(event) })); + } + click(event, force) { + return this.event_click(event); + } + event_click(event, force) { + return (event !== void 0) ? event : null; + } + } + __decorate([ + $.$mol_mem + ], $mol_link.prototype, "click", null); + __decorate([ + $.$mol_mem + ], $mol_link.prototype, "event_click", null); + $.$mol_link = $mol_link; +})($ || ($ = {})); +//link.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + var $$; + (function ($$) { + class $mol_link extends $.$mol_link { + uri() { + return new this.$.$mol_state_arg(this.state_key()).link(this.arg()); + } + current() { + if (this.uri() === this.$.$mol_state_arg.href()) + return true; + const args = this.arg(); + const keys = Object.keys(args).filter(key => args[key] != null); + if (keys.length === 0) + return false; + for (const key of keys) { + if (this.$.$mol_state_arg.value(key) !== args[key]) + return false; + } + return true; + } + event_click(event) { + if (!event || event.defaultPrevented) + return; + this.focused(false); + } + file_name() { + return null; + } + minimal_height() { + return Math.max(super.minimal_height() || 40); + } + } + __decorate([ + $.$mol_mem + ], $mol_link.prototype, "uri", null); + __decorate([ + $.$mol_mem + ], $mol_link.prototype, "current", null); + $$.$mol_link = $mol_link; + })($$ = $.$$ || ($.$$ = {})); +})($ || ($ = {})); +//link.view.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_style_define($.$mol_link, { + textDecoration: 'none', + color: "var(--mol_theme_control)", + stroke: 'currentColor', + cursor: 'pointer', + padding: '.5rem', + boxSizing: 'border-box', + position: 'relative', + ':hover': { + backgroundColor: "var(--mol_theme_hover)", + }, + ':focus': { + outline: 'none', + backgroundColor: "var(--mol_theme_hover)", + }, + '@': { + mol_link_current: { + 'true': { + backgroundColor: "var(--mol_theme_current)", + color: "var(--mol_theme_text)", + } + } + }, + }); +})($ || ($ = {})); +//link.view.css.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_style_attach("mol/check/check.css", "[mol_check] {\n\tflex: 0 0 auto;\n\tjustify-content: flex-start;\n\talign-content: center;\n\talign-items: flex-start;\n\tborder: none;\n\tfont-weight: inherit;\n\tbox-shadow: none;\n\ttext-align: left;\n\tpadding: .5rem;\n\tdisplay: inline-flex;\n\tflex-wrap: nowrap;\n}\n"); +})($ || ($ = {})); +//check.css.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_check extends $.$mol_button_minor { + attr() { + return (Object.assign(Object.assign({}, super.attr()), { "mol_check_checked": this.checked(), "aria-checked": this.checked(), "role": "checkbox" })); + } + checked(val, force) { + return (val !== void 0) ? val : false; + } + sub() { + return [this.Icon(), this.label()]; + } + Icon() { + return null; + } + label() { + return [this.Title()]; + } + Title() { + return ((obj) => { + obj.sub = () => [this.title()]; + return obj; + })(new this.$.$mol_view()); + } + title() { + return ""; + } + } + __decorate([ + $.$mol_mem + ], $mol_check.prototype, "checked", null); + __decorate([ + $.$mol_mem + ], $mol_check.prototype, "Title", null); + $.$mol_check = $mol_check; +})($ || ($ = {})); +//check.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + var $$; + (function ($$) { + class $mol_check extends $.$mol_check { + click(next) { + this.checked(!this.checked()); + if (next) + next.preventDefault(); + } + sub() { + return [ + ...$.$mol_maybe(this.Icon()), + ...this.label(), + ]; + } + } + $$.$mol_check = $mol_check; + })($$ = $.$$ || ($.$$ = {})); +})($ || ($ = {})); +//check.view.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_state_local extends $.$mol_object { + static native() { + if (this['native()']) + return this['native()']; + check: try { + const native = $.$mol_dom_context.localStorage; + if (!native) + break check; + native.setItem('', ''); + native.removeItem(''); + return this['native()'] = native; + } + catch (error) { + console.warn(error); + } + return this['native()'] = { + getItem(key) { + return this[':' + key]; + }, + setItem(key, value) { + this[':' + key] = value; + }, + removeItem(key) { + this[':' + key] = void 0; + } + }; + } + static value(key, next, force) { + if (next === void 0) + return JSON.parse(this.native().getItem(key) || 'null'); + if (next === null) + this.native().removeItem(key); + else + this.native().setItem(key, JSON.stringify(next)); + return next; + } + prefix() { return ''; } + value(key, next) { + return $mol_state_local.value(this.prefix() + '.' + key, next); + } + } + __decorate([ + $.$mol_mem_key + ], $mol_state_local, "value", null); + $.$mol_state_local = $mol_state_local; +})($ || ($ = {})); +//local.js.map +; +"use strict"; +var $; +(function ($) { + self.addEventListener('storage', event => { + if (!event.key) + return; + $.$mol_state_local.value(event.key, undefined, $.$mol_mem_force_cache); + }); +})($ || ($ = {})); +//local.web.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_state_session extends $.$mol_object { + static native() { + if (this['native()']) + return this['native()']; + check: try { + const native = $.$mol_dom_context.sessionStorage; + if (!native) + break check; + native.setItem('', ''); + native.removeItem(''); + return this['native()'] = native; + } + catch (error) { + console.warn(error); + } + return this['native()'] = { + getItem(key) { + return this[':' + key]; + }, + setItem(key, value) { + this[':' + key] = value; + }, + removeItem(key) { + this[':' + key] = void 0; + } + }; + } + static value(key, next) { + if (next === void 0) + return JSON.parse(this.native().getItem(key) || 'null'); + if (next === null) + this.native().removeItem(key); + else + this.native().setItem(key, JSON.stringify(next)); + return next; + } + prefix() { return ''; } + value(key, next) { + return $mol_state_session.value(this.prefix() + '.' + key, next); + } + } + __decorate([ + $.$mol_mem_key + ], $mol_state_session, "value", null); + $.$mol_state_session = $mol_state_session; +})($ || ($ = {})); +//session.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_memo extends $.$mol_wrapper { + static wrap(task) { + const store = new WeakMap(); + return function (next) { + var _a; + if (next === undefined && store.has(this)) + return store.get(this); + const val = (_a = task.call(this, next)) !== null && _a !== void 0 ? _a : next; + store.set(this, val); + return val; + }; + } + } + $.$mol_memo = $mol_memo; +})($ || ($ = {})); +//memo.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_scroll extends $.$mol_view { + minimal_height() { + return 0; + } + _event_scroll_timer(val, force) { + return (val !== void 0) ? val : null; + } + field() { + return (Object.assign(Object.assign({}, super.field()), { "scrollTop": this.scroll_top(), "scrollLeft": this.scroll_left() })); + } + scroll_top(val, force) { + return (val !== void 0) ? val : 0; + } + scroll_left(val, force) { + return (val !== void 0) ? val : 0; + } + event() { + return (Object.assign(Object.assign({}, super.event()), { "scroll": (event) => this.event_scroll(event) })); + } + event_scroll(event, force) { + return (event !== void 0) ? event : null; + } + } + __decorate([ + $.$mol_mem + ], $mol_scroll.prototype, "_event_scroll_timer", null); + __decorate([ + $.$mol_mem + ], $mol_scroll.prototype, "scroll_top", null); + __decorate([ + $.$mol_mem + ], $mol_scroll.prototype, "scroll_left", null); + __decorate([ + $.$mol_mem + ], $mol_scroll.prototype, "event_scroll", null); + $.$mol_scroll = $mol_scroll; +})($ || ($ = {})); +//scroll.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + var $$; + (function ($$) { + class $mol_scroll extends $.$mol_scroll { + scroll_top(next) { + return $.$mol_state_session.value(`${this}.scroll_top()`, next) || 0; + } + scroll_left(next) { + return $.$mol_state_session.value(`${this}.scroll_left()`, next) || 0; + } + _event_scroll_timer(next) { + return next; + } + event_scroll(next) { + if (this._event_scroll_timer()) + this._event_scroll_timer().destructor(); + const el = this.dom_node(); + this._event_scroll_timer(new $.$mol_after_frame($.$mol_fiber_solid.func(() => { + this.scroll_top(Math.max(0, el.scrollTop)); + this.scroll_left(Math.max(0, el.scrollLeft)); + }))); + } + } + __decorate([ + $.$mol_mem + ], $mol_scroll.prototype, "scroll_top", null); + __decorate([ + $.$mol_mem + ], $mol_scroll.prototype, "scroll_left", null); + __decorate([ + $.$mol_memo.method + ], $mol_scroll.prototype, "_event_scroll_timer", null); + $$.$mol_scroll = $mol_scroll; + })($$ = $.$$ || ($.$$ = {})); +})($ || ($ = {})); +//scroll.view.js.map +; +"use strict"; +var $; +(function ($) { + var $$; + (function ($$) { + $.$mol_style_define($$.$mol_scroll, { + display: 'block', + overflow: 'auto', + flex: { + grow: 1, + shrink: 1, + basis: 'auto', + }, + alignSelf: 'stretch', + boxSizing: 'border-box', + willChange: 'scroll-position', + transform: 'translateZ(0)', + boxShadow: `inset 0 0 0 .5px ${"var(--mol_theme_line)"}`, + maxHeight: '100%', + maxWidth: '100%', + webkitOverflowScrolling: 'touch', + '::-webkit-scrollbar': { + width: '.5rem', + height: '.5rem', + }, + '::-webkit-scrollbar-corner': { + background: "var(--mol_theme_line)", + }, + '::-webkit-scrollbar-track': { + background: "var(--mol_theme_line)", + }, + '::-webkit-scrollbar-thumb': { + background: "var(--mol_theme_control)", + }, + '@media': { + 'print': { + overflow: 'visible', + }, + }, + }); + })($$ = $.$$ || ($.$$ = {})); +})($ || ($ = {})); +//scroll.view.css.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_list extends $.$mol_view { + render_visible_only() { + return true; + } + render_over() { + return 0; + } + sub() { + return this.rows(); + } + rows() { + return []; + } + Empty() { + return ((obj) => { + return obj; + })(new this.$.$mol_view()); + } + Gap_before() { + return ((obj) => { + obj.style = () => ({ + "paddingTop": this.gap_before(), + }); + return obj; + })(new this.$.$mol_view()); + } + gap_before() { + return 0; + } + Gap_after() { + return ((obj) => { + obj.style = () => ({ + "paddingTop": this.gap_after(), + }); + return obj; + })(new this.$.$mol_view()); + } + gap_after() { + return 0; + } + view_window() { + return [0, 0]; + } + } + __decorate([ + $.$mol_mem + ], $mol_list.prototype, "Empty", null); + __decorate([ + $.$mol_mem + ], $mol_list.prototype, "Gap_before", null); + __decorate([ + $.$mol_mem + ], $mol_list.prototype, "Gap_after", null); + $.$mol_list = $mol_list; +})($ || ($ = {})); +//list.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + var $$; + (function ($$) { + class $mol_list extends $.$mol_list { + sub() { + const rows = this.rows(); + return (rows.length === 0) ? [this.Empty()] : rows; + } + render_visible_only() { + if (!$.$mol_dom_context.CSS) + return false; + return $.$mol_dom_context.CSS.supports('overflow-anchor:auto'); + } + view_window() { + var _a, _b, _c, _d, _e, _f; + const kids = this.sub(); + if (kids.length < 3) + return [0, kids.length]; + let [min, max] = (_a = $.$mol_mem_cached(() => this.view_window())) !== null && _a !== void 0 ? _a : [0, 0]; + let max2 = max = Math.min(max, kids.length); + let min2 = min = Math.max(0, Math.min(min, max - 1)); + const anchoring = this.render_visible_only(); + const window_height = this.$.$mol_window.size().height; + const over = Math.ceil(window_height * this.render_over()); + const limit_top = -over; + const limit_bottom = window_height + over; + const rect = this.view_rect(); + const gap_before = (_b = $.$mol_mem_cached(() => this.gap_before())) !== null && _b !== void 0 ? _b : 0; + const gap_after = (_c = $.$mol_mem_cached(() => this.gap_after())) !== null && _c !== void 0 ? _c : 0; + let top = ((_d = rect === null || rect === void 0 ? void 0 : rect.top) !== null && _d !== void 0 ? _d : 0) + gap_before; + let bottom = ((_e = rect === null || rect === void 0 ? void 0 : rect.bottom) !== null && _e !== void 0 ? _e : 0) - gap_after; + if (top <= limit_top && bottom >= limit_bottom) { + return [min2, max2]; + } + if (anchoring && ((bottom < limit_top) || (top > limit_bottom))) { + min = 0; + top = ((_f = rect === null || rect === void 0 ? void 0 : rect.top) !== null && _f !== void 0 ? _f : 0); + while (min < (kids.length - 1)) { + const height = kids[min].minimal_height(); + if (top + height >= limit_top) + break; + top += height; + ++min; + } + min2 = min; + max2 = max = min; + bottom = top; + } + let top2 = top; + let bottom2 = bottom; + if (anchoring && (top <= limit_top)) { + min2 = max; + top2 = bottom; + } + if (bottom >= limit_bottom) { + max2 = min; + bottom2 = top; + } + while (bottom2 < limit_bottom && max2 < kids.length) { + bottom2 += kids[max2].minimal_height(); + ++max2; + } + while (anchoring && ((top2 >= limit_top) && (min2 > 0))) { + --min2; + top2 -= kids[min2].minimal_height(); + } + return [min2, max2]; + } + gap_before() { + const skipped = this.sub().slice(0, this.view_window()[0]); + return Math.max(0, skipped.reduce((sum, view) => sum + view.minimal_height(), 0)); + } + gap_after() { + const skipped = this.sub().slice(this.view_window()[1]); + return Math.max(0, skipped.reduce((sum, view) => sum + view.minimal_height(), 0)); + } + sub_visible() { + var sub = this.sub(); + const next = sub.slice(...this.view_window()); + if (this.gap_before()) + next.unshift(this.Gap_before()); + if (this.gap_after()) + next.push(this.Gap_after()); + return next; + } + minimal_height() { + return this.sub().reduce((sum, view) => sum + view.minimal_height(), 0); + } + } + __decorate([ + $.$mol_mem + ], $mol_list.prototype, "sub", null); + __decorate([ + $.$mol_mem + ], $mol_list.prototype, "view_window", null); + __decorate([ + $.$mol_mem + ], $mol_list.prototype, "gap_before", null); + __decorate([ + $.$mol_mem + ], $mol_list.prototype, "gap_after", null); + __decorate([ + $.$mol_mem + ], $mol_list.prototype, "sub_visible", null); + __decorate([ + $.$mol_mem + ], $mol_list.prototype, "minimal_height", null); + $$.$mol_list = $mol_list; + })($$ = $.$$ || ($.$$ = {})); +})($ || ($ = {})); +//list.view.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_style_attach("mol/list/list.view.css", "[mol_list] {\n\twill-change: contents;\n\tdisplay: block;\n\t/* display: flex;\n\tflex-direction: column;\n\talign-items: stretch;\n\talign-content: stretch; */\n\ttransition: none;\n}\n\n[mol_list_gap_before] ,\n[mol_list_gap_after] {\n\tdisplay: block !important;\n\tflex: none;\n\ttransition: none;\n\toverflow-anchor: none;\n}\n\n[mol_list] > * {\n\tdisplay: block;\n}\n"); +})($ || ($ = {})); +//list.view.css.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_style_attach("mol/bar/bar.view.css", "[mol_bar] {\n\tdisplay: flex;\n\tbox-shadow: inset 0 0 0 .5px var(--mol_theme_line);\n\tborder-radius: var(--mol_skin_round);\n}\n\n[mol_bar] > * {\n\tborder-radius: 0;\n}\n\n[mol_bar] > *:first-child {\n\tborder-top-left-radius: var(--mol_skin_round);\n\tborder-bottom-left-radius: var(--mol_skin_round);\n}\n\n[mol_bar] > *:not(:first-child) {\n\tmargin-left: 1px;\n}\n\n[mol_bar] > *:last-child {\n\tborder-top-right-radius: var(--mol_skin_round);\n\tborder-bottom-right-radius: var(--mol_skin_round);\n}\n"); +})($ || ($ = {})); +//bar.view.css.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_bar extends $.$mol_view { + } + $.$mol_bar = $mol_bar; +})($ || ($ = {})); +//bar.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_state_time extends $.$mol_object { + static now(precision = 0, next) { + if (precision > 0) { + new $.$mol_after_timeout(precision, $.$mol_atom2.current.fresh); + } + else { + new $.$mol_after_frame($.$mol_atom2.current.fresh); + } + return Date.now(); + } + } + __decorate([ + $.$mol_mem_key + ], $mol_state_time, "now", null); + $.$mol_state_time = $mol_state_time; +})($ || ($ = {})); +//time.js.map +; +"use strict"; +var $; +(function ($) { + let canvas; + function $mol_font_canvas(next = canvas) { + if (!next) + next = $.$mol_dom_context.document.createElement('canvas').getContext('2d'); + return canvas = next; + } + $.$mol_font_canvas = $mol_font_canvas; +})($ || ($ = {})); +//canvas.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_font_measure(size, face, text) { + const canvas = $.$mol_font_canvas(); + canvas.font = size + 'px ' + face; + return canvas.measureText(text).width; + } + $.$mol_font_measure = $mol_font_measure; +})($ || ($ = {})); +//measure.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_svg extends $.$mol_view { + dom_name() { + return "svg"; + } + dom_name_space() { + return "http://www.w3.org/2000/svg"; + } + text_width(text, force) { + return (text !== void 0) ? text : 0; + } + font_size() { + return 16; + } + font_family() { + return ""; + } + } + __decorate([ + $.$mol_mem + ], $mol_svg.prototype, "text_width", null); + $.$mol_svg = $mol_svg; +})($ || ($ = {})); +//svg.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + var $$; + (function ($$) { + class $mol_svg extends $.$mol_svg { + computed_style() { + const win = this.$.$mol_dom_context; + const style = win.getComputedStyle(this.dom_node()); + if (!style['font-size']) + $.$mol_state_time.now(); + return style; + } + font_size() { + return parseInt(this.computed_style()['font-size']) || 16; + } + font_family() { + return this.computed_style()['font-family']; + } + text_width(text) { + return $.$mol_font_measure(this.font_size(), this.font_family(), text); + } + } + __decorate([ + $.$mol_mem + ], $mol_svg.prototype, "computed_style", null); + __decorate([ + $.$mol_mem + ], $mol_svg.prototype, "font_size", null); + __decorate([ + $.$mol_mem + ], $mol_svg.prototype, "font_family", null); + $$.$mol_svg = $mol_svg; + })($$ = $.$$ || ($.$$ = {})); +})($ || ($ = {})); +//svg.view.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_style_attach("mol/svg/root/root.view.css", "[mol_svg_root] {\n\toverflow: hidden;\n}\n"); +})($ || ($ = {})); +//root.view.css.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_svg_root extends $.$mol_svg { + dom_name() { + return "svg"; + } + attr() { + return (Object.assign(Object.assign({}, super.attr()), { "viewBox": this.view_box(), "preserveAspectRatio": this.aspect() })); + } + view_box() { + return "0 0 100 100"; + } + aspect() { + return "xMidYMid"; + } + } + $.$mol_svg_root = $mol_svg_root; +})($ || ($ = {})); +//root.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_svg_path extends $.$mol_svg { + dom_name() { + return "path"; + } + attr() { + return (Object.assign(Object.assign({}, super.attr()), { "d": this.geometry() })); + } + geometry() { + return ""; + } + } + $.$mol_svg_path = $mol_svg_path; +})($ || ($ = {})); +//path.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_style_attach("mol/icon/icon.view.css", "[mol_icon] {\n\tfill: currentColor;\n\tstroke: none;\n\twidth: 1em;\n\theight: 1em;\n\tflex: 0 0 auto;\n\tvertical-align: -.1em;\n\twill-change: transform;\n}\n"); +})($ || ($ = {})); +//icon.view.css.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_icon extends $.$mol_svg_root { + view_box() { + return "0 0 24 24"; + } + minimal_width() { + return 16; + } + minimal_height() { + return 16; + } + sub() { + return [this.Path()]; + } + Path() { + return ((obj) => { + obj.geometry = () => this.path(); + return obj; + })(new this.$.$mol_svg_path()); + } + path() { + return ""; + } + } + __decorate([ + $.$mol_mem + ], $mol_icon.prototype, "Path", null); + $.$mol_icon = $mol_icon; +})($ || ($ = {})); +//icon.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_icon_alert extends $.$mol_icon { + path() { + return "M13,14H11V10H13M13,18H11V16H13M1,21H23L12,2L1,21Z"; + } + } + $.$mol_icon_alert = $mol_icon_alert; +})($ || ($ = {})); +//alert.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_icon_alert_circle extends $.$mol_icon { + path() { + return "M13,13H11V7H13M13,17H11V15H13M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2Z"; + } + } + $.$mol_icon_alert_circle = $mol_icon_alert_circle; +})($ || ($ = {})); +//circle.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_style_attach("hyoo/todomvc/todomvc.css", "[hyoo_todomvc] {\n\talign-self: stretch;\n\twidth: 100%;\n\tmargin: 0;\n\ttransition: none;\n}\n\n[hyoo_todomvc] [mol_string] ,\n[hyoo_todomvc] [mol_string]:focus ,\n[hyoo_todomvc] [mol_string]:hover ,\n[hyoo_todomvc] [mol_button] ,\n[hyoo_todomvc] [mol_button]:focus ,\n[hyoo_todomvc] [mol_button]:hover ,\n[hyoo_todomvc] [mol_link] ,\n[hyoo_todomvc] [mol_link]:focus ,\n[hyoo_todomvc] [mol_link]:hover {\n\tbox-shadow: none;\n\tbackground-color: transparent;\n}\n\n[hyoo_todomvc] [mol_link_current] {\n\tcolor: black;\n}\n\n[hyoo_todomvc] [mol_link]:not([mol_link_current]):hover ,\n[hyoo_todomvc] [mol_link]:not([mol_link_current]):focus {\n\ttext-decoration: underline;\n}\n\n[hyoo_todomvc_head_complete] {\n\tflex: 0 0 4rem;\n\ttransform: rotate( 90deg );\n\talign-items: center;\n\topacity: .5;\n\tpadding: 0;\n\tjustify-content: center;\n}\n[hyoo_todomvc_head_complete]:disabled {\n\tvisibility: hidden;\n}\n[hyoo_todomvc_head_complete][mol_check_checked] {\n\topacity: 1;\n}\n\n[hyoo_todomvc_add] {\n\tpadding: 0;\n\tflex: 1 1 auto;\n}\n\n[hyoo_todomvc_list] {\n\tfont-size: 1.5rem;\n\ttransition: none;\n}\n\n[hyoo_todomvc_page] {\n\tflex: 1 1 auto;\n\ttransition: none;\n}\n\n[hyoo_todomvc_panel] {\n\tbox-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1);\n\tmax-width: 38rem;\n\t--mol_theme_back: white;\n\t--mol_theme_text: black;\n\tbackground-color: var(--mol_theme_back);\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 0 auto 2rem;\n\ttransition: none;\n}\n\n[hyoo_todomvc_head] {\n\tfont-size: 1.5rem;\n\tpadding: 0;\n\tdisplay: flex;\n\theight: 4rem;\n}\n\n[hyoo_todomvc_title] {\n\tword-break: normal;\n\tdisplay: block;\n\tpadding: .25rem;\n\tfont-size: 7rem;\n\tfont-weight: 100;\n\ttext-align: center;\n\tcolor: rgba(275, 147, 147, 0.2);\n\ttext-rendering: optimizeLegibility;\n\ttext-transform: lowercase;\n}\n\n[hyoo_todomvc_task_row] {\n\tdisplay: flex;\n\tbackground-color: white;\n\tbox-shadow: 0 -1px 0 0 #ededed;\n\theight: 4rem;\n}\n\n[hyoo_todomvc_task_row_complete] {\n\tflex: 0 0 4rem;\n\tpadding: 1rem;\n\tbackground: no-repeat center center url('hyoo/todomvc/todomvc_active.svg');\n}\n[hyoo_todomvc_task_row_complete][mol_check_checked] {\n\tbackground: no-repeat center center url('hyoo/todomvc/todomvc_completed.svg');\n}\n\n[hyoo_todomvc_task_row_title] {\n\tpadding: 0;\n\tflex: 1 1 auto;\n}\n\n[hyoo_todomvc_task_row_completed] [hyoo_todomvc_task_row_title] {\n\tcolor: #d9d9d9;\n\ttext-decoration: line-through;\n}\n\n[hyoo_todomvc_task_row_drop] {\n\tfont-size: 1.25rem;\n\tflex: 0 04rem;\n}\n[hyoo_todomvc_task_row]:not(:hover) [hyoo_todomvc_task_row_drop]:not(:focus) {\n\topacity: 0;\n\tcolor: #cc9a9a;\n}\n\n[hyoo_todomvc_foot] {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: baseline;\n\tpadding: .5rem 1rem;\n\tcolor: #777;\n\tfont-size: .85rem;\n\tborder-top: 1px solid #ededed;\n\tbox-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2);\n}\n\n[hyoo_todomvc_pending] {\n\tpadding: .25rem;\n\tflex: 0 1 6rem;\n}\n\n[hyoo_todomvc_filter] {\n\tflex: 1 100 auto;\n\tdisplay: flex;\n\tjustify-content: center;\n\tmargin: .25rem;\n\tbox-shadow: none;\n}\n\n[hyoo_todomvc_sweep] {\n\tflex: 0 1 auto;\n\tpadding: .25rem;\n}\n[hyoo_todomvc_sweep][disabled] {\n\tvisibility: hidden;\n}\n\n[hyoo_todomvc_sweep]:hover ,\n[hyoo_todomvc_sweep]:focus {\n\ttext-decoration: underline;\n}\n"); +})($ || ($ = {})); +//todomvc.css.js.map +; +"use strict"; +var $; +(function ($) { + class $hyoo_todomvc extends $.$mol_scroll { + title() { + return "Todos"; + } + sub() { + return [this.Page()]; + } + Page() { + return ((obj) => { + obj.rows = () => [this.Title(), this.Panel()]; + return obj; + })(new this.$.$mol_list()); + } + Title() { + return ((obj) => { + obj.minimal_height = () => 176; + obj.sub = () => [this.title()]; + return obj; + })(new this.$.$mol_view()); + } + Panel() { + return ((obj) => { + obj.rows = () => this.panels(); + return obj; + })(new this.$.$mol_list()); + } + panels() { + return [this.Head(), this.List(), this.Foot()]; + } + Head() { + return ((obj) => { + obj.minimal_height = () => 64; + obj.sub = () => this.Head_content(); + return obj; + })(new this.$.$mol_view()); + } + Head_content() { + return [this.Head_complete(), this.Add()]; + } + Head_complete() { + return ((obj) => { + obj.enabled = () => this.head_complete_enabled(); + obj.checked = (val) => this.completed_all(val); + obj.title = () => "❯"; + return obj; + })(new this.$.$mol_check()); + } + head_complete_enabled() { + return false; + } + completed_all(val, force) { + return (val !== void 0) ? val : false; + } + Add() { + return ((obj) => { + obj.value = (val) => this.task_title_new(val); + obj.done = (event) => this.add(event); + return obj; + })(new this.$.$hyoo_todomvc_add()); + } + task_title_new(val, force) { + return (val !== void 0) ? val : ""; + } + add(event, force) { + return (event !== void 0) ? event : null; + } + List() { + return ((obj) => { + obj.rows = () => this.task_rows(); + return obj; + })(new this.$.$mol_list()); + } + task_rows() { + return []; + } + Foot() { + return ((obj) => { + obj.sub = () => this.foot_content(); + return obj; + })(new this.$.$mol_view()); + } + foot_content() { + return [this.Pending(), this.Filter(), this.Sweep()]; + } + Pending() { + return ((obj) => { + obj.sub = () => [this.pending_message()]; + return obj; + })(new this.$.$mol_view()); + } + pending_message() { + return "0 items left "; + } + Filter() { + return ((obj) => { + obj.sub = () => this.filterOptions(); + return obj; + })(new this.$.$mol_bar()); + } + filterOptions() { + return [this.Filter_all(), this.Filter_active(), this.Filter_completed()]; + } + Filter_all() { + return ((obj) => { + obj.sub = () => [this.filter_all_label()]; + obj.arg = () => ({ + "completed": null, + }); + return obj; + })(new this.$.$mol_link()); + } + filter_all_label() { + return "All"; + } + Filter_active() { + return ((obj) => { + obj.sub = () => [this.filter_active_label()]; + obj.arg = () => ({ + "completed": "false", + }); + return obj; + })(new this.$.$mol_link()); + } + filter_active_label() { + return "Active"; + } + Filter_completed() { + return ((obj) => { + obj.sub = () => [this.filter_completed_label()]; + obj.arg = () => ({ + "completed": "true", + }); + return obj; + })(new this.$.$mol_link()); + } + filter_completed_label() { + return "Completed"; + } + Sweep() { + return ((obj) => { + obj.enabled = () => this.sweep_enabled(); + obj.click = (event) => this.sweep(event); + obj.sub = () => [this.sweep_label()]; + return obj; + })(new this.$.$mol_button_minor()); + } + sweep_enabled() { + return true; + } + sweep(event, force) { + return (event !== void 0) ? event : null; + } + sweep_label() { + return "Clear completed"; + } + Task_row(id) { + return ((obj) => { + obj.completed = (val) => this.task_completed(id, val); + obj.title = (val) => this.task_title(id, val); + obj.drop = (event) => this.task_drop(id, event); + return obj; + })(new this.$.$hyoo_todomvc_task_row()); + } + task_completed(id, val, force) { + return (val !== void 0) ? val : false; + } + task_title(id, val, force) { + return (val !== void 0) ? val : ""; + } + task_drop(id, event, force) { + return (event !== void 0) ? event : null; + } + } + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Page", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Title", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Panel", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Head", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Head_complete", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "completed_all", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Add", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "task_title_new", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "add", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "List", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Foot", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Pending", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Filter", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Filter_all", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Filter_active", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Filter_completed", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Sweep", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "sweep", null); + __decorate([ + $.$mol_mem_key + ], $hyoo_todomvc.prototype, "Task_row", null); + __decorate([ + $.$mol_mem_key + ], $hyoo_todomvc.prototype, "task_completed", null); + __decorate([ + $.$mol_mem_key + ], $hyoo_todomvc.prototype, "task_title", null); + __decorate([ + $.$mol_mem_key + ], $hyoo_todomvc.prototype, "task_drop", null); + $.$hyoo_todomvc = $hyoo_todomvc; +})($ || ($ = {})); +(function ($) { + class $hyoo_todomvc_add extends $.$mol_string { + hint() { + return "What needs to be done?"; + } + event() { + return (Object.assign(Object.assign({}, super.event()), { "keydown": (event) => this.press(event) })); + } + press(event, force) { + return (event !== void 0) ? event : null; + } + done(event, force) { + return (event !== void 0) ? event : null; + } + } + __decorate([ + $.$mol_mem + ], $hyoo_todomvc_add.prototype, "press", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc_add.prototype, "done", null); + $.$hyoo_todomvc_add = $hyoo_todomvc_add; +})($ || ($ = {})); +(function ($) { + class $hyoo_todomvc_task_row extends $.$mol_view { + minimal_height() { + return 64; + } + sub() { + return [this.Complete(), this.Title(), this.Drop()]; + } + Complete() { + return ((obj) => { + obj.checked = (val) => this.completed(val); + return obj; + })(new this.$.$mol_check()); + } + completed(val, force) { + return (val !== void 0) ? val : false; + } + Title() { + return ((obj) => { + obj.hint = () => this.title_hint(); + obj.value = (val) => this.title(val); + return obj; + })(new this.$.$mol_string()); + } + title_hint() { + return "Task title"; + } + title(val, force) { + return (val !== void 0) ? val : ""; + } + Drop() { + return ((obj) => { + obj.sub = () => ["✖"]; + obj.click = (event) => this.drop(event); + return obj; + })(new this.$.$mol_button_typed()); + } + drop(event, force) { + return (event !== void 0) ? event : null; + } + attr() { + return (Object.assign(Object.assign({}, super.attr()), { "hyoo_todomvc_task_row_completed": this.completed() })); + } + } + __decorate([ + $.$mol_mem + ], $hyoo_todomvc_task_row.prototype, "Complete", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc_task_row.prototype, "completed", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc_task_row.prototype, "Title", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc_task_row.prototype, "title", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc_task_row.prototype, "Drop", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc_task_row.prototype, "drop", null); + $.$hyoo_todomvc_task_row = $hyoo_todomvc_task_row; +})($ || ($ = {})); +(function ($) { + class $my_button_danger extends $.$mol_view { + sub() { + return [this.Icon(), this.title()]; + } + Icon() { + return ((obj) => { + return obj; + })(new this.$.$mol_icon_alert_circle()); + } + } + __decorate([ + $.$mol_mem + ], $my_button_danger.prototype, "Icon", null); + $.$my_button_danger = $my_button_danger; +})($ || ($ = {})); +//todomvc.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + var $$; + (function ($$) { + class $hyoo_todomvc_add extends $.$hyoo_todomvc_add { + press(next) { + switch (next.keyCode) { + case $.$mol_keyboard_code.enter: return this.done(next); + } + } + } + $$.$hyoo_todomvc_add = $hyoo_todomvc_add; + class $hyoo_todomvc extends $.$hyoo_todomvc { + task_ids(next) { + return this.$.$mol_state_local.value(this.state_key('mol-todos'), next) || []; + } + arg_completed() { + return this.$.$mol_state_arg.value(this.state_key('completed')); + } + groups_completed() { + var groups = { 'true': [], 'false': [] }; + for (let id of this.task_ids()) { + var task = this.task(id); + groups[String(task.completed)].push(id); + } + return groups; + } + task_ids_filtered() { + var completed = this.arg_completed(); + if (completed) { + return this.groups_completed()[completed] || []; + } + else { + return this.task_ids(); + } + } + completed_all(next) { + if (next === void 0) + return this.groups_completed()['false'].length === 0; + for (let id of this.groups_completed()[String(!next)]) { + var task = this.task(id); + this.task(id, { title: task.title, completed: next }); + } + return next; + } + head_complete_enabled() { + return this.task_ids().length > 0; + } + pending_message() { + let count = this.groups_completed()['false'].length; + return (count === 1) ? '1 item left' : `${count} items left`; + } + new_id() { + return Math.max(1, 1 + Math.max(...this.task_ids())); + } + add(next) { + var title = this.task_title_new(); + if (!title) + return; + var id = this.new_id(); + var task = { completed: false, title }; + this.task(id, task); + this.task_ids(this.task_ids().concat(id)); + this.task_title_new(''); + } + task_rows() { + return this.task_ids_filtered().map(id => this.Task_row(id)); + } + task(id, next) { + const key = this.state_key(`mol-todos-${id}`); + if (next === void 0) { + return this.$.$mol_state_local.value(key) || { title: '', completed: false }; + } + this.$.$mol_state_local.value(key, next); + return next || void 0; + } + task_completed(id, next) { + return this.task(id, next === undefined ? undefined : Object.assign(Object.assign({}, this.task(id)), { completed: next })).completed; + } + task_title(id, next) { + return this.task(id, next === undefined ? undefined : Object.assign(Object.assign({}, this.task(id)), { title: next })).title; + } + task_drop(id, next) { + this.task(id, null); + this.task_ids(this.task_ids().filter(id2 => id !== id2)); + } + sweep() { + this.task_ids(this.task_ids().filter(id => { + if (!this.task(id).completed) + return true; + this.task(id, null); + return false; + })); + } + panels() { + return [ + this.Head(), + this.List(), + ...this.foot_visible() ? [this.Foot()] : [], + ]; + } + foot_visible() { + return this.task_ids().length > 0; + } + sweep_enabled() { + return this.groups_completed()['true'].length > 0; + } + } + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "groups_completed", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "task_ids_filtered", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "completed_all", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "pending_message", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "new_id", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "task_rows", null); + __decorate([ + $.$mol_mem_key + ], $hyoo_todomvc.prototype, "task_completed", null); + __decorate([ + $.$mol_mem_key + ], $hyoo_todomvc.prototype, "task_title", null); + $$.$hyoo_todomvc = $hyoo_todomvc; + })($$ = $.$$ || ($.$$ = {})); +})($ || ($ = {})); +//todomvc.view.js.map +; +var $node = $node || {} ; $node[ "/hyoo/todomvc/todomvc_active.svg" ] = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iMCAtMTggMTAwIDEzNSI+DQoJPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZpbGw9Im5vbmUiICBzdHJva2U9IiNlZGVkZWQiIHN0cm9rZS13aWR0aD0iMyIvPg0KPC9zdmc+" + +; +var $node = $node || {} ; $node[ "/hyoo/todomvc/todomvc_completed.svg" ] = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iMCAtMTggMTAwIDEzNSI+DQoJPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2JkZGFkNSIgc3Ryb2tlLXdpZHRoPSIzIi8+DQoJPHBhdGggZmlsbD0iJTIzNWRjMmFmIiBkPSJNNzIgMjVMNDIgNzEgMjcgNTZsLTQgNCAyMCAyMCAzNC01MnoiLz4NCjwvc3ZnPg0K" + +; +"use strict"; +var $; +(function ($) { + class $mol_plugin extends $.$mol_view { + dom_node(next) { + const node = next || $.$mol_owning_get(this, $.$mol_view).dom_node(); + $.$mol_dom_render_attributes(node, this.attr_static()); + const events = this.event(); + for (let event_name in events) { + node.addEventListener(event_name, $.$mol_log2.func($.$mol_fiber_root(events[event_name])), { passive: false }); + } + return node; + } + attr_static() { + return {}; + } + event() { + return {}; + } + render() { + this.dom_node_actual(); + } + } + __decorate([ + $.$mol_mem + ], $mol_plugin.prototype, "dom_node", null); + $.$mol_plugin = $mol_plugin; +})($ || ($ = {})); +//plugin.js.map +; +export default $ +//# sourceMappingURL=web.esm.js.map diff --git a/examples/mol/web.esm.js.map b/examples/mol/web.esm.js.map new file mode 100644 index 0000000000..2a3fb25505 --- /dev/null +++ b/examples/mol/web.esm.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["-","../../../mol/mol.ts","../../../mol/mol.jam.js","../../../mol/mol.web.jam.js","../../../mol/ambient/ambient.ts","../../../mol/owning/owning.ts","../../../mol/fail/fail.ts","../../../mol/fail/hidden/hidden.ts","../../../mol/object2/object2.ts","../../../mol/after/tick/tick.ts","../../../mol/dom/context/context.ts","../../../mol/dom/context/context.web.ts","../../../mol/style/attach/attach.ts","../../../mol/keyboard/code.ts","../../../mol/theme/theme.js","../../../mol/theme/-css/theme.css.ts","../../../mol/skin/-css/skin.css.ts","../../../mol/object/object.ts","../../../mol/wrapper/wrapper.ts","../../../mol/dev/format/format.ts","../../../mol/maybe/maybe.ts","../../../mol/log/log.ts","../../../mol/log/log_group.ts","../../../mol/log/log_context.ts","../../../mol/log/log_debug.web.ts","../../../mol/log/log_filter.web.ts","../../../mol/log2/log2.ts","../../../mol/log2/log2.web.ts","../../../mol/after/frame/frame.web.ts","../../../mol/compare/any/any.ts","../../../mol/conform/conform.ts","../../../mol/array/trim/trim.ts","../../../mol/fiber/fiber.ts","../../../mol/atom2/atom2.ts","../../../mol/mem/force/force.ts","../../../mol/mem/mem.ts","../../../mol/window/window.web.ts","../../../mol/dict/dict.ts","../../../mol/mem/key/key.ts","../../../mol/atom2/autorun/autorun.ts","../../../mol/defer/defer.ts","../../../mol/after/timeout/timeout.ts","../../../mol/view/selection/selection.ts","../../../mol/view/selection/selection.web.ts","../../../mol/const/const.ts","../../../mol/dom/render/attributes/attributes.ts","../../../mol/fail/catch/catch.ts","../../../mol/dom/render/styles/styles.ts","../../../mol/dom/render/fields/fields.ts","../../../mol/dom/render/children/children.ts","../../../mol/func/name/name.ts","../../../mol/deprecated/deprecated.ts","../../../mol/type/keys/extract/extract.js","../../../mol/view/view.ts","../../../mol/view/-css/view.css.ts","../../../mol/view/view.web.ts","../../../mol/string/-view.tree/string.view.tree.ts","../../../mol/string/string.view.ts","../../../mol/string/-css/string.view.css.ts","../../../mol/button/-view.tree/button.view.tree.ts","../../../mol/button/button.view.ts","../../../mol/button/-css/button.view.css.ts","../../../mol/button/-view.tree/button_types.view.tree.ts","../../../mol/merge/dict/dict.ts","../../../mol/state/arg/arg.web.ts","../../../mol/type/keys/exclude/exclude.js","../../../mol/type/omit/omit.js","../../../mol/style/pseudo/class.js","../../../mol/style/pseudo/element.js","../../../mol/type/partial/deep/deep.js","../../../mol/type/override/override.js","../../../mol/decor/decor.ts","../../../mol/style/unit/unit.ts","../../../mol/style/func/func.ts","../../../mol/style/properties/properties.js","../../../mol/style/definition/definition.js","../../../mol/style/sheet/sheet.ts","../../../mol/style/define/define.ts","../../../mol/link/-view.tree/link.view.tree.ts","../../../mol/link/link.view.ts","../../../mol/link/link.view.css.ts","../../../mol/check/-css/check.css.ts","../../../mol/check/-view.tree/check.view.tree.ts","../../../mol/check/check.view.ts","../../../mol/state/local/local.ts","../../../mol/state/local/local.web.ts","../../../mol/state/session/session.ts","../../../mol/memo/memo.ts","../../../mol/scroll/-view.tree/scroll.view.tree.ts","../../../mol/scroll/scroll.view.ts","../../../mol/scroll/scroll.view.css.ts","../../../mol/list/-view.tree/list.view.tree.ts","../../../mol/list/list.view.ts","../../../mol/list/-css/list.view.css.ts","../../../mol/bar/-css/bar.view.css.ts","../../../mol/bar/-view.tree/bar.view.tree.ts","../../../mol/state/time/time.ts","../../../mol/font/canvas/canvas.ts","../../../mol/font/measure/measure.ts","../../../mol/svg/-view.tree/svg.view.tree.ts","../../../mol/svg/svg.view.ts","../../../mol/svg/root/-css/root.view.css.ts","../../../mol/svg/root/-view.tree/root.view.tree.ts","../../../mol/svg/path/-view.tree/path.view.tree.ts","../../../mol/icon/-css/icon.view.css.ts","../../../mol/icon/-view.tree/icon.view.tree.ts","../../../mol/icon/alert/-view.tree/alert.view.tree.ts","../../../mol/icon/alert/circle/-view.tree/circle.view.tree.ts","../-css/todomvc.css.ts","../-view.tree/todomvc.view.tree.ts","../todomvc.view.ts","../-image/todomvc_active.svg.js","../-image/todomvc_completed.svg.js","../../../mol/plugin/plugin.ts"],"names":[],"mappings":"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","file":"web.esm.js","sourcesContent":[null,"Error.stackTraceLimit = Infinity;\n\ndeclare namespace $ {}\nexport = $\nmodule.exports\n",null,null,"namespace $ {\n\n\texport namespace $$ { export let $$ : typeof $ }\n\n\texport const $mol_ambient_ref : unique symbol = Symbol( '$mol_ambient_ref' )\n\n\texport type $mol_ambient_context = ( typeof globalThis ) & ( typeof $.$$ ) & ( typeof $ )\n\n\texport function $mol_ambient( this : $mol_ambient_context | void , overrides : Partial< $mol_ambient_context > ) : $mol_ambient_context {\n\t\treturn Object.setPrototypeOf( overrides , this || $ )\n\t}\n\n}\n","namespace $ {\n\n\texport const $mol_owning_map = new WeakMap< any , any >()\n\n\texport function $mol_owning_allow< Having >(\n\t\thaving : Having ,\n\t) : having is Having & {\n\t\tdestructor() : void\n\t} {\n\t\tif( !having ) return false\n\t\tif( typeof having !== 'object' ) return false\n\t\tif( typeof having['destructor'] !== 'function' ) return false\n\t\treturn true\n\t}\n\n\texport function $mol_owning_get< Having , Owner extends object >( having : Having , Owner? : { new() : Owner } ) : Owner | null {\n\t\n\t\tif( !$mol_owning_allow( having ) ) return null\n\n\t\twhile( true ) {\n\n\t\t\tconst owner = $mol_owning_map.get( having )\n\t\t\tif( !owner ) return owner\n\t\t\tif( !Owner ) return owner\n\t\t\t\n\t\t\tif( owner instanceof Owner ) return owner\n\n\t\t\thaving = owner\n\t\t}\n\n\t}\n\t\n\texport function $mol_owning_check< Owner , Having >(\n\t\towner : Owner ,\n\t\thaving : Having ,\n\t) : having is Having & { destructor() : void } {\n\t\tif( !$mol_owning_allow( having ) ) return false\n\t\tif( $mol_owning_map.get( having ) !== owner ) return false\n\t\treturn true\n\t}\n\t\n\texport function $mol_owning_catch< Owner , Having >(\n\t\towner : Owner ,\n\t\thaving : Having ,\n\t) {\n\t\tif( !$mol_owning_allow( having ) ) return false\n\t\tif( $mol_owning_map.get( having ) ) return false\n\n\t\t$mol_owning_map.set( having , owner )\n\t\treturn true\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_fail( error : any ) : never {\n\t\tthrow error\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_fail_hidden( error : any ) : never {\n\t\tthrow error /// Use 'Never Pause Here' breakpoint in DevTools or simply blackbox this script\n\t}\n\n}\n","namespace $ {\n\n\texport class $mol_object2 {\n\t\t\n\t\tstatic $ = $ as $mol_ambient_context\n\t\t\n\t\t[ $mol_ambient_ref ] = null as any as $mol_ambient_context\n\t\tget $() {\n\t\t\tif( this[ $mol_ambient_ref ] ) return this[ $mol_ambient_ref ]\n\t\t\tconst owner = $mol_owning_get( this ) as any\n\t\t\treturn this[ $mol_ambient_ref ] = owner?.$ || $mol_object2.$ as $mol_ambient_context\n\t\t}\n\t\tset $( next : $mol_ambient_context ) {\n\t\t\tif( this[ $mol_ambient_ref ] ) $mol_fail_hidden( new Error( 'Context already defined' ) )\n\t\t\tthis[ $mol_ambient_ref ] = next\n\t\t}\n\n\t\tconstructor( init? : ( obj : any )=> void ) {\n\t\t\tif( init ) init( this )\n\t\t}\n\n\t\tpublic static create< Instance >(\n\t\t\tthis : new( init? : ( instance : any )=> void )=> Instance ,\n\t\t\tinit? : ( instance : Instance )=> void\n\t\t) : Instance {\n\t\t\treturn new this( init )\n\t\t}\n\t\t\n\t\tstatic toString() { return this[ Symbol.toStringTag ] || this.name }\n\n\t\tdestructor() { }\n\n\t\ttoString() {\n\t\t\treturn this[ Symbol.toStringTag ] || this.constructor.name + '()'\n\t\t}\n\t\t\n\t\ttoJSON() {\n\t\t\treturn this.toString()\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\n\texport class $mol_after_tick extends $mol_object2 {\n\n\t\tpromise : any\n\t\tcancelled = false\n\n\t\tconstructor(\n\t\t\tpublic task : ()=> void ,\n\t\t) {\n\t\t\tsuper()\n\t\t\tthis.promise = Promise.resolve().then( ()=> {\n\t\t\t\tif( this.cancelled ) return\n\t\t\t\ttask()\n\t\t\t} )\n\t\t}\n\n\t\tdestructor() {\n\t\t\tthis.cancelled = true\n\t\t}\n\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport var $mol_dom_context : typeof globalThis\n\t\n}\n","namespace $ {\n\t\n\t$mol_dom_context = self as any\n\t\n}\n","namespace $ {\n\n\tlet all = [] as string[]\n\tlet el : HTMLStyleElement | null = null\n\tlet timer : $mol_after_tick | null = null\n\n\texport function $mol_style_attach(\n\t\tid : string ,\n\t\ttext : string ,\n\t) {\n\n\t\tall.push( `/* ${ id } */\\n\\n${ text }`)\n\n\t\tif( timer ) return el!\n\t\t\n\t\tconst doc = $mol_dom_context.document\n\t\tif( !doc ) return null\n\n\t\tel = doc.createElement('style')\n\t\tel.id = `$mol_style_attach`\n\t\tdoc.head.appendChild( el )\n\n\t\ttimer = new $mol_after_tick( ()=> {\n\t\t\tel!.innerHTML = '\\n' + all.join( '\\n\\n' )\n\t\t\tall = []\n\t\t\tel = null\n\t\t\ttimer = null\n\t\t} )\n\n\t\treturn el\n\n\t}\n\n}\n","namespace $ {\n export enum $mol_keyboard_code {\n backspace = 8,\n tab = 9,\n enter = 13,\n shift= 16,\n ctrl = 17,\n alt = 18,\n pause = 19,\n capsLock = 20,\n escape = 27,\n space = 32,\n pageUp = 33,\n pageDown = 34,\n end = 35,\n home = 36,\n left = 37,\n up = 38,\n right = 39,\n down = 40,\n insert = 45,\n delete = 46,\n key0 = 48,\n key1 = 49,\n key2 = 50,\n key3 = 51,\n key4 = 52,\n key5 = 53,\n key6 = 54,\n key7 = 55,\n key8 = 56,\n key9 = 57,\n A = 65,\n B = 66,\n C = 67,\n D = 68,\n E = 69,\n F = 70,\n G = 71,\n H = 72,\n I = 73,\n J = 74,\n K = 75,\n L = 76,\n M = 77,\n N = 78,\n O = 79,\n P = 80,\n Q = 81,\n R = 82,\n S = 83,\n T = 84,\n U = 85,\n V = 86,\n W = 87,\n X = 88,\n Y = 89,\n Z = 90,\n metaLeft = 91,\n metaRight = 92,\n select = 93,\n numpad0 = 96,\n numpad1 = 97,\n numpad2 = 98,\n numpad3 = 99,\n numpad4 = 100,\n numpad5 = 101,\n numpad6 = 102,\n numpad7 = 103,\n numpad8 = 104,\n numpad9 = 105,\n multiply = 106,\n add = 107,\n subtract = 109,\n decimal = 110,\n divide = 111,\n F1 = 112,\n F2 = 113,\n F3 = 114,\n F4 = 115,\n F5 = 116,\n F6 = 117,\n F7 = 118,\n F8 = 119,\n F9 = 120,\n F10 = 121,\n F11 = 122,\n F12 = 123,\n numLock = 144,\n scrollLock = 145,\n semicolon = 186,\n equals = 187,\n comma = 188,\n dash = 189,\n period = 190,\n forwardSlash = 191,\n graveAccent = 192,\n bracketOpen = 219,\n slashBack = 220,\n slashBackLeft = 226,\n bracketClose = 221,\n quoteSingle = 222\n }\n}\n",null,"namespace $ { $mol_style_attach( \"mol/theme/theme.css\",\n \"[mol_theme] , :root {\\n\\tbackground-color: var(--mol_theme_back);\\n\\tcolor: var(--mol_theme_text);\\n\\tfill: var(--mol_theme_text);\\n}\\n\\n@media (prefers-color-scheme: light) {\\n\\t[mol_theme=\\\"$mol_theme_auto\\\"] {\\n\\t\\t--mol_theme_back: hsl( 210 , 50% , 99% );\\n\\t\\t--mol_theme_hover: rgba( 0 , 0 , 0 , .05 );\\n\\t\\t--mol_theme_current: hsl( 210 , 100% , 80% );\\n\\t\\t--mol_theme_text: rgba( 0 , 0 , 0 , .9 );\\n\\t\\t--mol_theme_control: hsla( 210 , 60% , 35% , 1 );\\n\\t\\t--mol_theme_shade: rgba( 0 , 0 , 0 , .5 );\\n\\t\\t--mol_theme_line: rgba( 220 , 220 , 220 , 1 );\\n\\t\\t--mol_theme_focus: hsla( 0 , 60% , 50% , 0.75 );\\n\\t\\t--mol_theme_field: white;\\n\\t}\\n}\\n\\n@media (prefers-color-scheme: dark) {\\n\\t[mol_theme=\\\"$mol_theme_auto\\\"] {\\n\\t\\t--mol_theme_back: hsl( 210 , 50% , 10% );\\n\\t\\t--mol_theme_hover: #333;\\n\\t\\t--mol_theme_current: hsl( 210 , 100% , 20% );\\n\\t\\t--mol_theme_text: rgba( 255 , 255 , 255 , .8 );\\n\\t\\t--mol_theme_control: hsla( 210 , 60% , 70% , 1 );\\n\\t\\t--mol_theme_shade: rgba( 255 , 255 , 255 , .5 );\\n\\t\\t--mol_theme_line: rgba( 50 , 50 , 50 , 1 );\\n\\t\\t--mol_theme_focus: rgba( 204 , 68 , 50 , .75 );\\n\\t\\t--mol_theme_field: black;\\n\\t}\\n}\\n\\n[mol_theme=\\\"$mol_theme_light\\\"] , :root {\\n\\t--mol_theme_back: hsl( 210 , 50% , 99% );\\n\\t--mol_theme_hover: rgba( 0 , 0 , 0 , .05 );\\n\\t--mol_theme_current: hsl( 210 , 100% , 80% );\\n\\t--mol_theme_text: rgba( 0 , 0 , 0 , .9 );\\n\\t--mol_theme_control: hsla( 210 , 60% , 35% , 1 );\\n\\t--mol_theme_shade: rgba( 0 , 0 , 0 , .5 );\\n\\t--mol_theme_line: rgba( 220 , 220 , 220 , 1 );\\n\\t--mol_theme_focus: hsla( 0 , 60% , 50% , 0.75 );\\n\\t--mol_theme_field: white;\\n}\\n\\n[mol_theme=\\\"$mol_theme_dark\\\"] {\\n\\t--mol_theme_back: hsl( 210 , 50% , 10% );\\n\\t--mol_theme_hover: #333;\\n\\t--mol_theme_current: hsl( 210 , 100% , 20% );\\n\\t--mol_theme_text: rgba( 255 , 255 , 255 , .8 );\\n\\t--mol_theme_control: hsla( 210 , 60% , 70% , 1 );\\n\\t--mol_theme_shade: rgba( 255 , 255 , 255 , .5 );\\n\\t--mol_theme_line: rgba( 50 , 50 , 50 , 1 );\\n\\t--mol_theme_focus: rgba( 204 , 68 , 50 , .75 );\\n\\t--mol_theme_field: black;\\n}\\n\\n[mol_theme=\\\"$mol_theme_base\\\"] {\\n\\t--mol_theme_back: hsla( 210 , 60% , 35% , 1 );\\n\\t--mol_theme_hover: rgba( 0 , 0 , 0 , .05 );\\n\\t--mol_theme_current: hsl( 210 , 100% , 20% );\\n\\t--mol_theme_text: white;\\n\\t--mol_theme_line: white;\\n\\t--mol_theme_control: white;\\n}\\n\\n[mol_theme=\\\"$mol_theme_accent\\\"] {\\n\\t--mol_theme_back: rgb(204, 68, 50);\\n\\t--mol_theme_hover: rgb(165, 56, 42);\\n\\t--mol_theme_text: white;\\n\\t--mol_theme_line: rgba( 50 , 50 , 50 , 1 );\\n\\t--mol_theme_control: white;\\n}\\n\"\n) }","namespace $ { $mol_style_attach( \"mol/skin/skin.css\",\n \":root {\\n\\t--mol_skin_font: 1rem/1.5 \\\"-apple-system\\\", BlinkMacSystemFont, \\\"Segoe UI\\\", Roboto, Helvetica, Arial, sans-serif;\\n\\t--mol_skin_font_monospace: Monaco, monospace;\\n}\\n\\n/* Deprecated, use mol_theme instead */\\n:root {\\n\\n\\t--mol_skin_outline: 0 0 0 1px var(--mol_theme_line);\\n\\t\\n\\t--mol_skin_base: #3a8ccb;\\n\\t--mol_skin_base_text: white;\\n\\t\\n\\t--mol_skin_current: var(--mol_skin_base);\\n\\t--mol_skin_current_text: white;\\n\\t--mol_skin_current_line: #1471b8;\\n\\t\\n\\t--mol_skin_button: var(--mol_skin_card);\\n\\t--mol_skin_hover: rgba( 0 , 0 , 0 , .05 );\\n\\t\\n\\t--mol_skin_round: 0px;\\n\\t\\n\\t--mol_skin_focus_line: rgba( 0 , 0 , 0 , .2 );\\n\\t--mol_skin_focus_outline: 0 0 0 1px var(--mol_skin_focus_line);\\n\\t\\n\\t--mol_skin_float: var(--mol_skin_focus_outline);\\n\\n\\t--mol_skin_passive: #eee;\\n\\t--mol_skin_passive_text: rgba( 0 , 0 , 0 , .5 );\\n\\t\\n\\t--mol_skin_light: #fcfcfc;\\n\\t--mol_skin_light_line: rgba( 230 , 230 , 230 , .75 );\\n\\t--mol_skin_light_text: rgba( 0 , 0 , 0 , .9 );\\n\\t--mol_skin_light_hover: #f7f7f7;\\n\\t--mol_skin_light_outline: 0 0 0 1px var(--mol_theme_line);\\n\\n\\t--mol_skin_card: var(--mol_theme_back);\\n\\t--mol_skin_card_text: var(--mol_theme_text);\\n\\t\\n\\t--mol_skin_accent: #dd0e3e;\\n\\t--mol_skin_accent_text: white;\\n\\t--mol_skin_accent_hover: #c50d37;\\n\\n\\t--mol_skin_warn: rgba( 255 , 50 , 50 , 0.75 );\\n\\t--mol_skin_warn_text: white;\\n\\t--mol_skin_warn_hover: color( var(--mol_skin_warn) lightness(-5%) );\\n\\n\\t--mol_skin_good: #96DAA9;\\n\\t--mol_skin_good_text: black;\\n\\n\\t--mol_skin_bad: #CC5252;\\n\\t--mol_skin_bad_text: white;\\n}\\n\"\n) }","namespace $ {\n\n\texport namespace $$ { let $ }\n\n\texport const $mol_object_field = Symbol( '$mol_object_field' )\n\t\n\texport class $mol_object extends $mol_object2 {\n\t\t\n\t\tpublic static make< Instance >( this : { new() : Instance } , config : Partial< Instance > ) : Instance {\n\t\t\treturn super.create( obj => {\n\t\t\t\tfor( let key in config ) ( obj as any )[ key ] = config[ key ]!\n\t\t\t} ) as any\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\n\texport class $mol_wrapper extends $mol_object2 {\n\n\t\tstatic wrap : ( task : ( ... ags : any[] )=> any )=> ( ... ags : any[] )=> any\n\t\t\n\t\tstatic run< Result >( task : ()=> Result ) : Result {\n\t\t\treturn this.func( task )()\n\t\t}\n\t\n\t\tstatic func< Args extends any[] , Result , Host = void >(\n\t\t\tfunc : ( this : Host , ... args : Args )=> Result\n\t\t) : ( this : Host , ... args : Args )=> Result {\n\t\t\treturn this.wrap( func )\n\t\t}\n\n\t\tstatic get class() {\n\n\t\t\treturn < Class extends new ( ... args : any[] )=> any >(\n\t\t\t\tClass : Class\n\t\t\t) => {\n\n\t\t\t\ttype Args = ConstructorParameters< Class >\n\t\t\t\ttype Result = InstanceType< Class >\n\n\t\t\t\tconst construct = ( target : new ( ... args : Args )=> Result , args : Args )=> new Class( ... args )\n\n\t\t\t\tconst handler = {\n\t\t\t\t\tconstruct : this.func( construct )\n\t\t\t\t}\n\n\t\t\t\thandler[ Symbol.toStringTag ] = Class.name + '#'\n\n\t\t\t\treturn new Proxy( Class , handler )\n\t\t\t\t\n\t\t\t}\n\n\t\t}\n\n\t\tstatic get method() {\n\t\t\t\n\t\t\treturn <\n\t\t\t\tHost ,\n\t\t\t\tField extends keyof Host ,\n\t\t\t\tArgs extends any[] ,\n\t\t\t\tResult ,\n\t\t\t>(\n\t\t\t\tobj : Host ,\n\t\t\t\tname : Field ,\n\t\t\t\tdescr : TypedPropertyDescriptor< ( this : Host , ... args : Args )=> Result >\n\t\t\t) => {\n\t\t\t\tdescr.value = this.func( descr.value! )\n\t\t\t\treturn descr\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\tstatic get field() {\n\t\t\t\n\t\t\treturn <\n\t\t\t\tHost ,\n\t\t\t\tField extends keyof Host ,\n\t\t\t\tArgs extends any[] ,\n\t\t\t\tResult ,\n\t\t\t>(\n\t\t\t\tobj : Host ,\n\t\t\t\tname : Field ,\n\t\t\t\tdescr : TypedPropertyDescriptor< Result >\n\t\t\t) => {\n\t\t\t\tdescr.get = descr.set = this.func( descr.get! )\n\t\t\t\treturn descr\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\n\t// https://docs.google.com/document/d/1FTascZXT9cxfetuPRT2eXPQKXui4nWFivUnS_335T3U/preview#\n\t$['devtoolsFormatters'] = $['devtoolsFormatters'] || []\n\n\texport function $mol_dev_format_register( config : {\n\t\theader : ( val : any , config : any )=> any\n\t\thasBody : ( val : any , config : any )=> false\n\t} | {\n\t\theader : ( val : any , config : any )=> any\n\t\thasBody : ( val : any , config : any )=> boolean\n\t\tbody : ( val : any , config : any )=> any\n\t} ) {\n\t\t$['devtoolsFormatters'].push( config )\n\t}\n\n\texport let $mol_dev_format_head = Symbol( '$mol_dev_format_head' )\n\texport let $mol_dev_format_body = Symbol( '$mol_dev_format_body' )\n\n\t$mol_dev_format_register({\n\n\t\theader : ( val : any , config = false ) => {\n\t\t\t\n\t\t\tif( config ) return null\n\n\t\t\tif( !val ) return null\n\t\t\t\n\t\t\tif( $mol_dev_format_head in val ) {\n\t\t\t\treturn val[ $mol_dev_format_head ]()\n\t\t\t}\n\n\t\t\treturn null\n\t\t\t\n\t\t} ,\n\t\t\n\t\thasBody : val => val[ $mol_dev_format_body ] ,\n\n\t\tbody : val => val[ $mol_dev_format_body ]() ,\n\n\t})\n\n\texport function $mol_dev_format_native( obj : any ) {\n\t\t\n\t\tif( typeof obj === 'undefined' ) return $mol_dev_format_shade( 'undefined' )\n\t\tif( typeof obj !== 'object' ) return obj\n\n\t\treturn [\n\t\t\t'object' ,\n\t\t\t{\n\t\t\t\tobject : obj ,\n\t\t\t\tconfig : true ,\n\t\t\t} ,\n\t\t]\n\n\t}\n\n\texport function $mol_dev_format_auto( obj : any ) {\n\t\t\n\t\tif( obj == null ) return $mol_dev_format_shade( String( obj ) )\n\n\t\tif( typeof obj === 'object' && $mol_dev_format_head in obj ) {\n\t\t\treturn obj[ $mol_dev_format_head ]()\n\t\t}\n\n\t\treturn [\n\t\t\t'object' ,\n\t\t\t{\n\t\t\t\tobject : obj ,\n\t\t\t\tconfig : false ,\n\t\t\t} ,\n\t\t]\n\n\t}\n\n\texport function $mol_dev_format_element( element : string , style : object , ...content : any[] ) {\n\t\t\t\n\t\tconst styles = [] as string[]\n\t\t\n\t\tfor( let key in style ) styles.push( `${ key } : ${ style[key] }` )\n\t\t\n\t\treturn [\n\t\t\telement ,\n\t\t\t{\n\t\t\t\tstyle : styles.join( ' ; ' ) ,\n\t\t\t} ,\n\t\t\t... content ,\n\t\t]\n\n\t}\n\n\texport function $mol_dev_format_span( style : object , ...content : any[] ) {\n\t\treturn $mol_dev_format_element(\n\t\t\t'span' ,\n\t\t\t{\n\t\t\t\t'vertical-align' : '8%',\n\t\t\t\t... style ,\n\t\t\t} ,\n\t\t\t... content ,\n\t\t)\n\t}\n\n\texport let $mol_dev_format_div = $mol_dev_format_element.bind( null , 'div' )\n\texport let $mol_dev_format_ol = $mol_dev_format_element.bind( null , 'ol' )\n\texport let $mol_dev_format_li = $mol_dev_format_element.bind( null , 'li' )\n\texport let $mol_dev_format_table = $mol_dev_format_element.bind( null , 'table' )\n\texport let $mol_dev_format_tr = $mol_dev_format_element.bind( null , 'tr' )\n\texport let $mol_dev_format_td = $mol_dev_format_element.bind( null , 'td' )\n\n\texport let $mol_dev_format_accent = $mol_dev_format_span.bind( null , {\n\t\t'color' : 'magenta' ,\n\t} )\n\n\texport let $mol_dev_format_strong = $mol_dev_format_span.bind( null , {\n\t\t'font-weight' : 'bold' ,\n\t} )\n\n\texport let $mol_dev_format_string = $mol_dev_format_span.bind( null , {\n\t\t'color' : 'green',\n\t} )\n\n\texport let $mol_dev_format_shade = $mol_dev_format_span.bind( null , {\n\t\t'color' : 'gray',\n\t} )\n\n\texport let $mol_dev_format_indent = $mol_dev_format_div.bind( null , {\n\t\t'margin-left': '13px'\n\t} )\n\n}\n","namespace $ {\n\t\n\texport function $mol_maybe< Value >( value : Value | null | undefined ) : Value[] {\n\t\treturn ( value == null ) ? [] : [ value ]\n\t}\n\t\n}\n","namespace $ {\n\n\texport function $mol_log( path : any , ... values : any[] ) {\n\t\t\n\t\tif( $mol_log_filter() == null ) return\n\t\t\n\t\tpath = String( path )\n\t\tif( path.indexOf( $mol_log_filter() ) === -1 ) return\n\t\t\n\t\tconst context = $mol_log_context()\n\t\tif( context ) context()\n\t\t\n\t\tconsole.debug( path , ... values )\n\n\t\tif( $mol_log_debug() == null ) return\n\t\tif( path.indexOf( $mol_log_debug() ) === -1 ) return\n\t\t\n\t\tdebugger\n\t}\n\t\n}\n","namespace $ {\n\n\texport function $mol_log_group< Task extends Function , This >( name : string , task : Task ) {\n\t\t\n\t\tconst filter = $mol_log_filter()\n\t\tif( filter == null ) return task\n\n\t\treturn function $mol_log_group_wrapper( this : This , ... args : any [] ) {\n\n\t\t\tlet started = false\n\t\t\tlet prev = $mol_log_context()\n\n\t\t\t$mol_log_context( ()=> {\n\t\t\t\tif( prev ) prev()\n\t\t\t\tstarted = true\n\n\t\t\t\tif( filter || prev ) console.group( name )\n\t\t\t\telse console.groupCollapsed( name )\n\n\t\t\t\t$mol_log_context( prev = null )\n\t\t\t} )\n\t\t\t\n\t\t\ttry {\n\t\t\t\treturn task.apply( this , args )\n\t\t\t} finally {\n\t\t\t\tif( started ) console.groupEnd()\n\t\t\t\t$mol_log_context( prev )\n\t\t\t}\n\n\t\t} as any as Task\n\n\t}\n\n}\n","namespace $ {\n\n\tlet context = null as null | ( ()=> void )\n\texport function $mol_log_context( next = context ) {\n\t\treturn context = next\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_log_debug( next? : string ) {\n\n\t\tif( next !== undefined ) {\n\t\t\tif( next == null ) {\n\t\t\t\tsessionStorage.removeItem( '$mol_log_debug()' )\n\t\t\t} else {\n\t\t\t\tsessionStorage.setItem( '$mol_log_debug()' , next )\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn sessionStorage.getItem( '$mol_log_debug()' )\n\t}\n\n}\n","namespace $ {\n\t\n\tlet filter = undefined as undefined | null | string\n\n\texport var $mol_log_filter = function $mol_log_filter( next? : null | string ) {\n\n\t\tif( next !== undefined ) {\n\t\t\tif( next == null ) {\n\t\t\t\tsessionStorage.removeItem( '$mol_log_filter()' )\n\t\t\t} else {\n\t\t\t\tsessionStorage.setItem( '$mol_log_filter()' , next )\n\t\t\t}\n\n\t\t\tfilter = next\n\t\t}\n\n\t\tif( filter !== undefined ) return filter\n\t\t\n\t\treturn filter = sessionStorage.getItem( '$mol_log_filter()' )\n\t}\n\n\tif( typeof sessionStorage === 'undefined' ) $mol_log_filter = ( next = null as null | string )=> filter = next\n\n\tif( $mol_log_filter() == null ) console.info( 'Use $mol_log_filter( needle : string|null ) to toggle logs' )\n\t\n}\n","namespace $ {\n\n\texport class $mol_log2 extends $mol_wrapper {\n\n\t\tstatic current = null as null | $mol_log2\n\n\t\tstatic wrap< This extends { $ : $mol_ambient_context } , Args extends any[] , Result >( task : ( this : This , ... args : Args )=> Result ) {\n\n\t\t\tconst Inner = this\n\n\t\t\tconst wrapped = function( this : This , ... args : Args ) {\n\t\t\t\t\n\t\t\t\tconst outer = $mol_log2.current\n\t\t\t\tconst inner = $mol_log2.current = new Inner( this , task.name , args )\n\t\t\t\t\n\t\t\t\ttry {\n\t\t\t\t\treturn task.call( this , ... args )\n\t\t\t\t} finally {\n\t\t\t\t\t$mol_log2.current = outer\n\t\t\t\t\tinner.flush()\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn wrapped\n\t\t}\n\n\t\tconstructor(\n\t\t\treadonly host : any ,\n\t\t\treadonly id : string ,\n\t\t\treadonly args : any[] ,\n\t\t) {\n\t\t\tsuper()\n\t\t\tthis[ Symbol.toStringTag ] = host ? `${ host }.${ id }` : id\n\t\t}\n\n\t\tstream = [] as $mol_log2_line[]\n\t\t\n\t\tflush() {\n\t\t\tif( this.stream.length === 0 ) return\n\t\t\tconsole.debug( this )\n\t\t}\n\n\t\tinfo( ... values : any[] ) {\n\t\t\tthis.stream.push( new $mol_log2_line( ... $mol_log2.prefix , ... values ) )\n\t\t}\n\n\t\t[ $mol_dev_format_head ]() {\n\t\t\treturn $mol_dev_format_span( {} ,\n\t\t\t\t... $mol_maybe( this.host ).map( $mol_dev_format_auto ) ,\n\t\t\t\t'.' ,\n\t\t\t\t$mol_dev_format_strong( this.id ) ,\n\t\t\t\t'(',\n\t\t\t\t... this.args.map( $mol_dev_format_auto ) ,\n\t\t\t\t') ' ,\n\t\t\t\t$mol_dev_format_auto( this.stream ) ,\n\t\t\t)\n\t\t}\n\n\t\tstatic info( ... values : any[] ) {\n\t\t\t\n\t\t\tconst excludes = $mol_log2.excludes\n\t\t\tif( !excludes ) return\n\t\t\t\n\t\t\tconst skip = excludes.some( ( regexp , index )=> {\n\t\t\t\treturn regexp && regexp.test( String( values[ index ] ) ) || false\n\t\t\t} )\n\n\t\t\tif( skip ) return\n\t\t\t\n\t\t\tif( !$mol_log2.current ) {\n\t\t\t\tconsole.warn( new Error( `$mol_log.current is not defined. Wrap entry point to $mol_log!` ) )\n\t\t\t\t$mol_log2.current = new $mol_log2( null , '$mol_log2_default' , [] )\n\t\t\t\tconsole.debug( $mol_log2.current )\n\t\t\t}\n\n\t\t\t$mol_log2.current.info( ... values )\n\n\t\t}\n\n\t\t/**\n\t\t * Enable all logs\n\t\t * \n\t\t * \t$mol_log2.excludes = []\n\t\t * \n\t\t * Exclude all atom logs:\n\t\t * \n\t\t * \t$mol_log2.excludes = [ , /˸|🠈|⏭|⏯|►|💤|☍|☌|✓|✔|✘|🕱|�/ ]\n\t\t * \n\t\t * Disable logs:\n\t\t * \n\t\t * \t$mol_log2.excludes = null\n\t\t */\n\t\tstatic excludes = null as any as null | ( undefined | RegExp )[]\n\n\t\tstatic prefix = [] as any[]\n\n\t}\n\n\texport class $mol_log2_indent extends $mol_wrapper {\n\n\t\tstatic wrap< This extends { $ : $mol_ambient_context } , Args extends any[] , Result >( task : ( this : This , ... args : Args )=> Result ) {\n\n\t\t\tconst Inner = this\n\n\t\t\tconst wrapped = function( this : This , ... args : Args ) {\n\t\t\t\ttry {\n\t\t\t\t\t$mol_log2.prefix.push( $mol_log2_token_indent )\n\t\t\t\t\treturn task.call( this , ... args )\n\t\t\t\t} finally {\n\t\t\t\t\t$mol_log2.prefix.pop()\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn wrapped\n\t\t}\n\n\t}\n\t\n\texport class $mol_log2_table extends $mol_log2 {\n\n\t\t[ $mol_dev_format_head ]() {\n\t\t\treturn $mol_dev_format_span( {} ,\n\t\t\t\t$mol_dev_format_strong( `${this}(` ) ,\n\t\t\t\t... this.args.map( $mol_dev_format_auto ) ,\n\t\t\t\t$mol_dev_format_strong( `) ` ) ,\n\t\t\t)\n\t\t}\n\n\t\t[ $mol_dev_format_body ]() {\n\t\t\treturn $mol_dev_format_table( {} , ...this.stream.map( $mol_dev_format_auto ) )\n\t\t}\n\n\t}\n\n\texport class $mol_log2_hidden extends $mol_log2 {\n\n\t\tflush() {}\n\n\t}\n\n\texport class $mol_log2_line extends Array {\n\n\t\tconstructor( ... items : any[] ) {\n\t\t\tsuper( ... items )\n\t\t}\n\n\t\t[ $mol_dev_format_head ]() {\n\t\t\treturn $mol_dev_format_tr( {} ,\n\t\t\t\t... this.map( item => $mol_dev_format_td( {} ,\n\t\t\t\t\t$mol_dev_format_auto( item )\n\t\t\t\t) )\n\t\t\t)\n\t\t}\n\n\t}\n\n\texport class $mol_log2_token extends Array {\n\n\t\tconstructor( ... items : any[] ) {\n\t\t\tsuper( ... items )\n\t\t}\n\n\t\t[ $mol_dev_format_head ]() {\n\t\t\treturn $mol_dev_format_accent( ... this )\n\t\t}\n\n\t}\n\n\texport let $mol_log2_token_empty = new $mol_log2_token( '' )\n\texport let $mol_log2_token_indent = new $mol_log2_token( '\\t' )\n\n\texport let $mol_log2_legend = new $mol_log2_table( null , '$mol_log2_legend' , [] )\n\n\tif( !$mol_log2.excludes ) $mol_log2_legend.info( $mol_log2_token_empty , 'Use `$mol_log2.excludes : null | RegExp[]` to toggle logs' )\n\n}\n","namespace $ {\n\n\tconsole.debug( $mol_log2_legend )\n\t\n}\n","namespace $ {\n\n\texport class $mol_after_frame extends $mol_object2 {\n\n\t\tid : any\n\n\t\tconstructor(\n\t\t\tpublic task : ()=> void ,\n\t\t) {\n\t\t\tsuper()\n\t\t\tthis.id = requestAnimationFrame( task )\n\t\t}\n\n\t\tdestructor() {\n\t\t\tcancelAnimationFrame( this.id )\n\t\t}\n\n\t}\n\t\n}\n","namespace $ {\n\n\texport function $mol_compare_any( a : any , b : any ) {\n\t\t\n\t\tif( a === b ) return true\n\t\t\n\t\tif( !Number.isNaN( a ) ) return false\n\t\tif( !Number.isNaN( b ) ) return false\n\n\t\treturn true\n\t}\n\n}\n","namespace $ {\n\n\tconst cache = new WeakMap< any , boolean >()\n\n\texport const $mol_conform_stack = [] as any[]\n\n\texport function $mol_conform< Target , Source >( target : Target , source : Source ) : Target {\n\n\t\tif( $mol_compare_any( target , source ) ) return source as any\n\n\t\tif( !target || typeof target !== 'object' ) return target\n\t\tif( !source || typeof source !== 'object' ) return target\n\n\t\tif( target instanceof Error ) return target\n\t\tif( source instanceof Error ) return target\n\t\t\n\t\tif( target['constructor'] !== source['constructor'] ) return target\n\n\t\tif( cache.get( target ) ) return target\n\t\tcache.set( target , true )\n\t\t\n\t\tconst conform = $mol_conform_handlers.get( target['constructor'] )\n\t\tif( !conform ) return target\n\n\t\tif( $mol_conform_stack.indexOf( target ) !== -1 ) return target\n\n\t\t$mol_conform_stack.push( target )\n\n\t\ttry { return conform( target , source ) }\n\t\tfinally { $mol_conform_stack.pop() }\n\n\t}\n\n\texport const $mol_conform_handlers = new WeakMap< Object , ( target : any , source : any )=> any >()\n\n\texport function $mol_conform_handler< Class >(\n\t\tcl : { new( ... args : any[] ) : Class } ,\n\t\thandler : ( target : Class , source : Class )=> Class ,\n\t) {\n\t\t$mol_conform_handlers.set( cl , handler )\n\t}\n\n\tfunction $mol_conform_array<\n\t\tValue ,\n\t\tList extends {\n\t\t\t[ index : number ] : Value\n\t\t\tlength : number\n\t\t} ,\n\t>( target : List , source : List ) {\n\t\t\n\t\tif( source.length !== target.length ) return target\n\t\t\n\t\tfor( let i = 0 ; i < target.length ; ++i ) {\n\t\t\tif( !$mol_compare_any( source[i] , target[i] ) ) return target\n\t\t}\n\n\t\treturn source\n\t}\n\n\t$mol_conform_handler( Array , $mol_conform_array )\n\t$mol_conform_handler( Uint8Array , $mol_conform_array )\n\t$mol_conform_handler( Uint16Array , $mol_conform_array )\n\t$mol_conform_handler( Uint32Array , $mol_conform_array )\n\n\t$mol_conform_handler( Object , ( target , source )=> {\n\n\t\tlet count = 0\n\t\tlet equal = true\n\n\t\tfor( let key in target ) {\n\n\t\t\tconst conformed = $mol_conform( target[key] , source[key] )\n\t\t\t\n\t\t\tif( conformed !== target[key] ) {\n\t\t\t\ttry { target[key] = conformed } catch( error ) {}\n\t\t\t\tif( !$mol_compare_any( conformed , target[key] ) ) equal = false\n\t\t\t}\n\t\t\t\n\t\t\tif( !$mol_compare_any( conformed , source[key] ) ) equal = false\n\t\t\t\n\t\t\t++ count\n\t\t}\n\n\t\tfor( let key in source ) if( -- count < 0 ) break\n\n\t\treturn ( equal && count === 0 ) ? source : target\n\t} )\n\n\t$mol_conform_handler( Date , ( target , source )=> {\n\t\tif( target.getTime() === source.getTime() ) return source\n\t\treturn target \n\t} )\n\n\t$mol_conform_handler( RegExp , ( target , source )=> {\n\t\tif( target.toString() === source.toString() ) return source\n\t\treturn target\n\t} )\n\n}\n","namespace $ {\n\n\texport function $mol_array_trim< Item >( array : Item[] ) {\n\n\t\tlet last = array.length\n\t\twhile( last > 0 ) {\n\t\t\t\n\t\t\t-- last\n\t\t\tconst value = array[ last ]\n\t\t\t\n\t\t\tif( value === undefined ) array.pop()\n\t\t\telse break\n\t\t}\n\n\t\treturn array\n\t}\n\n}\n","namespace $ {\n\n\texport const enum $mol_fiber_status {\n\t\tpersist = -3 , // 🗹\n\t\tactual = -2 , // ✔\n\t\tdoubt = -1 , // �\n\t\tobsolete = 0 , // ✘\n\t}\n\n\texport function $mol_fiber_defer< Value = void >( calculate : ()=> Value ) {\n\t\t\n\t\tconst fiber = new $mol_fiber\n\t\t\n\t\tfiber.calculate = calculate\n\t\tfiber[ Symbol.toStringTag ] = calculate.name\n\t\t\n\t\tfiber.schedule()\n\t\t\n\t\treturn fiber\n\t}\n\n\texport function $mol_fiber_func<\n\t\tThis ,\n\t\tArgs extends any[] ,\n\t\tResult ,\n\t>( calculate : ( this : This , ... args : Args )=> Result ) {\n\t\tconsole.warn( '$mol_fiber_func is deprecated. Use $mol_fiber.func instead.' )\n\t\treturn $mol_fiber.func( calculate )\n\t}\n\n\texport function $mol_fiber_root<\n\t\tCalculate extends ( this : This , ... args : any[] )=> Result ,\n\t\tResult = void ,\n\t\tThis = void ,\n\t>( calculate : Calculate ) {\n\t\t\n\t\tconst wrapper = function( ... args : any[] ) {\n\t\t\tconst fiber = new $mol_fiber< Result >()\n\t\t\tfiber.calculate = calculate.bind( this , ... args )\n\t\t\treturn fiber.wake()\n\t\t} as Calculate\n\t\t\n\t\twrapper[ Symbol.toStringTag ] = calculate.name\n\t\t\n\t\treturn wrapper\n\t}\n\n\texport function $mol_fiber_method< Host , Value >(\n\t\tobj : Host ,\n\t\tname : keyof Host ,\n\t\tdescr : TypedPropertyDescriptor< ( this : Host , ... args : any[] )=> Value >\n\t) {\n\t\tconsole.warn( '$mol_fiber_method is deprecated. Use $mol_fiber.method instead.' )\n\t\treturn $mol_fiber.method( obj , name , descr )\n\t}\n\n\texport function $mol_fiber_async< Args extends any[] , Value >( task : ( ... args : Args )=> Value ) {\n\n\t\treturn ( ... args : Args )=> new Promise< Value >( $mol_fiber_root( ( done , fail )=> {\n\n\t\t\ttry {\n\n\t\t\t\tdone( task( ... args ) )\n\n\t\t\t} catch( error ) {\n\n\t\t\t\tif( 'then' in error ) return $mol_fail_hidden( error )\n\n\t\t\t\tfail( error )\n\n\t\t\t}\n\n\t\t} ) )\n\n\t}\n\n\texport function $mol_fiber_sync< Args extends any[] , Value = void , This = void >(\n\t\trequest : ( this : This , ... args : Args )=> PromiseLike< Value >\n\t) : ( ... args : Args )=> Value {\n\n\t\treturn function $mol_fiber_sync_wrapper( this : This , ... args : Args ) {\n\n\t\t\tconst slave = $mol_fiber.current\n\n\t\t\tlet master = slave && slave.master\n\t\t\tif( !master || master.constructor !== $mol_fiber ) {\n\t\t\t\tmaster = new $mol_fiber\n\t\t\t\tmaster.cursor = $mol_fiber_status.persist\n\t\t\t\tmaster.error = ( request.call( this , ... args ) as PromiseLike< Value > ).then(\n\t\t\t\t\t$mol_log2.func( master!.push ).bind( master! ) ,\n\t\t\t\t\t$mol_log2.func( master!.fail ).bind( master! ) ,\n\t\t\t\t)\n\t\t\t\tconst prefix = slave ? `${ slave }/${ slave.cursor / 2 }:` : '/'\n\t\t\t\tmaster[ Symbol.toStringTag ] = prefix + ( request.name || $mol_fiber_sync.name )\n\t\t\t}\n\n\t\t\treturn master.get()\n\n\t\t}\n\n\t}\n\n\texport async function $mol_fiber_warp() {\n\t\tconst deadline = $mol_fiber.deadline\n\t\ttry {\n\t\t\t$mol_fiber.deadline = Number.POSITIVE_INFINITY\n\t\t\twhile( $mol_fiber.queue.length ) await $mol_fiber.tick()\n\t\t\treturn Promise.resolve()\n\t\t} finally {\n\t\t\t$mol_fiber.deadline = deadline\n\t\t}\n\t}\n\n\texport function $mol_fiber_fence( func : ()=> any ) {\n\t\tconst prev = $mol_fiber.current\n\t\ttry {\n\t\t\t$mol_fiber.current = null\n\t\t\treturn func()\n\t\t} finally {\n\t\t\t$mol_fiber.current = prev\n\t\t}\n\t}\n\n\texport function $mol_fiber_unlimit< Result >( task : ()=> Result ) {\n\t\t\n\t\tconst deadline = $mol_fiber.deadline\n\t\t\n\t\ttry {\n\n\t\t\t$mol_fiber.deadline = Number.POSITIVE_INFINITY\n\t\t\t\n\t\t\treturn task()\n\n\t\t} finally {\n\n\t\t\t$mol_fiber.deadline = deadline\n\n\t\t}\n\n\t}\n\n\texport class $mol_fiber_solid extends $mol_wrapper {\n\n\t\tstatic func< This , Args extends any[] , Result >( task : ( this : This , ... args : Args )=> Result ) {\n\n\t\t\tfunction wrapped( this : This , ... args : Args ) {\n\n\t\t\t\tconst deadline = $mol_fiber.deadline\n\n\t\t\t\ttry {\n\n\t\t\t\t\t$mol_fiber.deadline = Number.POSITIVE_INFINITY\n\t\t\t\t\t\n\t\t\t\t\treturn task.call( this , ... args ) as Result\n\n\t\t\t\t} catch( error ) {\n\n\t\t\t\t\tif( 'then' in error ) $mol_fail( new Error( 'Solid fiber can not be suspended.' ) )\n\t\t\t\t\treturn $mol_fail_hidden( error )\n\n\t\t\t\t} finally {\n\n\t\t\t\t\t$mol_fiber.deadline = deadline\n\n\t\t\t\t}\n\t\t\n\t\t\t}\n\n\t\t\treturn $mol_fiber.func( wrapped )\n\n\t\t}\n\n\t}\n\n\texport class $mol_fiber< Value = any > extends $mol_wrapper {\n\n\t\tstatic wrap< Func extends ( ... args : any[] )=> any >( task : Func ) {\n\t\t\t\n\t\t\treturn function $mol_fiber_wrapper( this : ThisParameterType< Func > , ... args : Parameters< Func > ) {\n\n\t\t\t\tconst slave = $mol_fiber.current\n\n\t\t\t\tlet master = slave && slave.master\n\t\t\t\tif( !master || master.constructor !== $mol_fiber ) {\n\t\t\t\t\tmaster = new $mol_fiber\n\t\t\t\t\tmaster.calculate = task.bind( this , ... args )\n\t\t\t\t\tconst prefix = slave ? `${ slave }/${ slave.cursor / 2 }:` : '/'\n\t\t\t\t\tmaster[ Symbol.toStringTag ] = `${ prefix }${ task.name }`\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn master.get()\n\n\t\t\t}\n\n\t\t}\n\n\t\tstatic quant = 16\n\t\tstatic deadline = 0\n\t\tstatic liveline = 0\n\n\t\tstatic current = null as null | $mol_fiber\n\t\t\n\t\tstatic scheduled = null as null | $mol_after_frame\n\t\tstatic queue = [] as ( ()=> PromiseLike< any > )[]\n\t\t\n\t\tstatic async tick() {\n\t\n\t\t\twhile( $mol_fiber.queue.length > 0 ) {\n\n\t\t\t\tconst now = Date.now()\n\n\t\t\t\tif( now >= $mol_fiber.deadline ) {\n\t\t\t\t\t$mol_fiber.schedule()\n\t\t\t\t\t$mol_fiber.liveline = now\n\t\t\t\t\treturn \n\t\t\t\t}\n\n\t\t\t\tconst task = $mol_fiber.queue.shift()!\n\t\t\t\tawait task()\n\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\tstatic schedule() {\n\n\t\t\tif( !$mol_fiber.scheduled ) {\n\n\t\t\t\t$mol_fiber.scheduled = new $mol_after_frame( async ()=> {\n\t\t\t\t\t\n\t\t\t\t\tconst now = Date.now()\n\t\t\t\t\tlet quant = $mol_fiber.quant\n\t\t\t\t\t\n\t\t\t\t\tif( $mol_fiber.liveline ) {\n\t\t\t\t\t\tquant = Math.max( quant , Math.floor( ( now - $mol_fiber.liveline ) / 2 ) )\n\t\t\t\t\t\t$mol_fiber.liveline = 0\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t$mol_fiber.deadline = now + quant\n\t\t\t\t\t$mol_fiber.scheduled = null\n\t\t\t\t\t\n\t\t\t\t\tawait $mol_fiber.tick()\n\n\t\t\t\t} )\n\n\t\t\t}\n\n\t\t\tconst promise : Promise< any > = new this.$.Promise( done => this.queue.push( ()=> ( done() , promise ) ) )\n\t\t\treturn promise\n\n\t\t}\n\n\t\tvalue = undefined as unknown as Value\n\t\terror = null as null | Error | PromiseLike< Value >\n\t\tcursor = $mol_fiber_status.obsolete\n\t\tmasters = [] as ( $mol_fiber | number | undefined )[]\n\t\tcalculate! : ()=> Value\n\t\t\n\t\tschedule() {\n\t\t\t$mol_fiber.schedule().then( ()=> this.wake() )\n\t\t}\n\n\t\t@ $mol_log2.method\n\t\twake() {\n\t\t\ttry {\n\t\t\t\tif( this.cursor > $mol_fiber_status.actual ) return this.get()\n\t\t\t} catch( error ) {\n\t\t\t\tif( 'then' in error ) return\n\t\t\t\t$mol_fail_hidden( error )\n\t\t\t}\n\t\t}\n\n\t\tpush( value : Value ) {\n\t\t\t\n\t\t\tvalue = this.$.$mol_conform( value , this.value )\n\t\t\t\n\t\t\tif( this.error || !Object.is( this.value , value ) ) {\n\t\t\n\t\t\t\tthis.$.$mol_log2.info( this , $mol_fiber_token_changed1 , value , $mol_fiber_token_changed2 , this.error || this.value )\n\t\t\t\t\n\t\t\t\tthis.obsolete_slaves()\n\t\t\t\t\n\t\t\t\tthis.forget()\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\tthis.$.$mol_log2.info( this , $mol_fiber_token_actualized , value )\n\t\t\t}\n\t\t\t\n\t\t\tthis.error = null\n\t\t\tthis.value = value\n\t\t\t\n\t\t\tthis.complete()\n\n\t\t\treturn value\n\t\t}\n\n\t\tfail( error : Error | PromiseLike< Value > ) : Error | PromiseLike< Value > {\n\t\t\t\n\t\t\tthis.complete()\t\n\t\t\t\n\t\t\tthis.$.$mol_log2.info( this , $mol_fiber_token_failed , error )\n\t\t\t\n\t\t\tthis.error = error\n\n\t\t\tthis.obsolete_slaves()\n\n\t\t\treturn error\n\t\t}\n\n\t\twait( promise : PromiseLike< Value > ) : PromiseLike< Value > {\n\t\t\tthis.error = promise\n\t\t\tthis.$.$mol_log2.info( this , $mol_fiber_token_sleeped , promise )\n\t\t\tthis.cursor = $mol_fiber_status.obsolete\n\t\t\treturn promise\n\t\t}\n\n\t\tcomplete() {\n\n\t\t\tif( this.cursor <= $mol_fiber_status.actual ) return\n\n\t\t\tfor( let index = 0 ; index < this.masters.length ; index += 2 ) {\n\t\t\t\tthis.complete_master( index )\n\t\t\t}\n\t\t\t\n\t\t\tthis.cursor = $mol_fiber_status.actual\n\t\t}\n\t\t\n\t\tcomplete_master( master_index : number ) {\n\t\t\tthis.disobey( master_index )\n\t\t}\n\n\t\tpull() {\n\t\t\tthis.push( this.calculate() )\n\t\t}\n\n\t\t@ $mol_log2_indent.method\n\t\tupdate() {\n\n\t\t\tconst slave = $mol_fiber.current\n\t\t\t\n\t\t\ttry {\n\t\t\t\t\t\n\t\t\t\t// this.limit()\n\t\t\t\t\n\t\t\t\t$mol_fiber.current = this\n\n\t\t\t\tthis.$.$mol_log2.info( this , $mol_fiber_token_runned )\n\n\t\t\t\tthis.pull()\n\n\t\t\t} catch( error ) {\n\n\t\t\t\tif( 'then' in error ) {\n\t\t\t\t\t\n\t\t\t\t\tif( !slave ) {\n\t\t\t\t\t\tconst listener = ()=> this.wake()\n\t\t\t\t\t\terror = error.then( listener , listener )\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.wait( error )\n\n\t\t\t\t} else {\n\t\t\t\t\tthis.fail( error )\n\t\t\t\t}\n\n\t\t\t} finally {\n\t\t\t\t$mol_fiber.current = slave\n\t\t\t}\n\n\t\t}\n\n\t\tget() {\n\n\t\t\tif( this.cursor > $mol_fiber_status.obsolete ) {\n\t\t\t\tthis.$.$mol_fail( new Error( `Cyclic dependency at ${ this }` ) )\n\t\t\t}\n\t\t\t\n\t\t\tconst slave = $mol_fiber.current\n\t\t\tif( slave ) slave.master = this\n\t\t\t\n\t\t\tif( this.cursor > $mol_fiber_status.actual ) this.update()\n\n\t\t\tif( this.error ) return this.$.$mol_fail_hidden( this.error )\n\t\t\t\n\t\t\treturn this.value\n\n\t\t}\n\n\t\tlimit() {\n\n\t\t\tif( !$mol_fiber.deadline ) return\n\t\t\tif( !$mol_fiber.current ) return\n\n\t\t\tif( Date.now() < $mol_fiber.deadline ) return\n\n\t\t\tthis.$.$mol_fail_hidden( $mol_fiber.schedule() )\n\t\t}\n\n\t\tget master() {\n\t\t\treturn this.masters[ this.cursor ] as $mol_fiber\n\t\t}\n\t\tset master( next : $mol_fiber ) {\n\n\t\t\tif( this.cursor === $mol_fiber_status.doubt ) return\n\t\t\t\n\t\t\tconst cursor = this.cursor\n\t\t\tconst prev = this.masters[ this.cursor ]\n\t\t\t\n\t\t\tif( prev !== next ) {\n\t\t\t\tif( prev ) this.rescue( prev as $mol_fiber , cursor )\n\t\t\t\tthis.masters[ cursor ] = next\n\t\t\t\tthis.masters[ cursor + 1 ] = this.obey( next , cursor )\n\t\t\t}\n\t\t\t\n\t\t\tthis.cursor = cursor + 2\n\t\t}\n\n\t\trescue( master : $mol_fiber , master_index : number ) {}\n\n\t\tobey( master : $mol_fiber , master_index : number ) { return -1 }\n\t\tlead( slave : $mol_fiber , master_index : number ) { return -1 }\n\n\t\tdislead( slave_index : number ) {\n\t\t\tthis.destructor()\n\t\t}\n\n\t\tdisobey( master_index : number ) {\n\t\t\t\n\t\t\tconst master = this.masters[ master_index ] as $mol_fiber\n\t\t\tif( !master ) return\n\n\t\t\tmaster.dislead( this.masters[ master_index + 1 ] as number )\n\t\t\t\n\t\t\tthis.masters[ master_index ] = undefined\n\t\t\tthis.masters[ master_index + 1 ] = undefined\n\n\t\t\tthis.$.$mol_array_trim( this.masters )\n\n\t\t}\n\n\t\tobsolete_slaves() { }\n\n\t\tobsolete( master_index : number ) { }\n\n\t\tforget() {\n\t\t\tthis.value = undefined as unknown as Value\n\t\t}\n\n\t\tabort() {\n\t\t\tthis.forget()\n\t\t\treturn true\n\t\t}\n\n\t\tdestructor() {\n\t\t\tif( !this.abort() ) return\n\t\t\t\n\t\t\tthis.$.$mol_log2.info( this , $mol_fiber_token_destructed )\n\t\t\tthis.complete()\n\t\t}\n\n\t\t[ $mol_dev_format_head ]() {\n\t\t\treturn $mol_dev_format_native( this )\n\t\t}\n\n\t}\n\n\texport let $mol_fiber_token_runned = new $mol_log2_token( ' ► ' )\n\texport let $mol_fiber_token_changed1 = new $mol_log2_token( ' ˸ ' )\n\texport let $mol_fiber_token_changed2 = new $mol_log2_token( ' 🠈 ' )\n\texport let $mol_fiber_token_actualized = new $mol_log2_token( ' ✓ ' )\n\texport let $mol_fiber_token_sleeped = new $mol_log2_token( ' 💤 ' )\n\texport let $mol_fiber_token_failed = new $mol_log2_token( ' 🔥 ' )\n\texport let $mol_fiber_token_destructed = new $mol_log2_token( ' 🕱 ' )\n\n\t$mol_log2_legend.info( $mol_fiber_token_runned , '$mol_fiber starts execution' )\n\t$mol_log2_legend.info( new $mol_log2_line( $mol_fiber_token_changed1 , $mol_fiber_token_changed2 ) , '$mol_fiber value is changed to different value' )\n\t$mol_log2_legend.info( $mol_fiber_token_actualized , 'Actual $mol_fiber value is same as before' )\n\t$mol_log2_legend.info( $mol_fiber_token_sleeped , '$mol_fiber can not run now and awaits on promise' )\n\t$mol_log2_legend.info( $mol_fiber_token_failed , '$mol_fiber is failed and will be throw an Error or Promise' )\n\t$mol_log2_legend.info( $mol_fiber_token_destructed , '$mol_fiber fully destructed' )\n\n}\n","namespace $ {\n\n\texport function $mol_atom2_value< Value >( task : ()=> Value ) : Value | undefined {\n\t\tconst cached = $mol_atom2.cached\n\t\ttry {\n\t\t\t$mol_atom2.cached = true\n\t\t\treturn task()\n\t\t} finally {\n\t\t\t$mol_atom2.cached = cached\n\t\t}\n\t}\n\n\texport class $mol_atom2< Value = any > extends $mol_fiber< Value > {\n\n\t\tstatic get current() {\n\t\t\tconst atom = $mol_fiber.current\n\t\t\tif( atom instanceof $mol_atom2 ) return atom\n\t\t\treturn null\n\t\t}\n\n\t\tstatic cached = false\n\n\t\tstatic reap_task = null as null | $mol_fiber\n\t\tstatic reap_queue = [] as $mol_atom2[]\n\n\t\tstatic reap( atom : $mol_atom2 ) {\n\n\t\t\tthis.reap_queue.push( atom )\n\n\t\t\tif( this.reap_task ) return\n\n\t\t\tthis.reap_task = $mol_fiber_defer( ()=> {\n\t\t\t\tthis.reap_task = null\n\t\t\t\t\n\t\t\t\twhile( true ) {\n\t\t\t\t\t\n\t\t\t\t\tconst atom = this.reap_queue.pop()\n\t\t\t\t\tif( !atom ) break\n\t\t\t\t\t\n\t\t\t\t\tif( !atom.alone ) continue\n\t\t\t\t\t\n\t\t\t\t\tatom.destructor()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} )\n\n\t\t}\n\n\t\tslaves = [] as ( $mol_fiber | number | undefined )[]\n\t\t\n\t\trescue( master : $mol_atom2 , cursor : number ) {\n\n\t\t\tif(!( master instanceof $mol_atom2 )) return\n\t\t\t\n\t\t\tconst master_index = this.masters.length\n\t\t\tconst slave_index = this.masters[ cursor + 1 ] as number + 1\n\t\t\t\n\t\t\tmaster.slaves[ slave_index ] = master_index\n\t\t\tthis.masters.push( master , this.masters[ cursor + 1 ] )\n\t\t\t\n\t\t}\n\n\t\tget() {\n\t\t\tif( $mol_atom2.cached ) return this.value\n\t\t\t\n\t\t\tconst value = super.get()\n\t\t\tif( value === undefined ) $mol_fail( new Error( `Not defined: ${ this }` ) )\n\t\t\t\n\t\t\treturn value\n\t\t}\n\n\t\tpull() {\n\t\t\t\n\t\t\tif( this.cursor === $mol_fiber_status.obsolete ) return super.pull()\n\n\t\t\tthis.$.$mol_log2.info( this , $mol_atom2_token_revalidation )\n\t\t\t\n\t\t\tconst masters = this.masters\n\n\t\t\tfor( let index = 0 ; index < masters.length ; index += 2 ) {\n\n\t\t\t\tconst master = masters[ index ] as $mol_atom2\n\t\t\t\tif( !master ) continue\n\n\t\t\t\ttry {\n\t\t\t\t\tmaster.get()\n\t\t\t\t} catch( error ) {\n\t\t\t\t\tif( 'then' in error ) $mol_fail_hidden( error )\n\t\t\t\t\tthis.cursor = $mol_fiber_status.obsolete\n\t\t\t\t}\n\n\t\t\t\tif( this.cursor as $mol_fiber_status !== $mol_fiber_status.obsolete ) continue\n\n\t\t\t\tthis.$.$mol_log2.info( this , $mol_atom2_token_stumbled , this._error || this._value )\n\t\t\t\treturn super.pull()\n\t\t\t}\n\n\t\t\tthis.$.$mol_log2.info( this , $mol_atom2_token_revalidated , this._error || this._value )\n\t\t\tthis.cursor = $mol_fiber_status.actual\n\n\t\t}\n\t\t\n\t\t_value = undefined as unknown as Value\n\t\tget value() { return this._value }\n\t\tset value( next : Value ) {\n\n\t\t\tconst prev = this._value\n\n\t\t\tif( prev && this.$.$mol_owning_check( this , prev ) ) prev.destructor()\n\n\t\t\tif( next && this.$.$mol_owning_catch( this , next ) ) {\n\t\t\t\tnext[ Symbol.toStringTag ] = this[ Symbol.toStringTag ]\n\t\t\t\tnext[ $mol_object_field ] = this[ $mol_object_field ]\n\t\t\t}\n\n\t\t\tthis._value = next\n\t\t}\n\n\t\t_error = null as null | Error | PromiseLike< Value >\n\t\tget error() { return this._error }\n\t\tset error( next : null | Error | PromiseLike< Value > ) {\n\n\t\t\tconst prev = this._error\n\n\t\t\tif( prev && this.$.$mol_owning_check( this , prev ) ) prev.destructor()\n\n\t\t\tif( next && this.$.$mol_owning_catch( this , next ) ) {\n\t\t\t\tnext[ Symbol.toStringTag ] = this[ Symbol.toStringTag ]\n\t\t\t\tnext[ $mol_object_field ] = this[ $mol_object_field ]\n\t\t\t}\n\n\t\t\tthis._error = next\n\t\t}\n\n\t\tput( next : Value ) {\n\t\t\tthis.cursor = this.masters.length\n\t\t\tnext = this.push( next )\n\t\t\tthis.cursor = $mol_fiber_status.persist\n\t\t\treturn next\n\t\t}\n\n\t\tcomplete_master( master_index : number ) {\n\t\t\tif( this.masters[ master_index ] instanceof $mol_atom2 ) {\n\t\t\t\tif( master_index >= this.cursor ) this.disobey( master_index )\n\t\t\t} else {\n\t\t\t\tthis.disobey( master_index )\n\t\t\t}\n\t\t}\n\n\t\tobey( master : $mol_fiber , master_index : number ) : number {\n\t\t\treturn master.lead( this , master_index )\n\t\t}\n\n\t\tlead( slave : $mol_fiber , master_index : number ) {\n\t\t\t\n\t\t\tthis.$.$mol_log2.info( this , $mol_atom2_token_leaded , slave )\n\t\t\t\n\t\t\tconst slave_index = this.slaves.length\n\t\t\tthis.slaves[ slave_index ] = slave\n\t\t\tthis.slaves[ slave_index + 1 ] = master_index\n\t\t\t\n\t\t\treturn slave_index\n\t\t}\n\n\t\tdislead( slave_index : number ) {\n\n\t\t\tif( slave_index < 0 ) return // slave is fiber\n\t\t\t\n\t\t\tthis.$.$mol_log2.info( this , $mol_atom2_token_disleaded , this.slaves[ slave_index ] )\n\n\t\t\tthis.slaves[ slave_index ] = undefined\n\t\t\tthis.slaves[ slave_index + 1 ] = undefined\n\n\t\t\t$mol_array_trim( this.slaves )\n\n\t\t\tif( this.cursor > $mol_fiber_status.persist && this.alone ) $mol_atom2.reap( this )\n\t\t}\n\n\t\tobsolete( master_index = -1 ) {\n\n\t\t\tif( this.cursor > $mol_fiber_status.obsolete ) {\n\t\t\t\tif( master_index >= this.cursor - 2 ) return\n\n\t\t\t\tconst path = [] as $mol_atom2[]\n\t\t\t\tlet current = this as $mol_atom2\n\t\t\t\t\n\t\t\t\tcollect : while( current ) {\n\t\t\t\t\tpath.push( current )\n\t\t\t\t\tcurrent = current.masters[ current.cursor - 2 ] as $mol_atom2\n\t\t\t\t}\n\n\t\t\t\tthis.$.$mol_fail( new Error( `Obsoleted while calculation \\n\\n${ path.join( '\\n' ) }\\n` ) )\n\t\t\t}\n\t\t\t\n\t\t\tif( this.cursor === $mol_fiber_status.obsolete ) return\n\t\t\t\n\t\t\tthis.$.$mol_log2.info( this , $mol_atom2_token_obsoleted , this._error || this._value )\n\t\t\tif( this.cursor !== $mol_fiber_status.doubt ) this.doubt_slaves()\n\t\t\t\n\t\t\tthis.cursor = $mol_fiber_status.obsolete\n\t\t\t\n\t\t}\n\n\t\tdoubt( master_index = -1 ) {\n\t\t\t\n\t\t\tif( this.cursor > $mol_fiber_status.obsolete ) {\n\t\t\t\tif( master_index >= this.cursor - 2 ) return\n\n\t\t\t\tconst path = [] as $mol_atom2[]\n\t\t\t\tlet current = this as $mol_atom2\n\t\t\t\t\n\t\t\t\tcollect : while( current ) {\n\t\t\t\t\tpath.push( current )\n\t\t\t\t\tcurrent = current.masters[ current.cursor - 2 ] as $mol_atom2\n\t\t\t\t}\n\n\t\t\t\tthis.$.$mol_fail( new Error( `Doubted while calculation \\n\\n${ path.join( '\\n' ) }\\n` ) )\n\t\t\t}\n\t\t\t\n\t\t\tif( this.cursor >= $mol_fiber_status.doubt ) return\n\t\t\t\t\n\t\t\tthis.$.$mol_log2.info( this , $mol_atom2_token_doubted , this._error || this._value )\n\t\t\tthis.cursor = $mol_fiber_status.doubt\n\t\t\t\n\t\t\tthis.doubt_slaves()\n\n\t\t}\n\n\t\t@ $mol_log2_indent.method\n\t\tobsolete_slaves() {\n\t\t\tfor( let index = 0 ; index < this.slaves.length ; index += 2 ) {\n\t\t\t\tconst slave = this.slaves[ index ] as $mol_atom2\n\t\t\t\tif( slave ) slave.obsolete( this.slaves[ index + 1 ] as number )\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_log2_indent.method\n\t\tdoubt_slaves() {\n\t\t\tfor( let index = 0 ; index < this.slaves.length ; index += 2 ) {\n\t\t\t\tconst slave = this.slaves[ index ] as $mol_atom2\n\t\t\t\tif( slave ) slave.doubt( this.slaves[ index + 1 ] as number )\n\t\t\t}\n\t\t}\n\n\t\tget fresh() {\n\t\t\treturn $mol_log2_hidden.func( ()=> {\n\t\t\t\tif( this.cursor !== $mol_fiber_status.actual ) return\n\n\t\t\t\tthis.cursor = $mol_fiber_status.obsolete\n\t\t\t\t$mol_fiber_solid.run( ()=> this.update() )\n\t\t\t} )\n\t\t}\n\n\t\tget alone() {\n\t\t\treturn this.slaves.length === 0\n\t\t}\n\t\t\n\t\tget derived() {\n\t\t\t\n\t\t\tfor( let index = 0 ; index < this.masters.length ; index += 2 ) {\n\t\t\t\tif( this.masters[ index ] ) return true\n\t\t\t}\n\n\t\t\treturn false\n\t\t}\n\n\t\tdestructor() {\n\n\t\t\tif( !this.abort() ) return\n\t\t\t\n\t\t\tthis.$.$mol_log2.info( this , $mol_fiber_token_destructed )\n\n\t\t\tthis.cursor = $mol_fiber_status.persist\n\n\t\t\tfor( let index = 0 ; index < this.masters.length ; index += 2 ) {\n\t\t\t\tthis.complete_master( index )\n\t\t\t}\n\n\t\t}\n\t\t\n\t}\n\n\texport let $mol_atom2_token_revalidation = new $mol_log2_token( ' ⏭ ' )\n\texport let $mol_atom2_token_stumbled = new $mol_log2_token( ' ⏯ ' )\n\texport let $mol_atom2_token_revalidated = new $mol_log2_token( ' ✔ ' )\n\texport let $mol_atom2_token_leaded = new $mol_log2_token( ' ☍ ' )\n\texport let $mol_atom2_token_disleaded = new $mol_log2_token( ' ☌ ' )\n\texport let $mol_atom2_token_obsoleted = new $mol_log2_token( ' ✘ ' )\n\texport let $mol_atom2_token_doubted = new $mol_log2_token( ' � ' )\n\n\t$mol_log2_legend.info( $mol_atom2_token_revalidation , '$mol_atom2 starts masters cheking for changes' )\n\t$mol_log2_legend.info( $mol_atom2_token_stumbled , '$mol_atom2 is obsoleted while masters checking' )\n\t$mol_log2_legend.info( $mol_atom2_token_revalidated , '$mol_atom2 is actual becasue there is no changed masters' )\n\t$mol_log2_legend.info( $mol_atom2_token_leaded , '$mol_atom2 leads some slave' )\n\t$mol_log2_legend.info( $mol_atom2_token_disleaded , '$mol_atom2 disleads some slave' )\n\t$mol_log2_legend.info( $mol_atom2_token_obsoleted , '$mol_atom2 is obsoleted because some master is changed' )\n\t$mol_log2_legend.info( $mol_atom2_token_doubted , '$mol_atom2 is doubted because some master is doubted or obsoleted' )\n\n}\n","namespace $ {\n\n\texport class $mol_mem_force extends Object {\n\t\tconstructor(){ super() }\n\t\t$mol_mem_force = true\n\t\tstatic $mol_mem_force = true\n\t\tstatic toString() { return this.name }\n\t}\n\n\texport class $mol_mem_force_cache extends $mol_mem_force {}\n\texport class $mol_mem_force_update extends $mol_mem_force {}\n\texport class $mol_mem_force_fail extends $mol_mem_force_cache {}\n\n}\n","namespace $ {\n\n\texport let $mol_mem_cached = $mol_atom2_value\n\n\texport function $mol_mem_persist() {\n\n\t\tconst atom = $mol_atom2.current\n\t\tif( !atom ) return\n\t\t\n\t\tif( atom.hasOwnProperty( 'destructor' ) ) return\n\t\t\n\t\tatom.destructor = ()=> {}\n\t\t\n\t}\n\n\texport function $mol_mem<\n\t\tHost extends object ,\n\t\tField extends keyof Host ,\n\t\tValue ,\n\t>(\n\t\tproto : Host ,\n\t\tname : Field ,\n\t\tdescr? : TypedPropertyDescriptor< ( next? : Value , force? : $mol_mem_force )=> Value >\n\t) : any {\n\n\t\tconst value = descr!.value!\n\t\t\n\t\tconst store = new WeakMap< Host , $mol_atom2< Value > >()\n\n\t\tObject.defineProperty( proto , name + \"()\" , {\n\t\t\tget : function() {\n\t\t\t\treturn store.get( this )\n\t\t\t}\n\t\t} )\n\n\t\tconst get_cache = ( host : Host )=> {\n\t\t\t\n\t\t\tlet cache = store.get( host )!\n\t\t\tif( cache ) return cache\n\n\t\t\tlet cache2 = new $mol_atom2\n\t\t\tcache2.calculate = value.bind( host )\n\t\t\tcache2[ Symbol.toStringTag ] = `${ host }.${ name }()`\n\t\t\tcache2.abort = ()=> {\n\t\t\t\tstore.delete( host )\n\t\t\t\tcache2.forget()\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t$mol_owning_catch( host , cache2 )\n\t\t\tcache2[ $mol_object_field ] = name\n\t\t\tstore.set( host , cache2 )\n\n\t\t\treturn cache2\n\t\t}\n\t\t\n\t\treturn {\n\n\t\t\t... descr || {} ,\n\t\t\t\n\t\t\tvalue( this : Host , next? : Value , force? : $mol_mem_force ) {\n\t\t\t\t\n\t\t\t\tif( next === undefined ) {\n\t\t\t\t\t\n\t\t\t\t\tconst cache = get_cache( this )\n\t\t\t\t\tif( force === $mol_mem_force_cache ) cache.obsolete( Number.NaN )\n\t\t\t\t\t\n\t\t\t\t\tif( $mol_atom2.current ) return cache.get()\n\t\t\t\t\telse return $mol_fiber.run( ()=> cache.get() )\n\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn $mol_fiber.run( ()=> {\n\t\t\t\t\tif( force === $mol_mem_force_fail ) return get_cache( this ).fail( next as any )\n\t\t\t\t\tif( force !== $mol_mem_force_cache ) next = value.call( this , next )\n\t\t\t\t\treturn get_cache( this ).put( next )\n\t\t\t\t} )\n\t\t\t\t\n\t\t\t}\n\n\t\t}\n\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_window extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic size( next? : {\n\t\t\twidth : number\n\t\t\theight : number\n\t\t} , force? : $mol_mem_force ) {\n\t\t\treturn next || {\n\t\t\t\twidth : self.innerWidth ,\n\t\t\t\theight : self.innerHeight ,\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\tself.addEventListener( 'resize' , $mol_fiber_root( $mol_log_group( `$mol_window resize` , ()=> {\n\t\t$mol_window.size( undefined , $mol_mem_force_cache )\n\t} ) ) )\n\t\n}\n","namespace $ {\n\n\texport function $mol_dict_key( value : any ) {\n\t\t\n\t\tif( !value ) return value\n\t\tif( typeof value !== 'object' ) return value\n\n\t\tif( Array.isArray( value ) ) return value.join( ' , ' )\n\t\tif( Object.getPrototypeOf( Object.getPrototypeOf( value ) ) === null ) return JSON.stringify( value )\n\t\t\n\t\treturn value\n\t}\n\t\n\texport class $mol_dict< Key , Value > extends Map< Key , Value > {\n\n\t\tget( key : Key ) {\n\t\t\treturn super.get( $mol_dict_key( key ) )\n\t\t}\n\n\t\thas( key : Key ) {\n\t\t\treturn super.has( $mol_dict_key( key ) )\n\t\t}\n\n\t\tset( key : Key , value : Value ) {\n\t\t\treturn super.set( $mol_dict_key( key ) , value )\n\t\t}\n\n\t\tdelete( key : Key ) {\n\t\t\treturn super.delete( $mol_dict_key( key ) )\n\t\t}\n\n\t\tforEach( back : ( value : Value , key : Key , dict : Map< Key , Value > ) => void , context? : any ) {\n\t\t\treturn super.forEach( ( val , key , dict )=> {\n\t\t\t\tif( typeof key === 'string' ) key = JSON.parse( key )\n\t\t\t\treturn back.call( this , val , key , dict )\n\t\t\t} , context )\n\t\t}\n\n\t\t[Symbol.iterator]() {\n\t\t\tconst iterator = super[ Symbol.iterator ]()\n\t\t\t\n\t\t\treturn {\n\t\t\t\t[Symbol.iterator]() {\n\t\t\t\t\treturn this\n\t\t\t\t},\n\t\t\t\tnext() {\n\t\t\t\t\tconst iteration = iterator.next()\n\n\t\t\t\t\tif( !iteration.done ) {\n\t\t\t\t\t\tconst key = iteration.value[0]\n\t\t\t\t\t\tif( typeof key === 'string' ) iteration.value[0] = JSON.parse( key )\n\t\t\t\t\t}\n\n\t\t\t\t\treturn iteration\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_mem_key<\n\t\tHost extends object ,\n\t\tField extends keyof Host ,\n\t\tKey ,\n\t\tValue ,\n\t>(\n\t\tproto : Host ,\n\t\tname : Field ,\n\t\tdescr? : TypedPropertyDescriptor< ( key : Key , next? : Value , force? : $mol_mem_force )=> Value >\n\t) : any {\n\n\t\tconst value = descr!.value!\n\t\t\n\t\tconst store = new WeakMap< Host , Map< Key , $mol_atom2 > >()\n\n\t\tObject.defineProperty( proto , name + \"()\" , {\n\t\t\tget : function() {\n\t\t\t\treturn store.get( this )\n\t\t\t}\n\t\t} )\n\n\t\tconst get_cache = ( host : Host , key : Key )=> {\n\t\t\t\n\t\t\tlet dict = store.get( host )!\n\t\t\tif( !dict ) store.set( host , dict = new $mol_dict )\n\t\t\t\n\t\t\tlet cache = dict.get( key )\n\t\t\tif( cache ) return cache\n\n\t\t\tlet cache2 = new $mol_atom2\n\t\t\tcache2[ Symbol.toStringTag ] = `${ host }.${ name }(${JSON.stringify(key)})`\n\t\t\tcache2.calculate = value.bind( host , key )\n\t\t\tcache2.abort = ()=> {\n\t\t\t\tdict.delete( key )\n\t\t\t\tif( dict.size === 0 ) store.delete( host )\n\t\t\t\tcache2.forget()\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t$mol_owning_catch( host , cache2 )\n\t\t\tcache2[ $mol_object_field ] = name\n\t\t\tdict.set( key , cache2 )\n\n\t\t\treturn cache2\n\t\t}\n\t\t\n\t\treturn {\n\t\t\t\n\t\t\tvalue( key : Key , next? : Value , force? : $mol_mem_force ) {\n\t\t\t\t\n\t\t\t\tif( next === undefined ) {\n\t\t\t\t\t\n\t\t\t\t\tconst cache = get_cache( this , key )\n\t\t\t\t\tif( force === $mol_mem_force_cache ) cache.obsolete()\n\n\t\t\t\t\tif( $mol_atom2.current ) return cache.get()\n\t\t\t\t\telse return $mol_fiber.run( ()=> cache.get() )\n\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn $mol_fiber.run( ()=> {\n\t\t\t\t\t\n\t\t\t\t\tif( force === $mol_mem_force_fail ) return get_cache( this , key ).fail( next as any )\n\t\t\t\t\tif( force !== $mol_mem_force_cache ) next = value.call( this , key , next )\n\t\t\t\t\treturn get_cache( this , key ).put( next )\n\t\t\t\t\t\n\t\t\t\t} )\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_atom2_autorun( calculate : ()=> any ) {\n\t\t\n\t\treturn $mol_atom2.create( atom => {\n\t\t\tatom.calculate = calculate\n\t\t\tatom.obsolete_slaves = atom.schedule\n\t\t\tatom.doubt_slaves = atom.schedule\n\t\t\tatom[ Symbol.toStringTag ] = calculate[ Symbol.toStringTag ] || calculate.name || '$mol_atom2_autorun'\n\t\t\tatom.schedule()\n\t\t} )\n\n\t}\n\n}\n","namespace $ {\n\t\n\texport class $mol_defer extends $mol_object {\n\t\t\n\t\tconstructor( public run : ()=> void ) {\n\t\t\tsuper()\n\t\t\t$mol_defer.add( this )\n\t\t}\n\t\t\n\t\tdestructor() {\n\t\t\t$mol_defer.drop( this )\n\t\t}\n\t\t\n\t\tstatic all : $mol_defer[] = []\n\t\tstatic timer = null as any\n\t\t\n\t\tstatic scheduleNative : ( handler : ()=> void ) => any = ( typeof requestAnimationFrame == 'function' )\n\t\t\t? handler => requestAnimationFrame( handler )\n\t\t\t: handler => setTimeout( handler , 16 )\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.timer ) return\n\t\t\t\n\t\t\tthis.timer = this.scheduleNative( ()=> {\n\t\t\t\tthis.timer = null\n\t\t\t\tthis.run()\n\t\t\t} )\n\t\t}\n\t\t\n\t\tstatic unschedule() {\n\t\t\tif( !this.timer ) return\n\t\t\t\n\t\t\tcancelAnimationFrame( this.timer )\n\t\t\tthis.timer = null\n\t\t}\n\t\t\n\t\tstatic add( defer : $mol_defer ) {\n\t\t\tthis.all.push( defer )\n\t\t\tthis.schedule()\n\t\t}\n\t\t\n\t\tstatic drop( defer : $mol_defer ) {\n\t\t\tvar index = this.all.indexOf( defer )\n\t\t\tif( index >= 0 ) this.all.splice( index , 1 )\n\t\t}\n\t\t\n\t\tstatic run() {\n\t\t\tif( this.all.length === 0 ) return\n\t\t\tthis.schedule()\n\t\t\tfor( var defer : $mol_defer | undefined ; defer = this.all.shift() ; ) defer.run()\n\t\t\t//this.unschedule()\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\n\texport class $mol_after_timeout extends $mol_object2 {\n\n\t\tid : any\n\n\t\tconstructor(\n\t\t\tpublic delay : number ,\n\t\t\tpublic task : ()=> void ,\n\t\t) {\n\t\t\tsuper()\n\t\t\tthis.id = setTimeout( task , delay )\n\t\t}\n\n\t\tdestructor() {\n\t\t\tclearTimeout( this.id )\n\t\t}\n\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_view_selection extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic focused( next? : Element[] ) : Element[] {\n\t\t\tif( next === undefined ) return [] as Element[]\n\t\t\t\n\t\t\tconst parents : Element[] = []\n\t\t\tlet element = next[ 0 ] as HTMLElement\n\t\t\t\n\t\t\twhile( element ) {\n\t\t\t\tparents.push( element )\n\t\t\t\telement = element.parentNode as HTMLElement\n\t\t\t}\n\n\t\t\tnew $mol_defer( $mol_log2.func( ()=> {\n\n\t\t\t\tconst element = $mol_mem_cached( ()=> this.focused() )![0] as HTMLElement\n\t\t\t\t\n\t\t\t\tif( element ) element.focus()\n\t\t\t\telse $mol_dom_context.blur()\n\n\t\t\t} ) )\n\n\t\t\treturn parents\n\t\t}\n\t\t\n\t\t@ $mol_log2.method\n\t\tstatic focus( event : FocusEvent ) {\n\t\t\tthis.focused( [ event.target as Element ] )\n\n\t\t}\n\t\t\n\t\t@ $mol_log2.method\n\t\tstatic blur( event : FocusEvent ) {\n\t\t\tconst element = $mol_mem_cached( ()=> this.focused() )![0] as HTMLElement\n\t\t\tif( element === event.target ) this.focused( [] )\n\t\t}\n\t}\n\t\n}\n","namespace $ {\n\t\n\tif( $mol_dom_context.document ) {\n\n\t\t$mol_dom_context.document.addEventListener(\n\t\t\t'focus' ,\n\t\t\t( event : FocusEvent )=> {\n\t\t\t\tnew $mol_after_tick(\n\t\t\t\t\t$mol_fiber_root(\n\t\t\t\t\t\t()=> $mol_view_selection.focus( event )\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t} ,\n\t\t\ttrue ,\n\t\t)\n\t\t\n\t\t$mol_dom_context.document.addEventListener(\n\t\t\t'blur' ,\n\t\t\t( event : FocusEvent )=> {\n\t\t\t\tnew $mol_after_timeout( 0 ,\n\t\t\t\t\t$mol_fiber_root(\n\t\t\t\t\t\t()=> $mol_view_selection.blur( event )\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t} ,\n\t\t\ttrue ,\n\t\t)\n\t\n\t}\n\t\n}\n","namespace $ { \n\texport function $mol_const< Value >( value : Value ) {\n\t\tvar getter = <{ () : Value , '()' : Value }> ( () => value )\n\t\tgetter['()'] = value\n\t\tgetter[ Symbol.toStringTag ] = value\n\t\treturn getter\n\t}\n}\n","namespace $ {\n\t\n\texport function $mol_dom_render_attributes (\n\t\tel : Element ,\n\t\tattrs : { [ key : string ] : string|number|boolean|null }\n\t) {\n\n\t\tfor( let name in attrs ) {\n\n\t\t\tlet val = attrs[ name ] as any\n\n\t\t\tif( val === null || val === false ) {\n\n\t\t\t\tif( !el.hasAttribute( name ) ) continue\n\t\t\t\t\n\t\t\t\tel.removeAttribute( name )\n\n\t\t\t} else {\n\t\t\t\t\n\t\t\t\tconst str = String( val )\n\t\t\t\tif( el.getAttribute( name ) === str ) continue\n\t\t\t\t\n\t\t\t\tel.setAttribute( name , str )\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\n\tconst cacthed = new WeakMap< any , boolean >()\n\n\texport function $mol_fail_catch( error : object ) {\n\t\t\n\t\tif( cacthed.get( error ) ) return false\n\t\t\n\t\tcacthed.set( error , true )\n\t\treturn true\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_dom_render_styles (\n\t\tel : Element ,\n\t\tstyles : { [ key : string ] : string|number }\n\t) {\n\t\tfor( let name in styles ) {\n\t\t\tlet val = styles[ name ]\n\t\t\t\n\t\t\tconst style = ( el as HTMLElement ).style as any\n\t\t\tconst cur = style[ name ]\n\t\t\t\n\t\t\tif( typeof val === 'number' ) {\n\t\t\t\tif( parseFloat( cur ) == val ) continue\n\t\t\t\tstyle[ name ] = `${ val }px`\n\t\t\t}\n\t\t\t\n\t\t\tif( cur !== val ) style[ name ] = val\n\t\t}\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_dom_render_fields (\n\t\tel : Element ,\n\t\tfields : { [ key : string ] : any }\n\t) {\n\t\tfor( let key in fields ) {\n\t\t\t\n\t\t\tconst val : any = fields[ key ]\n\t\t\t\n\t\t\tif( val === undefined ) continue\n\t\t\t// if( el[ key ] === val ) continue\n\t\t\t\n\t\t\tel[ key ] = val\n\t\t}\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_dom_render_children (\n\t\tel : Element ,\n\t\tchildNodes : NodeList | Array< Node | string | null >\n\t) {\n\t\tconst node_set = new Set< Node | string | null >( childNodes )\n\t\t\n\t\tlet nextNode : Node | null = el.firstChild\n\t\tfor( let view of childNodes ) {\n\n\t\t\tif( view == null ) continue\n\n\t\t\tif( view instanceof $mol_dom_context.Node ) {\n\t\t\t\t\n\t\t\t\twhile( true ) {\n\t\t\t\t\tif( !nextNode ) {\n\t\t\t\t\t\tel.appendChild( view )\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tif( nextNode == view ) {\n\t\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t\t\tbreak\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif( node_set.has( nextNode ) ) {\n\t\t\t\t\t\t\tel.insertBefore( view , nextNode )\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst nn = nextNode.nextSibling\n\t\t\t\t\t\t\tel.removeChild( nextNode )\n\t\t\t\t\t\t\tnextNode = nn\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\tif( nextNode && nextNode.nodeName === '#text' ) {\n\t\t\t\t\tconst str = String( view )\n\t\t\t\t\tif( nextNode.nodeValue !== str ) nextNode.nodeValue = str\n\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t} else {\n\t\t\t\t\tconst textNode = $mol_dom_context.document.createTextNode( String( view ) )\n\t\t\t\t\tel.insertBefore( textNode , nextNode )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\twhile( nextNode ) {\n\t\t\tconst currNode = nextNode\n\t\t\tnextNode = currNode.nextSibling\n\t\t\tel.removeChild( currNode )\n\t\t}\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_func_name( func : Function ) : string {\n\t\treturn func.name\n\t}\n\n\texport function $mol_func_name_from< Target extends Function >( target : Target , source : Function ) {\n\t\tObject.defineProperty( target , 'name' , { value : source.name } )\n\t\treturn target\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_deprecated( message : string ) {\n\t\treturn <\n\t\t\tMethod extends ( this : Host , ... args : readonly any[] )=> any ,\n\t\t\tHost extends {\n\t\t\t\t[key in Field] : Method\n\t\t\t},\n\t\t\tField extends keyof Host ,\n\t\t>(\n\t\t\thost : Host ,\n\t\t\tfield : Field ,\n\t\t\tdescr : TypedPropertyDescriptor< Method >\n\t\t)=> {\n\n\t\t\tconst value = descr.value!\n\t\t\t\n\t\t\tdescr.value = function $mol_deprecated_wrapper( this : Host , ... args : Parameters< Method > ) : ReturnType< Method > {\n\n\t\t\t\tconsole.warn( `${ host.constructor.name }::${ field } is deprecated. ${ message }` )\n\t\t\t\t\n\t\t\t\treturn value.call( this , ... args )\n\t\t\t\n\t\t\t} as any\n\n\t\t}\n\t}\n\t\n}\n",null,"namespace $ {\n\n\texport type $mol_view_content = $mol_view|Node|string|number|boolean\n\t\n\texport function $mol_view_visible_width() {\n\t\treturn $mol_window.size().width\n\t}\n\t\n\texport function $mol_view_visible_height() {\n\t\treturn $mol_window.size().height\n\t}\n\t\n\texport function $mol_view_state_key( suffix : string ) {\n\t\treturn suffix\n\t}\n\n\t/// Reactive statefull lazy ViewModel\n\texport class $mol_view extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic Root< This extends typeof $mol_view >( this : This , id: number ) {\n\t\t\treturn new this as InstanceType< This >\n\t\t}\n\n\t\t@ $mol_mem\n\t\tautorun() {\n\t\t\treturn $mol_atom2_autorun( ()=> {\n\t\t\t\tthis.dom_tree()\n\t\t\t\tdocument.title = this.title()\n\t\t\t\treturn this\n\t\t\t} )\n\t\t}\n\n\t\tstatic autobind() {\n\t\t\t\n\t\t\tconst nodes = $mol_dom_context.document.querySelectorAll( '[mol_view_root]' )\n\t\t\t\n\t\t\tfor( let i = nodes.length - 1 ; i >= 0 ; --i ) {\n\n\t\t\t\tconst name = nodes.item( i ).getAttribute( 'mol_view_root' )!\n\t\t\t\t\n\t\t\t\tconst View = $[ name ]\n\t\t\t\tif( !View ) {\n\t\t\t\t\tconsole.error( `Can not attach view. Class not found: ${ name }` )\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tconst view = View.Root( i )\n\t\t\t\tview.dom_node( nodes.item( i ) )\n\t\t\t\tview.autorun()\n\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\ttitle() : string {\n\t\t\treturn this.constructor.toString()\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tfocused( next?: boolean ) {\n\t\t\tlet node = this.dom_node()\n\t\t\tconst value = $mol_view_selection.focused( next === undefined ? undefined : ( next ? [ node ] : [] ) )\n\t\t\treturn value.indexOf( node ) !== -1\n\t\t} \n\t\t\n\t\tstate_key( suffix = '' ) {\n\t\t\treturn this.$.$mol_view_state_key( suffix )\n\t\t}\n\t\t\n\t\t/// Name of element that created when element not found in DOM\n\t\tdom_name() {\n\t\t\treturn this.constructor.toString().replace( '$' , '' ) || 'div'\n\t\t}\n\t\t\n\t\t/// NameSpace of element that created when element not found in DOM\n\t\tdom_name_space() { return 'http://www.w3.org/1999/xhtml' }\n\t\t\n\t\t/// Raw child views\n\t\tsub() {\n\t\t\treturn [] as readonly ($mol_view|Node|string|number|boolean)[]\n\t\t}\n\t\t\n\t\t/// Visible sub views with defined ambient context\n\t\t/// Render all by default\n\t\tsub_visible() {\n\t\t\treturn this.sub()\n\t\t}\n\t\t\n\t\t/// Minimal width that used for lazy rendering\n\t\t@ $mol_mem\n\t\tminimal_width() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return 0\n\t\t\t\n\t\t\tlet min = 0\n\t\t\tsub.forEach( view => {\n\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\tmin = Math.max( min , view.minimal_width() )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn min\n\t\t}\n\t\t\n\t\tmaximal_width() {\n\t\t\treturn this.minimal_width()\n\t\t}\n\t\t\n\t\t/// Minimal height that used for lazy rendering\n\t\t@ $mol_mem\n\t\tminimal_height() {\n\t\t\t\n\t\t\tlet min = 0\n\t\t\ttry {\n\t\t\t\tfor( const view of this.sub() ) {\n\n\t\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\t\tmin = Math.max( min , view.minimal_height() )\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t} \n\t\t\t} catch( error ) {\n\t\t\t\tif( 'then' in error ) $mol_fail_hidden( error )\n\t\t\t}\n\t\t\t\n\t\t\treturn min\n\t\t}\n\n\t\tstatic watchers = new Set< $mol_view >()\n\n\t\t@ $mol_mem\n\t\tview_rect() {\n\t\t\tif( $mol_atom2.current ) this.view_rect_watcher()\n\t\t\treturn this.view_rect_cache()\n\t\t}\n\n\t\t@ $mol_mem\n\t\tview_rect_cache( next = null as ClientRect | null ) {\n\t\t\treturn next\n\t\t}\n\n\t\t@ $mol_mem\n\t\tview_rect_watcher() {\n\t\t\t$mol_view.watchers.add( this )\n\t\t\treturn { destructor : ()=> $mol_view.watchers.delete( this ) }\n\t\t}\n\n\t\tdom_id() {\n\t\t\treturn this.toString()\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tdom_node( next? : Element ) {\n\t\t\t\n\t\t\tconst node = next || $mol_dom_context.document.createElementNS( this.dom_name_space() , this.dom_name() )\n\n\t\t\tconst id = this.dom_id()\n\t\t\tnode.setAttribute( 'id' , id )\n\t\t\tnode.toString = $mol_const( '<#' + id + '>' )\n\n\t\t\t$mol_dom_render_attributes( node , this.attr_static() )\n\t\t\t\n\t\t\tconst events = this.event()\n\t\t\tfor( let event_name in events ) {\n\t\t\t\tnode.addEventListener(\n\t\t\t\t\tevent_name ,\n\t\t\t\t\t$mol_log2.func( $mol_fiber_root( events[ event_name ] ) ) ,\n\t\t\t\t\t{ passive : false } as any ,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\treturn node\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tdom_tree( next? : Element ) : Element {\n\t\t\tconst node = this.dom_node( next )\n\t\t\t\n\t\t\ttry {\n\n\t\t\t\t$mol_dom_render_attributes( node , { mol_view_error : null } )\n\n\t\t\t\tfor( let plugin of this.plugins() ) {\n\t\t\t\t\tif( plugin instanceof $mol_plugin ) {\n\t\t\t\t\t\tplugin.render()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.render()\n\n\t\t\t} catch( error ) {\n\t\t\t\t\n\t\t\t\tconst need_catch = $mol_fail_catch( error )\n\n\t\t\t\tif( need_catch ) {\n\t\t\t\t\t$mol_dom_render_attributes( node , { mol_view_error : error.name || error.constructor.name } )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( error instanceof Promise ) $mol_fail_hidden( error )\n\t\t\t\t\n\t\t\t\tif( need_catch ) {\n\t\t\t\t\ttry { void( ( node as HTMLElement ).innerText = error.message ) } catch( e ) {}\n\t\t\t\t\tconsole.error( error )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\treturn node\n\t\t}\n\n\t\t@ $mol_mem\n\t\tdom_node_actual() {\n\t\t\tconst node = this.dom_node()\n\n\t\t\tconst attr = this.attr()\n\t\t\tconst style = this.style()\n\t\t\tconst fields = this.field()\n\n\t\t\t$mol_dom_render_attributes( node , attr )\n\t\t\t$mol_dom_render_styles( node , style )\n\t\t\t$mol_dom_render_fields( node , fields )\n\n\t\t\treturn node\n\t\t}\n\n\t\trender() {\n\n\t\t\tconst node = this.dom_node_actual()\n\n\t\t\tconst sub = this.sub_visible()\n\t\t\t\n\t\t\tconst nodes = sub.map( child => {\n\t\t\t\tif( child == null ) return null\n\t\t\t\treturn ( child instanceof $mol_view ) ? child.dom_node_actual() : String( child )\n\t\t\t})\n\t\t\t\n\t\t\t$mol_dom_render_children( node , nodes )\n\n\t\t\tfor( const el of sub ) if( el && typeof el === 'object' && 'dom_tree' in el ) el['dom_tree']()\n\n\t\t}\n\n\t\t@ $mol_mem\n\t\tstatic view_classes() {\n\t\t\tconst proto = this.prototype\n\t\t\t\n\t\t\tlet current = proto\n\t\t\tconst classes = [] as ( typeof $mol_view )[]\n\t\t\t\n\t\t\twhile( current ) {\n\t\t\t\tclasses.push( current.constructor as typeof $mol_view )\n\t\t\t\tif(!( current instanceof $mol_view )) break\n\t\t\t\tcurrent = Object.getPrototypeOf( current )\n\t\t\t}\n\t\t\t\n\t\t\treturn classes\n\t\t}\n\t\t\n\t\tview_names_owned() {\n\t\t\tconst names = [] as string[]\n\t\t\tlet owner = $mol_owning_get( this , $mol_view )\n\n\t\t\tif( owner instanceof $mol_view ) {\n\n\t\t\t\tconst suffix = this[ $mol_object_field ]\n\t\t\t\tconst suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1)\n\t\t\t\t\n\t\t\t\tfor( let Class of ( owner.constructor as typeof $mol_view ).view_classes() ) {\n\t\t\t\t\tif( suffix in Class.prototype ) names.push( $mol_func_name( Class ) + suffix2 )\n\t\t\t\t\telse break\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor( let prefix of owner.view_names_owned() ) {\n\t\t\t\t\tnames.push( prefix + suffix2 )\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn names\n\t\t}\n\n\t\t@ $mol_mem\n\t\tview_names() {\n\t\t\tconst names = [] as string[]\n\t\t\t\n\t\t\tfor( let name of this.view_names_owned() ) {\n\t\t\t\tif( names.indexOf( name ) < 0 ) names.push( name )\n\t\t\t}\n\n\t\t\tfor( let Class of ( this.constructor as typeof $mol_view ).view_classes() ) {\n\t\t\t\tconst name = $mol_func_name( Class )\n\t\t\t\tif( !name ) continue\n\t\t\t\tif( names.indexOf( name ) < 0 ) names.push( name )\n\t\t\t}\n\n\t\t\treturn names\n\t\t}\n\t\t\n\t\tattr_static() : { [ key : string ] : string|number|boolean|null } {\n\t\t\tlet attrs : any = {}\n\t\t\t\n\t\t\tfor( let name of this.view_names() ) attrs[ name.replace( /\\$/g , '' ).replace( /^(?=\\d)/ , '_' ).toLowerCase() ] = ''\n\t\t\t\n\t\t\treturn attrs\n\t\t}\n\t\t\n\t\tattr() : { [ key : string ] : string|number|boolean|null } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tstyle() : { [ key : string ] : string|number } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tfield() : { [ key : string ] : any } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tevent() : { [ key : string ] : ( event : Event )=> void } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\t@ $mol_deprecated( 'Use $mol_view::event instead.' )\n\t\tevent_async() : { [ key : string ] : ( event : Event )=> void } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tplugins() {\n\t\t\treturn [] as readonly $mol_view[]\n\t\t}\n\n\t\t[ $mol_dev_format_head ]() {\n\t\t\treturn $mol_dev_format_span( {} ,\n\t\t\t\t$mol_dev_format_native( this ) ,\n\t\t\t\t$mol_dev_format_shade( '/' ) ,\n\t\t\t\t$mol_dev_format_auto( $mol_mem_cached( ()=> this.sub() ) ) ,\n\t\t\t)\n\t\t}\n\n\t}\n\n\texport type $mol_view_all = $mol_type_keys_extract< $mol_ambient_context , any , $mol_ambient_context['$mol_view'] >\n\n}\n","namespace $ { $mol_style_attach( \"mol/view/view.css\",\n \"[mol_view] {\\n\\ttransition-property: background-color, height, width, min-height, min-width, max-width, max-height, transform;\\n\\ttransition-duration: .2s;\\n\\ttransition-timing-function: ease-out;\\n\\t-webkit-appearance: none;\\n\\tword-break: break-word;\\n\\tbox-sizing: border-box;\\n}\\n\\n[mol_view] > * {\\n\\tword-break: inherit;\\n}\\n\\n[mol_view_root] {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\tbox-sizing: border-box;\\n\\tfont: var(--mol_skin_font);\\n\\tbackground: var(--mol_theme_back);\\n\\tcolor: var(--mol_theme_text);\\n}\\n\\n[mol_view][mol_view_error]:not([mol_view_error=\\\"Promise\\\"]) {\\n\\tbackground-image: repeating-linear-gradient(\\n\\t\\t135deg,\\n\\t\\trgba(255,220,220,1),\\n\\t\\trgba(255,220,220,1) 11px,\\n\\t\\trgba(255,255,220,1) 10px,\\n\\t\\trgba(255,255,220,1) 20px\\n\\t);\\n\\tbackground-size: 28px 28px;\\n\\tcolor: black;\\n}\\n\\n@keyframes mol_view_wait_move {\\n\\tfrom {\\n\\t\\tbackground-position: 0 0;\\n\\t}\\n\\tto {\\n\\t\\tbackground-position: 200vmax 0;\\n\\t}\\n}\\n\\n@keyframes mol_view_wait_show {\\n\\tto {\\n\\t\\tbackground-image: repeating-linear-gradient(\\n\\t\\t\\t45deg,\\n\\t\\t\\thsla( 0 , 0% , 50% , .1 ) 0% ,\\n\\t\\t\\thsla( 0 , 0% , 50% , 0 ) 5% ,\\n\\t\\t\\thsla( 0 , 0% , 50% , 0 ) 45% ,\\n\\t\\t\\thsla( 0 , 0% , 50% , .1 ) 50% ,\\n\\t\\t\\thsla( 0 , 0% , 50% , 0 ) 55% ,\\n\\t\\t\\thsla( 0 , 0% , 50% , 0 ) 95% ,\\n\\t\\t\\thsla( 0 , 0% , 50% , .1 ) 100%\\n\\t\\t);\\n\\t\\tbackground-size: 200vmax 200vmax;\\n\\t}\\n}\\n\\n[mol_view][mol_view_error=\\\"Promise\\\"] {\\n\\tanimation: mol_view_wait_show .5s .5s linear forwards , mol_view_wait_move 1s linear infinite;\\n}\\n\"\n) }","interface Window {\n\tcordova : any\n}\n\nnamespace $ {\n\n\tif( $mol_dom_context.document ) {\n\n\t\t/// Autoattach view roots to loaded DOM.\n\t\tconst event_name = self.cordova ? 'deviceready' : 'DOMContentLoaded'\n\t\t$mol_dom_context.document.addEventListener( event_name , $mol_fiber_root( $mol_log2.func( ( event : Event )=> {\n\t\t\t$mol_view.autobind()\n\t\t\t$mol_defer.run()\n\t\t} ) ) )\n\t\t\n\t\tfunction $mol_view_watch() {\n\t\t\t$mol_fiber_unlimit( ()=> {\n\t\t\t\tfor( const view of $mol_view.watchers ) {\n\t\t\t\t\tview.view_rect_cache( view.dom_node().getBoundingClientRect().toJSON() )\n\t\t\t\t}\n\t\t\t\tnew $mol_after_frame( $mol_view_watch )\n\t\t\t} )\n\t\t}\n\t\n\t\t$mol_view_watch()\n\t\n\t}\n\t\n}\n","namespace $ { export class $mol_string extends $mol_view {\n\n\t/**\n\t * ```\n\t * dom_name \\input\n\t * ```\n\t **/\n\tdom_name() {\n\t\treturn \"input\"\n\t}\n\n\t/**\n\t * ```\n\t * enabled true\n\t * ```\n\t **/\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/**\n\t * ```\n\t * debounce 0\n\t * ```\n\t **/\n\tdebounce() {\n\t\treturn 0\n\t}\n\n\t/**\n\t * ```\n\t * minimal_height 40\n\t * ```\n\t **/\n\tminimal_height() {\n\t\treturn 40\n\t}\n\n\t/**\n\t * ```\n\t * autocomplete false\n\t * ```\n\t **/\n\tautocomplete() {\n\t\treturn false\n\t}\n\n\t/**\n\t * ```\n\t * field *\n\t * \t^\n\t * \tdisabled <= disabled\n\t * \tvalue <= value_changed?val\n\t * \tplaceholder <= hint\n\t * \ttype <= type?val\n\t * \tspellcheck <= spellcheck\n\t * \tautocomplete <= autocomplete_native\n\t * ```\n\t **/\n\tfield() {\n\t\treturn ({\n\t\t\t...super.field() ,\n\t\t\t\"disabled\" : this.disabled() ,\n\t\t\t\"value\" : this.value_changed() ,\n\t\t\t\"placeholder\" : this.hint() ,\n\t\t\t\"type\" : this.type() ,\n\t\t\t\"spellcheck\" : this.spellcheck() ,\n\t\t\t\"autocomplete\" : this.autocomplete_native() ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * disabled false\n\t * ```\n\t **/\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/**\n\t * ```\n\t * value_changed?val <=> value?val\n\t * ```\n\t **/\n\t@ $mol_mem\n\tvalue_changed( val? : any , force? : $mol_mem_force ) {\n\t\treturn this.value( val )\n\t}\n\n\t/**\n\t * ```\n\t * value?val \\\n\t * ```\n\t **/\n\t@ $mol_mem\n\tvalue( val? : any , force? : $mol_mem_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/**\n\t * ```\n\t * hint \\\n\t * ```\n\t **/\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/**\n\t * ```\n\t * type?val \\text\n\t * ```\n\t **/\n\t@ $mol_mem\n\ttype( val? : any , force? : $mol_mem_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"text\"\n\t}\n\n\t/**\n\t * ```\n\t * spellcheck false\n\t * ```\n\t **/\n\tspellcheck() {\n\t\treturn false\n\t}\n\n\t/**\n\t * ```\n\t * autocomplete_native \\\n\t * ```\n\t **/\n\tautocomplete_native() {\n\t\treturn \"\"\n\t}\n\n\t/**\n\t * ```\n\t * attr *\n\t * \t^\n\t * \tmaxlength <= length_max\n\t * ```\n\t **/\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"maxlength\" : this.length_max() ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * length_max Infinity\n\t * ```\n\t **/\n\tlength_max() {\n\t\treturn Infinity\n\t}\n\n\t/**\n\t * ```\n\t * event *\n\t * \t^\n\t * \tinput?event <=> event_change?event\n\t * \tkeydown?event <=> event_key_press?event\n\t * ```\n\t **/\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"input\" : ( event? : any )=> this.event_change( event ) ,\n\t\t\t\"keydown\" : ( event? : any )=> this.event_key_press( event ) ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * event_change?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tevent_change( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/**\n\t * ```\n\t * event_key_press?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tevent_key_press( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_string extends $.$mol_string {\n\t\t\n\t\t// _timer = null as any\n\t\t\n\t\tevent_change( next? : Event ) {\n\t\t\tif( !next ) return\n\t\t\t\n\t\t\t// clearTimeout( this._timer )\n\t\t\t// this._timer = setTimeout( $mol_log_group( `${ this }.event_change()` , () => {\n\t\t\t\tthis.value( ( next.target as HTMLInputElement ).value ) \n\t\t\t// } ) , this.debounce() )\n\t\t}\n\t\t\n\t\tevent_key_press( next? : KeyboardEvent ) { \n\t\t\tif( !next ) return\n\t\t\t\n\t\t\tif( next.keyCode === $mol_keyboard_code.enter ) {\n\t\t\t\tthis.value( ( next.target as HTMLInputElement ).value )\n\t\t\t}\n\t\t} \n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\n\t\tautocomplete_native() {\n\t\t\treturn this.autocomplete() ? 'on' : 'off'\n\t\t}\n\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/string/string.view.css\",\n \"[mol_string] {\\n\\tbox-sizing: border-box;\\n\\toutline-offset: 0;\\n\\tborder: none;\\n\\tborder-radius: var(--mol_skin_round);\\n\\twhite-space: nowrap;\\n\\toverflow: hidden;\\n\\tpadding: .5rem 1rem;\\n\\ttext-align: left;\\n\\tposition: relative;\\n\\tz-index: 0;\\n\\tfont: inherit;\\n\\tflex: 0 1 auto;\\n\\twidth: 100%;\\n\\tbackground: var(--mol_theme_field);\\n\\tcolor: var(--mol_theme_text);\\n\\tbox-shadow: inset 0 0 0 .5px var(--mol_theme_line);\\n\\tmargin: 0;\\n}\\n\\n[mol_string]:disabled {\\n\\tbackground-color: transparent;\\n}\\n\\n[mol_string]:focus {\\n\\toutline: none;\\n\\tz-index: 1;\\n\\tbox-shadow: inset 0 0 0 .5px var(--mol_theme_focus);\\n}\\n\\n[mol_string]::-ms-clear {\\n\\tdisplay: none;\\n}\\n\"\n) }","namespace $ { export class $mol_button extends $mol_view {\n\n\t/**\n\t * ```\n\t * enabled true\n\t * ```\n\t **/\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/**\n\t * ```\n\t * minimal_height 40\n\t * ```\n\t **/\n\tminimal_height() {\n\t\treturn 40\n\t}\n\n\t/**\n\t * ```\n\t * click?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tclick( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/**\n\t * ```\n\t * event_click?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tevent_click( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/**\n\t * ```\n\t * event *\n\t * \t^\n\t * \tclick?event <=> event_activate?event\n\t * \tkeypress?event <=> event_key_press?event\n\t * ```\n\t **/\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"click\" : ( event? : any )=> this.event_activate( event ) ,\n\t\t\t\"keypress\" : ( event? : any )=> this.event_key_press( event ) ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * event_activate?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tevent_activate( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/**\n\t * ```\n\t * event_key_press?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tevent_key_press( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/**\n\t * ```\n\t * attr *\n\t * \t^\n\t * \tdisabled <= disabled\n\t * \trole \\button\n\t * \ttabindex <= tab_index\n\t * \ttitle <= hint\n\t * ```\n\t **/\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"disabled\" : this.disabled() ,\n\t\t\t\"role\" : \"button\" ,\n\t\t\t\"tabindex\" : this.tab_index() ,\n\t\t\t\"title\" : this.hint() ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * disabled false\n\t * ```\n\t **/\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/**\n\t * ```\n\t * tab_index 0\n\t * ```\n\t **/\n\ttab_index() {\n\t\treturn 0\n\t}\n\n\t/**\n\t * ```\n\t * hint \\\n\t * ```\n\t **/\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/**\n\t * ```\n\t * sub /$mol_view_content <= title\n\t * ```\n\t **/\n\tsub() {\n\t\treturn [ this.title() ] as readonly ( $mol_view_content )[]\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_button extends $.$mol_button {\n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t\t\n\t\tevent_activate( next : Event ) {\n\t\t\tif( !next ) return\n\t\t\tif( !this.enabled() ) return\n\t\t\t\n\t\t\tthis.event_click( next )\n\t\t\tthis.click( next )\n\t\t}\n\t\t\n\t\tevent_key_press ( event: KeyboardEvent ) { \n\t\t\tif( event.keyCode === $mol_keyboard_code.enter ) {\n\t\t\t\treturn this.event_activate( event )\n\t\t\t}\n\t\t} \n\t\t\n\t\ttab_index() {\n\t\t\treturn this.enabled() ? super.tab_index() : -1\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/button/button.view.css\",\n \"[mol_button] {\\n\\tborder: none;\\n\\tfont: inherit;\\n\\tbackground-color: none;\\n\\tdisplay: inline-flex;\\n\\tflex-shrink: 0;\\n\\ttext-decoration: inherit;\\n\\tcursor: inherit;\\n\\tposition: relative;\\n\\tbox-sizing: border-box;\\n\\tword-break: normal;\\n\\tcursor: default;\\n}\\n[mol_button]:focus {\\n\\toutline: none;\\n}\\n\\n[mol_button_typed] {\\n\\tjustify-content: center;\\n\\talign-content: center;\\n\\talign-items: center;\\n\\tvertical-align: middle;\\n\\ttext-align: center;\\n\\tpadding: .5rem 1rem;\\n\\tborder-radius: var(--mol_skin_round);\\n}\\n\\n[mol_button_typed][disabled] {\\n\\tcolor: var(--mol_theme_text);\\n\\tpointer-events: none;\\n}\\n\\n[mol_button_major] {\\n\\tbox-shadow: 0 0 0 1px var(--mol_theme_back);\\n}\\n\\n[mol_button_minor] {\\n\\tcolor: var(--mol_theme_control);\\n}\\n\\n[mol_button_major][disabled] {\\n\\topacity: .5;\\n}\\n\\n[mol_button_typed]:hover ,\\n[mol_button_typed]:focus {\\n\\tcursor: pointer;\\n\\tbackground-color: var(--mol_theme_hover);\\n}\\n\"\n) }","namespace $ { export class $mol_button_typed extends $mol_button {\n\n} }\n\nnamespace $ { export class $mol_button_major extends $mol_button_typed {\n\n\t/**\n\t * ```\n\t * attr *\n\t * \t^\n\t * \tmol_theme \\$mol_theme_accent\n\t * ```\n\t **/\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"mol_theme\" : \"$mol_theme_accent\" ,\n\t\t})\n\t}\n\n} }\n\nnamespace $ { export class $mol_button_minor extends $mol_button_typed {\n\n} }\n\n","namespace $ {\n\t\n\texport function $mol_merge_dict< Target , Source >( target : Target , source : Source ) : Target & Source {\n\t\tlet result = {} as any\n\t\tfor( let key in target ) result[ key ] = ( target as any )[ key ]\n\t\tfor( let key in source ) result[ key ] = ( source as any )[ key ]\n\t\treturn result\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_state_arg extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic href( next? : string , force? : $mol_mem_force ) {\n\t\t\tif( next === undefined ) return $mol_dom_context.location.href\n\t\t\thistory.replaceState( history.state , $mol_dom_context.document.title , next )\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic dict( next? : { [ key : string ] : string | null } ) {\n\t\t\tvar href = this.href( next && this.make_link( next ) ).split( /#/ )[1] || ''\n\t\t\tvar chunks = href.split( /[\\/\\?#&;]/g )\n\t\t\t\n\t\t\tvar params : { [ key : string ] : string } = {}\n\t\t\tchunks.forEach(\n\t\t\t\tchunk => {\n\t\t\t\t\tif( !chunk ) return\n\t\t\t\t\tvar vals = chunk.split( '=' ).map( decodeURIComponent )\n\t\t\t\t\tparams[ vals.shift()! ] = vals.join( '=' )\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\treturn params\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\tstatic dict_cut( except : string[] ) {\n\t\t\t\n\t\t\tconst dict = this.dict()\n\t\t\tconst cut : { [ key : string ] : string } = {}\n\t\t\t\n\t\t\tfor( const key in dict ) {\n\t\t\t\tif( except.indexOf( key ) >= 0 ) continue\n\t\t\t\tcut[ key ] = dict[ key ]\n\t\t\t}\n\t\t\t\n\t\t\treturn cut\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic value( key : string , next? : string | null ) {\n\t\t\tconst nextDict = ( next === void 0 ) ? void 0 : $mol_merge_dict( this.dict() , { [ key ] : next } ) \n\t\t\tconst next2 = this.dict( nextDict )[ key ]\n\t\t\treturn ( next2 == null ) ? null : next2\n\t\t}\n\t\t\n\t\tstatic link( next : { [ key : string ] : string } ) {\n\t\t\treturn this.make_link( $mol_merge_dict( this.dict_cut( Object.keys( next ) ) , next ) )\n\t\t}\n\t\t\n\t\tstatic make_link( next : { [ key : string ] : string | null } ) {\n\t\t\tconst chunks : string[] = []\n\t\t\tfor( let key in next ) {\n\t\t\t\tif( null == next[ key ] ) continue\n\t\t\t\tconst val = next[ key ]\n\t\t\t\tchunks.push( [ key ].concat( val ? [ val ] : [] ).map( this.encode ).join( '=' ) )\n\t\t\t}\n\t\t\t\n\t\t\treturn new URL( '#' + chunks.join( '/' ) , $mol_dom_context.location.href ).toString()\n\t\t}\n\n\t\tstatic encode( str : string ) {\n\t\t\treturn encodeURIComponent( str ).replace( /\\(/g , '%28' ).replace( /\\)/g , '%29' )\n\t\t}\n\t\t\n\t\tconstructor( public prefix = '' ) {\n\t\t\tsuper()\n\t\t}\n\t\t\n\t\tvalue( key : string , next? : string ) {\n\t\t\treturn ( this.constructor as typeof $mol_state_arg ).value( this.prefix + key , next )\n\t\t}\n\t\t\n\t\tsub( postfix : string ) {\n\t\t\treturn new ( this.constructor as typeof $mol_state_arg )( this.prefix + postfix + '.' )\n\t\t}\n\t\t\n\t\tlink( next : { [ key : string ] : string } ) {\n\t\t\tvar prefix = this.prefix\n\t\t\tvar dict : { [ key : string ] : string } = {}\n\t\t\tfor( var key in next ) {\n\t\t\t\tdict[ prefix + key ] = next[ key ]\n\t\t\t}\n\t\t\treturn ( this.constructor as typeof $mol_state_arg ).link( dict )\n\t\t}\n\t\t\n\t}\n\t\n\tself.addEventListener( 'hashchange' , $mol_fiber_root( $mol_log_group( '$mol_state_arg hashchange' , ( event : HashChangeEvent )=> {\n\t\t$mol_state_arg.href( $mol_dom_context.location.href ) \n\t} ) ) )\n\t\n}\n",null,null,null,null,null,null,"namespace $ {\n\n\texport class $mol_decor< Value > {\n\t\t\n\t\tconstructor(\n\t\t\treadonly value : Value\n\t\t) {}\n\n\t\tprefix() { return '' }\n\t\tvalueOf() { return this.value }\n\t\tpostfix() { return '' }\n\n\t\ttoString(){\n\t\t\treturn `${ this.prefix() }${ this.valueOf() }${ this.postfix() }`\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\t\n\texport type $mol_style_unit_length =\n\t| '%'\n\t| 'px' | 'cm' | 'mm' | 'Q' | 'in' | 'pc' | 'pt'\n\t| 'cap' | 'ch' | 'em' | 'rem' | 'ex' | 'ic' | 'lh' | 'rlh'\n\t| 'vh' | 'vw' | 'vi' | 'vb' | 'vmin' | 'vmax'\n\t\n\texport class $mol_style_unit<\n\t\tLiteral extends $mol_style_unit_length\n\t> extends $mol_decor< number > {\n\n\t\tconstructor(\n\t\t\tvalue : number,\n\t\t\treadonly literal : Literal,\n\t\t) {\n\t\t\tsuper( value )\n\t\t}\n\n\t\tpostfix() {\n\t\t\treturn this.literal\n\t\t}\n\n\t\tstatic per( value : number ) { return new $mol_style_unit( value , '%' ) }\n\t\tstatic px( value : number ) { return new $mol_style_unit( value , 'px' ) }\n\t\tstatic mm( value : number ) { return new $mol_style_unit( value , 'mm' ) }\n\t\tstatic cm( value : number ) { return new $mol_style_unit( value , 'cm' ) }\n\t\tstatic Q( value : number ) { return new $mol_style_unit( value , 'Q' ) }\n\t\tstatic in( value : number ) { return new $mol_style_unit( value , 'in' ) }\n\t\tstatic pc( value : number ) { return new $mol_style_unit( value , 'pc' ) }\n\t\tstatic pt( value : number ) { return new $mol_style_unit( value , 'pt' ) }\n\t\tstatic cap( value : number ) { return new $mol_style_unit( value , 'cap' ) }\n\t\tstatic ch( value : number ) { return new $mol_style_unit( value , 'ch' ) }\n\t\tstatic em( value : number ) { return new $mol_style_unit( value , 'em' ) }\n\t\tstatic rem( value : number ) { return new $mol_style_unit( value , 'rem' ) }\n\t\tstatic ex( value : number ) { return new $mol_style_unit( value , 'ex' ) }\n\t\tstatic ic( value : number ) { return new $mol_style_unit( value , 'ic' ) }\n\t\tstatic lh( value : number ) { return new $mol_style_unit( value , 'lh' ) }\n\t\tstatic rlh( value : number ) { return new $mol_style_unit( value , 'rlh' ) }\n\t\tstatic vh( value : number ) { return new $mol_style_unit( value , 'vh' ) }\n\t\tstatic vw( value : number ) { return new $mol_style_unit( value , 'vw' ) }\n\t\tstatic vi( value : number ) { return new $mol_style_unit( value , 'vi' ) }\n\t\tstatic vb( value : number ) { return new $mol_style_unit( value , 'vb' ) }\n\t\tstatic vmin( value : number ) { return new $mol_style_unit( value , 'vmin' ) }\n\t\tstatic vmax( value : number ) { return new $mol_style_unit( value , 'vmax' ) }\n\t\n\t}\n\n}\n","namespace $ {\n\n\texport type $mol_style_func_name =\n\t| 'calc'\n\t| 'fit-content'\n\t\n\texport class $mol_style_func<\n\t\tName extends $mol_style_func_name ,\n\t\tValue = unknown,\n\t> extends $mol_decor< Value > {\n\n\t\tconstructor(\n\t\t\tvalue : Value,\n\t\t\treadonly name : Name,\n\t\t) {\n\t\t\tsuper( value )\n\t\t}\n\n\t\tprefix() { return this.name + '(' }\n\t\tpostfix() { return ')' }\n\n\t\tstatic calc< Value >( value : Value ) {\n\t\t\treturn new $mol_style_func( value , 'calc' )\n\t\t}\n\n\t\tstatic fit_content(\n\t\t\tvalue :\n\t\t\t| number\n\t\t\t| $mol_style_unit< $mol_style_unit_length >\n\t\t\t| $mol_style_func<'calc'>\n\t\t) {\n\t\t\treturn new $mol_style_func( value , 'fit-content' )\n\t\t}\n\t\n\t}\n\n}\n",null,null,"namespace $ {\n\n\texport function $mol_style_sheet<\n\t\tComponent extends $mol_view\n\t>(\n\t\tComponent : new()=> Component ,\n\t\tconfig : $mol_style_definition< Component > ,\n\t) {\n\n\t\tlet rules = [] as string[]\n\n\t\tconst make_class = ( prefix : string , suffix : string , config : $mol_style_definition )=> {\n\n\t\t\tconst props = [] as string[]\n\t\t\t\n\t\t\tfor( const key of Object.keys( config ).reverse() ) {\n\n\t\t\t\tif( /^[a-z]/.test(key) ) {\n\n\t\t\t\t\tconst name = key.replace( /[A-Z]/g , letter => '-' + letter.toLowerCase() )\n\t\t\t\t\tconst val = config[key]\n\t\t\t\t\t\n\t\t\t\t\tif( val.constructor === Object ) {\n\t\t\t\t\t\tfor( let suffix in val ) {\n\t\t\t\t\t\t\tprops.push(`\\t${ name }-${ suffix }: ${ val[ suffix ] };\\n`)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprops.push(`\\t${ name }: ${ val };\\n`)\n\t\t\t\t\t}\n\n\t\t\t\t} else if( /^[A-Z]/.test(key) ) {\n\n\t\t\t\t\tmake_class( prefix + '_' + key.toLowerCase() , suffix , config[key] as any )\n\n\t\t\t\t} else if( key[0] === '$' ) {\n\n\t\t\t\t\tmake_class( prefix + '] ' + key.replace( '$' , '[' ) , suffix , config[key] as any )\n\n\t\t\t\t} else if( key === '>' ) {\n\n\t\t\t\t\tconst types = config[key] as any\n\n\t\t\t\t\tfor( let type in types ) {\n\t\t\t\t\t\tmake_class( prefix + '] > ' + type.replace( '$' , '[' ) , suffix , types[type] as any )\n\t\t\t\t\t}\n\n\t\t\t\t} else if( key === '@' ) {\n\n\t\t\t\t\tconst attrs = config[key] as any\n\n\t\t\t\t\tfor( let name in attrs ) {\n\t\t\t\t\t\tfor( let val in attrs[name] ) {\n\t\t\t\t\t\t\tmake_class( prefix , suffix + '[' + name + '=' + JSON.stringify( val ) + ']' , attrs[name][val] as any )\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t} else if( key === '@media' ) {\n\n\t\t\t\t\tconst media = config[key] as any\n\n\t\t\t\t\tfor( let query in media ) {\n\n\t\t\t\t\t\trules.push('}\\n')\n\t\t\t\t\t\t\n\t\t\t\t\t\tmake_class( prefix , suffix , media[query] as any )\n\t\t\t\t\t\t\n\t\t\t\t\t\trules.push( `${ key } ${ query } {\\n` )\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tmake_class( prefix , suffix + key , config[key] as any )\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t\n\t\t\tif( props.length ) {\n\t\t\t\trules.push( `${ prefix }${ suffix } {\\n${ props.reverse().join('') }}\\n` )\n\t\t\t}\n\n\t\t}\n\n\t\tmake_class( Component.name.replace( '$' , '[' ) , ']' , config )\n\n\t\treturn rules.reverse().join('')\n\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_style_define<\n\t\tComponent extends $mol_view\n\t>(\n\t\tComponent : new()=> Component ,\n\t\tconfig : $mol_style_definition< Component > ,\n\t) {\n\n\t\treturn $mol_style_attach(\n\t\t\tComponent.name,\n\t\t\t$mol_style_sheet( Component , config ),\n\t\t)\n\n\t}\n\n}\n","namespace $ { export class $mol_link extends $mol_view {\n\n\t/**\n\t * ```\n\t * dom_name \\a\n\t * ```\n\t **/\n\tdom_name() {\n\t\treturn \"a\"\n\t}\n\n\t/**\n\t * ```\n\t * attr *\n\t * \t^\n\t * \thref <= uri\n\t * \ttitle <= hint\n\t * \ttarget <= target\n\t * \tdownload <= file_name\n\t * \tmol_link_current <= current\n\t * ```\n\t **/\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"href\" : this.uri() ,\n\t\t\t\"title\" : this.hint() ,\n\t\t\t\"target\" : this.target() ,\n\t\t\t\"download\" : this.file_name() ,\n\t\t\t\"mol_link_current\" : this.current() ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * uri \\\n\t * ```\n\t **/\n\turi() {\n\t\treturn \"\"\n\t}\n\n\t/**\n\t * ```\n\t * hint \\\n\t * ```\n\t **/\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/**\n\t * ```\n\t * target \\_self\n\t * ```\n\t **/\n\ttarget() {\n\t\treturn \"_self\"\n\t}\n\n\t/**\n\t * ```\n\t * file_name \\\n\t * ```\n\t **/\n\tfile_name() {\n\t\treturn \"\"\n\t}\n\n\t/**\n\t * ```\n\t * current false\n\t * ```\n\t **/\n\tcurrent() {\n\t\treturn false\n\t}\n\n\t/**\n\t * ```\n\t * sub /$mol_view_content <= title\n\t * ```\n\t **/\n\tsub() {\n\t\treturn [ this.title() ] as readonly ( $mol_view_content )[]\n\t}\n\n\t/**\n\t * ```\n\t * arg *\n\t * ```\n\t **/\n\targ() {\n\t\treturn ({\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * event *\n\t * \t^\n\t * \tclick?event <=> click?event\n\t * ```\n\t **/\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"click\" : ( event? : any )=> this.click( event ) ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * click?event <=> event_click?event\n\t * ```\n\t **/\n\t@ $mol_mem\n\tclick( event? : any , force? : $mol_mem_force ) {\n\t\treturn this.event_click( event )\n\t}\n\n\t/**\n\t * ```\n\t * event_click?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tevent_click( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\n","namespace $.$$ {\n\t\n\texport class $mol_link extends $.$mol_link {\n\t\t\n\t\t@ $mol_mem\n\t\turi() {\n\t\t\treturn new this.$.$mol_state_arg( this.state_key() ).link( this.arg() )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tcurrent() {\n\n\t\t\tif( this.uri() === this.$.$mol_state_arg.href() ) return true\n\t\t\t\n\t\t\tconst args = this.arg()\n\t\t\t\n\t\t\tconst keys = Object.keys( args ).filter( key => args[ key ] != null )\n\t\t\tif( keys.length === 0 ) return false\n\n\t\t\tfor( const key of keys ) {\n\t\t\t\tif( this.$.$mol_state_arg.value( key ) !== args[ key ] ) return false\n\t\t\t}\n\n\t\t\treturn true\n\t\t}\n\n\t\tevent_click( event? : Event ) {\n\t\t\tif( !event || event.defaultPrevented ) return\n\t\t\tthis.focused( false )\n\t\t\t// setTimeout( $mol_log_group( `${ this }.event_click()` , ()=> this.focused( false ) ) , 50 )\n\t\t}\n\n\t\tfile_name() {\n\t\t\treturn null as unknown as string\n\t\t}\n\n\t\tminimal_height() {\n\t\t\treturn Math.max( super.minimal_height() || 40 )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\t$mol_style_define( $mol_link , {\n\t\t\n\t\ttextDecoration: 'none',\n\t\tcolor: $mol_theme.control,\n\t\tstroke: 'currentColor',\n\t\tcursor: 'pointer',\n\t\tpadding: '.5rem',\n\t\tboxSizing: 'border-box',\n\t\tposition: 'relative',\n\n\t\t':hover': {\n\t\t\tbackgroundColor: $mol_theme.hover,\n\t\t},\n\n\t\t':focus': {\n\t\t\toutline: 'none',\n\t\t\tbackgroundColor: $mol_theme.hover,\n\t\t},\n\n\t\t'@': {\n\t\t\tmol_link_current: {\n\t\t\t\t'true': {\n\t\t\t\t\tbackgroundColor: $mol_theme.current,\n\t\t\t\t\tcolor: $mol_theme.text,\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t} )\n\n}\n","namespace $ { $mol_style_attach( \"mol/check/check.css\",\n \"[mol_check] {\\n\\tflex: 0 0 auto;\\n\\tjustify-content: flex-start;\\n\\talign-content: center;\\n\\talign-items: flex-start;\\n\\tborder: none;\\n\\tfont-weight: inherit;\\n\\tbox-shadow: none;\\n\\ttext-align: left;\\n\\tpadding: .5rem;\\n\\tdisplay: inline-flex;\\n\\tflex-wrap: nowrap;\\n}\\n\"\n) }","namespace $ { export class $mol_check extends $mol_button_minor {\n\n\t/**\n\t * ```\n\t * attr *\n\t * \t^\n\t * \tmol_check_checked <= checked?val\n\t * \taria-checked <= checked?val\n\t * \trole \\checkbox\n\t * ```\n\t **/\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"mol_check_checked\" : this.checked() ,\n\t\t\t\"aria-checked\" : this.checked() ,\n\t\t\t\"role\" : \"checkbox\" ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * checked?val false\n\t * ```\n\t **/\n\t@ $mol_mem\n\tchecked( val? : any , force? : $mol_mem_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/**\n\t * ```\n\t * sub /\n\t * \t<= Icon\n\t * \t<= label\n\t * ```\n\t **/\n\tsub() {\n\t\treturn [ this.Icon() , this.label() ] as readonly any[]\n\t}\n\n\t/**\n\t * ```\n\t * Icon null\n\t * ```\n\t **/\n\tIcon() {\n\t\treturn null as any\n\t}\n\n\t/**\n\t * ```\n\t * label / <= Title\n\t * ```\n\t **/\n\tlabel() {\n\t\treturn [ this.Title() ] as readonly any[]\n\t}\n\n\t/**\n\t * ```\n\t * Title $mol_view sub / <= title\n\t * ```\n\t **/\n\t@ $mol_mem\n\tTitle() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [ this.title() ] as readonly any[]\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view( ) )\n\t}\n\n\t/**\n\t * ```\n\t * title \\\n\t * ```\n\t **/\n\ttitle() {\n\t\treturn \"\"\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_check extends $.$mol_check {\n\n\t\tclick( next? : Event ) {\n\t\t\tthis.checked( !this.checked() )\n\t\t\tif( next ) next.preventDefault()\n\t\t}\n\n\t\tsub() {\n\t\t\treturn [\n\t\t\t\t... $mol_maybe( this.Icon() ) ,\n\t\t\t\t... this.label() ,\n\t\t\t]\n\t\t}\n\n\t}\n}\n","namespace $ {\n\t\n\texport class $mol_state_local< Value > extends $mol_object {\n\t\t\n\t\tstatic 'native()' : Pick< Storage , 'getItem'|'setItem'|'removeItem' >\n\t\tstatic native() {\n\t\t\tif( this['native()'] ) return this['native()']\n\n\t\t\tcheck : try {\n\t\t\t\tconst native = $mol_dom_context.localStorage\n\t\t\t\tif( !native ) break check\n\t\t\t\t\n\t\t\t\tnative.setItem( '' , '' )\n\t\t\t\tnative.removeItem( '' )\n\t\t\t\treturn this['native()'] = native\n\t\t\t} catch( error ) {\n\t\t\t\tconsole.warn( error )\n\t\t\t}\n\n\t\t\treturn this['native()'] = {\n\t\t\t\tgetItem( key : string ) {\n\t\t\t\t\treturn this[ ':' + key ]\n\t\t\t\t} ,\n\t\t\t\tsetItem( key : string , value : string ) {\n\t\t\t\t\tthis[ ':' + key ] = value\n\t\t\t\t} ,\n\t\t\t\tremoveItem( key : string ) {\n\t\t\t\t\tthis[ ':' + key ] = void 0\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\tstatic value< Value >( key : string , next? : Value , force? : $mol_mem_force ) : Value | null {\n\t\t\tif( next === void 0 ) return JSON.parse( this.native().getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) this.native().removeItem( key )\n\t\t\telse this.native().setItem( key , JSON.stringify( next ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_local.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\tself.addEventListener( 'storage' , event => {\n\t\tif( !event.key ) return // @TODO clear support\n\t\t$.$mol_state_local.value( event.key , undefined , $mol_mem_force_cache )\n\t} )\n\n}\n","namespace $ {\n\t\n\texport class $mol_state_session< Value > extends $mol_object {\n\t\t\n\t\tstatic 'native()' : Pick< Storage , 'getItem'|'setItem'|'removeItem' >\n\t\tstatic native() {\n\t\t\tif( this['native()'] ) return this['native()']\n\n\t\t\tcheck : try {\n\t\t\t\tconst native = $mol_dom_context.sessionStorage\n\t\t\t\tif( !native ) break check\n\n\t\t\t\tnative.setItem( '' , '' )\n\t\t\t\tnative.removeItem( '' )\n\t\t\t\treturn this['native()'] = native\n\t\t\t} catch( error ) {\n\t\t\t\tconsole.warn( error )\n\t\t\t}\n\n\t\t\treturn this['native()'] = {\n\t\t\t\tgetItem( key : string ) {\n\t\t\t\t\treturn this[ ':' + key ]\n\t\t\t\t} ,\n\t\t\t\tsetItem( key : string , value : string ) {\n\t\t\t\t\tthis[ ':' + key ] = value\n\t\t\t\t} ,\n\t\t\t\tremoveItem( key : string ) {\n\t\t\t\t\tthis[ ':' + key ] = void 0\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\tstatic value< Value >( key : string , next? : Value ) : Value {\n\t\t\tif( next === void 0 ) return JSON.parse( this.native().getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) this.native().removeItem( key )\n\t\t\telse this.native().setItem( key , JSON.stringify( next ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_session.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\texport class $mol_memo extends $mol_wrapper {\n\t\t\n\t\tstatic wrap< This extends object , Value >( task : ( this : This , next? : Value )=> Value ) {\n\n\t\t\tconst store = new WeakMap< This , Value >()\n\n\t\t\treturn function( this : This , next? : Value ) {\n\n\t\t\t\tif( next === undefined && store.has( this ) ) return store.get( this )\n\t\t\t\t\n\t\t\t\tconst val = task.call( this , next ) ?? next\n\t\t\t\t\n\t\t\t\tstore.set( this , val! )\n\t\t\t\t\n\t\t\t\treturn val\n\n\t\t\t}\n\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ { export class $mol_scroll extends $mol_view {\n\n\t/**\n\t * ```\n\t * minimal_height 0\n\t * ```\n\t **/\n\tminimal_height() {\n\t\treturn 0\n\t}\n\n\t/**\n\t * ```\n\t * _event_scroll_timer?val null\n\t * ```\n\t **/\n\t@ $mol_mem\n\t_event_scroll_timer( val? : any , force? : $mol_mem_force ) {\n\t\treturn ( val !== void 0 ) ? val : null as any\n\t}\n\n\t/**\n\t * ```\n\t * field *\n\t * \t^\n\t * \tscrollTop <= scroll_top?val\n\t * \tscrollLeft <= scroll_left?val\n\t * ```\n\t **/\n\tfield() {\n\t\treturn ({\n\t\t\t...super.field() ,\n\t\t\t\"scrollTop\" : this.scroll_top() ,\n\t\t\t\"scrollLeft\" : this.scroll_left() ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * scroll_top?val 0\n\t * ```\n\t **/\n\t@ $mol_mem\n\tscroll_top( val? : any , force? : $mol_mem_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/**\n\t * ```\n\t * scroll_left?val 0\n\t * ```\n\t **/\n\t@ $mol_mem\n\tscroll_left( val? : any , force? : $mol_mem_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/**\n\t * ```\n\t * event *\n\t * \t^\n\t * \tscroll?event <=> event_scroll?event\n\t * ```\n\t **/\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"scroll\" : ( event? : any )=> this.event_scroll( event ) ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * event_scroll?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tevent_scroll( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\n","namespace $.$$ {\n\t\n\texport class $mol_scroll extends $.$mol_scroll {\n\n\t\t@ $mol_mem\n\t\tscroll_top( next? : number ) {\n\t\t\treturn $mol_state_session.value( `${ this }.scroll_top()` , next ) || 0\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tscroll_left( next? : number ) {\n\t\t\treturn $mol_state_session.value( `${ this }.scroll_left()` , next ) || 0\n\t\t}\n\n\t\t@ $mol_memo.method\n\t\t_event_scroll_timer( next? : $mol_after_frame | null ) {\n\t\t\treturn next\n\t\t}\n\n\t\tevent_scroll( next? : Event ) {\n\t\t\t\n\t\t\tif( this._event_scroll_timer() ) this._event_scroll_timer().destructor()\n\n\t\t\tconst el = this.dom_node() as HTMLElement\n\t\t\t\n\t\t\tthis._event_scroll_timer( new $mol_after_frame( $mol_fiber_solid.func( ()=> {\n\n\t\t\t\tthis.scroll_top( Math.max( 0 , el.scrollTop ) )\n\t\t\t\tthis.scroll_left( Math.max( 0 , el.scrollLeft ) )\n\n\t\t\t} ) ) )\n\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $.$$ {\n\n\t$mol_style_define( $mol_scroll , {\n\n\t\tdisplay: 'block',\n\t\toverflow: 'auto',\n\t\tflex: {\n\t\t\tgrow: 1,\n\t\t\tshrink: 1,\n\t\t\tbasis: 'auto',\n\t\t},\n\t\talignSelf: 'stretch',\n\t\tboxSizing: 'border-box',\n\t\twillChange: 'scroll-position',\n\t\ttransform: 'translateZ(0)', // enforce gpu scroll in all agents\n\t\tboxShadow: `inset 0 0 0 .5px ${ $mol_theme.line }`,\n\t\tmaxHeight: '100%',\n\t\tmaxWidth: '100%',\n\t\twebkitOverflowScrolling: 'touch',\n\t\n\t\t'::-webkit-scrollbar': {\n\t\t\twidth: '.5rem',\n\t\t\theight: '.5rem',\n\t\t},\n\t\t\n\t\t'::-webkit-scrollbar-corner': {\n\t\t\tbackground: $mol_theme.line,\n\t\t},\n\n\t\t'::-webkit-scrollbar-track': {\n\t\t\tbackground: $mol_theme.line,\n\t\t},\n\n\t\t'::-webkit-scrollbar-thumb': {\n\t\t\tbackground: $mol_theme.control,\n\t\t},\n\n\t\t'@media' : {\n\t\t\t'print' : {\n\t\t\t\toverflow: 'visible',\n\t\t\t},\n\t\t},\n\n\t})\n\n}\n","namespace $ { export class $mol_list extends $mol_view {\n\n\t/**\n\t * ```\n\t * render_visible_only true\n\t * ```\n\t **/\n\trender_visible_only() {\n\t\treturn true\n\t}\n\n\t/**\n\t * ```\n\t * render_over 0\n\t * ```\n\t **/\n\trender_over() {\n\t\treturn 0\n\t}\n\n\t/**\n\t * ```\n\t * sub <= rows\n\t * ```\n\t **/\n\tsub() {\n\t\treturn this.rows()\n\t}\n\n\t/**\n\t * ```\n\t * rows /$mol_view\n\t * ```\n\t **/\n\trows() {\n\t\treturn [ ] as readonly ( $mol_view )[]\n\t}\n\n\t/**\n\t * ```\n\t * Empty $mol_view\n\t * ```\n\t **/\n\t@ $mol_mem\n\tEmpty() {\n\t\treturn (( obj )=>{\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view( ) )\n\t}\n\n\t/**\n\t * ```\n\t * Gap_before $mol_view style * paddingTop <= gap_before\n\t * ```\n\t **/\n\t@ $mol_mem\n\tGap_before() {\n\t\treturn (( obj )=>{\n\t\t\tobj.style = () => ({\n\t\t\t\"paddingTop\" : this.gap_before() ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view( ) )\n\t}\n\n\t/**\n\t * ```\n\t * gap_before 0\n\t * ```\n\t **/\n\tgap_before() {\n\t\treturn 0\n\t}\n\n\t/**\n\t * ```\n\t * Gap_after $mol_view style * paddingTop <= gap_after\n\t * ```\n\t **/\n\t@ $mol_mem\n\tGap_after() {\n\t\treturn (( obj )=>{\n\t\t\tobj.style = () => ({\n\t\t\t\"paddingTop\" : this.gap_after() ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view( ) )\n\t}\n\n\t/**\n\t * ```\n\t * gap_after 0\n\t * ```\n\t **/\n\tgap_after() {\n\t\treturn 0\n\t}\n\n\t/**\n\t * ```\n\t * view_window /\n\t * \t0\n\t * \t0\n\t * ```\n\t **/\n\tview_window() {\n\t\treturn [ 0 , 0 ] as readonly any[]\n\t}\n\n} }\n\n","namespace $.$$ {\n\n\texport class $mol_list extends $.$mol_list {\n\t\t\n\t\t@ $mol_mem\n\t\tsub() {\n\t\t\tconst rows = this.rows()\n\t\t\treturn ( rows.length === 0 ) ? [ this.Empty() ] : rows\n\t\t}\n\n\t\trender_visible_only() {\n\t\t\tif ( !$mol_dom_context.CSS ) return false\n\t\t\treturn $mol_dom_context.CSS.supports( 'overflow-anchor:auto' )\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tview_window() : [ number , number ] {\n\t\t\t\n\t\t\tconst kids = this.sub()\n\t\t\tif( kids.length < 3 ) return [ 0 , kids.length ]\n\t\t\t\n\t\t\tlet [ min , max ] = $mol_mem_cached( ()=> this.view_window() ) ?? [ 0 , 0 ]\n\n\t\t\tlet max2 = max = Math.min( max , kids.length )\n\t\t\tlet min2 = min = Math.max( 0 , Math.min( min , max - 1 ) )\n\t\t\t\n\t\t\tconst anchoring = this.render_visible_only()\n\t\t\tconst window_height = this.$.$mol_window.size().height\n\t\t\tconst over = Math.ceil( window_height * this.render_over() )\n\t\t\tconst limit_top = -over\n\t\t\tconst limit_bottom = window_height + over\n\n\t\t\tconst rect = this.view_rect()\n \n\t\t\tconst gap_before = $mol_mem_cached( ()=> this.gap_before() ) ?? 0\n\t\t\tconst gap_after = $mol_mem_cached( ()=> this.gap_after() ) ?? 0\n\n\t\t\tlet top = ( rect?.top ?? 0 ) + gap_before\n\t\t\tlet bottom = ( rect?.bottom ?? 0 ) - gap_after\n\n\t\t\t// change nothing when already covers all limits\n\t\t\tif( top <= limit_top && bottom >= limit_bottom ) {\n\t\t\t\treturn [ min2 , max2 ]\n\t\t\t}\n\n\t\t\t// jumps when fully over limits\n\t\t\tif( anchoring && (( bottom < limit_top )||( top > limit_bottom )) ) {\n\n\t\t\t\tmin = 0\n\t\t\t\ttop = ( rect?.top ?? 0 )\n\t\t\t\t\n\t\t\t\twhile( min < ( kids.length - 1 ) ) {\n\t\t\t\t\t\n\t\t\t\t\tconst height = kids[ min ].minimal_height()\n\t\t\t\t\tif( top + height >= limit_top ) break\n\t\t\t\t\t\n\t\t\t\t\ttop += height\n\t\t\t\t\t++ min\n\n\t\t\t\t}\n\n\t\t\t\tmin2 = min\n\t\t\t\tmax2 = max = min\n\t\t\t\tbottom = top\n\n\t\t\t}\n\n\t\t\tlet top2 = top\n\t\t\tlet bottom2 = bottom\n\n\t\t\t// force recalc min when overlapse top limit\n\t\t\tif( anchoring && ( top <= limit_top ) ) {\n\t\t\t\tmin2 = max\n\t\t\t\ttop2 = bottom\n\t\t\t}\n\n\t\t\t// force recalc max when overlapse bottom limit\n\t\t\tif( bottom >= limit_bottom ) {\n\t\t\t\tmax2 = min\n\t\t\t\tbottom2 = top\n\t\t\t}\n\n\t\t\t// extend max to cover bottom limit\n\t\t\twhile( bottom2 < limit_bottom && max2 < kids.length ) {\n\t\t\t\tbottom2 += kids[ max2 ].minimal_height()\n\t\t\t\t++ max2\n\t\t\t}\n\n\t\t\t// extend min to cover top limit\n\t\t\twhile( anchoring && (( top2 >= limit_top )&&( min2 > 0 )) ) {\n\t\t\t\t-- min2\n\t\t\t\ttop2 -= kids[ min2 ].minimal_height()\n\t\t\t}\n\n\t\t\treturn [ min2 , max2 ]\n\t\t}\n\n\t\t@ $mol_mem\n\t\tgap_before() {\n\t\t\tconst skipped = this.sub().slice( 0 , this.view_window()[0] )\n\t\t\treturn Math.max( 0 , skipped.reduce( ( sum , view )=> sum + view.minimal_height() , 0 ) )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tgap_after() {\n\t\t\tconst skipped = this.sub().slice( this.view_window()[1] )\n\t\t\treturn Math.max( 0 , skipped.reduce( ( sum , view )=> sum + view.minimal_height() , 0 ) )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tsub_visible() {\n\n\t\t\tvar sub = this.sub()\n\n\t\t\tconst next = sub.slice( ... this.view_window() )\n\t\t\t\n\t\t\tif( this.gap_before() ) next.unshift( this.Gap_before() )\n\t\t\tif( this.gap_after() ) next.push( this.Gap_after() )\n\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tminimal_height() {\n\t\t\treturn this.sub().reduce( ( sum , view )=> sum + view.minimal_height() , 0 )\n\t\t}\n\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/list/list.view.css\",\n \"[mol_list] {\\n\\twill-change: contents;\\n\\tdisplay: block;\\n\\t/* display: flex;\\n\\tflex-direction: column;\\n\\talign-items: stretch;\\n\\talign-content: stretch; */\\n\\ttransition: none;\\n}\\n\\n[mol_list_gap_before] ,\\n[mol_list_gap_after] {\\n\\tdisplay: block !important;\\n\\tflex: none;\\n\\ttransition: none;\\n\\toverflow-anchor: none;\\n}\\n\\n[mol_list] > * {\\n\\tdisplay: block;\\n}\\n\"\n) }","namespace $ { $mol_style_attach( \"mol/bar/bar.view.css\",\n \"[mol_bar] {\\n\\tdisplay: flex;\\n\\tbox-shadow: inset 0 0 0 .5px var(--mol_theme_line);\\n\\tborder-radius: var(--mol_skin_round);\\n}\\n\\n[mol_bar] > * {\\n\\tborder-radius: 0;\\n}\\n\\n[mol_bar] > *:first-child {\\n\\tborder-top-left-radius: var(--mol_skin_round);\\n\\tborder-bottom-left-radius: var(--mol_skin_round);\\n}\\n\\n[mol_bar] > *:not(:first-child) {\\n\\tmargin-left: 1px;\\n}\\n\\n[mol_bar] > *:last-child {\\n\\tborder-top-right-radius: var(--mol_skin_round);\\n\\tborder-bottom-right-radius: var(--mol_skin_round);\\n}\\n\"\n) }","namespace $ { export class $mol_bar extends $mol_view {\n\n} }\n\n","namespace $ {\n\t\n\texport class $mol_state_time extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic now( precision = 0 , next? : number ) {\n\t\t\t\n\t\t\tif( precision > 0 ) {\n\t\t\t\tnew $mol_after_timeout( precision , $mol_atom2.current!.fresh )\n\t\t\t} else {\n\t\t\t\tnew $mol_after_frame( $mol_atom2.current!.fresh )\n\t\t\t}\n\t\t\n\t\t\treturn Date.now()\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\tlet canvas : CanvasRenderingContext2D\n\n\texport function $mol_font_canvas( next = canvas ) {\n\t\tif( !next ) next = $mol_dom_context.document.createElement( 'canvas' ).getContext( '2d' )!\n\t\treturn canvas = next\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_font_measure( size : number , face : string , text : string ) {\n\t\tconst canvas = $mol_font_canvas()\n\t\tcanvas.font = size + 'px ' + face\n\t\treturn canvas.measureText( text ).width\n\t}\n\n}\n","namespace $ { export class $mol_svg extends $mol_view {\n\n\t/**\n\t * ```\n\t * dom_name \\svg\n\t * ```\n\t **/\n\tdom_name() {\n\t\treturn \"svg\"\n\t}\n\n\t/**\n\t * ```\n\t * dom_name_space \\http://www.w3.org/2000/svg\n\t * ```\n\t **/\n\tdom_name_space() {\n\t\treturn \"http://www.w3.org/2000/svg\"\n\t}\n\n\t/**\n\t * ```\n\t * text_width?text 0\n\t * ```\n\t **/\n\t@ $mol_mem\n\ttext_width( text? : any , force? : $mol_mem_force ) {\n\t\treturn ( text !== void 0 ) ? text : 0\n\t}\n\n\t/**\n\t * ```\n\t * font_size 16\n\t * ```\n\t **/\n\tfont_size() {\n\t\treturn 16\n\t}\n\n\t/**\n\t * ```\n\t * font_family \\\n\t * ```\n\t **/\n\tfont_family() {\n\t\treturn \"\"\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_svg extends $.$mol_svg {\n\t\t@$mol_mem\n\t\tcomputed_style() {\n\t\t\tconst win = this.$.$mol_dom_context\n\t\t\tconst style = win.getComputedStyle(this.dom_node())\n\n\t\t\tif(!style['font-size']) $mol_state_time.now()\n\n\t\t\treturn style\n\t\t}\n\n\t\t@$mol_mem\n\t\tfont_size(): number {\n\t\t\treturn parseInt(this.computed_style()['font-size']) || 16\n\t\t}\n\n\t\t@$mol_mem\n\t\tfont_family() {\n\t\t\treturn this.computed_style()['font-family']\n\t\t}\n\n\t\ttext_width(text: string): number {\n\t\t\treturn $mol_font_measure(this.font_size(), this.font_family(), text)\n\t\t}\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/svg/root/root.view.css\",\n \"[mol_svg_root] {\\n\\toverflow: hidden;\\n}\\n\"\n) }","namespace $ { export class $mol_svg_root extends $mol_svg {\n\n\t/**\n\t * ```\n\t * dom_name \\svg\n\t * ```\n\t **/\n\tdom_name() {\n\t\treturn \"svg\"\n\t}\n\n\t/**\n\t * ```\n\t * attr *\n\t * \t^\n\t * \tviewBox <= view_box\n\t * \tpreserveAspectRatio <= aspect\n\t * ```\n\t **/\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"viewBox\" : this.view_box() ,\n\t\t\t\"preserveAspectRatio\" : this.aspect() ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * view_box \\0 0 100 100\n\t * ```\n\t **/\n\tview_box() {\n\t\treturn \"0 0 100 100\"\n\t}\n\n\t/**\n\t * ```\n\t * aspect \\xMidYMid\n\t * ```\n\t **/\n\taspect() {\n\t\treturn \"xMidYMid\"\n\t}\n\n} }\n\n","namespace $ { export class $mol_svg_path extends $mol_svg {\n\n\t/**\n\t * ```\n\t * dom_name \\path\n\t * ```\n\t **/\n\tdom_name() {\n\t\treturn \"path\"\n\t}\n\n\t/**\n\t * ```\n\t * attr *\n\t * \t^\n\t * \td <= geometry\n\t * ```\n\t **/\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"d\" : this.geometry() ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * geometry \\\n\t * ```\n\t **/\n\tgeometry() {\n\t\treturn \"\"\n\t}\n\n} }\n\n","namespace $ { $mol_style_attach( \"mol/icon/icon.view.css\",\n \"[mol_icon] {\\n\\tfill: currentColor;\\n\\tstroke: none;\\n\\twidth: 1em;\\n\\theight: 1em;\\n\\tflex: 0 0 auto;\\n\\tvertical-align: -.1em;\\n\\twill-change: transform;\\n}\\n\"\n) }","namespace $ { export class $mol_icon extends $mol_svg_root {\n\n\t/**\n\t * ```\n\t * view_box \\0 0 24 24\n\t * ```\n\t **/\n\tview_box() {\n\t\treturn \"0 0 24 24\"\n\t}\n\n\t/**\n\t * ```\n\t * minimal_width 16\n\t * ```\n\t **/\n\tminimal_width() {\n\t\treturn 16\n\t}\n\n\t/**\n\t * ```\n\t * minimal_height 16\n\t * ```\n\t **/\n\tminimal_height() {\n\t\treturn 16\n\t}\n\n\t/**\n\t * ```\n\t * sub / <= Path\n\t * ```\n\t **/\n\tsub() {\n\t\treturn [ this.Path() ] as readonly any[]\n\t}\n\n\t/**\n\t * ```\n\t * Path $mol_svg_path geometry <= path\n\t * ```\n\t **/\n\t@ $mol_mem\n\tPath() {\n\t\treturn (( obj )=>{\n\t\t\tobj.geometry = () => this.path()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_svg_path( ) )\n\t}\n\n\t/**\n\t * ```\n\t * path \\\n\t * ```\n\t **/\n\tpath() {\n\t\treturn \"\"\n\t}\n\n} }\n\n","namespace $ { export class $mol_icon_alert extends $mol_icon {\n\n\t/**\n\t * ```\n\t * path \\M13,14H11V10H13M13,18H11V16H13M1,21H23L12,2L1,21Z\n\t * ```\n\t **/\n\tpath() {\n\t\treturn \"M13,14H11V10H13M13,18H11V16H13M1,21H23L12,2L1,21Z\"\n\t}\n\n} }\n\n","namespace $ { export class $mol_icon_alert_circle extends $mol_icon {\n\n\t/**\n\t * ```\n\t * path \\M13,13H11V7H13M13,17H11V15H13M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2Z\n\t * ```\n\t **/\n\tpath() {\n\t\treturn \"M13,13H11V7H13M13,17H11V15H13M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2Z\"\n\t}\n\n} }\n\n","namespace $ { $mol_style_attach( \"hyoo/todomvc/todomvc.css\",\n \"[hyoo_todomvc] {\\n\\talign-self: stretch;\\n\\twidth: 100%;\\n\\tmargin: 0;\\n\\ttransition: none;\\n}\\n\\n[hyoo_todomvc] [mol_string] ,\\n[hyoo_todomvc] [mol_string]:focus ,\\n[hyoo_todomvc] [mol_string]:hover ,\\n[hyoo_todomvc] [mol_button] ,\\n[hyoo_todomvc] [mol_button]:focus ,\\n[hyoo_todomvc] [mol_button]:hover ,\\n[hyoo_todomvc] [mol_link] ,\\n[hyoo_todomvc] [mol_link]:focus ,\\n[hyoo_todomvc] [mol_link]:hover {\\n\\tbox-shadow: none;\\n\\tbackground-color: transparent;\\n}\\n\\n[hyoo_todomvc] [mol_link_current] {\\n\\tcolor: black;\\n}\\n\\n[hyoo_todomvc] [mol_link]:not([mol_link_current]):hover ,\\n[hyoo_todomvc] [mol_link]:not([mol_link_current]):focus {\\n\\ttext-decoration: underline;\\n}\\n\\n[hyoo_todomvc_head_complete] {\\n\\tflex: 0 0 4rem;\\n\\ttransform: rotate( 90deg );\\n\\talign-items: center;\\n\\topacity: .5;\\n\\tpadding: 0;\\n\\tjustify-content: center;\\n}\\n[hyoo_todomvc_head_complete]:disabled {\\n\\tvisibility: hidden;\\n}\\n[hyoo_todomvc_head_complete][mol_check_checked] {\\n\\topacity: 1;\\n}\\n\\n[hyoo_todomvc_add] {\\n\\tpadding: 0;\\n\\tflex: 1 1 auto;\\n}\\n\\n[hyoo_todomvc_list] {\\n\\tfont-size: 1.5rem;\\n\\ttransition: none;\\n}\\n\\n[hyoo_todomvc_page] {\\n\\tflex: 1 1 auto;\\n\\ttransition: none;\\n}\\n\\n[hyoo_todomvc_panel] {\\n\\tbox-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1);\\n\\tmax-width: 38rem;\\n\\t--mol_theme_back: white;\\n\\t--mol_theme_text: black;\\n\\tbackground-color: var(--mol_theme_back);\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tmargin: 0 auto 2rem;\\n\\ttransition: none;\\n}\\n\\n[hyoo_todomvc_head] {\\n\\tfont-size: 1.5rem;\\n\\tpadding: 0;\\n\\tdisplay: flex;\\n\\theight: 4rem;\\n}\\n\\n[hyoo_todomvc_title] {\\n\\tword-break: normal;\\n\\tdisplay: block;\\n\\tpadding: .25rem;\\n\\tfont-size: 7rem;\\n\\tfont-weight: 100;\\n\\ttext-align: center;\\n\\tcolor: rgba(275, 147, 147, 0.2);\\n\\ttext-rendering: optimizeLegibility;\\n\\ttext-transform: lowercase;\\n}\\n\\n[hyoo_todomvc_task_row] {\\n\\tdisplay: flex;\\n\\tbackground-color: white;\\n\\tbox-shadow: 0 -1px 0 0 #ededed;\\n\\theight: 4rem;\\n}\\n\\n[hyoo_todomvc_task_row_complete] {\\n\\tflex: 0 0 4rem;\\n\\tpadding: 1rem;\\n\\tbackground: no-repeat center center url('hyoo/todomvc/todomvc_active.svg');\\n}\\n[hyoo_todomvc_task_row_complete][mol_check_checked] {\\n\\tbackground: no-repeat center center url('hyoo/todomvc/todomvc_completed.svg');\\n}\\n\\n[hyoo_todomvc_task_row_title] {\\n\\tpadding: 0;\\n\\tflex: 1 1 auto;\\n}\\n\\n[hyoo_todomvc_task_row_completed] [hyoo_todomvc_task_row_title] {\\n\\tcolor: #d9d9d9;\\n\\ttext-decoration: line-through;\\n}\\n\\n[hyoo_todomvc_task_row_drop] {\\n\\tfont-size: 1.25rem;\\n\\tflex: 0 04rem;\\n}\\n[hyoo_todomvc_task_row]:not(:hover) [hyoo_todomvc_task_row_drop]:not(:focus) {\\n\\topacity: 0;\\n\\tcolor: #cc9a9a;\\n}\\n\\n[hyoo_todomvc_foot] {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\talign-items: baseline;\\n\\tpadding: .5rem 1rem;\\n\\tcolor: #777;\\n\\tfont-size: .85rem;\\n\\tborder-top: 1px solid #ededed;\\n\\tbox-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2);\\n}\\n\\n[hyoo_todomvc_pending] {\\n\\tpadding: .25rem;\\n\\tflex: 0 1 6rem;\\n}\\n\\n[hyoo_todomvc_filter] {\\n\\tflex: 1 100 auto;\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\tmargin: .25rem;\\n\\tbox-shadow: none;\\n}\\n\\n[hyoo_todomvc_sweep] {\\n\\tflex: 0 1 auto;\\n\\tpadding: .25rem;\\n}\\n[hyoo_todomvc_sweep][disabled] {\\n\\tvisibility: hidden;\\n}\\n\\n[hyoo_todomvc_sweep]:hover ,\\n[hyoo_todomvc_sweep]:focus {\\n\\ttext-decoration: underline;\\n}\\n\"\n) }","namespace $ { export class $hyoo_todomvc extends $mol_scroll {\n\n\t/**\n\t * ```\n\t * title \\Todos\n\t * ```\n\t **/\n\ttitle() {\n\t\treturn \"Todos\"\n\t}\n\n\t/**\n\t * ```\n\t * sub / <= Page\n\t * ```\n\t **/\n\tsub() {\n\t\treturn [ this.Page() ] as readonly any[]\n\t}\n\n\t/**\n\t * ```\n\t * Page $mol_list rows /\n\t * \t<= Title\n\t * \t<= Panel\n\t * ```\n\t **/\n\t@ $mol_mem\n\tPage() {\n\t\treturn (( obj )=>{\n\t\t\tobj.rows = () => [ this.Title() , this.Panel() ] as readonly any[]\n\t\t\treturn obj\n\t\t})( new this.$.$mol_list( ) )\n\t}\n\n\t/**\n\t * ```\n\t * Title $mol_view\n\t * \tminimal_height 176\n\t * \tsub / <= title\n\t * ```\n\t **/\n\t@ $mol_mem\n\tTitle() {\n\t\treturn (( obj )=>{\n\t\t\tobj.minimal_height = () => 176\n\t\t\tobj.sub = () => [ this.title() ] as readonly any[]\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view( ) )\n\t}\n\n\t/**\n\t * ```\n\t * Panel $mol_list rows <= panels\n\t * ```\n\t **/\n\t@ $mol_mem\n\tPanel() {\n\t\treturn (( obj )=>{\n\t\t\tobj.rows = () => this.panels()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_list( ) )\n\t}\n\n\t/**\n\t * ```\n\t * panels /\n\t * \t<= Head\n\t * \t<= List\n\t * \t<= Foot\n\t * ```\n\t **/\n\tpanels() {\n\t\treturn [ this.Head() , this.List() , this.Foot() ] as readonly any[]\n\t}\n\n\t/**\n\t * ```\n\t * Head $mol_view\n\t * \tminimal_height 64\n\t * \tsub <= Head_content\n\t * ```\n\t **/\n\t@ $mol_mem\n\tHead() {\n\t\treturn (( obj )=>{\n\t\t\tobj.minimal_height = () => 64\n\t\t\tobj.sub = () => this.Head_content()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view( ) )\n\t}\n\n\t/**\n\t * ```\n\t * Head_content /\n\t * \t<= Head_complete\n\t * \t<= Add\n\t * ```\n\t **/\n\tHead_content() {\n\t\treturn [ this.Head_complete() , this.Add() ] as readonly any[]\n\t}\n\n\t/**\n\t * ```\n\t * Head_complete $mol_check\n\t * \tenabled <= head_complete_enabled\n\t * \tchecked?val <=> completed_all?val\n\t * \ttitle \\❯\n\t * ```\n\t **/\n\t@ $mol_mem\n\tHead_complete() {\n\t\treturn (( obj )=>{\n\t\t\tobj.enabled = () => this.head_complete_enabled()\n\t\t\tobj.checked = ( val? : any ) => this.completed_all( val )\n\t\t\tobj.title = () => \"❯\"\n\t\t\treturn obj\n\t\t})( new this.$.$mol_check( ) )\n\t}\n\n\t/**\n\t * ```\n\t * head_complete_enabled false\n\t * ```\n\t **/\n\thead_complete_enabled() {\n\t\treturn false\n\t}\n\n\t/**\n\t * ```\n\t * completed_all?val false\n\t * ```\n\t **/\n\t@ $mol_mem\n\tcompleted_all( val? : any , force? : $mol_mem_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/**\n\t * ```\n\t * Add $hyoo_todomvc_add\n\t * \tvalue?val <=> task_title_new?val\n\t * \tdone?event <=> add?event\n\t * ```\n\t **/\n\t@ $mol_mem\n\tAdd() {\n\t\treturn (( obj )=>{\n\t\t\tobj.value = ( val? : any ) => this.task_title_new( val )\n\t\t\tobj.done = ( event? : any ) => this.add( event )\n\t\t\treturn obj\n\t\t})( new this.$.$hyoo_todomvc_add( ) )\n\t}\n\n\t/**\n\t * ```\n\t * task_title_new?val \\\n\t * ```\n\t **/\n\t@ $mol_mem\n\ttask_title_new( val? : any , force? : $mol_mem_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/**\n\t * ```\n\t * add?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tadd( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/**\n\t * ```\n\t * List $mol_list rows <= task_rows\n\t * ```\n\t **/\n\t@ $mol_mem\n\tList() {\n\t\treturn (( obj )=>{\n\t\t\tobj.rows = () => this.task_rows()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_list( ) )\n\t}\n\n\t/**\n\t * ```\n\t * task_rows /$mol_view\n\t * ```\n\t **/\n\ttask_rows() {\n\t\treturn [ ] as readonly ( $mol_view )[]\n\t}\n\n\t/**\n\t * ```\n\t * Foot $mol_view sub <= foot_content\n\t * ```\n\t **/\n\t@ $mol_mem\n\tFoot() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => this.foot_content()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view( ) )\n\t}\n\n\t/**\n\t * ```\n\t * foot_content /\n\t * \t<= Pending\n\t * \t<= Filter\n\t * \t<= Sweep\n\t * ```\n\t **/\n\tfoot_content() {\n\t\treturn [ this.Pending() , this.Filter() , this.Sweep() ] as readonly any[]\n\t}\n\n\t/**\n\t * ```\n\t * Pending $mol_view sub / <= pending_message\n\t * ```\n\t **/\n\t@ $mol_mem\n\tPending() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [ this.pending_message() ] as readonly any[]\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view( ) )\n\t}\n\n\t/**\n\t * ```\n\t * pending_message \\0 items left\n\t * ```\n\t **/\n\tpending_message() {\n\t\treturn \"0 items left \"\n\t}\n\n\t/**\n\t * ```\n\t * Filter $mol_bar sub <= filterOptions\n\t * ```\n\t **/\n\t@ $mol_mem\n\tFilter() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => this.filterOptions()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_bar( ) )\n\t}\n\n\t/**\n\t * ```\n\t * filterOptions /\n\t * \t<= Filter_all\n\t * \t<= Filter_active\n\t * \t<= Filter_completed\n\t * ```\n\t **/\n\tfilterOptions() {\n\t\treturn [ this.Filter_all() , this.Filter_active() , this.Filter_completed() ] as readonly any[]\n\t}\n\n\t/**\n\t * ```\n\t * Filter_all $mol_link\n\t * \tsub / <= filter_all_label\n\t * \targ * completed null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tFilter_all() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [ this.filter_all_label() ] as readonly any[]\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : null as any ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_link( ) )\n\t}\n\n\t/**\n\t * ```\n\t * filter_all_label \\All\n\t * ```\n\t **/\n\tfilter_all_label() {\n\t\treturn \"All\"\n\t}\n\n\t/**\n\t * ```\n\t * Filter_active $mol_link\n\t * \tsub / <= filter_active_label\n\t * \targ * completed \\false\n\t * ```\n\t **/\n\t@ $mol_mem\n\tFilter_active() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [ this.filter_active_label() ] as readonly any[]\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : \"false\" ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_link( ) )\n\t}\n\n\t/**\n\t * ```\n\t * filter_active_label \\Active\n\t * ```\n\t **/\n\tfilter_active_label() {\n\t\treturn \"Active\"\n\t}\n\n\t/**\n\t * ```\n\t * Filter_completed $mol_link\n\t * \tsub / <= filter_completed_label\n\t * \targ * completed \\true\n\t * ```\n\t **/\n\t@ $mol_mem\n\tFilter_completed() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [ this.filter_completed_label() ] as readonly any[]\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : \"true\" ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_link( ) )\n\t}\n\n\t/**\n\t * ```\n\t * filter_completed_label \\Completed\n\t * ```\n\t **/\n\tfilter_completed_label() {\n\t\treturn \"Completed\"\n\t}\n\n\t/**\n\t * ```\n\t * Sweep $mol_button_minor\n\t * \tenabled <= sweep_enabled\n\t * \tclick?event <=> sweep?event\n\t * \tsub / <= sweep_label\n\t * ```\n\t **/\n\t@ $mol_mem\n\tSweep() {\n\t\treturn (( obj )=>{\n\t\t\tobj.enabled = () => this.sweep_enabled()\n\t\t\tobj.click = ( event? : any ) => this.sweep( event )\n\t\t\tobj.sub = () => [ this.sweep_label() ] as readonly any[]\n\t\t\treturn obj\n\t\t})( new this.$.$mol_button_minor( ) )\n\t}\n\n\t/**\n\t * ```\n\t * sweep_enabled true\n\t * ```\n\t **/\n\tsweep_enabled() {\n\t\treturn true\n\t}\n\n\t/**\n\t * ```\n\t * sweep?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tsweep( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/**\n\t * ```\n\t * sweep_label \\Clear completed\n\t * ```\n\t **/\n\tsweep_label() {\n\t\treturn \"Clear completed\"\n\t}\n\n\t/**\n\t * ```\n\t * Task_row!id $hyoo_todomvc_task_row\n\t * \tcompleted?val <=> task_completed!id?val\n\t * \ttitle?val <=> task_title!id?val\n\t * \tdrop?event <=> task_drop!id?event\n\t * ```\n\t **/\n\t@ $mol_mem_key\n\tTask_row( id : any ) {\n\t\treturn (( obj )=>{\n\t\t\tobj.completed = ( val? : any ) => this.task_completed(id , val )\n\t\t\tobj.title = ( val? : any ) => this.task_title(id , val )\n\t\t\tobj.drop = ( event? : any ) => this.task_drop(id , event )\n\t\t\treturn obj\n\t\t})( new this.$.$hyoo_todomvc_task_row( ) )\n\t}\n\n\t/**\n\t * ```\n\t * task_completed!id?val false\n\t * ```\n\t **/\n\t@ $mol_mem_key\n\ttask_completed( id : any , val? : any , force? : $mol_mem_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/**\n\t * ```\n\t * task_title!id?val \\\n\t * ```\n\t **/\n\t@ $mol_mem_key\n\ttask_title( id : any , val? : any , force? : $mol_mem_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/**\n\t * ```\n\t * task_drop!id?event null\n\t * ```\n\t **/\n\t@ $mol_mem_key\n\ttask_drop( id : any , event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\nnamespace $ { export class $hyoo_todomvc_add extends $mol_string {\n\n\t/**\n\t * ```\n\t * hint \\What needs to be done?\n\t * ```\n\t **/\n\thint() {\n\t\treturn \"What needs to be done?\"\n\t}\n\n\t/**\n\t * ```\n\t * event *\n\t * \t^\n\t * \tkeydown?event <=> press?event\n\t * ```\n\t **/\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"keydown\" : ( event? : any )=> this.press( event ) ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * press?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tpress( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/**\n\t * ```\n\t * done?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tdone( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\nnamespace $ { export class $hyoo_todomvc_task_row extends $mol_view {\n\n\t/**\n\t * ```\n\t * minimal_height 64\n\t * ```\n\t **/\n\tminimal_height() {\n\t\treturn 64\n\t}\n\n\t/**\n\t * ```\n\t * sub /\n\t * \t<= Complete\n\t * \t<= Title\n\t * \t<= Drop\n\t * ```\n\t **/\n\tsub() {\n\t\treturn [ this.Complete() , this.Title() , this.Drop() ] as readonly any[]\n\t}\n\n\t/**\n\t * ```\n\t * Complete $mol_check checked?val <=> completed?val\n\t * ```\n\t **/\n\t@ $mol_mem\n\tComplete() {\n\t\treturn (( obj )=>{\n\t\t\tobj.checked = ( val? : any ) => this.completed( val )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_check( ) )\n\t}\n\n\t/**\n\t * ```\n\t * completed?val false\n\t * ```\n\t **/\n\t@ $mol_mem\n\tcompleted( val? : any , force? : $mol_mem_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/**\n\t * ```\n\t * Title $mol_string\n\t * \thint <= title_hint\n\t * \tvalue?val <=> title?val\n\t * ```\n\t **/\n\t@ $mol_mem\n\tTitle() {\n\t\treturn (( obj )=>{\n\t\t\tobj.hint = () => this.title_hint()\n\t\t\tobj.value = ( val? : any ) => this.title( val )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_string( ) )\n\t}\n\n\t/**\n\t * ```\n\t * title_hint \\Task title\n\t * ```\n\t **/\n\ttitle_hint() {\n\t\treturn \"Task title\"\n\t}\n\n\t/**\n\t * ```\n\t * title?val \\\n\t * ```\n\t **/\n\t@ $mol_mem\n\ttitle( val? : any , force? : $mol_mem_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/**\n\t * ```\n\t * Drop $mol_button_typed\n\t * \tsub / \\✖\n\t * \tclick?event <=> drop?event\n\t * ```\n\t **/\n\t@ $mol_mem\n\tDrop() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [ \"✖\" ] as readonly any[]\n\t\t\tobj.click = ( event? : any ) => this.drop( event )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_button_typed( ) )\n\t}\n\n\t/**\n\t * ```\n\t * drop?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tdrop( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/**\n\t * ```\n\t * attr *\n\t * \t^\n\t * \thyoo_todomvc_task_row_completed <= completed?val\n\t * ```\n\t **/\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"hyoo_todomvc_task_row_completed\" : this.completed() ,\n\t\t})\n\t}\n\n} }\n\nnamespace $ { export class $my_button_danger extends $mol_view {\n\n\t/**\n\t * ```\n\t * sub /\n\t * \t<= Icon\n\t * \t<= title\n\t * ```\n\t **/\n\tsub() {\n\t\treturn [ this.Icon() , this.title() ] as readonly any[]\n\t}\n\n\t/**\n\t * ```\n\t * Icon $mol_icon_alert_circle\n\t * ```\n\t **/\n\t@ $mol_mem\n\tIcon() {\n\t\treturn (( obj )=>{\n\t\t\treturn obj\n\t\t})( new this.$.$mol_icon_alert_circle( ) )\n\t}\n\n} }\n\n","interface $hyoo_todomvc_task {\n\tcompleted? : boolean\n\ttitle? : string\n}\n\nnamespace $.$$ {\n\t\n\texport class $hyoo_todomvc_add extends $.$hyoo_todomvc_add {\n\t\t\n\t\tpress( next? : KeyboardEvent ) {\n\t\t\tswitch( next.keyCode ) {\n\t\t\t\tcase $mol_keyboard_code.enter : return this.done( next )\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\texport class $hyoo_todomvc extends $.$hyoo_todomvc {\n\t\t\n\t\ttask_ids( next? : number[] ) : number[] {\n\t\t\treturn this.$.$mol_state_local.value( this.state_key( 'mol-todos' ) , next ) || []\n\t\t}\n\t\t\n\t\targ_completed() {\n\t\t\treturn this.$.$mol_state_arg.value( this.state_key( 'completed' ) )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tgroups_completed() {\n\t\t\tvar groups : { [ index : string ] : number[] } = { 'true' : [] , 'false' : [] }\n\t\t\tfor( let id of this.task_ids() ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tgroups[ String( task.completed ) ].push( id )\n\t\t\t}\n\t\t\treturn groups\n\t\t}\n\n\t\t@ $mol_mem\n\t\ttask_ids_filtered() {\n\t\t\tvar completed = this.arg_completed()\n\t\t\tif( completed ) {\n\t\t\t\treturn this.groups_completed()[ completed ] || []\n\t\t\t} else {\n\t\t\t\treturn this.task_ids()\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_mem\n\t\tcompleted_all( next? : boolean ) {\n\t\t\tif( next === void 0 ) return this.groups_completed()[ 'false' ].length === 0\n\t\t\t\n\t\t\tfor( let id of this.groups_completed()[ String( !next ) ] ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tthis.task( id , { title : task.title , completed : next } )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\thead_complete_enabled() {\n\t\t\treturn this.task_ids().length > 0 \n\t\t}\n\n\t\t@ $mol_mem\n\t\tpending_message() {\n\t\t\tlet count = this.groups_completed()[ 'false' ].length\n\t\t\treturn ( count === 1 ) ? '1 item left' : `${count} items left`\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tnew_id() {\n\t\t\treturn Math.max( 1 , 1 + Math.max( ... this.task_ids() ) )\n\t\t}\n\t\t\n\t\tadd( next? : Event ) {\n\t\t\tvar title = this.task_title_new() \n\t\t\tif( !title ) return\n\t\t\t\n\t\t\tvar id = this.new_id()\n\t\t\tvar task = { completed : false , title }\n\t\t\tthis.task( id , task )\n\t\t\t\n\t\t\tthis.task_ids( this.task_ids().concat( id ) )\n\t\t\tthis.task_title_new( '' )\n\t\t}\n\n\t\t@ $mol_mem\n\t\ttask_rows() {\n\t\t\treturn this.task_ids_filtered().map( id => this.Task_row( id ) )\n\t\t}\n\t\t\n\t\ttask( id : number , next? : $hyoo_todomvc_task ) {\n\t\t\tconst key = this.state_key( `mol-todos-${id}` )\n\t\t\tif( next === void 0 ) {\n\t\t\t\treturn this.$.$mol_state_local.value<$hyoo_todomvc_task>( key ) || { title : '' , completed : false }\n\t\t\t}\n\t\t\t\n\t\t\tthis.$.$mol_state_local.value( key , next )\n\t\t\t\n\t\t\treturn next || void 0\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttask_completed( id : number , next? : boolean ) {\n\t\t\treturn this.task( id , next === undefined ? undefined : { ... this.task( id ) , completed : next } ).completed\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttask_title( id : number , next? : string ) {\n\t\t\treturn this.task( id , next === undefined ? undefined : { ... this.task( id ) , title : next } ).title\n\t\t}\n\t\t\n\t\ttask_drop( id : number , next? : Event ) {\n\t\t\tthis.task( id , null )\n\t\t\tthis.task_ids( this.task_ids().filter( id2 => id !== id2 ) )\n\t\t}\n\n\t\tsweep() {\n\t\t\tthis.task_ids( this.task_ids().filter( id => {\n\t\t\t\tif( !this.task( id ).completed ) return true\n\t\t\t\tthis.task( id , null )\n\t\t\t\treturn false\n\t\t\t} ) )\n\t\t}\n\t\t\n\t\tpanels() {\n\t\t\treturn [\n\t\t\t\tthis.Head() , \n\t\t\t\tthis.List() ,\n\t\t\t\t... this.foot_visible() ? [ this.Foot() ] : [] ,\n\t\t\t]\n\t\t}\n\t\t\n\t\tfoot_visible() {\n\t\t\treturn this.task_ids().length > 0\n\t\t}\n\n\t\tsweep_enabled() {\n\t\t\treturn this.groups_completed()[ 'true' ].length > 0\n\t\t}\n\t\t\n\t}\n\t\n}\n",null,null,"namespace $ {\n\n\texport class $mol_plugin extends $mol_view {\n\n\t\t@ $mol_mem\n\t\tdom_node( next? : Element ) {\n\n\t\t\tconst node = next || $mol_owning_get( this , $mol_view )!.dom_node()\n\n\t\t\t$mol_dom_render_attributes( node , this.attr_static() )\n\n\t\t\tconst events = this.event()\n\t\t\tfor( let event_name in events ) {\n\t\t\t\tnode.addEventListener(\n\t\t\t\t\tevent_name ,\n\t\t\t\t\t$mol_log2.func( $mol_fiber_root( events[ event_name ] ) ) ,\n\t\t\t\t\t{ passive : false } as any ,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\treturn node\n\t\t}\n\n\t\tattr_static() : { [ key : string ] : string|number|boolean } {\n\t\t\treturn {}\n\t\t}\n\n\t\tevent() : { [ key : string ] : ( event : Event )=> void } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\trender() {\n\t\t\tthis.dom_node_actual()\n\t\t}\n\t\t\n\t}\n\n}\n"]} \ No newline at end of file diff --git a/examples/mol/web.js b/examples/mol/web.js new file mode 100644 index 0000000000..9cf6ca7618 --- /dev/null +++ b/examples/mol/web.js @@ -0,0 +1,4242 @@ +function require( path ){ return $node[ path ] }; + +var $node = $node || {} +void function( module ) { var exports = module.exports = this; function require( id ) { return $node[ id.replace( /^.\// , "../mol/" ) ] }; +; +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +Error.stackTraceLimit = Infinity; +module.exports; +//mol.js.map +; + +$node[ "../mol/mol" ] = $node[ "../mol/mol.js" ] = module.exports }.call( {} , {} ) +; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; + +; +"use strict" +/// Fake namespace for optional overrides +/// +/// namespace $ { export var x = 1 , y = 1 } // defaults +/// namespace $.$$ { export var x = 2 } // overrides +/// namespace $.$$ { console.log( x , y ) } // usage +/// +var $ = ( typeof module === 'object' ) ? Object.setPrototypeOf( module['export'+'s'] , self ) : self +$.$$ = $ + +$.$mol = $ // deprecated + +; +"use strict"; +var $; +(function ($) { + let $$; + (function ($$_1) { + })($$ = $.$$ || ($.$$ = {})); + $.$mol_ambient_ref = Symbol('$mol_ambient_ref'); + function $mol_ambient(overrides) { + return Object.setPrototypeOf(overrides, this || $); + } + $.$mol_ambient = $mol_ambient; +})($ || ($ = {})); +//ambient.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_owning_map = new WeakMap(); + function $mol_owning_allow(having) { + if (!having) + return false; + if (typeof having !== 'object') + return false; + if (typeof having['destructor'] !== 'function') + return false; + return true; + } + $.$mol_owning_allow = $mol_owning_allow; + function $mol_owning_get(having, Owner) { + if (!$mol_owning_allow(having)) + return null; + while (true) { + const owner = $.$mol_owning_map.get(having); + if (!owner) + return owner; + if (!Owner) + return owner; + if (owner instanceof Owner) + return owner; + having = owner; + } + } + $.$mol_owning_get = $mol_owning_get; + function $mol_owning_check(owner, having) { + if (!$mol_owning_allow(having)) + return false; + if ($.$mol_owning_map.get(having) !== owner) + return false; + return true; + } + $.$mol_owning_check = $mol_owning_check; + function $mol_owning_catch(owner, having) { + if (!$mol_owning_allow(having)) + return false; + if ($.$mol_owning_map.get(having)) + return false; + $.$mol_owning_map.set(having, owner); + return true; + } + $.$mol_owning_catch = $mol_owning_catch; +})($ || ($ = {})); +//owning.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_fail(error) { + throw error; + } + $.$mol_fail = $mol_fail; +})($ || ($ = {})); +//fail.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_fail_hidden(error) { + throw error; + } + $.$mol_fail_hidden = $mol_fail_hidden; +})($ || ($ = {})); +//hidden.js.map +; +"use strict"; +var $; +(function ($) { + var _a; + class $mol_object2 { + constructor(init) { + this[_a] = null; + if (init) + init(this); + } + get $() { + if (this[$.$mol_ambient_ref]) + return this[$.$mol_ambient_ref]; + const owner = $.$mol_owning_get(this); + return this[$.$mol_ambient_ref] = (owner === null || owner === void 0 ? void 0 : owner.$) || $mol_object2.$; + } + set $(next) { + if (this[$.$mol_ambient_ref]) + $.$mol_fail_hidden(new Error('Context already defined')); + this[$.$mol_ambient_ref] = next; + } + static create(init) { + return new this(init); + } + static toString() { return this[Symbol.toStringTag] || this.name; } + destructor() { } + toString() { + return this[Symbol.toStringTag] || this.constructor.name + '()'; + } + toJSON() { + return this.toString(); + } + } + _a = $.$mol_ambient_ref; + $mol_object2.$ = $; + $.$mol_object2 = $mol_object2; +})($ || ($ = {})); +//object2.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_after_tick extends $.$mol_object2 { + constructor(task) { + super(); + this.task = task; + this.cancelled = false; + this.promise = Promise.resolve().then(() => { + if (this.cancelled) + return; + task(); + }); + } + destructor() { + this.cancelled = true; + } + } + $.$mol_after_tick = $mol_after_tick; +})($ || ($ = {})); +//tick.js.map +; +"use strict"; +var $; +(function ($) { +})($ || ($ = {})); +//context.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_dom_context = self; +})($ || ($ = {})); +//context.web.js.map +; +"use strict"; +var $; +(function ($) { + let all = []; + let el = null; + let timer = null; + function $mol_style_attach(id, text) { + all.push(`/* ${id} */\n\n${text}`); + if (timer) + return el; + const doc = $.$mol_dom_context.document; + if (!doc) + return null; + el = doc.createElement('style'); + el.id = `$mol_style_attach`; + doc.head.appendChild(el); + timer = new $.$mol_after_tick(() => { + el.innerHTML = '\n' + all.join('\n\n'); + all = []; + el = null; + timer = null; + }); + return el; + } + $.$mol_style_attach = $mol_style_attach; +})($ || ($ = {})); +//attach.js.map +; +"use strict"; +var $; +(function ($) { + let $mol_keyboard_code; + (function ($mol_keyboard_code) { + $mol_keyboard_code[$mol_keyboard_code["backspace"] = 8] = "backspace"; + $mol_keyboard_code[$mol_keyboard_code["tab"] = 9] = "tab"; + $mol_keyboard_code[$mol_keyboard_code["enter"] = 13] = "enter"; + $mol_keyboard_code[$mol_keyboard_code["shift"] = 16] = "shift"; + $mol_keyboard_code[$mol_keyboard_code["ctrl"] = 17] = "ctrl"; + $mol_keyboard_code[$mol_keyboard_code["alt"] = 18] = "alt"; + $mol_keyboard_code[$mol_keyboard_code["pause"] = 19] = "pause"; + $mol_keyboard_code[$mol_keyboard_code["capsLock"] = 20] = "capsLock"; + $mol_keyboard_code[$mol_keyboard_code["escape"] = 27] = "escape"; + $mol_keyboard_code[$mol_keyboard_code["space"] = 32] = "space"; + $mol_keyboard_code[$mol_keyboard_code["pageUp"] = 33] = "pageUp"; + $mol_keyboard_code[$mol_keyboard_code["pageDown"] = 34] = "pageDown"; + $mol_keyboard_code[$mol_keyboard_code["end"] = 35] = "end"; + $mol_keyboard_code[$mol_keyboard_code["home"] = 36] = "home"; + $mol_keyboard_code[$mol_keyboard_code["left"] = 37] = "left"; + $mol_keyboard_code[$mol_keyboard_code["up"] = 38] = "up"; + $mol_keyboard_code[$mol_keyboard_code["right"] = 39] = "right"; + $mol_keyboard_code[$mol_keyboard_code["down"] = 40] = "down"; + $mol_keyboard_code[$mol_keyboard_code["insert"] = 45] = "insert"; + $mol_keyboard_code[$mol_keyboard_code["delete"] = 46] = "delete"; + $mol_keyboard_code[$mol_keyboard_code["key0"] = 48] = "key0"; + $mol_keyboard_code[$mol_keyboard_code["key1"] = 49] = "key1"; + $mol_keyboard_code[$mol_keyboard_code["key2"] = 50] = "key2"; + $mol_keyboard_code[$mol_keyboard_code["key3"] = 51] = "key3"; + $mol_keyboard_code[$mol_keyboard_code["key4"] = 52] = "key4"; + $mol_keyboard_code[$mol_keyboard_code["key5"] = 53] = "key5"; + $mol_keyboard_code[$mol_keyboard_code["key6"] = 54] = "key6"; + $mol_keyboard_code[$mol_keyboard_code["key7"] = 55] = "key7"; + $mol_keyboard_code[$mol_keyboard_code["key8"] = 56] = "key8"; + $mol_keyboard_code[$mol_keyboard_code["key9"] = 57] = "key9"; + $mol_keyboard_code[$mol_keyboard_code["A"] = 65] = "A"; + $mol_keyboard_code[$mol_keyboard_code["B"] = 66] = "B"; + $mol_keyboard_code[$mol_keyboard_code["C"] = 67] = "C"; + $mol_keyboard_code[$mol_keyboard_code["D"] = 68] = "D"; + $mol_keyboard_code[$mol_keyboard_code["E"] = 69] = "E"; + $mol_keyboard_code[$mol_keyboard_code["F"] = 70] = "F"; + $mol_keyboard_code[$mol_keyboard_code["G"] = 71] = "G"; + $mol_keyboard_code[$mol_keyboard_code["H"] = 72] = "H"; + $mol_keyboard_code[$mol_keyboard_code["I"] = 73] = "I"; + $mol_keyboard_code[$mol_keyboard_code["J"] = 74] = "J"; + $mol_keyboard_code[$mol_keyboard_code["K"] = 75] = "K"; + $mol_keyboard_code[$mol_keyboard_code["L"] = 76] = "L"; + $mol_keyboard_code[$mol_keyboard_code["M"] = 77] = "M"; + $mol_keyboard_code[$mol_keyboard_code["N"] = 78] = "N"; + $mol_keyboard_code[$mol_keyboard_code["O"] = 79] = "O"; + $mol_keyboard_code[$mol_keyboard_code["P"] = 80] = "P"; + $mol_keyboard_code[$mol_keyboard_code["Q"] = 81] = "Q"; + $mol_keyboard_code[$mol_keyboard_code["R"] = 82] = "R"; + $mol_keyboard_code[$mol_keyboard_code["S"] = 83] = "S"; + $mol_keyboard_code[$mol_keyboard_code["T"] = 84] = "T"; + $mol_keyboard_code[$mol_keyboard_code["U"] = 85] = "U"; + $mol_keyboard_code[$mol_keyboard_code["V"] = 86] = "V"; + $mol_keyboard_code[$mol_keyboard_code["W"] = 87] = "W"; + $mol_keyboard_code[$mol_keyboard_code["X"] = 88] = "X"; + $mol_keyboard_code[$mol_keyboard_code["Y"] = 89] = "Y"; + $mol_keyboard_code[$mol_keyboard_code["Z"] = 90] = "Z"; + $mol_keyboard_code[$mol_keyboard_code["metaLeft"] = 91] = "metaLeft"; + $mol_keyboard_code[$mol_keyboard_code["metaRight"] = 92] = "metaRight"; + $mol_keyboard_code[$mol_keyboard_code["select"] = 93] = "select"; + $mol_keyboard_code[$mol_keyboard_code["numpad0"] = 96] = "numpad0"; + $mol_keyboard_code[$mol_keyboard_code["numpad1"] = 97] = "numpad1"; + $mol_keyboard_code[$mol_keyboard_code["numpad2"] = 98] = "numpad2"; + $mol_keyboard_code[$mol_keyboard_code["numpad3"] = 99] = "numpad3"; + $mol_keyboard_code[$mol_keyboard_code["numpad4"] = 100] = "numpad4"; + $mol_keyboard_code[$mol_keyboard_code["numpad5"] = 101] = "numpad5"; + $mol_keyboard_code[$mol_keyboard_code["numpad6"] = 102] = "numpad6"; + $mol_keyboard_code[$mol_keyboard_code["numpad7"] = 103] = "numpad7"; + $mol_keyboard_code[$mol_keyboard_code["numpad8"] = 104] = "numpad8"; + $mol_keyboard_code[$mol_keyboard_code["numpad9"] = 105] = "numpad9"; + $mol_keyboard_code[$mol_keyboard_code["multiply"] = 106] = "multiply"; + $mol_keyboard_code[$mol_keyboard_code["add"] = 107] = "add"; + $mol_keyboard_code[$mol_keyboard_code["subtract"] = 109] = "subtract"; + $mol_keyboard_code[$mol_keyboard_code["decimal"] = 110] = "decimal"; + $mol_keyboard_code[$mol_keyboard_code["divide"] = 111] = "divide"; + $mol_keyboard_code[$mol_keyboard_code["F1"] = 112] = "F1"; + $mol_keyboard_code[$mol_keyboard_code["F2"] = 113] = "F2"; + $mol_keyboard_code[$mol_keyboard_code["F3"] = 114] = "F3"; + $mol_keyboard_code[$mol_keyboard_code["F4"] = 115] = "F4"; + $mol_keyboard_code[$mol_keyboard_code["F5"] = 116] = "F5"; + $mol_keyboard_code[$mol_keyboard_code["F6"] = 117] = "F6"; + $mol_keyboard_code[$mol_keyboard_code["F7"] = 118] = "F7"; + $mol_keyboard_code[$mol_keyboard_code["F8"] = 119] = "F8"; + $mol_keyboard_code[$mol_keyboard_code["F9"] = 120] = "F9"; + $mol_keyboard_code[$mol_keyboard_code["F10"] = 121] = "F10"; + $mol_keyboard_code[$mol_keyboard_code["F11"] = 122] = "F11"; + $mol_keyboard_code[$mol_keyboard_code["F12"] = 123] = "F12"; + $mol_keyboard_code[$mol_keyboard_code["numLock"] = 144] = "numLock"; + $mol_keyboard_code[$mol_keyboard_code["scrollLock"] = 145] = "scrollLock"; + $mol_keyboard_code[$mol_keyboard_code["semicolon"] = 186] = "semicolon"; + $mol_keyboard_code[$mol_keyboard_code["equals"] = 187] = "equals"; + $mol_keyboard_code[$mol_keyboard_code["comma"] = 188] = "comma"; + $mol_keyboard_code[$mol_keyboard_code["dash"] = 189] = "dash"; + $mol_keyboard_code[$mol_keyboard_code["period"] = 190] = "period"; + $mol_keyboard_code[$mol_keyboard_code["forwardSlash"] = 191] = "forwardSlash"; + $mol_keyboard_code[$mol_keyboard_code["graveAccent"] = 192] = "graveAccent"; + $mol_keyboard_code[$mol_keyboard_code["bracketOpen"] = 219] = "bracketOpen"; + $mol_keyboard_code[$mol_keyboard_code["slashBack"] = 220] = "slashBack"; + $mol_keyboard_code[$mol_keyboard_code["slashBackLeft"] = 226] = "slashBackLeft"; + $mol_keyboard_code[$mol_keyboard_code["bracketClose"] = 221] = "bracketClose"; + $mol_keyboard_code[$mol_keyboard_code["quoteSingle"] = 222] = "quoteSingle"; + })($mol_keyboard_code = $.$mol_keyboard_code || ($.$mol_keyboard_code = {})); +})($ || ($ = {})); +//code.js.map +; +"use strict"; +//theme.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_style_attach("mol/theme/theme.css", "[mol_theme] , :root {\n\tbackground-color: var(--mol_theme_back);\n\tcolor: var(--mol_theme_text);\n\tfill: var(--mol_theme_text);\n}\n\n@media (prefers-color-scheme: light) {\n\t[mol_theme=\"$mol_theme_auto\"] {\n\t\t--mol_theme_back: hsl( 210 , 50% , 99% );\n\t\t--mol_theme_hover: rgba( 0 , 0 , 0 , .05 );\n\t\t--mol_theme_current: hsl( 210 , 100% , 80% );\n\t\t--mol_theme_text: rgba( 0 , 0 , 0 , .9 );\n\t\t--mol_theme_control: hsla( 210 , 60% , 35% , 1 );\n\t\t--mol_theme_shade: rgba( 0 , 0 , 0 , .5 );\n\t\t--mol_theme_line: rgba( 220 , 220 , 220 , 1 );\n\t\t--mol_theme_focus: hsla( 0 , 60% , 50% , 0.75 );\n\t\t--mol_theme_field: white;\n\t}\n}\n\n@media (prefers-color-scheme: dark) {\n\t[mol_theme=\"$mol_theme_auto\"] {\n\t\t--mol_theme_back: hsl( 210 , 50% , 10% );\n\t\t--mol_theme_hover: #333;\n\t\t--mol_theme_current: hsl( 210 , 100% , 20% );\n\t\t--mol_theme_text: rgba( 255 , 255 , 255 , .8 );\n\t\t--mol_theme_control: hsla( 210 , 60% , 70% , 1 );\n\t\t--mol_theme_shade: rgba( 255 , 255 , 255 , .5 );\n\t\t--mol_theme_line: rgba( 50 , 50 , 50 , 1 );\n\t\t--mol_theme_focus: rgba( 204 , 68 , 50 , .75 );\n\t\t--mol_theme_field: black;\n\t}\n}\n\n[mol_theme=\"$mol_theme_light\"] , :root {\n\t--mol_theme_back: hsl( 210 , 50% , 99% );\n\t--mol_theme_hover: rgba( 0 , 0 , 0 , .05 );\n\t--mol_theme_current: hsl( 210 , 100% , 80% );\n\t--mol_theme_text: rgba( 0 , 0 , 0 , .9 );\n\t--mol_theme_control: hsla( 210 , 60% , 35% , 1 );\n\t--mol_theme_shade: rgba( 0 , 0 , 0 , .5 );\n\t--mol_theme_line: rgba( 220 , 220 , 220 , 1 );\n\t--mol_theme_focus: hsla( 0 , 60% , 50% , 0.75 );\n\t--mol_theme_field: white;\n}\n\n[mol_theme=\"$mol_theme_dark\"] {\n\t--mol_theme_back: hsl( 210 , 50% , 10% );\n\t--mol_theme_hover: #333;\n\t--mol_theme_current: hsl( 210 , 100% , 20% );\n\t--mol_theme_text: rgba( 255 , 255 , 255 , .8 );\n\t--mol_theme_control: hsla( 210 , 60% , 70% , 1 );\n\t--mol_theme_shade: rgba( 255 , 255 , 255 , .5 );\n\t--mol_theme_line: rgba( 50 , 50 , 50 , 1 );\n\t--mol_theme_focus: rgba( 204 , 68 , 50 , .75 );\n\t--mol_theme_field: black;\n}\n\n[mol_theme=\"$mol_theme_base\"] {\n\t--mol_theme_back: hsla( 210 , 60% , 35% , 1 );\n\t--mol_theme_hover: rgba( 0 , 0 , 0 , .05 );\n\t--mol_theme_current: hsl( 210 , 100% , 20% );\n\t--mol_theme_text: white;\n\t--mol_theme_line: white;\n\t--mol_theme_control: white;\n}\n\n[mol_theme=\"$mol_theme_accent\"] {\n\t--mol_theme_back: rgb(204, 68, 50);\n\t--mol_theme_hover: rgb(165, 56, 42);\n\t--mol_theme_text: white;\n\t--mol_theme_line: rgba( 50 , 50 , 50 , 1 );\n\t--mol_theme_control: white;\n}\n"); +})($ || ($ = {})); +//theme.css.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_style_attach("mol/skin/skin.css", ":root {\n\t--mol_skin_font: 1rem/1.5 \"-apple-system\", BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n\t--mol_skin_font_monospace: Monaco, monospace;\n}\n\n/* Deprecated, use mol_theme instead */\n:root {\n\n\t--mol_skin_outline: 0 0 0 1px var(--mol_theme_line);\n\t\n\t--mol_skin_base: #3a8ccb;\n\t--mol_skin_base_text: white;\n\t\n\t--mol_skin_current: var(--mol_skin_base);\n\t--mol_skin_current_text: white;\n\t--mol_skin_current_line: #1471b8;\n\t\n\t--mol_skin_button: var(--mol_skin_card);\n\t--mol_skin_hover: rgba( 0 , 0 , 0 , .05 );\n\t\n\t--mol_skin_round: 0px;\n\t\n\t--mol_skin_focus_line: rgba( 0 , 0 , 0 , .2 );\n\t--mol_skin_focus_outline: 0 0 0 1px var(--mol_skin_focus_line);\n\t\n\t--mol_skin_float: var(--mol_skin_focus_outline);\n\n\t--mol_skin_passive: #eee;\n\t--mol_skin_passive_text: rgba( 0 , 0 , 0 , .5 );\n\t\n\t--mol_skin_light: #fcfcfc;\n\t--mol_skin_light_line: rgba( 230 , 230 , 230 , .75 );\n\t--mol_skin_light_text: rgba( 0 , 0 , 0 , .9 );\n\t--mol_skin_light_hover: #f7f7f7;\n\t--mol_skin_light_outline: 0 0 0 1px var(--mol_theme_line);\n\n\t--mol_skin_card: var(--mol_theme_back);\n\t--mol_skin_card_text: var(--mol_theme_text);\n\t\n\t--mol_skin_accent: #dd0e3e;\n\t--mol_skin_accent_text: white;\n\t--mol_skin_accent_hover: #c50d37;\n\n\t--mol_skin_warn: rgba( 255 , 50 , 50 , 0.75 );\n\t--mol_skin_warn_text: white;\n\t--mol_skin_warn_hover: color( var(--mol_skin_warn) lightness(-5%) );\n\n\t--mol_skin_good: #96DAA9;\n\t--mol_skin_good_text: black;\n\n\t--mol_skin_bad: #CC5252;\n\t--mol_skin_bad_text: white;\n}\n"); +})($ || ($ = {})); +//skin.css.js.map +; +"use strict"; +var $; +(function ($_1) { + let $$; + (function ($$) { + let $; + })($$ = $_1.$$ || ($_1.$$ = {})); + $_1.$mol_object_field = Symbol('$mol_object_field'); + class $mol_object extends $_1.$mol_object2 { + static make(config) { + return super.create(obj => { + for (let key in config) + obj[key] = config[key]; + }); + } + } + $_1.$mol_object = $mol_object; +})($ || ($ = {})); +//object.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_wrapper extends $.$mol_object2 { + static run(task) { + return this.func(task)(); + } + static func(func) { + return this.wrap(func); + } + static get class() { + return (Class) => { + const construct = (target, args) => new Class(...args); + const handler = { + construct: this.func(construct) + }; + handler[Symbol.toStringTag] = Class.name + '#'; + return new Proxy(Class, handler); + }; + } + static get method() { + return (obj, name, descr) => { + descr.value = this.func(descr.value); + return descr; + }; + } + static get field() { + return (obj, name, descr) => { + descr.get = descr.set = this.func(descr.get); + return descr; + }; + } + } + $.$mol_wrapper = $mol_wrapper; +})($ || ($ = {})); +//wrapper.js.map +; +"use strict"; +var $; +(function ($) { + $['devtoolsFormatters'] = $['devtoolsFormatters'] || []; + function $mol_dev_format_register(config) { + $['devtoolsFormatters'].push(config); + } + $.$mol_dev_format_register = $mol_dev_format_register; + $.$mol_dev_format_head = Symbol('$mol_dev_format_head'); + $.$mol_dev_format_body = Symbol('$mol_dev_format_body'); + $mol_dev_format_register({ + header: (val, config = false) => { + if (config) + return null; + if (!val) + return null; + if ($.$mol_dev_format_head in val) { + return val[$.$mol_dev_format_head](); + } + return null; + }, + hasBody: val => val[$.$mol_dev_format_body], + body: val => val[$.$mol_dev_format_body](), + }); + function $mol_dev_format_native(obj) { + if (typeof obj === 'undefined') + return $.$mol_dev_format_shade('undefined'); + if (typeof obj !== 'object') + return obj; + return [ + 'object', + { + object: obj, + config: true, + }, + ]; + } + $.$mol_dev_format_native = $mol_dev_format_native; + function $mol_dev_format_auto(obj) { + if (obj == null) + return $.$mol_dev_format_shade(String(obj)); + if (typeof obj === 'object' && $.$mol_dev_format_head in obj) { + return obj[$.$mol_dev_format_head](); + } + return [ + 'object', + { + object: obj, + config: false, + }, + ]; + } + $.$mol_dev_format_auto = $mol_dev_format_auto; + function $mol_dev_format_element(element, style, ...content) { + const styles = []; + for (let key in style) + styles.push(`${key} : ${style[key]}`); + return [ + element, + { + style: styles.join(' ; '), + }, + ...content, + ]; + } + $.$mol_dev_format_element = $mol_dev_format_element; + function $mol_dev_format_span(style, ...content) { + return $mol_dev_format_element('span', Object.assign({ 'vertical-align': '8%' }, style), ...content); + } + $.$mol_dev_format_span = $mol_dev_format_span; + $.$mol_dev_format_div = $mol_dev_format_element.bind(null, 'div'); + $.$mol_dev_format_ol = $mol_dev_format_element.bind(null, 'ol'); + $.$mol_dev_format_li = $mol_dev_format_element.bind(null, 'li'); + $.$mol_dev_format_table = $mol_dev_format_element.bind(null, 'table'); + $.$mol_dev_format_tr = $mol_dev_format_element.bind(null, 'tr'); + $.$mol_dev_format_td = $mol_dev_format_element.bind(null, 'td'); + $.$mol_dev_format_accent = $mol_dev_format_span.bind(null, { + 'color': 'magenta', + }); + $.$mol_dev_format_strong = $mol_dev_format_span.bind(null, { + 'font-weight': 'bold', + }); + $.$mol_dev_format_string = $mol_dev_format_span.bind(null, { + 'color': 'green', + }); + $.$mol_dev_format_shade = $mol_dev_format_span.bind(null, { + 'color': 'gray', + }); + $.$mol_dev_format_indent = $.$mol_dev_format_div.bind(null, { + 'margin-left': '13px' + }); +})($ || ($ = {})); +//format.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_maybe(value) { + return (value == null) ? [] : [value]; + } + $.$mol_maybe = $mol_maybe; +})($ || ($ = {})); +//maybe.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_log(path, ...values) { + if ($.$mol_log_filter() == null) + return; + path = String(path); + if (path.indexOf($.$mol_log_filter()) === -1) + return; + const context = $.$mol_log_context(); + if (context) + context(); + console.debug(path, ...values); + if ($.$mol_log_debug() == null) + return; + if (path.indexOf($.$mol_log_debug()) === -1) + return; + debugger; + } + $.$mol_log = $mol_log; +})($ || ($ = {})); +//log.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_log_group(name, task) { + const filter = $.$mol_log_filter(); + if (filter == null) + return task; + return function $mol_log_group_wrapper(...args) { + let started = false; + let prev = $.$mol_log_context(); + $.$mol_log_context(() => { + if (prev) + prev(); + started = true; + if (filter || prev) + console.group(name); + else + console.groupCollapsed(name); + $.$mol_log_context(prev = null); + }); + try { + return task.apply(this, args); + } + finally { + if (started) + console.groupEnd(); + $.$mol_log_context(prev); + } + }; + } + $.$mol_log_group = $mol_log_group; +})($ || ($ = {})); +//log_group.js.map +; +"use strict"; +var $; +(function ($) { + let context = null; + function $mol_log_context(next = context) { + return context = next; + } + $.$mol_log_context = $mol_log_context; +})($ || ($ = {})); +//log_context.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_log_debug(next) { + if (next !== undefined) { + if (next == null) { + sessionStorage.removeItem('$mol_log_debug()'); + } + else { + sessionStorage.setItem('$mol_log_debug()', next); + } + } + return sessionStorage.getItem('$mol_log_debug()'); + } + $.$mol_log_debug = $mol_log_debug; +})($ || ($ = {})); +//log_debug.web.js.map +; +"use strict"; +var $; +(function ($) { + let filter = undefined; + $.$mol_log_filter = function $mol_log_filter(next) { + if (next !== undefined) { + if (next == null) { + sessionStorage.removeItem('$mol_log_filter()'); + } + else { + sessionStorage.setItem('$mol_log_filter()', next); + } + filter = next; + } + if (filter !== undefined) + return filter; + return filter = sessionStorage.getItem('$mol_log_filter()'); + }; + if (typeof sessionStorage === 'undefined') + $.$mol_log_filter = (next = null) => filter = next; + if ($.$mol_log_filter() == null) + console.info('Use $mol_log_filter( needle : string|null ) to toggle logs'); +})($ || ($ = {})); +//log_filter.web.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_log2 extends $.$mol_wrapper { + constructor(host, id, args) { + super(); + this.host = host; + this.id = id; + this.args = args; + this.stream = []; + this[Symbol.toStringTag] = host ? `${host}.${id}` : id; + } + static wrap(task) { + const Inner = this; + const wrapped = function (...args) { + const outer = $mol_log2.current; + const inner = $mol_log2.current = new Inner(this, task.name, args); + try { + return task.call(this, ...args); + } + finally { + $mol_log2.current = outer; + inner.flush(); + } + }; + return wrapped; + } + flush() { + if (this.stream.length === 0) + return; + console.debug(this); + } + info(...values) { + this.stream.push(new $mol_log2_line(...$mol_log2.prefix, ...values)); + } + [$.$mol_dev_format_head]() { + return $.$mol_dev_format_span({}, ...$.$mol_maybe(this.host).map($.$mol_dev_format_auto), '.', $.$mol_dev_format_strong(this.id), '(', ...this.args.map($.$mol_dev_format_auto), ') ', $.$mol_dev_format_auto(this.stream)); + } + static info(...values) { + const excludes = $mol_log2.excludes; + if (!excludes) + return; + const skip = excludes.some((regexp, index) => { + return regexp && regexp.test(String(values[index])) || false; + }); + if (skip) + return; + if (!$mol_log2.current) { + console.warn(new Error(`$mol_log.current is not defined. Wrap entry point to $mol_log!`)); + $mol_log2.current = new $mol_log2(null, '$mol_log2_default', []); + console.debug($mol_log2.current); + } + $mol_log2.current.info(...values); + } + } + $mol_log2.current = null; + $mol_log2.excludes = null; + $mol_log2.prefix = []; + $.$mol_log2 = $mol_log2; + class $mol_log2_indent extends $.$mol_wrapper { + static wrap(task) { + const Inner = this; + const wrapped = function (...args) { + try { + $mol_log2.prefix.push($.$mol_log2_token_indent); + return task.call(this, ...args); + } + finally { + $mol_log2.prefix.pop(); + } + }; + return wrapped; + } + } + $.$mol_log2_indent = $mol_log2_indent; + class $mol_log2_table extends $mol_log2 { + [$.$mol_dev_format_head]() { + return $.$mol_dev_format_span({}, $.$mol_dev_format_strong(`${this}(`), ...this.args.map($.$mol_dev_format_auto), $.$mol_dev_format_strong(`) `)); + } + [$.$mol_dev_format_body]() { + return $.$mol_dev_format_table({}, ...this.stream.map($.$mol_dev_format_auto)); + } + } + $.$mol_log2_table = $mol_log2_table; + class $mol_log2_hidden extends $mol_log2 { + flush() { } + } + $.$mol_log2_hidden = $mol_log2_hidden; + class $mol_log2_line extends Array { + constructor(...items) { + super(...items); + } + [$.$mol_dev_format_head]() { + return $.$mol_dev_format_tr({}, ...this.map(item => $.$mol_dev_format_td({}, $.$mol_dev_format_auto(item)))); + } + } + $.$mol_log2_line = $mol_log2_line; + class $mol_log2_token extends Array { + constructor(...items) { + super(...items); + } + [$.$mol_dev_format_head]() { + return $.$mol_dev_format_accent(...this); + } + } + $.$mol_log2_token = $mol_log2_token; + $.$mol_log2_token_empty = new $mol_log2_token(''); + $.$mol_log2_token_indent = new $mol_log2_token('\t'); + $.$mol_log2_legend = new $mol_log2_table(null, '$mol_log2_legend', []); + if (!$mol_log2.excludes) + $.$mol_log2_legend.info($.$mol_log2_token_empty, 'Use `$mol_log2.excludes : null | RegExp[]` to toggle logs'); +})($ || ($ = {})); +//log2.js.map +; +"use strict"; +var $; +(function ($) { + console.debug($.$mol_log2_legend); +})($ || ($ = {})); +//log2.web.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_after_frame extends $.$mol_object2 { + constructor(task) { + super(); + this.task = task; + this.id = requestAnimationFrame(task); + } + destructor() { + cancelAnimationFrame(this.id); + } + } + $.$mol_after_frame = $mol_after_frame; +})($ || ($ = {})); +//frame.web.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_compare_any(a, b) { + if (a === b) + return true; + if (!Number.isNaN(a)) + return false; + if (!Number.isNaN(b)) + return false; + return true; + } + $.$mol_compare_any = $mol_compare_any; +})($ || ($ = {})); +//any.js.map +; +"use strict"; +var $; +(function ($) { + const cache = new WeakMap(); + $.$mol_conform_stack = []; + function $mol_conform(target, source) { + if ($.$mol_compare_any(target, source)) + return source; + if (!target || typeof target !== 'object') + return target; + if (!source || typeof source !== 'object') + return target; + if (target instanceof Error) + return target; + if (source instanceof Error) + return target; + if (target['constructor'] !== source['constructor']) + return target; + if (cache.get(target)) + return target; + cache.set(target, true); + const conform = $.$mol_conform_handlers.get(target['constructor']); + if (!conform) + return target; + if ($.$mol_conform_stack.indexOf(target) !== -1) + return target; + $.$mol_conform_stack.push(target); + try { + return conform(target, source); + } + finally { + $.$mol_conform_stack.pop(); + } + } + $.$mol_conform = $mol_conform; + $.$mol_conform_handlers = new WeakMap(); + function $mol_conform_handler(cl, handler) { + $.$mol_conform_handlers.set(cl, handler); + } + $.$mol_conform_handler = $mol_conform_handler; + function $mol_conform_array(target, source) { + if (source.length !== target.length) + return target; + for (let i = 0; i < target.length; ++i) { + if (!$.$mol_compare_any(source[i], target[i])) + return target; + } + return source; + } + $mol_conform_handler(Array, $mol_conform_array); + $mol_conform_handler(Uint8Array, $mol_conform_array); + $mol_conform_handler(Uint16Array, $mol_conform_array); + $mol_conform_handler(Uint32Array, $mol_conform_array); + $mol_conform_handler(Object, (target, source) => { + let count = 0; + let equal = true; + for (let key in target) { + const conformed = $mol_conform(target[key], source[key]); + if (conformed !== target[key]) { + try { + target[key] = conformed; + } + catch (error) { } + if (!$.$mol_compare_any(conformed, target[key])) + equal = false; + } + if (!$.$mol_compare_any(conformed, source[key])) + equal = false; + ++count; + } + for (let key in source) + if (--count < 0) + break; + return (equal && count === 0) ? source : target; + }); + $mol_conform_handler(Date, (target, source) => { + if (target.getTime() === source.getTime()) + return source; + return target; + }); + $mol_conform_handler(RegExp, (target, source) => { + if (target.toString() === source.toString()) + return source; + return target; + }); +})($ || ($ = {})); +//conform.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_array_trim(array) { + let last = array.length; + while (last > 0) { + --last; + const value = array[last]; + if (value === undefined) + array.pop(); + else + break; + } + return array; + } + $.$mol_array_trim = $mol_array_trim; +})($ || ($ = {})); +//trim.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_fiber_defer(calculate) { + const fiber = new $mol_fiber; + fiber.calculate = calculate; + fiber[Symbol.toStringTag] = calculate.name; + fiber.schedule(); + return fiber; + } + $.$mol_fiber_defer = $mol_fiber_defer; + function $mol_fiber_func(calculate) { + console.warn('$mol_fiber_func is deprecated. Use $mol_fiber.func instead.'); + return $mol_fiber.func(calculate); + } + $.$mol_fiber_func = $mol_fiber_func; + function $mol_fiber_root(calculate) { + const wrapper = function (...args) { + const fiber = new $mol_fiber(); + fiber.calculate = calculate.bind(this, ...args); + return fiber.wake(); + }; + wrapper[Symbol.toStringTag] = calculate.name; + return wrapper; + } + $.$mol_fiber_root = $mol_fiber_root; + function $mol_fiber_method(obj, name, descr) { + console.warn('$mol_fiber_method is deprecated. Use $mol_fiber.method instead.'); + return $mol_fiber.method(obj, name, descr); + } + $.$mol_fiber_method = $mol_fiber_method; + function $mol_fiber_async(task) { + return (...args) => new Promise($mol_fiber_root((done, fail) => { + try { + done(task(...args)); + } + catch (error) { + if ('then' in error) + return $.$mol_fail_hidden(error); + fail(error); + } + })); + } + $.$mol_fiber_async = $mol_fiber_async; + function $mol_fiber_sync(request) { + return function $mol_fiber_sync_wrapper(...args) { + const slave = $mol_fiber.current; + let master = slave && slave.master; + if (!master || master.constructor !== $mol_fiber) { + master = new $mol_fiber; + master.cursor = -3; + master.error = request.call(this, ...args).then($.$mol_log2.func(master.push).bind(master), $.$mol_log2.func(master.fail).bind(master)); + const prefix = slave ? `${slave}/${slave.cursor / 2}:` : '/'; + master[Symbol.toStringTag] = prefix + (request.name || $mol_fiber_sync.name); + } + return master.get(); + }; + } + $.$mol_fiber_sync = $mol_fiber_sync; + async function $mol_fiber_warp() { + const deadline = $mol_fiber.deadline; + try { + $mol_fiber.deadline = Number.POSITIVE_INFINITY; + while ($mol_fiber.queue.length) + await $mol_fiber.tick(); + return Promise.resolve(); + } + finally { + $mol_fiber.deadline = deadline; + } + } + $.$mol_fiber_warp = $mol_fiber_warp; + function $mol_fiber_fence(func) { + const prev = $mol_fiber.current; + try { + $mol_fiber.current = null; + return func(); + } + finally { + $mol_fiber.current = prev; + } + } + $.$mol_fiber_fence = $mol_fiber_fence; + function $mol_fiber_unlimit(task) { + const deadline = $mol_fiber.deadline; + try { + $mol_fiber.deadline = Number.POSITIVE_INFINITY; + return task(); + } + finally { + $mol_fiber.deadline = deadline; + } + } + $.$mol_fiber_unlimit = $mol_fiber_unlimit; + class $mol_fiber_solid extends $.$mol_wrapper { + static func(task) { + function wrapped(...args) { + const deadline = $mol_fiber.deadline; + try { + $mol_fiber.deadline = Number.POSITIVE_INFINITY; + return task.call(this, ...args); + } + catch (error) { + if ('then' in error) + $.$mol_fail(new Error('Solid fiber can not be suspended.')); + return $.$mol_fail_hidden(error); + } + finally { + $mol_fiber.deadline = deadline; + } + } + return $mol_fiber.func(wrapped); + } + } + $.$mol_fiber_solid = $mol_fiber_solid; + class $mol_fiber extends $.$mol_wrapper { + constructor() { + super(...arguments); + this.value = undefined; + this.error = null; + this.cursor = 0; + this.masters = []; + } + static wrap(task) { + return function $mol_fiber_wrapper(...args) { + const slave = $mol_fiber.current; + let master = slave && slave.master; + if (!master || master.constructor !== $mol_fiber) { + master = new $mol_fiber; + master.calculate = task.bind(this, ...args); + const prefix = slave ? `${slave}/${slave.cursor / 2}:` : '/'; + master[Symbol.toStringTag] = `${prefix}${task.name}`; + } + return master.get(); + }; + } + static async tick() { + while ($mol_fiber.queue.length > 0) { + const now = Date.now(); + if (now >= $mol_fiber.deadline) { + $mol_fiber.schedule(); + $mol_fiber.liveline = now; + return; + } + const task = $mol_fiber.queue.shift(); + await task(); + } + } + static schedule() { + if (!$mol_fiber.scheduled) { + $mol_fiber.scheduled = new $.$mol_after_frame(async () => { + const now = Date.now(); + let quant = $mol_fiber.quant; + if ($mol_fiber.liveline) { + quant = Math.max(quant, Math.floor((now - $mol_fiber.liveline) / 2)); + $mol_fiber.liveline = 0; + } + $mol_fiber.deadline = now + quant; + $mol_fiber.scheduled = null; + await $mol_fiber.tick(); + }); + } + const promise = new this.$.Promise(done => this.queue.push(() => (done(), promise))); + return promise; + } + schedule() { + $mol_fiber.schedule().then(() => this.wake()); + } + wake() { + try { + if (this.cursor > -2) + return this.get(); + } + catch (error) { + if ('then' in error) + return; + $.$mol_fail_hidden(error); + } + } + push(value) { + value = this.$.$mol_conform(value, this.value); + if (this.error || !Object.is(this.value, value)) { + this.$.$mol_log2.info(this, $.$mol_fiber_token_changed1, value, $.$mol_fiber_token_changed2, this.error || this.value); + this.obsolete_slaves(); + this.forget(); + } + else { + this.$.$mol_log2.info(this, $.$mol_fiber_token_actualized, value); + } + this.error = null; + this.value = value; + this.complete(); + return value; + } + fail(error) { + this.complete(); + this.$.$mol_log2.info(this, $.$mol_fiber_token_failed, error); + this.error = error; + this.obsolete_slaves(); + return error; + } + wait(promise) { + this.error = promise; + this.$.$mol_log2.info(this, $.$mol_fiber_token_sleeped, promise); + this.cursor = 0; + return promise; + } + complete() { + if (this.cursor <= -2) + return; + for (let index = 0; index < this.masters.length; index += 2) { + this.complete_master(index); + } + this.cursor = -2; + } + complete_master(master_index) { + this.disobey(master_index); + } + pull() { + this.push(this.calculate()); + } + update() { + const slave = $mol_fiber.current; + try { + $mol_fiber.current = this; + this.$.$mol_log2.info(this, $.$mol_fiber_token_runned); + this.pull(); + } + catch (error) { + if ('then' in error) { + if (!slave) { + const listener = () => this.wake(); + error = error.then(listener, listener); + } + this.wait(error); + } + else { + this.fail(error); + } + } + finally { + $mol_fiber.current = slave; + } + } + get() { + if (this.cursor > 0) { + this.$.$mol_fail(new Error(`Cyclic dependency at ${this}`)); + } + const slave = $mol_fiber.current; + if (slave) + slave.master = this; + if (this.cursor > -2) + this.update(); + if (this.error) + return this.$.$mol_fail_hidden(this.error); + return this.value; + } + limit() { + if (!$mol_fiber.deadline) + return; + if (!$mol_fiber.current) + return; + if (Date.now() < $mol_fiber.deadline) + return; + this.$.$mol_fail_hidden($mol_fiber.schedule()); + } + get master() { + return this.masters[this.cursor]; + } + set master(next) { + if (this.cursor === -1) + return; + const cursor = this.cursor; + const prev = this.masters[this.cursor]; + if (prev !== next) { + if (prev) + this.rescue(prev, cursor); + this.masters[cursor] = next; + this.masters[cursor + 1] = this.obey(next, cursor); + } + this.cursor = cursor + 2; + } + rescue(master, master_index) { } + obey(master, master_index) { return -1; } + lead(slave, master_index) { return -1; } + dislead(slave_index) { + this.destructor(); + } + disobey(master_index) { + const master = this.masters[master_index]; + if (!master) + return; + master.dislead(this.masters[master_index + 1]); + this.masters[master_index] = undefined; + this.masters[master_index + 1] = undefined; + this.$.$mol_array_trim(this.masters); + } + obsolete_slaves() { } + obsolete(master_index) { } + forget() { + this.value = undefined; + } + abort() { + this.forget(); + return true; + } + destructor() { + if (!this.abort()) + return; + this.$.$mol_log2.info(this, $.$mol_fiber_token_destructed); + this.complete(); + } + [$.$mol_dev_format_head]() { + return $.$mol_dev_format_native(this); + } + } + $mol_fiber.quant = 16; + $mol_fiber.deadline = 0; + $mol_fiber.liveline = 0; + $mol_fiber.current = null; + $mol_fiber.scheduled = null; + $mol_fiber.queue = []; + __decorate([ + $.$mol_log2.method + ], $mol_fiber.prototype, "wake", null); + __decorate([ + $.$mol_log2_indent.method + ], $mol_fiber.prototype, "update", null); + $.$mol_fiber = $mol_fiber; + $.$mol_fiber_token_runned = new $.$mol_log2_token(' ► '); + $.$mol_fiber_token_changed1 = new $.$mol_log2_token(' ˸ '); + $.$mol_fiber_token_changed2 = new $.$mol_log2_token(' 🠈 '); + $.$mol_fiber_token_actualized = new $.$mol_log2_token(' ✓ '); + $.$mol_fiber_token_sleeped = new $.$mol_log2_token(' 💤 '); + $.$mol_fiber_token_failed = new $.$mol_log2_token(' 🔥 '); + $.$mol_fiber_token_destructed = new $.$mol_log2_token(' 🕱 '); + $.$mol_log2_legend.info($.$mol_fiber_token_runned, '$mol_fiber starts execution'); + $.$mol_log2_legend.info(new $.$mol_log2_line($.$mol_fiber_token_changed1, $.$mol_fiber_token_changed2), '$mol_fiber value is changed to different value'); + $.$mol_log2_legend.info($.$mol_fiber_token_actualized, 'Actual $mol_fiber value is same as before'); + $.$mol_log2_legend.info($.$mol_fiber_token_sleeped, '$mol_fiber can not run now and awaits on promise'); + $.$mol_log2_legend.info($.$mol_fiber_token_failed, '$mol_fiber is failed and will be throw an Error or Promise'); + $.$mol_log2_legend.info($.$mol_fiber_token_destructed, '$mol_fiber fully destructed'); +})($ || ($ = {})); +//fiber.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_atom2_value(task) { + const cached = $mol_atom2.cached; + try { + $mol_atom2.cached = true; + return task(); + } + finally { + $mol_atom2.cached = cached; + } + } + $.$mol_atom2_value = $mol_atom2_value; + class $mol_atom2 extends $.$mol_fiber { + constructor() { + super(...arguments); + this.slaves = []; + this._value = undefined; + this._error = null; + } + static get current() { + const atom = $.$mol_fiber.current; + if (atom instanceof $mol_atom2) + return atom; + return null; + } + static reap(atom) { + this.reap_queue.push(atom); + if (this.reap_task) + return; + this.reap_task = $.$mol_fiber_defer(() => { + this.reap_task = null; + while (true) { + const atom = this.reap_queue.pop(); + if (!atom) + break; + if (!atom.alone) + continue; + atom.destructor(); + } + }); + } + rescue(master, cursor) { + if (!(master instanceof $mol_atom2)) + return; + const master_index = this.masters.length; + const slave_index = this.masters[cursor + 1] + 1; + master.slaves[slave_index] = master_index; + this.masters.push(master, this.masters[cursor + 1]); + } + get() { + if ($mol_atom2.cached) + return this.value; + const value = super.get(); + if (value === undefined) + $.$mol_fail(new Error(`Not defined: ${this}`)); + return value; + } + pull() { + if (this.cursor === 0) + return super.pull(); + this.$.$mol_log2.info(this, $.$mol_atom2_token_revalidation); + const masters = this.masters; + for (let index = 0; index < masters.length; index += 2) { + const master = masters[index]; + if (!master) + continue; + try { + master.get(); + } + catch (error) { + if ('then' in error) + $.$mol_fail_hidden(error); + this.cursor = 0; + } + if (this.cursor !== 0) + continue; + this.$.$mol_log2.info(this, $.$mol_atom2_token_stumbled, this._error || this._value); + return super.pull(); + } + this.$.$mol_log2.info(this, $.$mol_atom2_token_revalidated, this._error || this._value); + this.cursor = -2; + } + get value() { return this._value; } + set value(next) { + const prev = this._value; + if (prev && this.$.$mol_owning_check(this, prev)) + prev.destructor(); + if (next && this.$.$mol_owning_catch(this, next)) { + next[Symbol.toStringTag] = this[Symbol.toStringTag]; + next[$.$mol_object_field] = this[$.$mol_object_field]; + } + this._value = next; + } + get error() { return this._error; } + set error(next) { + const prev = this._error; + if (prev && this.$.$mol_owning_check(this, prev)) + prev.destructor(); + if (next && this.$.$mol_owning_catch(this, next)) { + next[Symbol.toStringTag] = this[Symbol.toStringTag]; + next[$.$mol_object_field] = this[$.$mol_object_field]; + } + this._error = next; + } + put(next) { + this.cursor = this.masters.length; + next = this.push(next); + this.cursor = -3; + return next; + } + complete_master(master_index) { + if (this.masters[master_index] instanceof $mol_atom2) { + if (master_index >= this.cursor) + this.disobey(master_index); + } + else { + this.disobey(master_index); + } + } + obey(master, master_index) { + return master.lead(this, master_index); + } + lead(slave, master_index) { + this.$.$mol_log2.info(this, $.$mol_atom2_token_leaded, slave); + const slave_index = this.slaves.length; + this.slaves[slave_index] = slave; + this.slaves[slave_index + 1] = master_index; + return slave_index; + } + dislead(slave_index) { + if (slave_index < 0) + return; + this.$.$mol_log2.info(this, $.$mol_atom2_token_disleaded, this.slaves[slave_index]); + this.slaves[slave_index] = undefined; + this.slaves[slave_index + 1] = undefined; + $.$mol_array_trim(this.slaves); + if (this.cursor > -3 && this.alone) + $mol_atom2.reap(this); + } + obsolete(master_index = -1) { + if (this.cursor > 0) { + if (master_index >= this.cursor - 2) + return; + const path = []; + let current = this; + collect: while (current) { + path.push(current); + current = current.masters[current.cursor - 2]; + } + this.$.$mol_fail(new Error(`Obsoleted while calculation \n\n${path.join('\n')}\n`)); + } + if (this.cursor === 0) + return; + this.$.$mol_log2.info(this, $.$mol_atom2_token_obsoleted, this._error || this._value); + if (this.cursor !== -1) + this.doubt_slaves(); + this.cursor = 0; + } + doubt(master_index = -1) { + if (this.cursor > 0) { + if (master_index >= this.cursor - 2) + return; + const path = []; + let current = this; + collect: while (current) { + path.push(current); + current = current.masters[current.cursor - 2]; + } + this.$.$mol_fail(new Error(`Doubted while calculation \n\n${path.join('\n')}\n`)); + } + if (this.cursor >= -1) + return; + this.$.$mol_log2.info(this, $.$mol_atom2_token_doubted, this._error || this._value); + this.cursor = -1; + this.doubt_slaves(); + } + obsolete_slaves() { + for (let index = 0; index < this.slaves.length; index += 2) { + const slave = this.slaves[index]; + if (slave) + slave.obsolete(this.slaves[index + 1]); + } + } + doubt_slaves() { + for (let index = 0; index < this.slaves.length; index += 2) { + const slave = this.slaves[index]; + if (slave) + slave.doubt(this.slaves[index + 1]); + } + } + get fresh() { + return $.$mol_log2_hidden.func(() => { + if (this.cursor !== -2) + return; + this.cursor = 0; + $.$mol_fiber_solid.run(() => this.update()); + }); + } + get alone() { + return this.slaves.length === 0; + } + get derived() { + for (let index = 0; index < this.masters.length; index += 2) { + if (this.masters[index]) + return true; + } + return false; + } + destructor() { + if (!this.abort()) + return; + this.$.$mol_log2.info(this, $.$mol_fiber_token_destructed); + this.cursor = -3; + for (let index = 0; index < this.masters.length; index += 2) { + this.complete_master(index); + } + } + } + $mol_atom2.cached = false; + $mol_atom2.reap_task = null; + $mol_atom2.reap_queue = []; + __decorate([ + $.$mol_log2_indent.method + ], $mol_atom2.prototype, "obsolete_slaves", null); + __decorate([ + $.$mol_log2_indent.method + ], $mol_atom2.prototype, "doubt_slaves", null); + $.$mol_atom2 = $mol_atom2; + $.$mol_atom2_token_revalidation = new $.$mol_log2_token(' ⏭ '); + $.$mol_atom2_token_stumbled = new $.$mol_log2_token(' ⏯ '); + $.$mol_atom2_token_revalidated = new $.$mol_log2_token(' ✔ '); + $.$mol_atom2_token_leaded = new $.$mol_log2_token(' ☍ '); + $.$mol_atom2_token_disleaded = new $.$mol_log2_token(' ☌ '); + $.$mol_atom2_token_obsoleted = new $.$mol_log2_token(' ✘ '); + $.$mol_atom2_token_doubted = new $.$mol_log2_token(' � '); + $.$mol_log2_legend.info($.$mol_atom2_token_revalidation, '$mol_atom2 starts masters cheking for changes'); + $.$mol_log2_legend.info($.$mol_atom2_token_stumbled, '$mol_atom2 is obsoleted while masters checking'); + $.$mol_log2_legend.info($.$mol_atom2_token_revalidated, '$mol_atom2 is actual becasue there is no changed masters'); + $.$mol_log2_legend.info($.$mol_atom2_token_leaded, '$mol_atom2 leads some slave'); + $.$mol_log2_legend.info($.$mol_atom2_token_disleaded, '$mol_atom2 disleads some slave'); + $.$mol_log2_legend.info($.$mol_atom2_token_obsoleted, '$mol_atom2 is obsoleted because some master is changed'); + $.$mol_log2_legend.info($.$mol_atom2_token_doubted, '$mol_atom2 is doubted because some master is doubted or obsoleted'); +})($ || ($ = {})); +//atom2.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_mem_force extends Object { + constructor() { + super(); + this.$mol_mem_force = true; + } + static toString() { return this.name; } + } + $mol_mem_force.$mol_mem_force = true; + $.$mol_mem_force = $mol_mem_force; + class $mol_mem_force_cache extends $mol_mem_force { + } + $.$mol_mem_force_cache = $mol_mem_force_cache; + class $mol_mem_force_update extends $mol_mem_force { + } + $.$mol_mem_force_update = $mol_mem_force_update; + class $mol_mem_force_fail extends $mol_mem_force_cache { + } + $.$mol_mem_force_fail = $mol_mem_force_fail; +})($ || ($ = {})); +//force.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_mem_cached = $.$mol_atom2_value; + function $mol_mem_persist() { + const atom = $.$mol_atom2.current; + if (!atom) + return; + if (atom.hasOwnProperty('destructor')) + return; + atom.destructor = () => { }; + } + $.$mol_mem_persist = $mol_mem_persist; + function $mol_mem(proto, name, descr) { + const value = descr.value; + const store = new WeakMap(); + Object.defineProperty(proto, name + "()", { + get: function () { + return store.get(this); + } + }); + const get_cache = (host) => { + let cache = store.get(host); + if (cache) + return cache; + let cache2 = new $.$mol_atom2; + cache2.calculate = value.bind(host); + cache2[Symbol.toStringTag] = `${host}.${name}()`; + cache2.abort = () => { + store.delete(host); + cache2.forget(); + return true; + }; + $.$mol_owning_catch(host, cache2); + cache2[$.$mol_object_field] = name; + store.set(host, cache2); + return cache2; + }; + return Object.assign(Object.assign({}, descr || {}), { value(next, force) { + if (next === undefined) { + const cache = get_cache(this); + if (force === $.$mol_mem_force_cache) + cache.obsolete(Number.NaN); + if ($.$mol_atom2.current) + return cache.get(); + else + return $.$mol_fiber.run(() => cache.get()); + } + return $.$mol_fiber.run(() => { + if (force === $.$mol_mem_force_fail) + return get_cache(this).fail(next); + if (force !== $.$mol_mem_force_cache) + next = value.call(this, next); + return get_cache(this).put(next); + }); + } }); + } + $.$mol_mem = $mol_mem; +})($ || ($ = {})); +//mem.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_window extends $.$mol_object { + static size(next, force) { + return next || { + width: self.innerWidth, + height: self.innerHeight, + }; + } + } + __decorate([ + $.$mol_mem + ], $mol_window, "size", null); + $.$mol_window = $mol_window; + self.addEventListener('resize', $.$mol_fiber_root($.$mol_log_group(`$mol_window resize`, () => { + $mol_window.size(undefined, $.$mol_mem_force_cache); + }))); +})($ || ($ = {})); +//window.web.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_dict_key(value) { + if (!value) + return value; + if (typeof value !== 'object') + return value; + if (Array.isArray(value)) + return value.join(' , '); + if (Object.getPrototypeOf(Object.getPrototypeOf(value)) === null) + return JSON.stringify(value); + return value; + } + $.$mol_dict_key = $mol_dict_key; + class $mol_dict extends Map { + get(key) { + return super.get($mol_dict_key(key)); + } + has(key) { + return super.has($mol_dict_key(key)); + } + set(key, value) { + return super.set($mol_dict_key(key), value); + } + delete(key) { + return super.delete($mol_dict_key(key)); + } + forEach(back, context) { + return super.forEach((val, key, dict) => { + if (typeof key === 'string') + key = JSON.parse(key); + return back.call(this, val, key, dict); + }, context); + } + [Symbol.iterator]() { + const iterator = super[Symbol.iterator](); + return { + [Symbol.iterator]() { + return this; + }, + next() { + const iteration = iterator.next(); + if (!iteration.done) { + const key = iteration.value[0]; + if (typeof key === 'string') + iteration.value[0] = JSON.parse(key); + } + return iteration; + } + }; + } + } + $.$mol_dict = $mol_dict; +})($ || ($ = {})); +//dict.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_mem_key(proto, name, descr) { + const value = descr.value; + const store = new WeakMap(); + Object.defineProperty(proto, name + "()", { + get: function () { + return store.get(this); + } + }); + const get_cache = (host, key) => { + let dict = store.get(host); + if (!dict) + store.set(host, dict = new $.$mol_dict); + let cache = dict.get(key); + if (cache) + return cache; + let cache2 = new $.$mol_atom2; + cache2[Symbol.toStringTag] = `${host}.${name}(${JSON.stringify(key)})`; + cache2.calculate = value.bind(host, key); + cache2.abort = () => { + dict.delete(key); + if (dict.size === 0) + store.delete(host); + cache2.forget(); + return true; + }; + $.$mol_owning_catch(host, cache2); + cache2[$.$mol_object_field] = name; + dict.set(key, cache2); + return cache2; + }; + return { + value(key, next, force) { + if (next === undefined) { + const cache = get_cache(this, key); + if (force === $.$mol_mem_force_cache) + cache.obsolete(); + if ($.$mol_atom2.current) + return cache.get(); + else + return $.$mol_fiber.run(() => cache.get()); + } + return $.$mol_fiber.run(() => { + if (force === $.$mol_mem_force_fail) + return get_cache(this, key).fail(next); + if (force !== $.$mol_mem_force_cache) + next = value.call(this, key, next); + return get_cache(this, key).put(next); + }); + } + }; + } + $.$mol_mem_key = $mol_mem_key; +})($ || ($ = {})); +//key.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_atom2_autorun(calculate) { + return $.$mol_atom2.create(atom => { + atom.calculate = calculate; + atom.obsolete_slaves = atom.schedule; + atom.doubt_slaves = atom.schedule; + atom[Symbol.toStringTag] = calculate[Symbol.toStringTag] || calculate.name || '$mol_atom2_autorun'; + atom.schedule(); + }); + } + $.$mol_atom2_autorun = $mol_atom2_autorun; +})($ || ($ = {})); +//autorun.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_defer extends $.$mol_object { + constructor(run) { + super(); + this.run = run; + $mol_defer.add(this); + } + destructor() { + $mol_defer.drop(this); + } + static schedule() { + if (this.timer) + return; + this.timer = this.scheduleNative(() => { + this.timer = null; + this.run(); + }); + } + static unschedule() { + if (!this.timer) + return; + cancelAnimationFrame(this.timer); + this.timer = null; + } + static add(defer) { + this.all.push(defer); + this.schedule(); + } + static drop(defer) { + var index = this.all.indexOf(defer); + if (index >= 0) + this.all.splice(index, 1); + } + static run() { + if (this.all.length === 0) + return; + this.schedule(); + for (var defer; defer = this.all.shift();) + defer.run(); + } + } + $mol_defer.all = []; + $mol_defer.timer = null; + $mol_defer.scheduleNative = (typeof requestAnimationFrame == 'function') + ? handler => requestAnimationFrame(handler) + : handler => setTimeout(handler, 16); + $.$mol_defer = $mol_defer; +})($ || ($ = {})); +//defer.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_after_timeout extends $.$mol_object2 { + constructor(delay, task) { + super(); + this.delay = delay; + this.task = task; + this.id = setTimeout(task, delay); + } + destructor() { + clearTimeout(this.id); + } + } + $.$mol_after_timeout = $mol_after_timeout; +})($ || ($ = {})); +//timeout.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_view_selection extends $.$mol_object { + static focused(next) { + if (next === undefined) + return []; + const parents = []; + let element = next[0]; + while (element) { + parents.push(element); + element = element.parentNode; + } + new $.$mol_defer($.$mol_log2.func(() => { + const element = $.$mol_mem_cached(() => this.focused())[0]; + if (element) + element.focus(); + else + $.$mol_dom_context.blur(); + })); + return parents; + } + static focus(event) { + this.focused([event.target]); + } + static blur(event) { + const element = $.$mol_mem_cached(() => this.focused())[0]; + if (element === event.target) + this.focused([]); + } + } + __decorate([ + $.$mol_mem + ], $mol_view_selection, "focused", null); + __decorate([ + $.$mol_log2.method + ], $mol_view_selection, "focus", null); + __decorate([ + $.$mol_log2.method + ], $mol_view_selection, "blur", null); + $.$mol_view_selection = $mol_view_selection; +})($ || ($ = {})); +//selection.js.map +; +"use strict"; +var $; +(function ($) { + if ($.$mol_dom_context.document) { + $.$mol_dom_context.document.addEventListener('focus', (event) => { + new $.$mol_after_tick($.$mol_fiber_root(() => $.$mol_view_selection.focus(event))); + }, true); + $.$mol_dom_context.document.addEventListener('blur', (event) => { + new $.$mol_after_timeout(0, $.$mol_fiber_root(() => $.$mol_view_selection.blur(event))); + }, true); + } +})($ || ($ = {})); +//selection.web.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_const(value) { + var getter = (() => value); + getter['()'] = value; + getter[Symbol.toStringTag] = value; + return getter; + } + $.$mol_const = $mol_const; +})($ || ($ = {})); +//const.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_dom_render_attributes(el, attrs) { + for (let name in attrs) { + let val = attrs[name]; + if (val === null || val === false) { + if (!el.hasAttribute(name)) + continue; + el.removeAttribute(name); + } + else { + const str = String(val); + if (el.getAttribute(name) === str) + continue; + el.setAttribute(name, str); + } + } + } + $.$mol_dom_render_attributes = $mol_dom_render_attributes; +})($ || ($ = {})); +//attributes.js.map +; +"use strict"; +var $; +(function ($) { + const cacthed = new WeakMap(); + function $mol_fail_catch(error) { + if (cacthed.get(error)) + return false; + cacthed.set(error, true); + return true; + } + $.$mol_fail_catch = $mol_fail_catch; +})($ || ($ = {})); +//catch.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_dom_render_styles(el, styles) { + for (let name in styles) { + let val = styles[name]; + const style = el.style; + const cur = style[name]; + if (typeof val === 'number') { + if (parseFloat(cur) == val) + continue; + style[name] = `${val}px`; + } + if (cur !== val) + style[name] = val; + } + } + $.$mol_dom_render_styles = $mol_dom_render_styles; +})($ || ($ = {})); +//styles.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_dom_render_fields(el, fields) { + for (let key in fields) { + const val = fields[key]; + if (val === undefined) + continue; + el[key] = val; + } + } + $.$mol_dom_render_fields = $mol_dom_render_fields; +})($ || ($ = {})); +//fields.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_dom_render_children(el, childNodes) { + const node_set = new Set(childNodes); + let nextNode = el.firstChild; + for (let view of childNodes) { + if (view == null) + continue; + if (view instanceof $.$mol_dom_context.Node) { + while (true) { + if (!nextNode) { + el.appendChild(view); + break; + } + if (nextNode == view) { + nextNode = nextNode.nextSibling; + break; + } + else { + if (node_set.has(nextNode)) { + el.insertBefore(view, nextNode); + break; + } + else { + const nn = nextNode.nextSibling; + el.removeChild(nextNode); + nextNode = nn; + } + } + } + } + else { + if (nextNode && nextNode.nodeName === '#text') { + const str = String(view); + if (nextNode.nodeValue !== str) + nextNode.nodeValue = str; + nextNode = nextNode.nextSibling; + } + else { + const textNode = $.$mol_dom_context.document.createTextNode(String(view)); + el.insertBefore(textNode, nextNode); + } + } + } + while (nextNode) { + const currNode = nextNode; + nextNode = currNode.nextSibling; + el.removeChild(currNode); + } + } + $.$mol_dom_render_children = $mol_dom_render_children; +})($ || ($ = {})); +//children.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_func_name(func) { + return func.name; + } + $.$mol_func_name = $mol_func_name; + function $mol_func_name_from(target, source) { + Object.defineProperty(target, 'name', { value: source.name }); + return target; + } + $.$mol_func_name_from = $mol_func_name_from; +})($ || ($ = {})); +//name.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_deprecated(message) { + return (host, field, descr) => { + const value = descr.value; + descr.value = function $mol_deprecated_wrapper(...args) { + console.warn(`${host.constructor.name}::${field} is deprecated. ${message}`); + return value.call(this, ...args); + }; + }; + } + $.$mol_deprecated = $mol_deprecated; +})($ || ($ = {})); +//deprecated.js.map +; +"use strict"; +//extract.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_view_visible_width() { + return $.$mol_window.size().width; + } + $.$mol_view_visible_width = $mol_view_visible_width; + function $mol_view_visible_height() { + return $.$mol_window.size().height; + } + $.$mol_view_visible_height = $mol_view_visible_height; + function $mol_view_state_key(suffix) { + return suffix; + } + $.$mol_view_state_key = $mol_view_state_key; + class $mol_view extends $.$mol_object { + static Root(id) { + return new this; + } + autorun() { + return $.$mol_atom2_autorun(() => { + this.dom_tree(); + document.title = this.title(); + return this; + }); + } + static autobind() { + const nodes = $.$mol_dom_context.document.querySelectorAll('[mol_view_root]'); + for (let i = nodes.length - 1; i >= 0; --i) { + const name = nodes.item(i).getAttribute('mol_view_root'); + const View = $[name]; + if (!View) { + console.error(`Can not attach view. Class not found: ${name}`); + continue; + } + const view = View.Root(i); + view.dom_node(nodes.item(i)); + view.autorun(); + } + } + title() { + return this.constructor.toString(); + } + focused(next) { + let node = this.dom_node(); + const value = $.$mol_view_selection.focused(next === undefined ? undefined : (next ? [node] : [])); + return value.indexOf(node) !== -1; + } + state_key(suffix = '') { + return this.$.$mol_view_state_key(suffix); + } + dom_name() { + return this.constructor.toString().replace('$', '') || 'div'; + } + dom_name_space() { return 'http://www.w3.org/1999/xhtml'; } + sub() { + return []; + } + sub_visible() { + return this.sub(); + } + minimal_width() { + const sub = this.sub(); + if (!sub) + return 0; + let min = 0; + sub.forEach(view => { + if (view instanceof $mol_view) { + min = Math.max(min, view.minimal_width()); + } + }); + return min; + } + maximal_width() { + return this.minimal_width(); + } + minimal_height() { + let min = 0; + try { + for (const view of this.sub()) { + if (view instanceof $mol_view) { + min = Math.max(min, view.minimal_height()); + } + } + } + catch (error) { + if ('then' in error) + $.$mol_fail_hidden(error); + } + return min; + } + view_rect() { + if ($.$mol_atom2.current) + this.view_rect_watcher(); + return this.view_rect_cache(); + } + view_rect_cache(next = null) { + return next; + } + view_rect_watcher() { + $mol_view.watchers.add(this); + return { destructor: () => $mol_view.watchers.delete(this) }; + } + dom_id() { + return this.toString(); + } + dom_node(next) { + const node = next || $.$mol_dom_context.document.createElementNS(this.dom_name_space(), this.dom_name()); + const id = this.dom_id(); + node.setAttribute('id', id); + node.toString = $.$mol_const('<#' + id + '>'); + $.$mol_dom_render_attributes(node, this.attr_static()); + const events = this.event(); + for (let event_name in events) { + node.addEventListener(event_name, $.$mol_log2.func($.$mol_fiber_root(events[event_name])), { passive: false }); + } + return node; + } + dom_tree(next) { + const node = this.dom_node(next); + try { + $.$mol_dom_render_attributes(node, { mol_view_error: null }); + for (let plugin of this.plugins()) { + if (plugin instanceof $.$mol_plugin) { + plugin.render(); + } + } + this.render(); + } + catch (error) { + const need_catch = $.$mol_fail_catch(error); + if (need_catch) { + $.$mol_dom_render_attributes(node, { mol_view_error: error.name || error.constructor.name }); + } + if (error instanceof Promise) + $.$mol_fail_hidden(error); + if (need_catch) { + try { + void (node.innerText = error.message); + } + catch (e) { } + console.error(error); + } + } + return node; + } + dom_node_actual() { + const node = this.dom_node(); + const attr = this.attr(); + const style = this.style(); + const fields = this.field(); + $.$mol_dom_render_attributes(node, attr); + $.$mol_dom_render_styles(node, style); + $.$mol_dom_render_fields(node, fields); + return node; + } + render() { + const node = this.dom_node_actual(); + const sub = this.sub_visible(); + const nodes = sub.map(child => { + if (child == null) + return null; + return (child instanceof $mol_view) ? child.dom_node_actual() : String(child); + }); + $.$mol_dom_render_children(node, nodes); + for (const el of sub) + if (el && typeof el === 'object' && 'dom_tree' in el) + el['dom_tree'](); + } + static view_classes() { + const proto = this.prototype; + let current = proto; + const classes = []; + while (current) { + classes.push(current.constructor); + if (!(current instanceof $mol_view)) + break; + current = Object.getPrototypeOf(current); + } + return classes; + } + view_names_owned() { + const names = []; + let owner = $.$mol_owning_get(this, $mol_view); + if (owner instanceof $mol_view) { + const suffix = this[$.$mol_object_field]; + const suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1); + for (let Class of owner.constructor.view_classes()) { + if (suffix in Class.prototype) + names.push($.$mol_func_name(Class) + suffix2); + else + break; + } + for (let prefix of owner.view_names_owned()) { + names.push(prefix + suffix2); + } + } + return names; + } + view_names() { + const names = []; + for (let name of this.view_names_owned()) { + if (names.indexOf(name) < 0) + names.push(name); + } + for (let Class of this.constructor.view_classes()) { + const name = $.$mol_func_name(Class); + if (!name) + continue; + if (names.indexOf(name) < 0) + names.push(name); + } + return names; + } + attr_static() { + let attrs = {}; + for (let name of this.view_names()) + attrs[name.replace(/\$/g, '').replace(/^(?=\d)/, '_').toLowerCase()] = ''; + return attrs; + } + attr() { + return {}; + } + style() { + return {}; + } + field() { + return {}; + } + event() { + return {}; + } + event_async() { + return {}; + } + plugins() { + return []; + } + [$.$mol_dev_format_head]() { + return $.$mol_dev_format_span({}, $.$mol_dev_format_native(this), $.$mol_dev_format_shade('/'), $.$mol_dev_format_auto($.$mol_mem_cached(() => this.sub()))); + } + } + $mol_view.watchers = new Set(); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "autorun", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "focused", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "minimal_width", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "minimal_height", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "view_rect", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "view_rect_cache", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "view_rect_watcher", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "dom_node", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "dom_tree", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "dom_node_actual", null); + __decorate([ + $.$mol_mem + ], $mol_view.prototype, "view_names", null); + __decorate([ + $.$mol_deprecated('Use $mol_view::event instead.') + ], $mol_view.prototype, "event_async", null); + __decorate([ + $.$mol_mem_key + ], $mol_view, "Root", null); + __decorate([ + $.$mol_mem + ], $mol_view, "view_classes", null); + $.$mol_view = $mol_view; +})($ || ($ = {})); +//view.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_style_attach("mol/view/view.css", "[mol_view] {\n\ttransition-property: background-color, height, width, min-height, min-width, max-width, max-height, transform;\n\ttransition-duration: .2s;\n\ttransition-timing-function: ease-out;\n\t-webkit-appearance: none;\n\tword-break: break-word;\n\tbox-sizing: border-box;\n}\n\n[mol_view] > * {\n\tword-break: inherit;\n}\n\n[mol_view_root] {\n\tmargin: 0;\n\tpadding: 0;\n\twidth: 100%;\n\theight: 100%;\n\tbox-sizing: border-box;\n\tfont: var(--mol_skin_font);\n\tbackground: var(--mol_theme_back);\n\tcolor: var(--mol_theme_text);\n}\n\n[mol_view][mol_view_error]:not([mol_view_error=\"Promise\"]) {\n\tbackground-image: repeating-linear-gradient(\n\t\t135deg,\n\t\trgba(255,220,220,1),\n\t\trgba(255,220,220,1) 11px,\n\t\trgba(255,255,220,1) 10px,\n\t\trgba(255,255,220,1) 20px\n\t);\n\tbackground-size: 28px 28px;\n\tcolor: black;\n}\n\n@keyframes mol_view_wait_move {\n\tfrom {\n\t\tbackground-position: 0 0;\n\t}\n\tto {\n\t\tbackground-position: 200vmax 0;\n\t}\n}\n\n@keyframes mol_view_wait_show {\n\tto {\n\t\tbackground-image: repeating-linear-gradient(\n\t\t\t45deg,\n\t\t\thsla( 0 , 0% , 50% , .1 ) 0% ,\n\t\t\thsla( 0 , 0% , 50% , 0 ) 5% ,\n\t\t\thsla( 0 , 0% , 50% , 0 ) 45% ,\n\t\t\thsla( 0 , 0% , 50% , .1 ) 50% ,\n\t\t\thsla( 0 , 0% , 50% , 0 ) 55% ,\n\t\t\thsla( 0 , 0% , 50% , 0 ) 95% ,\n\t\t\thsla( 0 , 0% , 50% , .1 ) 100%\n\t\t);\n\t\tbackground-size: 200vmax 200vmax;\n\t}\n}\n\n[mol_view][mol_view_error=\"Promise\"] {\n\tanimation: mol_view_wait_show .5s .5s linear forwards , mol_view_wait_move 1s linear infinite;\n}\n"); +})($ || ($ = {})); +//view.css.js.map +; +"use strict"; +var $; +(function ($) { + if ($.$mol_dom_context.document) { + const event_name = self.cordova ? 'deviceready' : 'DOMContentLoaded'; + $.$mol_dom_context.document.addEventListener(event_name, $.$mol_fiber_root($.$mol_log2.func((event) => { + $.$mol_view.autobind(); + $.$mol_defer.run(); + }))); + function $mol_view_watch() { + $.$mol_fiber_unlimit(() => { + for (const view of $.$mol_view.watchers) { + view.view_rect_cache(view.dom_node().getBoundingClientRect().toJSON()); + } + new $.$mol_after_frame($mol_view_watch); + }); + } + $mol_view_watch(); + } +})($ || ($ = {})); +//view.web.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_string extends $.$mol_view { + dom_name() { + return "input"; + } + enabled() { + return true; + } + debounce() { + return 0; + } + minimal_height() { + return 40; + } + autocomplete() { + return false; + } + field() { + return (Object.assign(Object.assign({}, super.field()), { "disabled": this.disabled(), "value": this.value_changed(), "placeholder": this.hint(), "type": this.type(), "spellcheck": this.spellcheck(), "autocomplete": this.autocomplete_native() })); + } + disabled() { + return false; + } + value_changed(val, force) { + return this.value(val); + } + value(val, force) { + return (val !== void 0) ? val : ""; + } + hint() { + return ""; + } + type(val, force) { + return (val !== void 0) ? val : "text"; + } + spellcheck() { + return false; + } + autocomplete_native() { + return ""; + } + attr() { + return (Object.assign(Object.assign({}, super.attr()), { "maxlength": this.length_max() })); + } + length_max() { + return Infinity; + } + event() { + return (Object.assign(Object.assign({}, super.event()), { "input": (event) => this.event_change(event), "keydown": (event) => this.event_key_press(event) })); + } + event_change(event, force) { + return (event !== void 0) ? event : null; + } + event_key_press(event, force) { + return (event !== void 0) ? event : null; + } + } + __decorate([ + $.$mol_mem + ], $mol_string.prototype, "value_changed", null); + __decorate([ + $.$mol_mem + ], $mol_string.prototype, "value", null); + __decorate([ + $.$mol_mem + ], $mol_string.prototype, "type", null); + __decorate([ + $.$mol_mem + ], $mol_string.prototype, "event_change", null); + __decorate([ + $.$mol_mem + ], $mol_string.prototype, "event_key_press", null); + $.$mol_string = $mol_string; +})($ || ($ = {})); +//string.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + var $$; + (function ($$) { + class $mol_string extends $.$mol_string { + event_change(next) { + if (!next) + return; + this.value(next.target.value); + } + event_key_press(next) { + if (!next) + return; + if (next.keyCode === $.$mol_keyboard_code.enter) { + this.value(next.target.value); + } + } + disabled() { + return !this.enabled(); + } + autocomplete_native() { + return this.autocomplete() ? 'on' : 'off'; + } + } + $$.$mol_string = $mol_string; + })($$ = $.$$ || ($.$$ = {})); +})($ || ($ = {})); +//string.view.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_style_attach("mol/string/string.view.css", "[mol_string] {\n\tbox-sizing: border-box;\n\toutline-offset: 0;\n\tborder: none;\n\tborder-radius: var(--mol_skin_round);\n\twhite-space: nowrap;\n\toverflow: hidden;\n\tpadding: .5rem 1rem;\n\ttext-align: left;\n\tposition: relative;\n\tz-index: 0;\n\tfont: inherit;\n\tflex: 0 1 auto;\n\twidth: 100%;\n\tbackground: var(--mol_theme_field);\n\tcolor: var(--mol_theme_text);\n\tbox-shadow: inset 0 0 0 .5px var(--mol_theme_line);\n\tmargin: 0;\n}\n\n[mol_string]:disabled {\n\tbackground-color: transparent;\n}\n\n[mol_string]:focus {\n\toutline: none;\n\tz-index: 1;\n\tbox-shadow: inset 0 0 0 .5px var(--mol_theme_focus);\n}\n\n[mol_string]::-ms-clear {\n\tdisplay: none;\n}\n"); +})($ || ($ = {})); +//string.view.css.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_button extends $.$mol_view { + enabled() { + return true; + } + minimal_height() { + return 40; + } + click(event, force) { + return (event !== void 0) ? event : null; + } + event_click(event, force) { + return (event !== void 0) ? event : null; + } + event() { + return (Object.assign(Object.assign({}, super.event()), { "click": (event) => this.event_activate(event), "keypress": (event) => this.event_key_press(event) })); + } + event_activate(event, force) { + return (event !== void 0) ? event : null; + } + event_key_press(event, force) { + return (event !== void 0) ? event : null; + } + attr() { + return (Object.assign(Object.assign({}, super.attr()), { "disabled": this.disabled(), "role": "button", "tabindex": this.tab_index(), "title": this.hint() })); + } + disabled() { + return false; + } + tab_index() { + return 0; + } + hint() { + return ""; + } + sub() { + return [this.title()]; + } + } + __decorate([ + $.$mol_mem + ], $mol_button.prototype, "click", null); + __decorate([ + $.$mol_mem + ], $mol_button.prototype, "event_click", null); + __decorate([ + $.$mol_mem + ], $mol_button.prototype, "event_activate", null); + __decorate([ + $.$mol_mem + ], $mol_button.prototype, "event_key_press", null); + $.$mol_button = $mol_button; +})($ || ($ = {})); +//button.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + var $$; + (function ($$) { + class $mol_button extends $.$mol_button { + disabled() { + return !this.enabled(); + } + event_activate(next) { + if (!next) + return; + if (!this.enabled()) + return; + this.event_click(next); + this.click(next); + } + event_key_press(event) { + if (event.keyCode === $.$mol_keyboard_code.enter) { + return this.event_activate(event); + } + } + tab_index() { + return this.enabled() ? super.tab_index() : -1; + } + } + $$.$mol_button = $mol_button; + })($$ = $.$$ || ($.$$ = {})); +})($ || ($ = {})); +//button.view.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_style_attach("mol/button/button.view.css", "[mol_button] {\n\tborder: none;\n\tfont: inherit;\n\tbackground-color: none;\n\tdisplay: inline-flex;\n\tflex-shrink: 0;\n\ttext-decoration: inherit;\n\tcursor: inherit;\n\tposition: relative;\n\tbox-sizing: border-box;\n\tword-break: normal;\n\tcursor: default;\n}\n[mol_button]:focus {\n\toutline: none;\n}\n\n[mol_button_typed] {\n\tjustify-content: center;\n\talign-content: center;\n\talign-items: center;\n\tvertical-align: middle;\n\ttext-align: center;\n\tpadding: .5rem 1rem;\n\tborder-radius: var(--mol_skin_round);\n}\n\n[mol_button_typed][disabled] {\n\tcolor: var(--mol_theme_text);\n\tpointer-events: none;\n}\n\n[mol_button_major] {\n\tbox-shadow: 0 0 0 1px var(--mol_theme_back);\n}\n\n[mol_button_minor] {\n\tcolor: var(--mol_theme_control);\n}\n\n[mol_button_major][disabled] {\n\topacity: .5;\n}\n\n[mol_button_typed]:hover ,\n[mol_button_typed]:focus {\n\tcursor: pointer;\n\tbackground-color: var(--mol_theme_hover);\n}\n"); +})($ || ($ = {})); +//button.view.css.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_button_typed extends $.$mol_button { + } + $.$mol_button_typed = $mol_button_typed; +})($ || ($ = {})); +(function ($) { + class $mol_button_major extends $.$mol_button_typed { + attr() { + return (Object.assign(Object.assign({}, super.attr()), { "mol_theme": "$mol_theme_accent" })); + } + } + $.$mol_button_major = $mol_button_major; +})($ || ($ = {})); +(function ($) { + class $mol_button_minor extends $.$mol_button_typed { + } + $.$mol_button_minor = $mol_button_minor; +})($ || ($ = {})); +//button_types.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_merge_dict(target, source) { + let result = {}; + for (let key in target) + result[key] = target[key]; + for (let key in source) + result[key] = source[key]; + return result; + } + $.$mol_merge_dict = $mol_merge_dict; +})($ || ($ = {})); +//dict.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_state_arg extends $.$mol_object { + constructor(prefix = '') { + super(); + this.prefix = prefix; + } + static href(next, force) { + if (next === undefined) + return $.$mol_dom_context.location.href; + history.replaceState(history.state, $.$mol_dom_context.document.title, next); + return next; + } + static dict(next) { + var href = this.href(next && this.make_link(next)).split(/#/)[1] || ''; + var chunks = href.split(/[\/\?#&;]/g); + var params = {}; + chunks.forEach(chunk => { + if (!chunk) + return; + var vals = chunk.split('=').map(decodeURIComponent); + params[vals.shift()] = vals.join('='); + }); + return params; + } + static dict_cut(except) { + const dict = this.dict(); + const cut = {}; + for (const key in dict) { + if (except.indexOf(key) >= 0) + continue; + cut[key] = dict[key]; + } + return cut; + } + static value(key, next) { + const nextDict = (next === void 0) ? void 0 : $.$mol_merge_dict(this.dict(), { [key]: next }); + const next2 = this.dict(nextDict)[key]; + return (next2 == null) ? null : next2; + } + static link(next) { + return this.make_link($.$mol_merge_dict(this.dict_cut(Object.keys(next)), next)); + } + static make_link(next) { + const chunks = []; + for (let key in next) { + if (null == next[key]) + continue; + const val = next[key]; + chunks.push([key].concat(val ? [val] : []).map(this.encode).join('=')); + } + return new URL('#' + chunks.join('/'), $.$mol_dom_context.location.href).toString(); + } + static encode(str) { + return encodeURIComponent(str).replace(/\(/g, '%28').replace(/\)/g, '%29'); + } + value(key, next) { + return this.constructor.value(this.prefix + key, next); + } + sub(postfix) { + return new this.constructor(this.prefix + postfix + '.'); + } + link(next) { + var prefix = this.prefix; + var dict = {}; + for (var key in next) { + dict[prefix + key] = next[key]; + } + return this.constructor.link(dict); + } + } + __decorate([ + $.$mol_mem + ], $mol_state_arg, "href", null); + __decorate([ + $.$mol_mem + ], $mol_state_arg, "dict", null); + __decorate([ + $.$mol_mem_key + ], $mol_state_arg, "dict_cut", null); + __decorate([ + $.$mol_mem_key + ], $mol_state_arg, "value", null); + $.$mol_state_arg = $mol_state_arg; + self.addEventListener('hashchange', $.$mol_fiber_root($.$mol_log_group('$mol_state_arg hashchange', (event) => { + $mol_state_arg.href($.$mol_dom_context.location.href); + }))); +})($ || ($ = {})); +//arg.web.js.map +; +"use strict"; +//exclude.js.map +; +"use strict"; +//omit.js.map +; +"use strict"; +//class.js.map +; +"use strict"; +//element.js.map +; +"use strict"; +//deep.js.map +; +"use strict"; +//override.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_decor { + constructor(value) { + this.value = value; + } + prefix() { return ''; } + valueOf() { return this.value; } + postfix() { return ''; } + toString() { + return `${this.prefix()}${this.valueOf()}${this.postfix()}`; + } + } + $.$mol_decor = $mol_decor; +})($ || ($ = {})); +//decor.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_style_unit extends $.$mol_decor { + constructor(value, literal) { + super(value); + this.literal = literal; + } + postfix() { + return this.literal; + } + static per(value) { return new $mol_style_unit(value, '%'); } + static px(value) { return new $mol_style_unit(value, 'px'); } + static mm(value) { return new $mol_style_unit(value, 'mm'); } + static cm(value) { return new $mol_style_unit(value, 'cm'); } + static Q(value) { return new $mol_style_unit(value, 'Q'); } + static in(value) { return new $mol_style_unit(value, 'in'); } + static pc(value) { return new $mol_style_unit(value, 'pc'); } + static pt(value) { return new $mol_style_unit(value, 'pt'); } + static cap(value) { return new $mol_style_unit(value, 'cap'); } + static ch(value) { return new $mol_style_unit(value, 'ch'); } + static em(value) { return new $mol_style_unit(value, 'em'); } + static rem(value) { return new $mol_style_unit(value, 'rem'); } + static ex(value) { return new $mol_style_unit(value, 'ex'); } + static ic(value) { return new $mol_style_unit(value, 'ic'); } + static lh(value) { return new $mol_style_unit(value, 'lh'); } + static rlh(value) { return new $mol_style_unit(value, 'rlh'); } + static vh(value) { return new $mol_style_unit(value, 'vh'); } + static vw(value) { return new $mol_style_unit(value, 'vw'); } + static vi(value) { return new $mol_style_unit(value, 'vi'); } + static vb(value) { return new $mol_style_unit(value, 'vb'); } + static vmin(value) { return new $mol_style_unit(value, 'vmin'); } + static vmax(value) { return new $mol_style_unit(value, 'vmax'); } + } + $.$mol_style_unit = $mol_style_unit; +})($ || ($ = {})); +//unit.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_style_func extends $.$mol_decor { + constructor(value, name) { + super(value); + this.name = name; + } + prefix() { return this.name + '('; } + postfix() { return ')'; } + static calc(value) { + return new $mol_style_func(value, 'calc'); + } + static fit_content(value) { + return new $mol_style_func(value, 'fit-content'); + } + } + $.$mol_style_func = $mol_style_func; +})($ || ($ = {})); +//func.js.map +; +"use strict"; +//properties.js.map +; +"use strict"; +//definition.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_style_sheet(Component, config) { + let rules = []; + const make_class = (prefix, suffix, config) => { + const props = []; + for (const key of Object.keys(config).reverse()) { + if (/^[a-z]/.test(key)) { + const name = key.replace(/[A-Z]/g, letter => '-' + letter.toLowerCase()); + const val = config[key]; + if (val.constructor === Object) { + for (let suffix in val) { + props.push(`\t${name}-${suffix}: ${val[suffix]};\n`); + } + } + else { + props.push(`\t${name}: ${val};\n`); + } + } + else if (/^[A-Z]/.test(key)) { + make_class(prefix + '_' + key.toLowerCase(), suffix, config[key]); + } + else if (key[0] === '$') { + make_class(prefix + '] ' + key.replace('$', '['), suffix, config[key]); + } + else if (key === '>') { + const types = config[key]; + for (let type in types) { + make_class(prefix + '] > ' + type.replace('$', '['), suffix, types[type]); + } + } + else if (key === '@') { + const attrs = config[key]; + for (let name in attrs) { + for (let val in attrs[name]) { + make_class(prefix, suffix + '[' + name + '=' + JSON.stringify(val) + ']', attrs[name][val]); + } + } + } + else if (key === '@media') { + const media = config[key]; + for (let query in media) { + rules.push('}\n'); + make_class(prefix, suffix, media[query]); + rules.push(`${key} ${query} {\n`); + } + } + else { + make_class(prefix, suffix + key, config[key]); + } + } + if (props.length) { + rules.push(`${prefix}${suffix} {\n${props.reverse().join('')}}\n`); + } + }; + make_class(Component.name.replace('$', '['), ']', config); + return rules.reverse().join(''); + } + $.$mol_style_sheet = $mol_style_sheet; +})($ || ($ = {})); +//sheet.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_style_define(Component, config) { + return $.$mol_style_attach(Component.name, $.$mol_style_sheet(Component, config)); + } + $.$mol_style_define = $mol_style_define; +})($ || ($ = {})); +//define.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_link extends $.$mol_view { + dom_name() { + return "a"; + } + attr() { + return (Object.assign(Object.assign({}, super.attr()), { "href": this.uri(), "title": this.hint(), "target": this.target(), "download": this.file_name(), "mol_link_current": this.current() })); + } + uri() { + return ""; + } + hint() { + return ""; + } + target() { + return "_self"; + } + file_name() { + return ""; + } + current() { + return false; + } + sub() { + return [this.title()]; + } + arg() { + return ({}); + } + event() { + return (Object.assign(Object.assign({}, super.event()), { "click": (event) => this.click(event) })); + } + click(event, force) { + return this.event_click(event); + } + event_click(event, force) { + return (event !== void 0) ? event : null; + } + } + __decorate([ + $.$mol_mem + ], $mol_link.prototype, "click", null); + __decorate([ + $.$mol_mem + ], $mol_link.prototype, "event_click", null); + $.$mol_link = $mol_link; +})($ || ($ = {})); +//link.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + var $$; + (function ($$) { + class $mol_link extends $.$mol_link { + uri() { + return new this.$.$mol_state_arg(this.state_key()).link(this.arg()); + } + current() { + if (this.uri() === this.$.$mol_state_arg.href()) + return true; + const args = this.arg(); + const keys = Object.keys(args).filter(key => args[key] != null); + if (keys.length === 0) + return false; + for (const key of keys) { + if (this.$.$mol_state_arg.value(key) !== args[key]) + return false; + } + return true; + } + event_click(event) { + if (!event || event.defaultPrevented) + return; + this.focused(false); + } + file_name() { + return null; + } + minimal_height() { + return Math.max(super.minimal_height() || 40); + } + } + __decorate([ + $.$mol_mem + ], $mol_link.prototype, "uri", null); + __decorate([ + $.$mol_mem + ], $mol_link.prototype, "current", null); + $$.$mol_link = $mol_link; + })($$ = $.$$ || ($.$$ = {})); +})($ || ($ = {})); +//link.view.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_style_define($.$mol_link, { + textDecoration: 'none', + color: "var(--mol_theme_control)", + stroke: 'currentColor', + cursor: 'pointer', + padding: '.5rem', + boxSizing: 'border-box', + position: 'relative', + ':hover': { + backgroundColor: "var(--mol_theme_hover)", + }, + ':focus': { + outline: 'none', + backgroundColor: "var(--mol_theme_hover)", + }, + '@': { + mol_link_current: { + 'true': { + backgroundColor: "var(--mol_theme_current)", + color: "var(--mol_theme_text)", + } + } + }, + }); +})($ || ($ = {})); +//link.view.css.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_style_attach("mol/check/check.css", "[mol_check] {\n\tflex: 0 0 auto;\n\tjustify-content: flex-start;\n\talign-content: center;\n\talign-items: flex-start;\n\tborder: none;\n\tfont-weight: inherit;\n\tbox-shadow: none;\n\ttext-align: left;\n\tpadding: .5rem;\n\tdisplay: inline-flex;\n\tflex-wrap: nowrap;\n}\n"); +})($ || ($ = {})); +//check.css.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_check extends $.$mol_button_minor { + attr() { + return (Object.assign(Object.assign({}, super.attr()), { "mol_check_checked": this.checked(), "aria-checked": this.checked(), "role": "checkbox" })); + } + checked(val, force) { + return (val !== void 0) ? val : false; + } + sub() { + return [this.Icon(), this.label()]; + } + Icon() { + return null; + } + label() { + return [this.Title()]; + } + Title() { + return ((obj) => { + obj.sub = () => [this.title()]; + return obj; + })(new this.$.$mol_view()); + } + title() { + return ""; + } + } + __decorate([ + $.$mol_mem + ], $mol_check.prototype, "checked", null); + __decorate([ + $.$mol_mem + ], $mol_check.prototype, "Title", null); + $.$mol_check = $mol_check; +})($ || ($ = {})); +//check.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + var $$; + (function ($$) { + class $mol_check extends $.$mol_check { + click(next) { + this.checked(!this.checked()); + if (next) + next.preventDefault(); + } + sub() { + return [ + ...$.$mol_maybe(this.Icon()), + ...this.label(), + ]; + } + } + $$.$mol_check = $mol_check; + })($$ = $.$$ || ($.$$ = {})); +})($ || ($ = {})); +//check.view.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_state_local extends $.$mol_object { + static native() { + if (this['native()']) + return this['native()']; + check: try { + const native = $.$mol_dom_context.localStorage; + if (!native) + break check; + native.setItem('', ''); + native.removeItem(''); + return this['native()'] = native; + } + catch (error) { + console.warn(error); + } + return this['native()'] = { + getItem(key) { + return this[':' + key]; + }, + setItem(key, value) { + this[':' + key] = value; + }, + removeItem(key) { + this[':' + key] = void 0; + } + }; + } + static value(key, next, force) { + if (next === void 0) + return JSON.parse(this.native().getItem(key) || 'null'); + if (next === null) + this.native().removeItem(key); + else + this.native().setItem(key, JSON.stringify(next)); + return next; + } + prefix() { return ''; } + value(key, next) { + return $mol_state_local.value(this.prefix() + '.' + key, next); + } + } + __decorate([ + $.$mol_mem_key + ], $mol_state_local, "value", null); + $.$mol_state_local = $mol_state_local; +})($ || ($ = {})); +//local.js.map +; +"use strict"; +var $; +(function ($) { + self.addEventListener('storage', event => { + if (!event.key) + return; + $.$mol_state_local.value(event.key, undefined, $.$mol_mem_force_cache); + }); +})($ || ($ = {})); +//local.web.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_state_session extends $.$mol_object { + static native() { + if (this['native()']) + return this['native()']; + check: try { + const native = $.$mol_dom_context.sessionStorage; + if (!native) + break check; + native.setItem('', ''); + native.removeItem(''); + return this['native()'] = native; + } + catch (error) { + console.warn(error); + } + return this['native()'] = { + getItem(key) { + return this[':' + key]; + }, + setItem(key, value) { + this[':' + key] = value; + }, + removeItem(key) { + this[':' + key] = void 0; + } + }; + } + static value(key, next) { + if (next === void 0) + return JSON.parse(this.native().getItem(key) || 'null'); + if (next === null) + this.native().removeItem(key); + else + this.native().setItem(key, JSON.stringify(next)); + return next; + } + prefix() { return ''; } + value(key, next) { + return $mol_state_session.value(this.prefix() + '.' + key, next); + } + } + __decorate([ + $.$mol_mem_key + ], $mol_state_session, "value", null); + $.$mol_state_session = $mol_state_session; +})($ || ($ = {})); +//session.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_memo extends $.$mol_wrapper { + static wrap(task) { + const store = new WeakMap(); + return function (next) { + var _a; + if (next === undefined && store.has(this)) + return store.get(this); + const val = (_a = task.call(this, next)) !== null && _a !== void 0 ? _a : next; + store.set(this, val); + return val; + }; + } + } + $.$mol_memo = $mol_memo; +})($ || ($ = {})); +//memo.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_scroll extends $.$mol_view { + minimal_height() { + return 0; + } + _event_scroll_timer(val, force) { + return (val !== void 0) ? val : null; + } + field() { + return (Object.assign(Object.assign({}, super.field()), { "scrollTop": this.scroll_top(), "scrollLeft": this.scroll_left() })); + } + scroll_top(val, force) { + return (val !== void 0) ? val : 0; + } + scroll_left(val, force) { + return (val !== void 0) ? val : 0; + } + event() { + return (Object.assign(Object.assign({}, super.event()), { "scroll": (event) => this.event_scroll(event) })); + } + event_scroll(event, force) { + return (event !== void 0) ? event : null; + } + } + __decorate([ + $.$mol_mem + ], $mol_scroll.prototype, "_event_scroll_timer", null); + __decorate([ + $.$mol_mem + ], $mol_scroll.prototype, "scroll_top", null); + __decorate([ + $.$mol_mem + ], $mol_scroll.prototype, "scroll_left", null); + __decorate([ + $.$mol_mem + ], $mol_scroll.prototype, "event_scroll", null); + $.$mol_scroll = $mol_scroll; +})($ || ($ = {})); +//scroll.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + var $$; + (function ($$) { + class $mol_scroll extends $.$mol_scroll { + scroll_top(next) { + return $.$mol_state_session.value(`${this}.scroll_top()`, next) || 0; + } + scroll_left(next) { + return $.$mol_state_session.value(`${this}.scroll_left()`, next) || 0; + } + _event_scroll_timer(next) { + return next; + } + event_scroll(next) { + if (this._event_scroll_timer()) + this._event_scroll_timer().destructor(); + const el = this.dom_node(); + this._event_scroll_timer(new $.$mol_after_frame($.$mol_fiber_solid.func(() => { + this.scroll_top(Math.max(0, el.scrollTop)); + this.scroll_left(Math.max(0, el.scrollLeft)); + }))); + } + } + __decorate([ + $.$mol_mem + ], $mol_scroll.prototype, "scroll_top", null); + __decorate([ + $.$mol_mem + ], $mol_scroll.prototype, "scroll_left", null); + __decorate([ + $.$mol_memo.method + ], $mol_scroll.prototype, "_event_scroll_timer", null); + $$.$mol_scroll = $mol_scroll; + })($$ = $.$$ || ($.$$ = {})); +})($ || ($ = {})); +//scroll.view.js.map +; +"use strict"; +var $; +(function ($) { + var $$; + (function ($$) { + $.$mol_style_define($$.$mol_scroll, { + display: 'block', + overflow: 'auto', + flex: { + grow: 1, + shrink: 1, + basis: 'auto', + }, + alignSelf: 'stretch', + boxSizing: 'border-box', + willChange: 'scroll-position', + transform: 'translateZ(0)', + boxShadow: `inset 0 0 0 .5px ${"var(--mol_theme_line)"}`, + maxHeight: '100%', + maxWidth: '100%', + webkitOverflowScrolling: 'touch', + '::-webkit-scrollbar': { + width: '.5rem', + height: '.5rem', + }, + '::-webkit-scrollbar-corner': { + background: "var(--mol_theme_line)", + }, + '::-webkit-scrollbar-track': { + background: "var(--mol_theme_line)", + }, + '::-webkit-scrollbar-thumb': { + background: "var(--mol_theme_control)", + }, + '@media': { + 'print': { + overflow: 'visible', + }, + }, + }); + })($$ = $.$$ || ($.$$ = {})); +})($ || ($ = {})); +//scroll.view.css.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_list extends $.$mol_view { + render_visible_only() { + return true; + } + render_over() { + return 0; + } + sub() { + return this.rows(); + } + rows() { + return []; + } + Empty() { + return ((obj) => { + return obj; + })(new this.$.$mol_view()); + } + Gap_before() { + return ((obj) => { + obj.style = () => ({ + "paddingTop": this.gap_before(), + }); + return obj; + })(new this.$.$mol_view()); + } + gap_before() { + return 0; + } + Gap_after() { + return ((obj) => { + obj.style = () => ({ + "paddingTop": this.gap_after(), + }); + return obj; + })(new this.$.$mol_view()); + } + gap_after() { + return 0; + } + view_window() { + return [0, 0]; + } + } + __decorate([ + $.$mol_mem + ], $mol_list.prototype, "Empty", null); + __decorate([ + $.$mol_mem + ], $mol_list.prototype, "Gap_before", null); + __decorate([ + $.$mol_mem + ], $mol_list.prototype, "Gap_after", null); + $.$mol_list = $mol_list; +})($ || ($ = {})); +//list.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + var $$; + (function ($$) { + class $mol_list extends $.$mol_list { + sub() { + const rows = this.rows(); + return (rows.length === 0) ? [this.Empty()] : rows; + } + render_visible_only() { + if (!$.$mol_dom_context.CSS) + return false; + return $.$mol_dom_context.CSS.supports('overflow-anchor:auto'); + } + view_window() { + var _a, _b, _c, _d, _e, _f; + const kids = this.sub(); + if (kids.length < 3) + return [0, kids.length]; + let [min, max] = (_a = $.$mol_mem_cached(() => this.view_window())) !== null && _a !== void 0 ? _a : [0, 0]; + let max2 = max = Math.min(max, kids.length); + let min2 = min = Math.max(0, Math.min(min, max - 1)); + const anchoring = this.render_visible_only(); + const window_height = this.$.$mol_window.size().height; + const over = Math.ceil(window_height * this.render_over()); + const limit_top = -over; + const limit_bottom = window_height + over; + const rect = this.view_rect(); + const gap_before = (_b = $.$mol_mem_cached(() => this.gap_before())) !== null && _b !== void 0 ? _b : 0; + const gap_after = (_c = $.$mol_mem_cached(() => this.gap_after())) !== null && _c !== void 0 ? _c : 0; + let top = ((_d = rect === null || rect === void 0 ? void 0 : rect.top) !== null && _d !== void 0 ? _d : 0) + gap_before; + let bottom = ((_e = rect === null || rect === void 0 ? void 0 : rect.bottom) !== null && _e !== void 0 ? _e : 0) - gap_after; + if (top <= limit_top && bottom >= limit_bottom) { + return [min2, max2]; + } + if (anchoring && ((bottom < limit_top) || (top > limit_bottom))) { + min = 0; + top = ((_f = rect === null || rect === void 0 ? void 0 : rect.top) !== null && _f !== void 0 ? _f : 0); + while (min < (kids.length - 1)) { + const height = kids[min].minimal_height(); + if (top + height >= limit_top) + break; + top += height; + ++min; + } + min2 = min; + max2 = max = min; + bottom = top; + } + let top2 = top; + let bottom2 = bottom; + if (anchoring && (top <= limit_top)) { + min2 = max; + top2 = bottom; + } + if (bottom >= limit_bottom) { + max2 = min; + bottom2 = top; + } + while (bottom2 < limit_bottom && max2 < kids.length) { + bottom2 += kids[max2].minimal_height(); + ++max2; + } + while (anchoring && ((top2 >= limit_top) && (min2 > 0))) { + --min2; + top2 -= kids[min2].minimal_height(); + } + return [min2, max2]; + } + gap_before() { + const skipped = this.sub().slice(0, this.view_window()[0]); + return Math.max(0, skipped.reduce((sum, view) => sum + view.minimal_height(), 0)); + } + gap_after() { + const skipped = this.sub().slice(this.view_window()[1]); + return Math.max(0, skipped.reduce((sum, view) => sum + view.minimal_height(), 0)); + } + sub_visible() { + var sub = this.sub(); + const next = sub.slice(...this.view_window()); + if (this.gap_before()) + next.unshift(this.Gap_before()); + if (this.gap_after()) + next.push(this.Gap_after()); + return next; + } + minimal_height() { + return this.sub().reduce((sum, view) => sum + view.minimal_height(), 0); + } + } + __decorate([ + $.$mol_mem + ], $mol_list.prototype, "sub", null); + __decorate([ + $.$mol_mem + ], $mol_list.prototype, "view_window", null); + __decorate([ + $.$mol_mem + ], $mol_list.prototype, "gap_before", null); + __decorate([ + $.$mol_mem + ], $mol_list.prototype, "gap_after", null); + __decorate([ + $.$mol_mem + ], $mol_list.prototype, "sub_visible", null); + __decorate([ + $.$mol_mem + ], $mol_list.prototype, "minimal_height", null); + $$.$mol_list = $mol_list; + })($$ = $.$$ || ($.$$ = {})); +})($ || ($ = {})); +//list.view.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_style_attach("mol/list/list.view.css", "[mol_list] {\n\twill-change: contents;\n\tdisplay: block;\n\t/* display: flex;\n\tflex-direction: column;\n\talign-items: stretch;\n\talign-content: stretch; */\n\ttransition: none;\n}\n\n[mol_list_gap_before] ,\n[mol_list_gap_after] {\n\tdisplay: block !important;\n\tflex: none;\n\ttransition: none;\n\toverflow-anchor: none;\n}\n\n[mol_list] > * {\n\tdisplay: block;\n}\n"); +})($ || ($ = {})); +//list.view.css.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_style_attach("mol/bar/bar.view.css", "[mol_bar] {\n\tdisplay: flex;\n\tbox-shadow: inset 0 0 0 .5px var(--mol_theme_line);\n\tborder-radius: var(--mol_skin_round);\n}\n\n[mol_bar] > * {\n\tborder-radius: 0;\n}\n\n[mol_bar] > *:first-child {\n\tborder-top-left-radius: var(--mol_skin_round);\n\tborder-bottom-left-radius: var(--mol_skin_round);\n}\n\n[mol_bar] > *:not(:first-child) {\n\tmargin-left: 1px;\n}\n\n[mol_bar] > *:last-child {\n\tborder-top-right-radius: var(--mol_skin_round);\n\tborder-bottom-right-radius: var(--mol_skin_round);\n}\n"); +})($ || ($ = {})); +//bar.view.css.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_bar extends $.$mol_view { + } + $.$mol_bar = $mol_bar; +})($ || ($ = {})); +//bar.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_state_time extends $.$mol_object { + static now(precision = 0, next) { + if (precision > 0) { + new $.$mol_after_timeout(precision, $.$mol_atom2.current.fresh); + } + else { + new $.$mol_after_frame($.$mol_atom2.current.fresh); + } + return Date.now(); + } + } + __decorate([ + $.$mol_mem_key + ], $mol_state_time, "now", null); + $.$mol_state_time = $mol_state_time; +})($ || ($ = {})); +//time.js.map +; +"use strict"; +var $; +(function ($) { + let canvas; + function $mol_font_canvas(next = canvas) { + if (!next) + next = $.$mol_dom_context.document.createElement('canvas').getContext('2d'); + return canvas = next; + } + $.$mol_font_canvas = $mol_font_canvas; +})($ || ($ = {})); +//canvas.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_font_measure(size, face, text) { + const canvas = $.$mol_font_canvas(); + canvas.font = size + 'px ' + face; + return canvas.measureText(text).width; + } + $.$mol_font_measure = $mol_font_measure; +})($ || ($ = {})); +//measure.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_svg extends $.$mol_view { + dom_name() { + return "svg"; + } + dom_name_space() { + return "http://www.w3.org/2000/svg"; + } + text_width(text, force) { + return (text !== void 0) ? text : 0; + } + font_size() { + return 16; + } + font_family() { + return ""; + } + } + __decorate([ + $.$mol_mem + ], $mol_svg.prototype, "text_width", null); + $.$mol_svg = $mol_svg; +})($ || ($ = {})); +//svg.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + var $$; + (function ($$) { + class $mol_svg extends $.$mol_svg { + computed_style() { + const win = this.$.$mol_dom_context; + const style = win.getComputedStyle(this.dom_node()); + if (!style['font-size']) + $.$mol_state_time.now(); + return style; + } + font_size() { + return parseInt(this.computed_style()['font-size']) || 16; + } + font_family() { + return this.computed_style()['font-family']; + } + text_width(text) { + return $.$mol_font_measure(this.font_size(), this.font_family(), text); + } + } + __decorate([ + $.$mol_mem + ], $mol_svg.prototype, "computed_style", null); + __decorate([ + $.$mol_mem + ], $mol_svg.prototype, "font_size", null); + __decorate([ + $.$mol_mem + ], $mol_svg.prototype, "font_family", null); + $$.$mol_svg = $mol_svg; + })($$ = $.$$ || ($.$$ = {})); +})($ || ($ = {})); +//svg.view.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_style_attach("mol/svg/root/root.view.css", "[mol_svg_root] {\n\toverflow: hidden;\n}\n"); +})($ || ($ = {})); +//root.view.css.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_svg_root extends $.$mol_svg { + dom_name() { + return "svg"; + } + attr() { + return (Object.assign(Object.assign({}, super.attr()), { "viewBox": this.view_box(), "preserveAspectRatio": this.aspect() })); + } + view_box() { + return "0 0 100 100"; + } + aspect() { + return "xMidYMid"; + } + } + $.$mol_svg_root = $mol_svg_root; +})($ || ($ = {})); +//root.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_svg_path extends $.$mol_svg { + dom_name() { + return "path"; + } + attr() { + return (Object.assign(Object.assign({}, super.attr()), { "d": this.geometry() })); + } + geometry() { + return ""; + } + } + $.$mol_svg_path = $mol_svg_path; +})($ || ($ = {})); +//path.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_style_attach("mol/icon/icon.view.css", "[mol_icon] {\n\tfill: currentColor;\n\tstroke: none;\n\twidth: 1em;\n\theight: 1em;\n\tflex: 0 0 auto;\n\tvertical-align: -.1em;\n\twill-change: transform;\n}\n"); +})($ || ($ = {})); +//icon.view.css.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_icon extends $.$mol_svg_root { + view_box() { + return "0 0 24 24"; + } + minimal_width() { + return 16; + } + minimal_height() { + return 16; + } + sub() { + return [this.Path()]; + } + Path() { + return ((obj) => { + obj.geometry = () => this.path(); + return obj; + })(new this.$.$mol_svg_path()); + } + path() { + return ""; + } + } + __decorate([ + $.$mol_mem + ], $mol_icon.prototype, "Path", null); + $.$mol_icon = $mol_icon; +})($ || ($ = {})); +//icon.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_icon_alert extends $.$mol_icon { + path() { + return "M13,14H11V10H13M13,18H11V16H13M1,21H23L12,2L1,21Z"; + } + } + $.$mol_icon_alert = $mol_icon_alert; +})($ || ($ = {})); +//alert.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_icon_alert_circle extends $.$mol_icon { + path() { + return "M13,13H11V7H13M13,17H11V15H13M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2Z"; + } + } + $.$mol_icon_alert_circle = $mol_icon_alert_circle; +})($ || ($ = {})); +//circle.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_style_attach("hyoo/todomvc/todomvc.css", "[hyoo_todomvc] {\n\talign-self: stretch;\n\twidth: 100%;\n\tmargin: 0;\n\ttransition: none;\n}\n\n[hyoo_todomvc] [mol_string] ,\n[hyoo_todomvc] [mol_string]:focus ,\n[hyoo_todomvc] [mol_string]:hover ,\n[hyoo_todomvc] [mol_button] ,\n[hyoo_todomvc] [mol_button]:focus ,\n[hyoo_todomvc] [mol_button]:hover ,\n[hyoo_todomvc] [mol_link] ,\n[hyoo_todomvc] [mol_link]:focus ,\n[hyoo_todomvc] [mol_link]:hover {\n\tbox-shadow: none;\n\tbackground-color: transparent;\n}\n\n[hyoo_todomvc] [mol_link_current] {\n\tcolor: black;\n}\n\n[hyoo_todomvc] [mol_link]:not([mol_link_current]):hover ,\n[hyoo_todomvc] [mol_link]:not([mol_link_current]):focus {\n\ttext-decoration: underline;\n}\n\n[hyoo_todomvc_head_complete] {\n\tflex: 0 0 4rem;\n\ttransform: rotate( 90deg );\n\talign-items: center;\n\topacity: .5;\n\tpadding: 0;\n\tjustify-content: center;\n}\n[hyoo_todomvc_head_complete]:disabled {\n\tvisibility: hidden;\n}\n[hyoo_todomvc_head_complete][mol_check_checked] {\n\topacity: 1;\n}\n\n[hyoo_todomvc_add] {\n\tpadding: 0;\n\tflex: 1 1 auto;\n}\n\n[hyoo_todomvc_list] {\n\tfont-size: 1.5rem;\n\ttransition: none;\n}\n\n[hyoo_todomvc_page] {\n\tflex: 1 1 auto;\n\ttransition: none;\n}\n\n[hyoo_todomvc_panel] {\n\tbox-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1);\n\tmax-width: 38rem;\n\t--mol_theme_back: white;\n\t--mol_theme_text: black;\n\tbackground-color: var(--mol_theme_back);\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 0 auto 2rem;\n\ttransition: none;\n}\n\n[hyoo_todomvc_head] {\n\tfont-size: 1.5rem;\n\tpadding: 0;\n\tdisplay: flex;\n\theight: 4rem;\n}\n\n[hyoo_todomvc_title] {\n\tword-break: normal;\n\tdisplay: block;\n\tpadding: .25rem;\n\tfont-size: 7rem;\n\tfont-weight: 100;\n\ttext-align: center;\n\tcolor: rgba(275, 147, 147, 0.2);\n\ttext-rendering: optimizeLegibility;\n\ttext-transform: lowercase;\n}\n\n[hyoo_todomvc_task_row] {\n\tdisplay: flex;\n\tbackground-color: white;\n\tbox-shadow: 0 -1px 0 0 #ededed;\n\theight: 4rem;\n}\n\n[hyoo_todomvc_task_row_complete] {\n\tflex: 0 0 4rem;\n\tpadding: 1rem;\n\tbackground: no-repeat center center url('hyoo/todomvc/todomvc_active.svg');\n}\n[hyoo_todomvc_task_row_complete][mol_check_checked] {\n\tbackground: no-repeat center center url('hyoo/todomvc/todomvc_completed.svg');\n}\n\n[hyoo_todomvc_task_row_title] {\n\tpadding: 0;\n\tflex: 1 1 auto;\n}\n\n[hyoo_todomvc_task_row_completed] [hyoo_todomvc_task_row_title] {\n\tcolor: #d9d9d9;\n\ttext-decoration: line-through;\n}\n\n[hyoo_todomvc_task_row_drop] {\n\tfont-size: 1.25rem;\n\tflex: 0 04rem;\n}\n[hyoo_todomvc_task_row]:not(:hover) [hyoo_todomvc_task_row_drop]:not(:focus) {\n\topacity: 0;\n\tcolor: #cc9a9a;\n}\n\n[hyoo_todomvc_foot] {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: baseline;\n\tpadding: .5rem 1rem;\n\tcolor: #777;\n\tfont-size: .85rem;\n\tborder-top: 1px solid #ededed;\n\tbox-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2);\n}\n\n[hyoo_todomvc_pending] {\n\tpadding: .25rem;\n\tflex: 0 1 6rem;\n}\n\n[hyoo_todomvc_filter] {\n\tflex: 1 100 auto;\n\tdisplay: flex;\n\tjustify-content: center;\n\tmargin: .25rem;\n\tbox-shadow: none;\n}\n\n[hyoo_todomvc_sweep] {\n\tflex: 0 1 auto;\n\tpadding: .25rem;\n}\n[hyoo_todomvc_sweep][disabled] {\n\tvisibility: hidden;\n}\n\n[hyoo_todomvc_sweep]:hover ,\n[hyoo_todomvc_sweep]:focus {\n\ttext-decoration: underline;\n}\n"); +})($ || ($ = {})); +//todomvc.css.js.map +; +"use strict"; +var $; +(function ($) { + class $hyoo_todomvc extends $.$mol_scroll { + title() { + return "Todos"; + } + sub() { + return [this.Page()]; + } + Page() { + return ((obj) => { + obj.rows = () => [this.Title(), this.Panel()]; + return obj; + })(new this.$.$mol_list()); + } + Title() { + return ((obj) => { + obj.minimal_height = () => 176; + obj.sub = () => [this.title()]; + return obj; + })(new this.$.$mol_view()); + } + Panel() { + return ((obj) => { + obj.rows = () => this.panels(); + return obj; + })(new this.$.$mol_list()); + } + panels() { + return [this.Head(), this.List(), this.Foot()]; + } + Head() { + return ((obj) => { + obj.minimal_height = () => 64; + obj.sub = () => this.Head_content(); + return obj; + })(new this.$.$mol_view()); + } + Head_content() { + return [this.Head_complete(), this.Add()]; + } + Head_complete() { + return ((obj) => { + obj.enabled = () => this.head_complete_enabled(); + obj.checked = (val) => this.completed_all(val); + obj.title = () => "❯"; + return obj; + })(new this.$.$mol_check()); + } + head_complete_enabled() { + return false; + } + completed_all(val, force) { + return (val !== void 0) ? val : false; + } + Add() { + return ((obj) => { + obj.value = (val) => this.task_title_new(val); + obj.done = (event) => this.add(event); + return obj; + })(new this.$.$hyoo_todomvc_add()); + } + task_title_new(val, force) { + return (val !== void 0) ? val : ""; + } + add(event, force) { + return (event !== void 0) ? event : null; + } + List() { + return ((obj) => { + obj.rows = () => this.task_rows(); + return obj; + })(new this.$.$mol_list()); + } + task_rows() { + return []; + } + Foot() { + return ((obj) => { + obj.sub = () => this.foot_content(); + return obj; + })(new this.$.$mol_view()); + } + foot_content() { + return [this.Pending(), this.Filter(), this.Sweep()]; + } + Pending() { + return ((obj) => { + obj.sub = () => [this.pending_message()]; + return obj; + })(new this.$.$mol_view()); + } + pending_message() { + return "0 items left "; + } + Filter() { + return ((obj) => { + obj.sub = () => this.filterOptions(); + return obj; + })(new this.$.$mol_bar()); + } + filterOptions() { + return [this.Filter_all(), this.Filter_active(), this.Filter_completed()]; + } + Filter_all() { + return ((obj) => { + obj.sub = () => [this.filter_all_label()]; + obj.arg = () => ({ + "completed": null, + }); + return obj; + })(new this.$.$mol_link()); + } + filter_all_label() { + return "All"; + } + Filter_active() { + return ((obj) => { + obj.sub = () => [this.filter_active_label()]; + obj.arg = () => ({ + "completed": "false", + }); + return obj; + })(new this.$.$mol_link()); + } + filter_active_label() { + return "Active"; + } + Filter_completed() { + return ((obj) => { + obj.sub = () => [this.filter_completed_label()]; + obj.arg = () => ({ + "completed": "true", + }); + return obj; + })(new this.$.$mol_link()); + } + filter_completed_label() { + return "Completed"; + } + Sweep() { + return ((obj) => { + obj.enabled = () => this.sweep_enabled(); + obj.click = (event) => this.sweep(event); + obj.sub = () => [this.sweep_label()]; + return obj; + })(new this.$.$mol_button_minor()); + } + sweep_enabled() { + return true; + } + sweep(event, force) { + return (event !== void 0) ? event : null; + } + sweep_label() { + return "Clear completed"; + } + Task_row(id) { + return ((obj) => { + obj.completed = (val) => this.task_completed(id, val); + obj.title = (val) => this.task_title(id, val); + obj.drop = (event) => this.task_drop(id, event); + return obj; + })(new this.$.$hyoo_todomvc_task_row()); + } + task_completed(id, val, force) { + return (val !== void 0) ? val : false; + } + task_title(id, val, force) { + return (val !== void 0) ? val : ""; + } + task_drop(id, event, force) { + return (event !== void 0) ? event : null; + } + } + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Page", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Title", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Panel", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Head", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Head_complete", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "completed_all", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Add", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "task_title_new", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "add", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "List", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Foot", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Pending", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Filter", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Filter_all", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Filter_active", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Filter_completed", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "Sweep", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "sweep", null); + __decorate([ + $.$mol_mem_key + ], $hyoo_todomvc.prototype, "Task_row", null); + __decorate([ + $.$mol_mem_key + ], $hyoo_todomvc.prototype, "task_completed", null); + __decorate([ + $.$mol_mem_key + ], $hyoo_todomvc.prototype, "task_title", null); + __decorate([ + $.$mol_mem_key + ], $hyoo_todomvc.prototype, "task_drop", null); + $.$hyoo_todomvc = $hyoo_todomvc; +})($ || ($ = {})); +(function ($) { + class $hyoo_todomvc_add extends $.$mol_string { + hint() { + return "What needs to be done?"; + } + event() { + return (Object.assign(Object.assign({}, super.event()), { "keydown": (event) => this.press(event) })); + } + press(event, force) { + return (event !== void 0) ? event : null; + } + done(event, force) { + return (event !== void 0) ? event : null; + } + } + __decorate([ + $.$mol_mem + ], $hyoo_todomvc_add.prototype, "press", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc_add.prototype, "done", null); + $.$hyoo_todomvc_add = $hyoo_todomvc_add; +})($ || ($ = {})); +(function ($) { + class $hyoo_todomvc_task_row extends $.$mol_view { + minimal_height() { + return 64; + } + sub() { + return [this.Complete(), this.Title(), this.Drop()]; + } + Complete() { + return ((obj) => { + obj.checked = (val) => this.completed(val); + return obj; + })(new this.$.$mol_check()); + } + completed(val, force) { + return (val !== void 0) ? val : false; + } + Title() { + return ((obj) => { + obj.hint = () => this.title_hint(); + obj.value = (val) => this.title(val); + return obj; + })(new this.$.$mol_string()); + } + title_hint() { + return "Task title"; + } + title(val, force) { + return (val !== void 0) ? val : ""; + } + Drop() { + return ((obj) => { + obj.sub = () => ["✖"]; + obj.click = (event) => this.drop(event); + return obj; + })(new this.$.$mol_button_typed()); + } + drop(event, force) { + return (event !== void 0) ? event : null; + } + attr() { + return (Object.assign(Object.assign({}, super.attr()), { "hyoo_todomvc_task_row_completed": this.completed() })); + } + } + __decorate([ + $.$mol_mem + ], $hyoo_todomvc_task_row.prototype, "Complete", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc_task_row.prototype, "completed", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc_task_row.prototype, "Title", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc_task_row.prototype, "title", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc_task_row.prototype, "Drop", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc_task_row.prototype, "drop", null); + $.$hyoo_todomvc_task_row = $hyoo_todomvc_task_row; +})($ || ($ = {})); +(function ($) { + class $my_button_danger extends $.$mol_view { + sub() { + return [this.Icon(), this.title()]; + } + Icon() { + return ((obj) => { + return obj; + })(new this.$.$mol_icon_alert_circle()); + } + } + __decorate([ + $.$mol_mem + ], $my_button_danger.prototype, "Icon", null); + $.$my_button_danger = $my_button_danger; +})($ || ($ = {})); +//todomvc.view.tree.js.map +; +"use strict"; +var $; +(function ($) { + var $$; + (function ($$) { + class $hyoo_todomvc_add extends $.$hyoo_todomvc_add { + press(next) { + switch (next.keyCode) { + case $.$mol_keyboard_code.enter: return this.done(next); + } + } + } + $$.$hyoo_todomvc_add = $hyoo_todomvc_add; + class $hyoo_todomvc extends $.$hyoo_todomvc { + task_ids(next) { + return this.$.$mol_state_local.value(this.state_key('mol-todos'), next) || []; + } + arg_completed() { + return this.$.$mol_state_arg.value(this.state_key('completed')); + } + groups_completed() { + var groups = { 'true': [], 'false': [] }; + for (let id of this.task_ids()) { + var task = this.task(id); + groups[String(task.completed)].push(id); + } + return groups; + } + task_ids_filtered() { + var completed = this.arg_completed(); + if (completed) { + return this.groups_completed()[completed] || []; + } + else { + return this.task_ids(); + } + } + completed_all(next) { + if (next === void 0) + return this.groups_completed()['false'].length === 0; + for (let id of this.groups_completed()[String(!next)]) { + var task = this.task(id); + this.task(id, { title: task.title, completed: next }); + } + return next; + } + head_complete_enabled() { + return this.task_ids().length > 0; + } + pending_message() { + let count = this.groups_completed()['false'].length; + return (count === 1) ? '1 item left' : `${count} items left`; + } + new_id() { + return Math.max(1, 1 + Math.max(...this.task_ids())); + } + add(next) { + var title = this.task_title_new(); + if (!title) + return; + var id = this.new_id(); + var task = { completed: false, title }; + this.task(id, task); + this.task_ids(this.task_ids().concat(id)); + this.task_title_new(''); + } + task_rows() { + return this.task_ids_filtered().map(id => this.Task_row(id)); + } + task(id, next) { + const key = this.state_key(`mol-todos-${id}`); + if (next === void 0) { + return this.$.$mol_state_local.value(key) || { title: '', completed: false }; + } + this.$.$mol_state_local.value(key, next); + return next || void 0; + } + task_completed(id, next) { + return this.task(id, next === undefined ? undefined : Object.assign(Object.assign({}, this.task(id)), { completed: next })).completed; + } + task_title(id, next) { + return this.task(id, next === undefined ? undefined : Object.assign(Object.assign({}, this.task(id)), { title: next })).title; + } + task_drop(id, next) { + this.task(id, null); + this.task_ids(this.task_ids().filter(id2 => id !== id2)); + } + sweep() { + this.task_ids(this.task_ids().filter(id => { + if (!this.task(id).completed) + return true; + this.task(id, null); + return false; + })); + } + panels() { + return [ + this.Head(), + this.List(), + ...this.foot_visible() ? [this.Foot()] : [], + ]; + } + foot_visible() { + return this.task_ids().length > 0; + } + sweep_enabled() { + return this.groups_completed()['true'].length > 0; + } + } + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "groups_completed", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "task_ids_filtered", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "completed_all", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "pending_message", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "new_id", null); + __decorate([ + $.$mol_mem + ], $hyoo_todomvc.prototype, "task_rows", null); + __decorate([ + $.$mol_mem_key + ], $hyoo_todomvc.prototype, "task_completed", null); + __decorate([ + $.$mol_mem_key + ], $hyoo_todomvc.prototype, "task_title", null); + $$.$hyoo_todomvc = $hyoo_todomvc; + })($$ = $.$$ || ($.$$ = {})); +})($ || ($ = {})); +//todomvc.view.js.map +; +var $node = $node || {} ; $node[ "/hyoo/todomvc/todomvc_active.svg" ] = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iMCAtMTggMTAwIDEzNSI+DQoJPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZpbGw9Im5vbmUiICBzdHJva2U9IiNlZGVkZWQiIHN0cm9rZS13aWR0aD0iMyIvPg0KPC9zdmc+" + +; +var $node = $node || {} ; $node[ "/hyoo/todomvc/todomvc_completed.svg" ] = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iMCAtMTggMTAwIDEzNSI+DQoJPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2JkZGFkNSIgc3Ryb2tlLXdpZHRoPSIzIi8+DQoJPHBhdGggZmlsbD0iJTIzNWRjMmFmIiBkPSJNNzIgMjVMNDIgNzEgMjcgNTZsLTQgNCAyMCAyMCAzNC01MnoiLz4NCjwvc3ZnPg0K" + +; +"use strict"; +var $; +(function ($) { + class $mol_plugin extends $.$mol_view { + dom_node(next) { + const node = next || $.$mol_owning_get(this, $.$mol_view).dom_node(); + $.$mol_dom_render_attributes(node, this.attr_static()); + const events = this.event(); + for (let event_name in events) { + node.addEventListener(event_name, $.$mol_log2.func($.$mol_fiber_root(events[event_name])), { passive: false }); + } + return node; + } + attr_static() { + return {}; + } + event() { + return {}; + } + render() { + this.dom_node_actual(); + } + } + __decorate([ + $.$mol_mem + ], $mol_plugin.prototype, "dom_node", null); + $.$mol_plugin = $mol_plugin; +})($ || ($ = {})); +//plugin.js.map + +//# sourceMappingURL=web.js.map diff --git a/examples/mol/web.js.map b/examples/mol/web.js.map new file mode 100644 index 0000000000..83c34262a9 --- /dev/null +++ b/examples/mol/web.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["-","../../../mol/mol.ts","../../../mol/mol.jam.js","../../../mol/mol.web.jam.js","../../../mol/ambient/ambient.ts","../../../mol/owning/owning.ts","../../../mol/fail/fail.ts","../../../mol/fail/hidden/hidden.ts","../../../mol/object2/object2.ts","../../../mol/after/tick/tick.ts","../../../mol/dom/context/context.ts","../../../mol/dom/context/context.web.ts","../../../mol/style/attach/attach.ts","../../../mol/keyboard/code.ts","../../../mol/theme/theme.js","../../../mol/theme/-css/theme.css.ts","../../../mol/skin/-css/skin.css.ts","../../../mol/object/object.ts","../../../mol/wrapper/wrapper.ts","../../../mol/dev/format/format.ts","../../../mol/maybe/maybe.ts","../../../mol/log/log.ts","../../../mol/log/log_group.ts","../../../mol/log/log_context.ts","../../../mol/log/log_debug.web.ts","../../../mol/log/log_filter.web.ts","../../../mol/log2/log2.ts","../../../mol/log2/log2.web.ts","../../../mol/after/frame/frame.web.ts","../../../mol/compare/any/any.ts","../../../mol/conform/conform.ts","../../../mol/array/trim/trim.ts","../../../mol/fiber/fiber.ts","../../../mol/atom2/atom2.ts","../../../mol/mem/force/force.ts","../../../mol/mem/mem.ts","../../../mol/window/window.web.ts","../../../mol/dict/dict.ts","../../../mol/mem/key/key.ts","../../../mol/atom2/autorun/autorun.ts","../../../mol/defer/defer.ts","../../../mol/after/timeout/timeout.ts","../../../mol/view/selection/selection.ts","../../../mol/view/selection/selection.web.ts","../../../mol/const/const.ts","../../../mol/dom/render/attributes/attributes.ts","../../../mol/fail/catch/catch.ts","../../../mol/dom/render/styles/styles.ts","../../../mol/dom/render/fields/fields.ts","../../../mol/dom/render/children/children.ts","../../../mol/func/name/name.ts","../../../mol/deprecated/deprecated.ts","../../../mol/type/keys/extract/extract.js","../../../mol/view/view.ts","../../../mol/view/-css/view.css.ts","../../../mol/view/view.web.ts","../../../mol/string/-view.tree/string.view.tree.ts","../../../mol/string/string.view.ts","../../../mol/string/-css/string.view.css.ts","../../../mol/button/-view.tree/button.view.tree.ts","../../../mol/button/button.view.ts","../../../mol/button/-css/button.view.css.ts","../../../mol/button/-view.tree/button_types.view.tree.ts","../../../mol/merge/dict/dict.ts","../../../mol/state/arg/arg.web.ts","../../../mol/type/keys/exclude/exclude.js","../../../mol/type/omit/omit.js","../../../mol/style/pseudo/class.js","../../../mol/style/pseudo/element.js","../../../mol/type/partial/deep/deep.js","../../../mol/type/override/override.js","../../../mol/decor/decor.ts","../../../mol/style/unit/unit.ts","../../../mol/style/func/func.ts","../../../mol/style/properties/properties.js","../../../mol/style/definition/definition.js","../../../mol/style/sheet/sheet.ts","../../../mol/style/define/define.ts","../../../mol/link/-view.tree/link.view.tree.ts","../../../mol/link/link.view.ts","../../../mol/link/link.view.css.ts","../../../mol/check/-css/check.css.ts","../../../mol/check/-view.tree/check.view.tree.ts","../../../mol/check/check.view.ts","../../../mol/state/local/local.ts","../../../mol/state/local/local.web.ts","../../../mol/state/session/session.ts","../../../mol/memo/memo.ts","../../../mol/scroll/-view.tree/scroll.view.tree.ts","../../../mol/scroll/scroll.view.ts","../../../mol/scroll/scroll.view.css.ts","../../../mol/list/-view.tree/list.view.tree.ts","../../../mol/list/list.view.ts","../../../mol/list/-css/list.view.css.ts","../../../mol/bar/-css/bar.view.css.ts","../../../mol/bar/-view.tree/bar.view.tree.ts","../../../mol/state/time/time.ts","../../../mol/font/canvas/canvas.ts","../../../mol/font/measure/measure.ts","../../../mol/svg/-view.tree/svg.view.tree.ts","../../../mol/svg/svg.view.ts","../../../mol/svg/root/-css/root.view.css.ts","../../../mol/svg/root/-view.tree/root.view.tree.ts","../../../mol/svg/path/-view.tree/path.view.tree.ts","../../../mol/icon/-css/icon.view.css.ts","../../../mol/icon/-view.tree/icon.view.tree.ts","../../../mol/icon/alert/-view.tree/alert.view.tree.ts","../../../mol/icon/alert/circle/-view.tree/circle.view.tree.ts","../-css/todomvc.css.ts","../-view.tree/todomvc.view.tree.ts","../todomvc.view.ts","../-image/todomvc_active.svg.js","../-image/todomvc_completed.svg.js","../../../mol/plugin/plugin.ts"],"names":[],"mappings":"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","file":"web.js","sourcesContent":[null,"Error.stackTraceLimit = Infinity;\n\ndeclare namespace $ {}\nexport = $\nmodule.exports\n",null,null,"namespace $ {\n\n\texport namespace $$ { export let $$ : typeof $ }\n\n\texport const $mol_ambient_ref : unique symbol = Symbol( '$mol_ambient_ref' )\n\n\texport type $mol_ambient_context = ( typeof globalThis ) & ( typeof $.$$ ) & ( typeof $ )\n\n\texport function $mol_ambient( this : $mol_ambient_context | void , overrides : Partial< $mol_ambient_context > ) : $mol_ambient_context {\n\t\treturn Object.setPrototypeOf( overrides , this || $ )\n\t}\n\n}\n","namespace $ {\n\n\texport const $mol_owning_map = new WeakMap< any , any >()\n\n\texport function $mol_owning_allow< Having >(\n\t\thaving : Having ,\n\t) : having is Having & {\n\t\tdestructor() : void\n\t} {\n\t\tif( !having ) return false\n\t\tif( typeof having !== 'object' ) return false\n\t\tif( typeof having['destructor'] !== 'function' ) return false\n\t\treturn true\n\t}\n\n\texport function $mol_owning_get< Having , Owner extends object >( having : Having , Owner? : { new() : Owner } ) : Owner | null {\n\t\n\t\tif( !$mol_owning_allow( having ) ) return null\n\n\t\twhile( true ) {\n\n\t\t\tconst owner = $mol_owning_map.get( having )\n\t\t\tif( !owner ) return owner\n\t\t\tif( !Owner ) return owner\n\t\t\t\n\t\t\tif( owner instanceof Owner ) return owner\n\n\t\t\thaving = owner\n\t\t}\n\n\t}\n\t\n\texport function $mol_owning_check< Owner , Having >(\n\t\towner : Owner ,\n\t\thaving : Having ,\n\t) : having is Having & { destructor() : void } {\n\t\tif( !$mol_owning_allow( having ) ) return false\n\t\tif( $mol_owning_map.get( having ) !== owner ) return false\n\t\treturn true\n\t}\n\t\n\texport function $mol_owning_catch< Owner , Having >(\n\t\towner : Owner ,\n\t\thaving : Having ,\n\t) {\n\t\tif( !$mol_owning_allow( having ) ) return false\n\t\tif( $mol_owning_map.get( having ) ) return false\n\n\t\t$mol_owning_map.set( having , owner )\n\t\treturn true\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_fail( error : any ) : never {\n\t\tthrow error\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_fail_hidden( error : any ) : never {\n\t\tthrow error /// Use 'Never Pause Here' breakpoint in DevTools or simply blackbox this script\n\t}\n\n}\n","namespace $ {\n\n\texport class $mol_object2 {\n\t\t\n\t\tstatic $ = $ as $mol_ambient_context\n\t\t\n\t\t[ $mol_ambient_ref ] = null as any as $mol_ambient_context\n\t\tget $() {\n\t\t\tif( this[ $mol_ambient_ref ] ) return this[ $mol_ambient_ref ]\n\t\t\tconst owner = $mol_owning_get( this ) as any\n\t\t\treturn this[ $mol_ambient_ref ] = owner?.$ || $mol_object2.$ as $mol_ambient_context\n\t\t}\n\t\tset $( next : $mol_ambient_context ) {\n\t\t\tif( this[ $mol_ambient_ref ] ) $mol_fail_hidden( new Error( 'Context already defined' ) )\n\t\t\tthis[ $mol_ambient_ref ] = next\n\t\t}\n\n\t\tconstructor( init? : ( obj : any )=> void ) {\n\t\t\tif( init ) init( this )\n\t\t}\n\n\t\tpublic static create< Instance >(\n\t\t\tthis : new( init? : ( instance : any )=> void )=> Instance ,\n\t\t\tinit? : ( instance : Instance )=> void\n\t\t) : Instance {\n\t\t\treturn new this( init )\n\t\t}\n\t\t\n\t\tstatic toString() { return this[ Symbol.toStringTag ] || this.name }\n\n\t\tdestructor() { }\n\n\t\ttoString() {\n\t\t\treturn this[ Symbol.toStringTag ] || this.constructor.name + '()'\n\t\t}\n\t\t\n\t\ttoJSON() {\n\t\t\treturn this.toString()\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\n\texport class $mol_after_tick extends $mol_object2 {\n\n\t\tpromise : any\n\t\tcancelled = false\n\n\t\tconstructor(\n\t\t\tpublic task : ()=> void ,\n\t\t) {\n\t\t\tsuper()\n\t\t\tthis.promise = Promise.resolve().then( ()=> {\n\t\t\t\tif( this.cancelled ) return\n\t\t\t\ttask()\n\t\t\t} )\n\t\t}\n\n\t\tdestructor() {\n\t\t\tthis.cancelled = true\n\t\t}\n\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport var $mol_dom_context : typeof globalThis\n\t\n}\n","namespace $ {\n\t\n\t$mol_dom_context = self as any\n\t\n}\n","namespace $ {\n\n\tlet all = [] as string[]\n\tlet el : HTMLStyleElement | null = null\n\tlet timer : $mol_after_tick | null = null\n\n\texport function $mol_style_attach(\n\t\tid : string ,\n\t\ttext : string ,\n\t) {\n\n\t\tall.push( `/* ${ id } */\\n\\n${ text }`)\n\n\t\tif( timer ) return el!\n\t\t\n\t\tconst doc = $mol_dom_context.document\n\t\tif( !doc ) return null\n\n\t\tel = doc.createElement('style')\n\t\tel.id = `$mol_style_attach`\n\t\tdoc.head.appendChild( el )\n\n\t\ttimer = new $mol_after_tick( ()=> {\n\t\t\tel!.innerHTML = '\\n' + all.join( '\\n\\n' )\n\t\t\tall = []\n\t\t\tel = null\n\t\t\ttimer = null\n\t\t} )\n\n\t\treturn el\n\n\t}\n\n}\n","namespace $ {\n export enum $mol_keyboard_code {\n backspace = 8,\n tab = 9,\n enter = 13,\n shift= 16,\n ctrl = 17,\n alt = 18,\n pause = 19,\n capsLock = 20,\n escape = 27,\n space = 32,\n pageUp = 33,\n pageDown = 34,\n end = 35,\n home = 36,\n left = 37,\n up = 38,\n right = 39,\n down = 40,\n insert = 45,\n delete = 46,\n key0 = 48,\n key1 = 49,\n key2 = 50,\n key3 = 51,\n key4 = 52,\n key5 = 53,\n key6 = 54,\n key7 = 55,\n key8 = 56,\n key9 = 57,\n A = 65,\n B = 66,\n C = 67,\n D = 68,\n E = 69,\n F = 70,\n G = 71,\n H = 72,\n I = 73,\n J = 74,\n K = 75,\n L = 76,\n M = 77,\n N = 78,\n O = 79,\n P = 80,\n Q = 81,\n R = 82,\n S = 83,\n T = 84,\n U = 85,\n V = 86,\n W = 87,\n X = 88,\n Y = 89,\n Z = 90,\n metaLeft = 91,\n metaRight = 92,\n select = 93,\n numpad0 = 96,\n numpad1 = 97,\n numpad2 = 98,\n numpad3 = 99,\n numpad4 = 100,\n numpad5 = 101,\n numpad6 = 102,\n numpad7 = 103,\n numpad8 = 104,\n numpad9 = 105,\n multiply = 106,\n add = 107,\n subtract = 109,\n decimal = 110,\n divide = 111,\n F1 = 112,\n F2 = 113,\n F3 = 114,\n F4 = 115,\n F5 = 116,\n F6 = 117,\n F7 = 118,\n F8 = 119,\n F9 = 120,\n F10 = 121,\n F11 = 122,\n F12 = 123,\n numLock = 144,\n scrollLock = 145,\n semicolon = 186,\n equals = 187,\n comma = 188,\n dash = 189,\n period = 190,\n forwardSlash = 191,\n graveAccent = 192,\n bracketOpen = 219,\n slashBack = 220,\n slashBackLeft = 226,\n bracketClose = 221,\n quoteSingle = 222\n }\n}\n",null,"namespace $ { $mol_style_attach( \"mol/theme/theme.css\",\n \"[mol_theme] , :root {\\n\\tbackground-color: var(--mol_theme_back);\\n\\tcolor: var(--mol_theme_text);\\n\\tfill: var(--mol_theme_text);\\n}\\n\\n@media (prefers-color-scheme: light) {\\n\\t[mol_theme=\\\"$mol_theme_auto\\\"] {\\n\\t\\t--mol_theme_back: hsl( 210 , 50% , 99% );\\n\\t\\t--mol_theme_hover: rgba( 0 , 0 , 0 , .05 );\\n\\t\\t--mol_theme_current: hsl( 210 , 100% , 80% );\\n\\t\\t--mol_theme_text: rgba( 0 , 0 , 0 , .9 );\\n\\t\\t--mol_theme_control: hsla( 210 , 60% , 35% , 1 );\\n\\t\\t--mol_theme_shade: rgba( 0 , 0 , 0 , .5 );\\n\\t\\t--mol_theme_line: rgba( 220 , 220 , 220 , 1 );\\n\\t\\t--mol_theme_focus: hsla( 0 , 60% , 50% , 0.75 );\\n\\t\\t--mol_theme_field: white;\\n\\t}\\n}\\n\\n@media (prefers-color-scheme: dark) {\\n\\t[mol_theme=\\\"$mol_theme_auto\\\"] {\\n\\t\\t--mol_theme_back: hsl( 210 , 50% , 10% );\\n\\t\\t--mol_theme_hover: #333;\\n\\t\\t--mol_theme_current: hsl( 210 , 100% , 20% );\\n\\t\\t--mol_theme_text: rgba( 255 , 255 , 255 , .8 );\\n\\t\\t--mol_theme_control: hsla( 210 , 60% , 70% , 1 );\\n\\t\\t--mol_theme_shade: rgba( 255 , 255 , 255 , .5 );\\n\\t\\t--mol_theme_line: rgba( 50 , 50 , 50 , 1 );\\n\\t\\t--mol_theme_focus: rgba( 204 , 68 , 50 , .75 );\\n\\t\\t--mol_theme_field: black;\\n\\t}\\n}\\n\\n[mol_theme=\\\"$mol_theme_light\\\"] , :root {\\n\\t--mol_theme_back: hsl( 210 , 50% , 99% );\\n\\t--mol_theme_hover: rgba( 0 , 0 , 0 , .05 );\\n\\t--mol_theme_current: hsl( 210 , 100% , 80% );\\n\\t--mol_theme_text: rgba( 0 , 0 , 0 , .9 );\\n\\t--mol_theme_control: hsla( 210 , 60% , 35% , 1 );\\n\\t--mol_theme_shade: rgba( 0 , 0 , 0 , .5 );\\n\\t--mol_theme_line: rgba( 220 , 220 , 220 , 1 );\\n\\t--mol_theme_focus: hsla( 0 , 60% , 50% , 0.75 );\\n\\t--mol_theme_field: white;\\n}\\n\\n[mol_theme=\\\"$mol_theme_dark\\\"] {\\n\\t--mol_theme_back: hsl( 210 , 50% , 10% );\\n\\t--mol_theme_hover: #333;\\n\\t--mol_theme_current: hsl( 210 , 100% , 20% );\\n\\t--mol_theme_text: rgba( 255 , 255 , 255 , .8 );\\n\\t--mol_theme_control: hsla( 210 , 60% , 70% , 1 );\\n\\t--mol_theme_shade: rgba( 255 , 255 , 255 , .5 );\\n\\t--mol_theme_line: rgba( 50 , 50 , 50 , 1 );\\n\\t--mol_theme_focus: rgba( 204 , 68 , 50 , .75 );\\n\\t--mol_theme_field: black;\\n}\\n\\n[mol_theme=\\\"$mol_theme_base\\\"] {\\n\\t--mol_theme_back: hsla( 210 , 60% , 35% , 1 );\\n\\t--mol_theme_hover: rgba( 0 , 0 , 0 , .05 );\\n\\t--mol_theme_current: hsl( 210 , 100% , 20% );\\n\\t--mol_theme_text: white;\\n\\t--mol_theme_line: white;\\n\\t--mol_theme_control: white;\\n}\\n\\n[mol_theme=\\\"$mol_theme_accent\\\"] {\\n\\t--mol_theme_back: rgb(204, 68, 50);\\n\\t--mol_theme_hover: rgb(165, 56, 42);\\n\\t--mol_theme_text: white;\\n\\t--mol_theme_line: rgba( 50 , 50 , 50 , 1 );\\n\\t--mol_theme_control: white;\\n}\\n\"\n) }","namespace $ { $mol_style_attach( \"mol/skin/skin.css\",\n \":root {\\n\\t--mol_skin_font: 1rem/1.5 \\\"-apple-system\\\", BlinkMacSystemFont, \\\"Segoe UI\\\", Roboto, Helvetica, Arial, sans-serif;\\n\\t--mol_skin_font_monospace: Monaco, monospace;\\n}\\n\\n/* Deprecated, use mol_theme instead */\\n:root {\\n\\n\\t--mol_skin_outline: 0 0 0 1px var(--mol_theme_line);\\n\\t\\n\\t--mol_skin_base: #3a8ccb;\\n\\t--mol_skin_base_text: white;\\n\\t\\n\\t--mol_skin_current: var(--mol_skin_base);\\n\\t--mol_skin_current_text: white;\\n\\t--mol_skin_current_line: #1471b8;\\n\\t\\n\\t--mol_skin_button: var(--mol_skin_card);\\n\\t--mol_skin_hover: rgba( 0 , 0 , 0 , .05 );\\n\\t\\n\\t--mol_skin_round: 0px;\\n\\t\\n\\t--mol_skin_focus_line: rgba( 0 , 0 , 0 , .2 );\\n\\t--mol_skin_focus_outline: 0 0 0 1px var(--mol_skin_focus_line);\\n\\t\\n\\t--mol_skin_float: var(--mol_skin_focus_outline);\\n\\n\\t--mol_skin_passive: #eee;\\n\\t--mol_skin_passive_text: rgba( 0 , 0 , 0 , .5 );\\n\\t\\n\\t--mol_skin_light: #fcfcfc;\\n\\t--mol_skin_light_line: rgba( 230 , 230 , 230 , .75 );\\n\\t--mol_skin_light_text: rgba( 0 , 0 , 0 , .9 );\\n\\t--mol_skin_light_hover: #f7f7f7;\\n\\t--mol_skin_light_outline: 0 0 0 1px var(--mol_theme_line);\\n\\n\\t--mol_skin_card: var(--mol_theme_back);\\n\\t--mol_skin_card_text: var(--mol_theme_text);\\n\\t\\n\\t--mol_skin_accent: #dd0e3e;\\n\\t--mol_skin_accent_text: white;\\n\\t--mol_skin_accent_hover: #c50d37;\\n\\n\\t--mol_skin_warn: rgba( 255 , 50 , 50 , 0.75 );\\n\\t--mol_skin_warn_text: white;\\n\\t--mol_skin_warn_hover: color( var(--mol_skin_warn) lightness(-5%) );\\n\\n\\t--mol_skin_good: #96DAA9;\\n\\t--mol_skin_good_text: black;\\n\\n\\t--mol_skin_bad: #CC5252;\\n\\t--mol_skin_bad_text: white;\\n}\\n\"\n) }","namespace $ {\n\n\texport namespace $$ { let $ }\n\n\texport const $mol_object_field = Symbol( '$mol_object_field' )\n\t\n\texport class $mol_object extends $mol_object2 {\n\t\t\n\t\tpublic static make< Instance >( this : { new() : Instance } , config : Partial< Instance > ) : Instance {\n\t\t\treturn super.create( obj => {\n\t\t\t\tfor( let key in config ) ( obj as any )[ key ] = config[ key ]!\n\t\t\t} ) as any\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\n\texport class $mol_wrapper extends $mol_object2 {\n\n\t\tstatic wrap : ( task : ( ... ags : any[] )=> any )=> ( ... ags : any[] )=> any\n\t\t\n\t\tstatic run< Result >( task : ()=> Result ) : Result {\n\t\t\treturn this.func( task )()\n\t\t}\n\t\n\t\tstatic func< Args extends any[] , Result , Host = void >(\n\t\t\tfunc : ( this : Host , ... args : Args )=> Result\n\t\t) : ( this : Host , ... args : Args )=> Result {\n\t\t\treturn this.wrap( func )\n\t\t}\n\n\t\tstatic get class() {\n\n\t\t\treturn < Class extends new ( ... args : any[] )=> any >(\n\t\t\t\tClass : Class\n\t\t\t) => {\n\n\t\t\t\ttype Args = ConstructorParameters< Class >\n\t\t\t\ttype Result = InstanceType< Class >\n\n\t\t\t\tconst construct = ( target : new ( ... args : Args )=> Result , args : Args )=> new Class( ... args )\n\n\t\t\t\tconst handler = {\n\t\t\t\t\tconstruct : this.func( construct )\n\t\t\t\t}\n\n\t\t\t\thandler[ Symbol.toStringTag ] = Class.name + '#'\n\n\t\t\t\treturn new Proxy( Class , handler )\n\t\t\t\t\n\t\t\t}\n\n\t\t}\n\n\t\tstatic get method() {\n\t\t\t\n\t\t\treturn <\n\t\t\t\tHost ,\n\t\t\t\tField extends keyof Host ,\n\t\t\t\tArgs extends any[] ,\n\t\t\t\tResult ,\n\t\t\t>(\n\t\t\t\tobj : Host ,\n\t\t\t\tname : Field ,\n\t\t\t\tdescr : TypedPropertyDescriptor< ( this : Host , ... args : Args )=> Result >\n\t\t\t) => {\n\t\t\t\tdescr.value = this.func( descr.value! )\n\t\t\t\treturn descr\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\tstatic get field() {\n\t\t\t\n\t\t\treturn <\n\t\t\t\tHost ,\n\t\t\t\tField extends keyof Host ,\n\t\t\t\tArgs extends any[] ,\n\t\t\t\tResult ,\n\t\t\t>(\n\t\t\t\tobj : Host ,\n\t\t\t\tname : Field ,\n\t\t\t\tdescr : TypedPropertyDescriptor< Result >\n\t\t\t) => {\n\t\t\t\tdescr.get = descr.set = this.func( descr.get! )\n\t\t\t\treturn descr\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\n\t// https://docs.google.com/document/d/1FTascZXT9cxfetuPRT2eXPQKXui4nWFivUnS_335T3U/preview#\n\t$['devtoolsFormatters'] = $['devtoolsFormatters'] || []\n\n\texport function $mol_dev_format_register( config : {\n\t\theader : ( val : any , config : any )=> any\n\t\thasBody : ( val : any , config : any )=> false\n\t} | {\n\t\theader : ( val : any , config : any )=> any\n\t\thasBody : ( val : any , config : any )=> boolean\n\t\tbody : ( val : any , config : any )=> any\n\t} ) {\n\t\t$['devtoolsFormatters'].push( config )\n\t}\n\n\texport let $mol_dev_format_head = Symbol( '$mol_dev_format_head' )\n\texport let $mol_dev_format_body = Symbol( '$mol_dev_format_body' )\n\n\t$mol_dev_format_register({\n\n\t\theader : ( val : any , config = false ) => {\n\t\t\t\n\t\t\tif( config ) return null\n\n\t\t\tif( !val ) return null\n\t\t\t\n\t\t\tif( $mol_dev_format_head in val ) {\n\t\t\t\treturn val[ $mol_dev_format_head ]()\n\t\t\t}\n\n\t\t\treturn null\n\t\t\t\n\t\t} ,\n\t\t\n\t\thasBody : val => val[ $mol_dev_format_body ] ,\n\n\t\tbody : val => val[ $mol_dev_format_body ]() ,\n\n\t})\n\n\texport function $mol_dev_format_native( obj : any ) {\n\t\t\n\t\tif( typeof obj === 'undefined' ) return $mol_dev_format_shade( 'undefined' )\n\t\tif( typeof obj !== 'object' ) return obj\n\n\t\treturn [\n\t\t\t'object' ,\n\t\t\t{\n\t\t\t\tobject : obj ,\n\t\t\t\tconfig : true ,\n\t\t\t} ,\n\t\t]\n\n\t}\n\n\texport function $mol_dev_format_auto( obj : any ) {\n\t\t\n\t\tif( obj == null ) return $mol_dev_format_shade( String( obj ) )\n\n\t\tif( typeof obj === 'object' && $mol_dev_format_head in obj ) {\n\t\t\treturn obj[ $mol_dev_format_head ]()\n\t\t}\n\n\t\treturn [\n\t\t\t'object' ,\n\t\t\t{\n\t\t\t\tobject : obj ,\n\t\t\t\tconfig : false ,\n\t\t\t} ,\n\t\t]\n\n\t}\n\n\texport function $mol_dev_format_element( element : string , style : object , ...content : any[] ) {\n\t\t\t\n\t\tconst styles = [] as string[]\n\t\t\n\t\tfor( let key in style ) styles.push( `${ key } : ${ style[key] }` )\n\t\t\n\t\treturn [\n\t\t\telement ,\n\t\t\t{\n\t\t\t\tstyle : styles.join( ' ; ' ) ,\n\t\t\t} ,\n\t\t\t... content ,\n\t\t]\n\n\t}\n\n\texport function $mol_dev_format_span( style : object , ...content : any[] ) {\n\t\treturn $mol_dev_format_element(\n\t\t\t'span' ,\n\t\t\t{\n\t\t\t\t'vertical-align' : '8%',\n\t\t\t\t... style ,\n\t\t\t} ,\n\t\t\t... content ,\n\t\t)\n\t}\n\n\texport let $mol_dev_format_div = $mol_dev_format_element.bind( null , 'div' )\n\texport let $mol_dev_format_ol = $mol_dev_format_element.bind( null , 'ol' )\n\texport let $mol_dev_format_li = $mol_dev_format_element.bind( null , 'li' )\n\texport let $mol_dev_format_table = $mol_dev_format_element.bind( null , 'table' )\n\texport let $mol_dev_format_tr = $mol_dev_format_element.bind( null , 'tr' )\n\texport let $mol_dev_format_td = $mol_dev_format_element.bind( null , 'td' )\n\n\texport let $mol_dev_format_accent = $mol_dev_format_span.bind( null , {\n\t\t'color' : 'magenta' ,\n\t} )\n\n\texport let $mol_dev_format_strong = $mol_dev_format_span.bind( null , {\n\t\t'font-weight' : 'bold' ,\n\t} )\n\n\texport let $mol_dev_format_string = $mol_dev_format_span.bind( null , {\n\t\t'color' : 'green',\n\t} )\n\n\texport let $mol_dev_format_shade = $mol_dev_format_span.bind( null , {\n\t\t'color' : 'gray',\n\t} )\n\n\texport let $mol_dev_format_indent = $mol_dev_format_div.bind( null , {\n\t\t'margin-left': '13px'\n\t} )\n\n}\n","namespace $ {\n\t\n\texport function $mol_maybe< Value >( value : Value | null | undefined ) : Value[] {\n\t\treturn ( value == null ) ? [] : [ value ]\n\t}\n\t\n}\n","namespace $ {\n\n\texport function $mol_log( path : any , ... values : any[] ) {\n\t\t\n\t\tif( $mol_log_filter() == null ) return\n\t\t\n\t\tpath = String( path )\n\t\tif( path.indexOf( $mol_log_filter() ) === -1 ) return\n\t\t\n\t\tconst context = $mol_log_context()\n\t\tif( context ) context()\n\t\t\n\t\tconsole.debug( path , ... values )\n\n\t\tif( $mol_log_debug() == null ) return\n\t\tif( path.indexOf( $mol_log_debug() ) === -1 ) return\n\t\t\n\t\tdebugger\n\t}\n\t\n}\n","namespace $ {\n\n\texport function $mol_log_group< Task extends Function , This >( name : string , task : Task ) {\n\t\t\n\t\tconst filter = $mol_log_filter()\n\t\tif( filter == null ) return task\n\n\t\treturn function $mol_log_group_wrapper( this : This , ... args : any [] ) {\n\n\t\t\tlet started = false\n\t\t\tlet prev = $mol_log_context()\n\n\t\t\t$mol_log_context( ()=> {\n\t\t\t\tif( prev ) prev()\n\t\t\t\tstarted = true\n\n\t\t\t\tif( filter || prev ) console.group( name )\n\t\t\t\telse console.groupCollapsed( name )\n\n\t\t\t\t$mol_log_context( prev = null )\n\t\t\t} )\n\t\t\t\n\t\t\ttry {\n\t\t\t\treturn task.apply( this , args )\n\t\t\t} finally {\n\t\t\t\tif( started ) console.groupEnd()\n\t\t\t\t$mol_log_context( prev )\n\t\t\t}\n\n\t\t} as any as Task\n\n\t}\n\n}\n","namespace $ {\n\n\tlet context = null as null | ( ()=> void )\n\texport function $mol_log_context( next = context ) {\n\t\treturn context = next\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_log_debug( next? : string ) {\n\n\t\tif( next !== undefined ) {\n\t\t\tif( next == null ) {\n\t\t\t\tsessionStorage.removeItem( '$mol_log_debug()' )\n\t\t\t} else {\n\t\t\t\tsessionStorage.setItem( '$mol_log_debug()' , next )\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn sessionStorage.getItem( '$mol_log_debug()' )\n\t}\n\n}\n","namespace $ {\n\t\n\tlet filter = undefined as undefined | null | string\n\n\texport var $mol_log_filter = function $mol_log_filter( next? : null | string ) {\n\n\t\tif( next !== undefined ) {\n\t\t\tif( next == null ) {\n\t\t\t\tsessionStorage.removeItem( '$mol_log_filter()' )\n\t\t\t} else {\n\t\t\t\tsessionStorage.setItem( '$mol_log_filter()' , next )\n\t\t\t}\n\n\t\t\tfilter = next\n\t\t}\n\n\t\tif( filter !== undefined ) return filter\n\t\t\n\t\treturn filter = sessionStorage.getItem( '$mol_log_filter()' )\n\t}\n\n\tif( typeof sessionStorage === 'undefined' ) $mol_log_filter = ( next = null as null | string )=> filter = next\n\n\tif( $mol_log_filter() == null ) console.info( 'Use $mol_log_filter( needle : string|null ) to toggle logs' )\n\t\n}\n","namespace $ {\n\n\texport class $mol_log2 extends $mol_wrapper {\n\n\t\tstatic current = null as null | $mol_log2\n\n\t\tstatic wrap< This extends { $ : $mol_ambient_context } , Args extends any[] , Result >( task : ( this : This , ... args : Args )=> Result ) {\n\n\t\t\tconst Inner = this\n\n\t\t\tconst wrapped = function( this : This , ... args : Args ) {\n\t\t\t\t\n\t\t\t\tconst outer = $mol_log2.current\n\t\t\t\tconst inner = $mol_log2.current = new Inner( this , task.name , args )\n\t\t\t\t\n\t\t\t\ttry {\n\t\t\t\t\treturn task.call( this , ... args )\n\t\t\t\t} finally {\n\t\t\t\t\t$mol_log2.current = outer\n\t\t\t\t\tinner.flush()\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn wrapped\n\t\t}\n\n\t\tconstructor(\n\t\t\treadonly host : any ,\n\t\t\treadonly id : string ,\n\t\t\treadonly args : any[] ,\n\t\t) {\n\t\t\tsuper()\n\t\t\tthis[ Symbol.toStringTag ] = host ? `${ host }.${ id }` : id\n\t\t}\n\n\t\tstream = [] as $mol_log2_line[]\n\t\t\n\t\tflush() {\n\t\t\tif( this.stream.length === 0 ) return\n\t\t\tconsole.debug( this )\n\t\t}\n\n\t\tinfo( ... values : any[] ) {\n\t\t\tthis.stream.push( new $mol_log2_line( ... $mol_log2.prefix , ... values ) )\n\t\t}\n\n\t\t[ $mol_dev_format_head ]() {\n\t\t\treturn $mol_dev_format_span( {} ,\n\t\t\t\t... $mol_maybe( this.host ).map( $mol_dev_format_auto ) ,\n\t\t\t\t'.' ,\n\t\t\t\t$mol_dev_format_strong( this.id ) ,\n\t\t\t\t'(',\n\t\t\t\t... this.args.map( $mol_dev_format_auto ) ,\n\t\t\t\t') ' ,\n\t\t\t\t$mol_dev_format_auto( this.stream ) ,\n\t\t\t)\n\t\t}\n\n\t\tstatic info( ... values : any[] ) {\n\t\t\t\n\t\t\tconst excludes = $mol_log2.excludes\n\t\t\tif( !excludes ) return\n\t\t\t\n\t\t\tconst skip = excludes.some( ( regexp , index )=> {\n\t\t\t\treturn regexp && regexp.test( String( values[ index ] ) ) || false\n\t\t\t} )\n\n\t\t\tif( skip ) return\n\t\t\t\n\t\t\tif( !$mol_log2.current ) {\n\t\t\t\tconsole.warn( new Error( `$mol_log.current is not defined. Wrap entry point to $mol_log!` ) )\n\t\t\t\t$mol_log2.current = new $mol_log2( null , '$mol_log2_default' , [] )\n\t\t\t\tconsole.debug( $mol_log2.current )\n\t\t\t}\n\n\t\t\t$mol_log2.current.info( ... values )\n\n\t\t}\n\n\t\t/**\n\t\t * Enable all logs\n\t\t * \n\t\t * \t$mol_log2.excludes = []\n\t\t * \n\t\t * Exclude all atom logs:\n\t\t * \n\t\t * \t$mol_log2.excludes = [ , /˸|🠈|⏭|⏯|►|💤|☍|☌|✓|✔|✘|🕱|�/ ]\n\t\t * \n\t\t * Disable logs:\n\t\t * \n\t\t * \t$mol_log2.excludes = null\n\t\t */\n\t\tstatic excludes = null as any as null | ( undefined | RegExp )[]\n\n\t\tstatic prefix = [] as any[]\n\n\t}\n\n\texport class $mol_log2_indent extends $mol_wrapper {\n\n\t\tstatic wrap< This extends { $ : $mol_ambient_context } , Args extends any[] , Result >( task : ( this : This , ... args : Args )=> Result ) {\n\n\t\t\tconst Inner = this\n\n\t\t\tconst wrapped = function( this : This , ... args : Args ) {\n\t\t\t\ttry {\n\t\t\t\t\t$mol_log2.prefix.push( $mol_log2_token_indent )\n\t\t\t\t\treturn task.call( this , ... args )\n\t\t\t\t} finally {\n\t\t\t\t\t$mol_log2.prefix.pop()\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn wrapped\n\t\t}\n\n\t}\n\t\n\texport class $mol_log2_table extends $mol_log2 {\n\n\t\t[ $mol_dev_format_head ]() {\n\t\t\treturn $mol_dev_format_span( {} ,\n\t\t\t\t$mol_dev_format_strong( `${this}(` ) ,\n\t\t\t\t... this.args.map( $mol_dev_format_auto ) ,\n\t\t\t\t$mol_dev_format_strong( `) ` ) ,\n\t\t\t)\n\t\t}\n\n\t\t[ $mol_dev_format_body ]() {\n\t\t\treturn $mol_dev_format_table( {} , ...this.stream.map( $mol_dev_format_auto ) )\n\t\t}\n\n\t}\n\n\texport class $mol_log2_hidden extends $mol_log2 {\n\n\t\tflush() {}\n\n\t}\n\n\texport class $mol_log2_line extends Array {\n\n\t\tconstructor( ... items : any[] ) {\n\t\t\tsuper( ... items )\n\t\t}\n\n\t\t[ $mol_dev_format_head ]() {\n\t\t\treturn $mol_dev_format_tr( {} ,\n\t\t\t\t... this.map( item => $mol_dev_format_td( {} ,\n\t\t\t\t\t$mol_dev_format_auto( item )\n\t\t\t\t) )\n\t\t\t)\n\t\t}\n\n\t}\n\n\texport class $mol_log2_token extends Array {\n\n\t\tconstructor( ... items : any[] ) {\n\t\t\tsuper( ... items )\n\t\t}\n\n\t\t[ $mol_dev_format_head ]() {\n\t\t\treturn $mol_dev_format_accent( ... this )\n\t\t}\n\n\t}\n\n\texport let $mol_log2_token_empty = new $mol_log2_token( '' )\n\texport let $mol_log2_token_indent = new $mol_log2_token( '\\t' )\n\n\texport let $mol_log2_legend = new $mol_log2_table( null , '$mol_log2_legend' , [] )\n\n\tif( !$mol_log2.excludes ) $mol_log2_legend.info( $mol_log2_token_empty , 'Use `$mol_log2.excludes : null | RegExp[]` to toggle logs' )\n\n}\n","namespace $ {\n\n\tconsole.debug( $mol_log2_legend )\n\t\n}\n","namespace $ {\n\n\texport class $mol_after_frame extends $mol_object2 {\n\n\t\tid : any\n\n\t\tconstructor(\n\t\t\tpublic task : ()=> void ,\n\t\t) {\n\t\t\tsuper()\n\t\t\tthis.id = requestAnimationFrame( task )\n\t\t}\n\n\t\tdestructor() {\n\t\t\tcancelAnimationFrame( this.id )\n\t\t}\n\n\t}\n\t\n}\n","namespace $ {\n\n\texport function $mol_compare_any( a : any , b : any ) {\n\t\t\n\t\tif( a === b ) return true\n\t\t\n\t\tif( !Number.isNaN( a ) ) return false\n\t\tif( !Number.isNaN( b ) ) return false\n\n\t\treturn true\n\t}\n\n}\n","namespace $ {\n\n\tconst cache = new WeakMap< any , boolean >()\n\n\texport const $mol_conform_stack = [] as any[]\n\n\texport function $mol_conform< Target , Source >( target : Target , source : Source ) : Target {\n\n\t\tif( $mol_compare_any( target , source ) ) return source as any\n\n\t\tif( !target || typeof target !== 'object' ) return target\n\t\tif( !source || typeof source !== 'object' ) return target\n\n\t\tif( target instanceof Error ) return target\n\t\tif( source instanceof Error ) return target\n\t\t\n\t\tif( target['constructor'] !== source['constructor'] ) return target\n\n\t\tif( cache.get( target ) ) return target\n\t\tcache.set( target , true )\n\t\t\n\t\tconst conform = $mol_conform_handlers.get( target['constructor'] )\n\t\tif( !conform ) return target\n\n\t\tif( $mol_conform_stack.indexOf( target ) !== -1 ) return target\n\n\t\t$mol_conform_stack.push( target )\n\n\t\ttry { return conform( target , source ) }\n\t\tfinally { $mol_conform_stack.pop() }\n\n\t}\n\n\texport const $mol_conform_handlers = new WeakMap< Object , ( target : any , source : any )=> any >()\n\n\texport function $mol_conform_handler< Class >(\n\t\tcl : { new( ... args : any[] ) : Class } ,\n\t\thandler : ( target : Class , source : Class )=> Class ,\n\t) {\n\t\t$mol_conform_handlers.set( cl , handler )\n\t}\n\n\tfunction $mol_conform_array<\n\t\tValue ,\n\t\tList extends {\n\t\t\t[ index : number ] : Value\n\t\t\tlength : number\n\t\t} ,\n\t>( target : List , source : List ) {\n\t\t\n\t\tif( source.length !== target.length ) return target\n\t\t\n\t\tfor( let i = 0 ; i < target.length ; ++i ) {\n\t\t\tif( !$mol_compare_any( source[i] , target[i] ) ) return target\n\t\t}\n\n\t\treturn source\n\t}\n\n\t$mol_conform_handler( Array , $mol_conform_array )\n\t$mol_conform_handler( Uint8Array , $mol_conform_array )\n\t$mol_conform_handler( Uint16Array , $mol_conform_array )\n\t$mol_conform_handler( Uint32Array , $mol_conform_array )\n\n\t$mol_conform_handler( Object , ( target , source )=> {\n\n\t\tlet count = 0\n\t\tlet equal = true\n\n\t\tfor( let key in target ) {\n\n\t\t\tconst conformed = $mol_conform( target[key] , source[key] )\n\t\t\t\n\t\t\tif( conformed !== target[key] ) {\n\t\t\t\ttry { target[key] = conformed } catch( error ) {}\n\t\t\t\tif( !$mol_compare_any( conformed , target[key] ) ) equal = false\n\t\t\t}\n\t\t\t\n\t\t\tif( !$mol_compare_any( conformed , source[key] ) ) equal = false\n\t\t\t\n\t\t\t++ count\n\t\t}\n\n\t\tfor( let key in source ) if( -- count < 0 ) break\n\n\t\treturn ( equal && count === 0 ) ? source : target\n\t} )\n\n\t$mol_conform_handler( Date , ( target , source )=> {\n\t\tif( target.getTime() === source.getTime() ) return source\n\t\treturn target \n\t} )\n\n\t$mol_conform_handler( RegExp , ( target , source )=> {\n\t\tif( target.toString() === source.toString() ) return source\n\t\treturn target\n\t} )\n\n}\n","namespace $ {\n\n\texport function $mol_array_trim< Item >( array : Item[] ) {\n\n\t\tlet last = array.length\n\t\twhile( last > 0 ) {\n\t\t\t\n\t\t\t-- last\n\t\t\tconst value = array[ last ]\n\t\t\t\n\t\t\tif( value === undefined ) array.pop()\n\t\t\telse break\n\t\t}\n\n\t\treturn array\n\t}\n\n}\n","namespace $ {\n\n\texport const enum $mol_fiber_status {\n\t\tpersist = -3 , // 🗹\n\t\tactual = -2 , // ✔\n\t\tdoubt = -1 , // �\n\t\tobsolete = 0 , // ✘\n\t}\n\n\texport function $mol_fiber_defer< Value = void >( calculate : ()=> Value ) {\n\t\t\n\t\tconst fiber = new $mol_fiber\n\t\t\n\t\tfiber.calculate = calculate\n\t\tfiber[ Symbol.toStringTag ] = calculate.name\n\t\t\n\t\tfiber.schedule()\n\t\t\n\t\treturn fiber\n\t}\n\n\texport function $mol_fiber_func<\n\t\tThis ,\n\t\tArgs extends any[] ,\n\t\tResult ,\n\t>( calculate : ( this : This , ... args : Args )=> Result ) {\n\t\tconsole.warn( '$mol_fiber_func is deprecated. Use $mol_fiber.func instead.' )\n\t\treturn $mol_fiber.func( calculate )\n\t}\n\n\texport function $mol_fiber_root<\n\t\tCalculate extends ( this : This , ... args : any[] )=> Result ,\n\t\tResult = void ,\n\t\tThis = void ,\n\t>( calculate : Calculate ) {\n\t\t\n\t\tconst wrapper = function( ... args : any[] ) {\n\t\t\tconst fiber = new $mol_fiber< Result >()\n\t\t\tfiber.calculate = calculate.bind( this , ... args )\n\t\t\treturn fiber.wake()\n\t\t} as Calculate\n\t\t\n\t\twrapper[ Symbol.toStringTag ] = calculate.name\n\t\t\n\t\treturn wrapper\n\t}\n\n\texport function $mol_fiber_method< Host , Value >(\n\t\tobj : Host ,\n\t\tname : keyof Host ,\n\t\tdescr : TypedPropertyDescriptor< ( this : Host , ... args : any[] )=> Value >\n\t) {\n\t\tconsole.warn( '$mol_fiber_method is deprecated. Use $mol_fiber.method instead.' )\n\t\treturn $mol_fiber.method( obj , name , descr )\n\t}\n\n\texport function $mol_fiber_async< Args extends any[] , Value >( task : ( ... args : Args )=> Value ) {\n\n\t\treturn ( ... args : Args )=> new Promise< Value >( $mol_fiber_root( ( done , fail )=> {\n\n\t\t\ttry {\n\n\t\t\t\tdone( task( ... args ) )\n\n\t\t\t} catch( error ) {\n\n\t\t\t\tif( 'then' in error ) return $mol_fail_hidden( error )\n\n\t\t\t\tfail( error )\n\n\t\t\t}\n\n\t\t} ) )\n\n\t}\n\n\texport function $mol_fiber_sync< Args extends any[] , Value = void , This = void >(\n\t\trequest : ( this : This , ... args : Args )=> PromiseLike< Value >\n\t) : ( ... args : Args )=> Value {\n\n\t\treturn function $mol_fiber_sync_wrapper( this : This , ... args : Args ) {\n\n\t\t\tconst slave = $mol_fiber.current\n\n\t\t\tlet master = slave && slave.master\n\t\t\tif( !master || master.constructor !== $mol_fiber ) {\n\t\t\t\tmaster = new $mol_fiber\n\t\t\t\tmaster.cursor = $mol_fiber_status.persist\n\t\t\t\tmaster.error = ( request.call( this , ... args ) as PromiseLike< Value > ).then(\n\t\t\t\t\t$mol_log2.func( master!.push ).bind( master! ) ,\n\t\t\t\t\t$mol_log2.func( master!.fail ).bind( master! ) ,\n\t\t\t\t)\n\t\t\t\tconst prefix = slave ? `${ slave }/${ slave.cursor / 2 }:` : '/'\n\t\t\t\tmaster[ Symbol.toStringTag ] = prefix + ( request.name || $mol_fiber_sync.name )\n\t\t\t}\n\n\t\t\treturn master.get()\n\n\t\t}\n\n\t}\n\n\texport async function $mol_fiber_warp() {\n\t\tconst deadline = $mol_fiber.deadline\n\t\ttry {\n\t\t\t$mol_fiber.deadline = Number.POSITIVE_INFINITY\n\t\t\twhile( $mol_fiber.queue.length ) await $mol_fiber.tick()\n\t\t\treturn Promise.resolve()\n\t\t} finally {\n\t\t\t$mol_fiber.deadline = deadline\n\t\t}\n\t}\n\n\texport function $mol_fiber_fence( func : ()=> any ) {\n\t\tconst prev = $mol_fiber.current\n\t\ttry {\n\t\t\t$mol_fiber.current = null\n\t\t\treturn func()\n\t\t} finally {\n\t\t\t$mol_fiber.current = prev\n\t\t}\n\t}\n\n\texport function $mol_fiber_unlimit< Result >( task : ()=> Result ) {\n\t\t\n\t\tconst deadline = $mol_fiber.deadline\n\t\t\n\t\ttry {\n\n\t\t\t$mol_fiber.deadline = Number.POSITIVE_INFINITY\n\t\t\t\n\t\t\treturn task()\n\n\t\t} finally {\n\n\t\t\t$mol_fiber.deadline = deadline\n\n\t\t}\n\n\t}\n\n\texport class $mol_fiber_solid extends $mol_wrapper {\n\n\t\tstatic func< This , Args extends any[] , Result >( task : ( this : This , ... args : Args )=> Result ) {\n\n\t\t\tfunction wrapped( this : This , ... args : Args ) {\n\n\t\t\t\tconst deadline = $mol_fiber.deadline\n\n\t\t\t\ttry {\n\n\t\t\t\t\t$mol_fiber.deadline = Number.POSITIVE_INFINITY\n\t\t\t\t\t\n\t\t\t\t\treturn task.call( this , ... args ) as Result\n\n\t\t\t\t} catch( error ) {\n\n\t\t\t\t\tif( 'then' in error ) $mol_fail( new Error( 'Solid fiber can not be suspended.' ) )\n\t\t\t\t\treturn $mol_fail_hidden( error )\n\n\t\t\t\t} finally {\n\n\t\t\t\t\t$mol_fiber.deadline = deadline\n\n\t\t\t\t}\n\t\t\n\t\t\t}\n\n\t\t\treturn $mol_fiber.func( wrapped )\n\n\t\t}\n\n\t}\n\n\texport class $mol_fiber< Value = any > extends $mol_wrapper {\n\n\t\tstatic wrap< Func extends ( ... args : any[] )=> any >( task : Func ) {\n\t\t\t\n\t\t\treturn function $mol_fiber_wrapper( this : ThisParameterType< Func > , ... args : Parameters< Func > ) {\n\n\t\t\t\tconst slave = $mol_fiber.current\n\n\t\t\t\tlet master = slave && slave.master\n\t\t\t\tif( !master || master.constructor !== $mol_fiber ) {\n\t\t\t\t\tmaster = new $mol_fiber\n\t\t\t\t\tmaster.calculate = task.bind( this , ... args )\n\t\t\t\t\tconst prefix = slave ? `${ slave }/${ slave.cursor / 2 }:` : '/'\n\t\t\t\t\tmaster[ Symbol.toStringTag ] = `${ prefix }${ task.name }`\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn master.get()\n\n\t\t\t}\n\n\t\t}\n\n\t\tstatic quant = 16\n\t\tstatic deadline = 0\n\t\tstatic liveline = 0\n\n\t\tstatic current = null as null | $mol_fiber\n\t\t\n\t\tstatic scheduled = null as null | $mol_after_frame\n\t\tstatic queue = [] as ( ()=> PromiseLike< any > )[]\n\t\t\n\t\tstatic async tick() {\n\t\n\t\t\twhile( $mol_fiber.queue.length > 0 ) {\n\n\t\t\t\tconst now = Date.now()\n\n\t\t\t\tif( now >= $mol_fiber.deadline ) {\n\t\t\t\t\t$mol_fiber.schedule()\n\t\t\t\t\t$mol_fiber.liveline = now\n\t\t\t\t\treturn \n\t\t\t\t}\n\n\t\t\t\tconst task = $mol_fiber.queue.shift()!\n\t\t\t\tawait task()\n\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\tstatic schedule() {\n\n\t\t\tif( !$mol_fiber.scheduled ) {\n\n\t\t\t\t$mol_fiber.scheduled = new $mol_after_frame( async ()=> {\n\t\t\t\t\t\n\t\t\t\t\tconst now = Date.now()\n\t\t\t\t\tlet quant = $mol_fiber.quant\n\t\t\t\t\t\n\t\t\t\t\tif( $mol_fiber.liveline ) {\n\t\t\t\t\t\tquant = Math.max( quant , Math.floor( ( now - $mol_fiber.liveline ) / 2 ) )\n\t\t\t\t\t\t$mol_fiber.liveline = 0\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t$mol_fiber.deadline = now + quant\n\t\t\t\t\t$mol_fiber.scheduled = null\n\t\t\t\t\t\n\t\t\t\t\tawait $mol_fiber.tick()\n\n\t\t\t\t} )\n\n\t\t\t}\n\n\t\t\tconst promise : Promise< any > = new this.$.Promise( done => this.queue.push( ()=> ( done() , promise ) ) )\n\t\t\treturn promise\n\n\t\t}\n\n\t\tvalue = undefined as unknown as Value\n\t\terror = null as null | Error | PromiseLike< Value >\n\t\tcursor = $mol_fiber_status.obsolete\n\t\tmasters = [] as ( $mol_fiber | number | undefined )[]\n\t\tcalculate! : ()=> Value\n\t\t\n\t\tschedule() {\n\t\t\t$mol_fiber.schedule().then( ()=> this.wake() )\n\t\t}\n\n\t\t@ $mol_log2.method\n\t\twake() {\n\t\t\ttry {\n\t\t\t\tif( this.cursor > $mol_fiber_status.actual ) return this.get()\n\t\t\t} catch( error ) {\n\t\t\t\tif( 'then' in error ) return\n\t\t\t\t$mol_fail_hidden( error )\n\t\t\t}\n\t\t}\n\n\t\tpush( value : Value ) {\n\t\t\t\n\t\t\tvalue = this.$.$mol_conform( value , this.value )\n\t\t\t\n\t\t\tif( this.error || !Object.is( this.value , value ) ) {\n\t\t\n\t\t\t\tthis.$.$mol_log2.info( this , $mol_fiber_token_changed1 , value , $mol_fiber_token_changed2 , this.error || this.value )\n\t\t\t\t\n\t\t\t\tthis.obsolete_slaves()\n\t\t\t\t\n\t\t\t\tthis.forget()\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\tthis.$.$mol_log2.info( this , $mol_fiber_token_actualized , value )\n\t\t\t}\n\t\t\t\n\t\t\tthis.error = null\n\t\t\tthis.value = value\n\t\t\t\n\t\t\tthis.complete()\n\n\t\t\treturn value\n\t\t}\n\n\t\tfail( error : Error | PromiseLike< Value > ) : Error | PromiseLike< Value > {\n\t\t\t\n\t\t\tthis.complete()\t\n\t\t\t\n\t\t\tthis.$.$mol_log2.info( this , $mol_fiber_token_failed , error )\n\t\t\t\n\t\t\tthis.error = error\n\n\t\t\tthis.obsolete_slaves()\n\n\t\t\treturn error\n\t\t}\n\n\t\twait( promise : PromiseLike< Value > ) : PromiseLike< Value > {\n\t\t\tthis.error = promise\n\t\t\tthis.$.$mol_log2.info( this , $mol_fiber_token_sleeped , promise )\n\t\t\tthis.cursor = $mol_fiber_status.obsolete\n\t\t\treturn promise\n\t\t}\n\n\t\tcomplete() {\n\n\t\t\tif( this.cursor <= $mol_fiber_status.actual ) return\n\n\t\t\tfor( let index = 0 ; index < this.masters.length ; index += 2 ) {\n\t\t\t\tthis.complete_master( index )\n\t\t\t}\n\t\t\t\n\t\t\tthis.cursor = $mol_fiber_status.actual\n\t\t}\n\t\t\n\t\tcomplete_master( master_index : number ) {\n\t\t\tthis.disobey( master_index )\n\t\t}\n\n\t\tpull() {\n\t\t\tthis.push( this.calculate() )\n\t\t}\n\n\t\t@ $mol_log2_indent.method\n\t\tupdate() {\n\n\t\t\tconst slave = $mol_fiber.current\n\t\t\t\n\t\t\ttry {\n\t\t\t\t\t\n\t\t\t\t// this.limit()\n\t\t\t\t\n\t\t\t\t$mol_fiber.current = this\n\n\t\t\t\tthis.$.$mol_log2.info( this , $mol_fiber_token_runned )\n\n\t\t\t\tthis.pull()\n\n\t\t\t} catch( error ) {\n\n\t\t\t\tif( 'then' in error ) {\n\t\t\t\t\t\n\t\t\t\t\tif( !slave ) {\n\t\t\t\t\t\tconst listener = ()=> this.wake()\n\t\t\t\t\t\terror = error.then( listener , listener )\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.wait( error )\n\n\t\t\t\t} else {\n\t\t\t\t\tthis.fail( error )\n\t\t\t\t}\n\n\t\t\t} finally {\n\t\t\t\t$mol_fiber.current = slave\n\t\t\t}\n\n\t\t}\n\n\t\tget() {\n\n\t\t\tif( this.cursor > $mol_fiber_status.obsolete ) {\n\t\t\t\tthis.$.$mol_fail( new Error( `Cyclic dependency at ${ this }` ) )\n\t\t\t}\n\t\t\t\n\t\t\tconst slave = $mol_fiber.current\n\t\t\tif( slave ) slave.master = this\n\t\t\t\n\t\t\tif( this.cursor > $mol_fiber_status.actual ) this.update()\n\n\t\t\tif( this.error ) return this.$.$mol_fail_hidden( this.error )\n\t\t\t\n\t\t\treturn this.value\n\n\t\t}\n\n\t\tlimit() {\n\n\t\t\tif( !$mol_fiber.deadline ) return\n\t\t\tif( !$mol_fiber.current ) return\n\n\t\t\tif( Date.now() < $mol_fiber.deadline ) return\n\n\t\t\tthis.$.$mol_fail_hidden( $mol_fiber.schedule() )\n\t\t}\n\n\t\tget master() {\n\t\t\treturn this.masters[ this.cursor ] as $mol_fiber\n\t\t}\n\t\tset master( next : $mol_fiber ) {\n\n\t\t\tif( this.cursor === $mol_fiber_status.doubt ) return\n\t\t\t\n\t\t\tconst cursor = this.cursor\n\t\t\tconst prev = this.masters[ this.cursor ]\n\t\t\t\n\t\t\tif( prev !== next ) {\n\t\t\t\tif( prev ) this.rescue( prev as $mol_fiber , cursor )\n\t\t\t\tthis.masters[ cursor ] = next\n\t\t\t\tthis.masters[ cursor + 1 ] = this.obey( next , cursor )\n\t\t\t}\n\t\t\t\n\t\t\tthis.cursor = cursor + 2\n\t\t}\n\n\t\trescue( master : $mol_fiber , master_index : number ) {}\n\n\t\tobey( master : $mol_fiber , master_index : number ) { return -1 }\n\t\tlead( slave : $mol_fiber , master_index : number ) { return -1 }\n\n\t\tdislead( slave_index : number ) {\n\t\t\tthis.destructor()\n\t\t}\n\n\t\tdisobey( master_index : number ) {\n\t\t\t\n\t\t\tconst master = this.masters[ master_index ] as $mol_fiber\n\t\t\tif( !master ) return\n\n\t\t\tmaster.dislead( this.masters[ master_index + 1 ] as number )\n\t\t\t\n\t\t\tthis.masters[ master_index ] = undefined\n\t\t\tthis.masters[ master_index + 1 ] = undefined\n\n\t\t\tthis.$.$mol_array_trim( this.masters )\n\n\t\t}\n\n\t\tobsolete_slaves() { }\n\n\t\tobsolete( master_index : number ) { }\n\n\t\tforget() {\n\t\t\tthis.value = undefined as unknown as Value\n\t\t}\n\n\t\tabort() {\n\t\t\tthis.forget()\n\t\t\treturn true\n\t\t}\n\n\t\tdestructor() {\n\t\t\tif( !this.abort() ) return\n\t\t\t\n\t\t\tthis.$.$mol_log2.info( this , $mol_fiber_token_destructed )\n\t\t\tthis.complete()\n\t\t}\n\n\t\t[ $mol_dev_format_head ]() {\n\t\t\treturn $mol_dev_format_native( this )\n\t\t}\n\n\t}\n\n\texport let $mol_fiber_token_runned = new $mol_log2_token( ' ► ' )\n\texport let $mol_fiber_token_changed1 = new $mol_log2_token( ' ˸ ' )\n\texport let $mol_fiber_token_changed2 = new $mol_log2_token( ' 🠈 ' )\n\texport let $mol_fiber_token_actualized = new $mol_log2_token( ' ✓ ' )\n\texport let $mol_fiber_token_sleeped = new $mol_log2_token( ' 💤 ' )\n\texport let $mol_fiber_token_failed = new $mol_log2_token( ' 🔥 ' )\n\texport let $mol_fiber_token_destructed = new $mol_log2_token( ' 🕱 ' )\n\n\t$mol_log2_legend.info( $mol_fiber_token_runned , '$mol_fiber starts execution' )\n\t$mol_log2_legend.info( new $mol_log2_line( $mol_fiber_token_changed1 , $mol_fiber_token_changed2 ) , '$mol_fiber value is changed to different value' )\n\t$mol_log2_legend.info( $mol_fiber_token_actualized , 'Actual $mol_fiber value is same as before' )\n\t$mol_log2_legend.info( $mol_fiber_token_sleeped , '$mol_fiber can not run now and awaits on promise' )\n\t$mol_log2_legend.info( $mol_fiber_token_failed , '$mol_fiber is failed and will be throw an Error or Promise' )\n\t$mol_log2_legend.info( $mol_fiber_token_destructed , '$mol_fiber fully destructed' )\n\n}\n","namespace $ {\n\n\texport function $mol_atom2_value< Value >( task : ()=> Value ) : Value | undefined {\n\t\tconst cached = $mol_atom2.cached\n\t\ttry {\n\t\t\t$mol_atom2.cached = true\n\t\t\treturn task()\n\t\t} finally {\n\t\t\t$mol_atom2.cached = cached\n\t\t}\n\t}\n\n\texport class $mol_atom2< Value = any > extends $mol_fiber< Value > {\n\n\t\tstatic get current() {\n\t\t\tconst atom = $mol_fiber.current\n\t\t\tif( atom instanceof $mol_atom2 ) return atom\n\t\t\treturn null\n\t\t}\n\n\t\tstatic cached = false\n\n\t\tstatic reap_task = null as null | $mol_fiber\n\t\tstatic reap_queue = [] as $mol_atom2[]\n\n\t\tstatic reap( atom : $mol_atom2 ) {\n\n\t\t\tthis.reap_queue.push( atom )\n\n\t\t\tif( this.reap_task ) return\n\n\t\t\tthis.reap_task = $mol_fiber_defer( ()=> {\n\t\t\t\tthis.reap_task = null\n\t\t\t\t\n\t\t\t\twhile( true ) {\n\t\t\t\t\t\n\t\t\t\t\tconst atom = this.reap_queue.pop()\n\t\t\t\t\tif( !atom ) break\n\t\t\t\t\t\n\t\t\t\t\tif( !atom.alone ) continue\n\t\t\t\t\t\n\t\t\t\t\tatom.destructor()\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} )\n\n\t\t}\n\n\t\tslaves = [] as ( $mol_fiber | number | undefined )[]\n\t\t\n\t\trescue( master : $mol_atom2 , cursor : number ) {\n\n\t\t\tif(!( master instanceof $mol_atom2 )) return\n\t\t\t\n\t\t\tconst master_index = this.masters.length\n\t\t\tconst slave_index = this.masters[ cursor + 1 ] as number + 1\n\t\t\t\n\t\t\tmaster.slaves[ slave_index ] = master_index\n\t\t\tthis.masters.push( master , this.masters[ cursor + 1 ] )\n\t\t\t\n\t\t}\n\n\t\tget() {\n\t\t\tif( $mol_atom2.cached ) return this.value\n\t\t\t\n\t\t\tconst value = super.get()\n\t\t\tif( value === undefined ) $mol_fail( new Error( `Not defined: ${ this }` ) )\n\t\t\t\n\t\t\treturn value\n\t\t}\n\n\t\tpull() {\n\t\t\t\n\t\t\tif( this.cursor === $mol_fiber_status.obsolete ) return super.pull()\n\n\t\t\tthis.$.$mol_log2.info( this , $mol_atom2_token_revalidation )\n\t\t\t\n\t\t\tconst masters = this.masters\n\n\t\t\tfor( let index = 0 ; index < masters.length ; index += 2 ) {\n\n\t\t\t\tconst master = masters[ index ] as $mol_atom2\n\t\t\t\tif( !master ) continue\n\n\t\t\t\ttry {\n\t\t\t\t\tmaster.get()\n\t\t\t\t} catch( error ) {\n\t\t\t\t\tif( 'then' in error ) $mol_fail_hidden( error )\n\t\t\t\t\tthis.cursor = $mol_fiber_status.obsolete\n\t\t\t\t}\n\n\t\t\t\tif( this.cursor as $mol_fiber_status !== $mol_fiber_status.obsolete ) continue\n\n\t\t\t\tthis.$.$mol_log2.info( this , $mol_atom2_token_stumbled , this._error || this._value )\n\t\t\t\treturn super.pull()\n\t\t\t}\n\n\t\t\tthis.$.$mol_log2.info( this , $mol_atom2_token_revalidated , this._error || this._value )\n\t\t\tthis.cursor = $mol_fiber_status.actual\n\n\t\t}\n\t\t\n\t\t_value = undefined as unknown as Value\n\t\tget value() { return this._value }\n\t\tset value( next : Value ) {\n\n\t\t\tconst prev = this._value\n\n\t\t\tif( prev && this.$.$mol_owning_check( this , prev ) ) prev.destructor()\n\n\t\t\tif( next && this.$.$mol_owning_catch( this , next ) ) {\n\t\t\t\tnext[ Symbol.toStringTag ] = this[ Symbol.toStringTag ]\n\t\t\t\tnext[ $mol_object_field ] = this[ $mol_object_field ]\n\t\t\t}\n\n\t\t\tthis._value = next\n\t\t}\n\n\t\t_error = null as null | Error | PromiseLike< Value >\n\t\tget error() { return this._error }\n\t\tset error( next : null | Error | PromiseLike< Value > ) {\n\n\t\t\tconst prev = this._error\n\n\t\t\tif( prev && this.$.$mol_owning_check( this , prev ) ) prev.destructor()\n\n\t\t\tif( next && this.$.$mol_owning_catch( this , next ) ) {\n\t\t\t\tnext[ Symbol.toStringTag ] = this[ Symbol.toStringTag ]\n\t\t\t\tnext[ $mol_object_field ] = this[ $mol_object_field ]\n\t\t\t}\n\n\t\t\tthis._error = next\n\t\t}\n\n\t\tput( next : Value ) {\n\t\t\tthis.cursor = this.masters.length\n\t\t\tnext = this.push( next )\n\t\t\tthis.cursor = $mol_fiber_status.persist\n\t\t\treturn next\n\t\t}\n\n\t\tcomplete_master( master_index : number ) {\n\t\t\tif( this.masters[ master_index ] instanceof $mol_atom2 ) {\n\t\t\t\tif( master_index >= this.cursor ) this.disobey( master_index )\n\t\t\t} else {\n\t\t\t\tthis.disobey( master_index )\n\t\t\t}\n\t\t}\n\n\t\tobey( master : $mol_fiber , master_index : number ) : number {\n\t\t\treturn master.lead( this , master_index )\n\t\t}\n\n\t\tlead( slave : $mol_fiber , master_index : number ) {\n\t\t\t\n\t\t\tthis.$.$mol_log2.info( this , $mol_atom2_token_leaded , slave )\n\t\t\t\n\t\t\tconst slave_index = this.slaves.length\n\t\t\tthis.slaves[ slave_index ] = slave\n\t\t\tthis.slaves[ slave_index + 1 ] = master_index\n\t\t\t\n\t\t\treturn slave_index\n\t\t}\n\n\t\tdislead( slave_index : number ) {\n\n\t\t\tif( slave_index < 0 ) return // slave is fiber\n\t\t\t\n\t\t\tthis.$.$mol_log2.info( this , $mol_atom2_token_disleaded , this.slaves[ slave_index ] )\n\n\t\t\tthis.slaves[ slave_index ] = undefined\n\t\t\tthis.slaves[ slave_index + 1 ] = undefined\n\n\t\t\t$mol_array_trim( this.slaves )\n\n\t\t\tif( this.cursor > $mol_fiber_status.persist && this.alone ) $mol_atom2.reap( this )\n\t\t}\n\n\t\tobsolete( master_index = -1 ) {\n\n\t\t\tif( this.cursor > $mol_fiber_status.obsolete ) {\n\t\t\t\tif( master_index >= this.cursor - 2 ) return\n\n\t\t\t\tconst path = [] as $mol_atom2[]\n\t\t\t\tlet current = this as $mol_atom2\n\t\t\t\t\n\t\t\t\tcollect : while( current ) {\n\t\t\t\t\tpath.push( current )\n\t\t\t\t\tcurrent = current.masters[ current.cursor - 2 ] as $mol_atom2\n\t\t\t\t}\n\n\t\t\t\tthis.$.$mol_fail( new Error( `Obsoleted while calculation \\n\\n${ path.join( '\\n' ) }\\n` ) )\n\t\t\t}\n\t\t\t\n\t\t\tif( this.cursor === $mol_fiber_status.obsolete ) return\n\t\t\t\n\t\t\tthis.$.$mol_log2.info( this , $mol_atom2_token_obsoleted , this._error || this._value )\n\t\t\tif( this.cursor !== $mol_fiber_status.doubt ) this.doubt_slaves()\n\t\t\t\n\t\t\tthis.cursor = $mol_fiber_status.obsolete\n\t\t\t\n\t\t}\n\n\t\tdoubt( master_index = -1 ) {\n\t\t\t\n\t\t\tif( this.cursor > $mol_fiber_status.obsolete ) {\n\t\t\t\tif( master_index >= this.cursor - 2 ) return\n\n\t\t\t\tconst path = [] as $mol_atom2[]\n\t\t\t\tlet current = this as $mol_atom2\n\t\t\t\t\n\t\t\t\tcollect : while( current ) {\n\t\t\t\t\tpath.push( current )\n\t\t\t\t\tcurrent = current.masters[ current.cursor - 2 ] as $mol_atom2\n\t\t\t\t}\n\n\t\t\t\tthis.$.$mol_fail( new Error( `Doubted while calculation \\n\\n${ path.join( '\\n' ) }\\n` ) )\n\t\t\t}\n\t\t\t\n\t\t\tif( this.cursor >= $mol_fiber_status.doubt ) return\n\t\t\t\t\n\t\t\tthis.$.$mol_log2.info( this , $mol_atom2_token_doubted , this._error || this._value )\n\t\t\tthis.cursor = $mol_fiber_status.doubt\n\t\t\t\n\t\t\tthis.doubt_slaves()\n\n\t\t}\n\n\t\t@ $mol_log2_indent.method\n\t\tobsolete_slaves() {\n\t\t\tfor( let index = 0 ; index < this.slaves.length ; index += 2 ) {\n\t\t\t\tconst slave = this.slaves[ index ] as $mol_atom2\n\t\t\t\tif( slave ) slave.obsolete( this.slaves[ index + 1 ] as number )\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_log2_indent.method\n\t\tdoubt_slaves() {\n\t\t\tfor( let index = 0 ; index < this.slaves.length ; index += 2 ) {\n\t\t\t\tconst slave = this.slaves[ index ] as $mol_atom2\n\t\t\t\tif( slave ) slave.doubt( this.slaves[ index + 1 ] as number )\n\t\t\t}\n\t\t}\n\n\t\tget fresh() {\n\t\t\treturn $mol_log2_hidden.func( ()=> {\n\t\t\t\tif( this.cursor !== $mol_fiber_status.actual ) return\n\n\t\t\t\tthis.cursor = $mol_fiber_status.obsolete\n\t\t\t\t$mol_fiber_solid.run( ()=> this.update() )\n\t\t\t} )\n\t\t}\n\n\t\tget alone() {\n\t\t\treturn this.slaves.length === 0\n\t\t}\n\t\t\n\t\tget derived() {\n\t\t\t\n\t\t\tfor( let index = 0 ; index < this.masters.length ; index += 2 ) {\n\t\t\t\tif( this.masters[ index ] ) return true\n\t\t\t}\n\n\t\t\treturn false\n\t\t}\n\n\t\tdestructor() {\n\n\t\t\tif( !this.abort() ) return\n\t\t\t\n\t\t\tthis.$.$mol_log2.info( this , $mol_fiber_token_destructed )\n\n\t\t\tthis.cursor = $mol_fiber_status.persist\n\n\t\t\tfor( let index = 0 ; index < this.masters.length ; index += 2 ) {\n\t\t\t\tthis.complete_master( index )\n\t\t\t}\n\n\t\t}\n\t\t\n\t}\n\n\texport let $mol_atom2_token_revalidation = new $mol_log2_token( ' ⏭ ' )\n\texport let $mol_atom2_token_stumbled = new $mol_log2_token( ' ⏯ ' )\n\texport let $mol_atom2_token_revalidated = new $mol_log2_token( ' ✔ ' )\n\texport let $mol_atom2_token_leaded = new $mol_log2_token( ' ☍ ' )\n\texport let $mol_atom2_token_disleaded = new $mol_log2_token( ' ☌ ' )\n\texport let $mol_atom2_token_obsoleted = new $mol_log2_token( ' ✘ ' )\n\texport let $mol_atom2_token_doubted = new $mol_log2_token( ' � ' )\n\n\t$mol_log2_legend.info( $mol_atom2_token_revalidation , '$mol_atom2 starts masters cheking for changes' )\n\t$mol_log2_legend.info( $mol_atom2_token_stumbled , '$mol_atom2 is obsoleted while masters checking' )\n\t$mol_log2_legend.info( $mol_atom2_token_revalidated , '$mol_atom2 is actual becasue there is no changed masters' )\n\t$mol_log2_legend.info( $mol_atom2_token_leaded , '$mol_atom2 leads some slave' )\n\t$mol_log2_legend.info( $mol_atom2_token_disleaded , '$mol_atom2 disleads some slave' )\n\t$mol_log2_legend.info( $mol_atom2_token_obsoleted , '$mol_atom2 is obsoleted because some master is changed' )\n\t$mol_log2_legend.info( $mol_atom2_token_doubted , '$mol_atom2 is doubted because some master is doubted or obsoleted' )\n\n}\n","namespace $ {\n\n\texport class $mol_mem_force extends Object {\n\t\tconstructor(){ super() }\n\t\t$mol_mem_force = true\n\t\tstatic $mol_mem_force = true\n\t\tstatic toString() { return this.name }\n\t}\n\n\texport class $mol_mem_force_cache extends $mol_mem_force {}\n\texport class $mol_mem_force_update extends $mol_mem_force {}\n\texport class $mol_mem_force_fail extends $mol_mem_force_cache {}\n\n}\n","namespace $ {\n\n\texport let $mol_mem_cached = $mol_atom2_value\n\n\texport function $mol_mem_persist() {\n\n\t\tconst atom = $mol_atom2.current\n\t\tif( !atom ) return\n\t\t\n\t\tif( atom.hasOwnProperty( 'destructor' ) ) return\n\t\t\n\t\tatom.destructor = ()=> {}\n\t\t\n\t}\n\n\texport function $mol_mem<\n\t\tHost extends object ,\n\t\tField extends keyof Host ,\n\t\tValue ,\n\t>(\n\t\tproto : Host ,\n\t\tname : Field ,\n\t\tdescr? : TypedPropertyDescriptor< ( next? : Value , force? : $mol_mem_force )=> Value >\n\t) : any {\n\n\t\tconst value = descr!.value!\n\t\t\n\t\tconst store = new WeakMap< Host , $mol_atom2< Value > >()\n\n\t\tObject.defineProperty( proto , name + \"()\" , {\n\t\t\tget : function() {\n\t\t\t\treturn store.get( this )\n\t\t\t}\n\t\t} )\n\n\t\tconst get_cache = ( host : Host )=> {\n\t\t\t\n\t\t\tlet cache = store.get( host )!\n\t\t\tif( cache ) return cache\n\n\t\t\tlet cache2 = new $mol_atom2\n\t\t\tcache2.calculate = value.bind( host )\n\t\t\tcache2[ Symbol.toStringTag ] = `${ host }.${ name }()`\n\t\t\tcache2.abort = ()=> {\n\t\t\t\tstore.delete( host )\n\t\t\t\tcache2.forget()\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t$mol_owning_catch( host , cache2 )\n\t\t\tcache2[ $mol_object_field ] = name\n\t\t\tstore.set( host , cache2 )\n\n\t\t\treturn cache2\n\t\t}\n\t\t\n\t\treturn {\n\n\t\t\t... descr || {} ,\n\t\t\t\n\t\t\tvalue( this : Host , next? : Value , force? : $mol_mem_force ) {\n\t\t\t\t\n\t\t\t\tif( next === undefined ) {\n\t\t\t\t\t\n\t\t\t\t\tconst cache = get_cache( this )\n\t\t\t\t\tif( force === $mol_mem_force_cache ) cache.obsolete( Number.NaN )\n\t\t\t\t\t\n\t\t\t\t\tif( $mol_atom2.current ) return cache.get()\n\t\t\t\t\telse return $mol_fiber.run( ()=> cache.get() )\n\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn $mol_fiber.run( ()=> {\n\t\t\t\t\tif( force === $mol_mem_force_fail ) return get_cache( this ).fail( next as any )\n\t\t\t\t\tif( force !== $mol_mem_force_cache ) next = value.call( this , next )\n\t\t\t\t\treturn get_cache( this ).put( next )\n\t\t\t\t} )\n\t\t\t\t\n\t\t\t}\n\n\t\t}\n\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_window extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic size( next? : {\n\t\t\twidth : number\n\t\t\theight : number\n\t\t} , force? : $mol_mem_force ) {\n\t\t\treturn next || {\n\t\t\t\twidth : self.innerWidth ,\n\t\t\t\theight : self.innerHeight ,\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\tself.addEventListener( 'resize' , $mol_fiber_root( $mol_log_group( `$mol_window resize` , ()=> {\n\t\t$mol_window.size( undefined , $mol_mem_force_cache )\n\t} ) ) )\n\t\n}\n","namespace $ {\n\n\texport function $mol_dict_key( value : any ) {\n\t\t\n\t\tif( !value ) return value\n\t\tif( typeof value !== 'object' ) return value\n\n\t\tif( Array.isArray( value ) ) return value.join( ' , ' )\n\t\tif( Object.getPrototypeOf( Object.getPrototypeOf( value ) ) === null ) return JSON.stringify( value )\n\t\t\n\t\treturn value\n\t}\n\t\n\texport class $mol_dict< Key , Value > extends Map< Key , Value > {\n\n\t\tget( key : Key ) {\n\t\t\treturn super.get( $mol_dict_key( key ) )\n\t\t}\n\n\t\thas( key : Key ) {\n\t\t\treturn super.has( $mol_dict_key( key ) )\n\t\t}\n\n\t\tset( key : Key , value : Value ) {\n\t\t\treturn super.set( $mol_dict_key( key ) , value )\n\t\t}\n\n\t\tdelete( key : Key ) {\n\t\t\treturn super.delete( $mol_dict_key( key ) )\n\t\t}\n\n\t\tforEach( back : ( value : Value , key : Key , dict : Map< Key , Value > ) => void , context? : any ) {\n\t\t\treturn super.forEach( ( val , key , dict )=> {\n\t\t\t\tif( typeof key === 'string' ) key = JSON.parse( key )\n\t\t\t\treturn back.call( this , val , key , dict )\n\t\t\t} , context )\n\t\t}\n\n\t\t[Symbol.iterator]() {\n\t\t\tconst iterator = super[ Symbol.iterator ]()\n\t\t\t\n\t\t\treturn {\n\t\t\t\t[Symbol.iterator]() {\n\t\t\t\t\treturn this\n\t\t\t\t},\n\t\t\t\tnext() {\n\t\t\t\t\tconst iteration = iterator.next()\n\n\t\t\t\t\tif( !iteration.done ) {\n\t\t\t\t\t\tconst key = iteration.value[0]\n\t\t\t\t\t\tif( typeof key === 'string' ) iteration.value[0] = JSON.parse( key )\n\t\t\t\t\t}\n\n\t\t\t\t\treturn iteration\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_mem_key<\n\t\tHost extends object ,\n\t\tField extends keyof Host ,\n\t\tKey ,\n\t\tValue ,\n\t>(\n\t\tproto : Host ,\n\t\tname : Field ,\n\t\tdescr? : TypedPropertyDescriptor< ( key : Key , next? : Value , force? : $mol_mem_force )=> Value >\n\t) : any {\n\n\t\tconst value = descr!.value!\n\t\t\n\t\tconst store = new WeakMap< Host , Map< Key , $mol_atom2 > >()\n\n\t\tObject.defineProperty( proto , name + \"()\" , {\n\t\t\tget : function() {\n\t\t\t\treturn store.get( this )\n\t\t\t}\n\t\t} )\n\n\t\tconst get_cache = ( host : Host , key : Key )=> {\n\t\t\t\n\t\t\tlet dict = store.get( host )!\n\t\t\tif( !dict ) store.set( host , dict = new $mol_dict )\n\t\t\t\n\t\t\tlet cache = dict.get( key )\n\t\t\tif( cache ) return cache\n\n\t\t\tlet cache2 = new $mol_atom2\n\t\t\tcache2[ Symbol.toStringTag ] = `${ host }.${ name }(${JSON.stringify(key)})`\n\t\t\tcache2.calculate = value.bind( host , key )\n\t\t\tcache2.abort = ()=> {\n\t\t\t\tdict.delete( key )\n\t\t\t\tif( dict.size === 0 ) store.delete( host )\n\t\t\t\tcache2.forget()\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t$mol_owning_catch( host , cache2 )\n\t\t\tcache2[ $mol_object_field ] = name\n\t\t\tdict.set( key , cache2 )\n\n\t\t\treturn cache2\n\t\t}\n\t\t\n\t\treturn {\n\t\t\t\n\t\t\tvalue( key : Key , next? : Value , force? : $mol_mem_force ) {\n\t\t\t\t\n\t\t\t\tif( next === undefined ) {\n\t\t\t\t\t\n\t\t\t\t\tconst cache = get_cache( this , key )\n\t\t\t\t\tif( force === $mol_mem_force_cache ) cache.obsolete()\n\n\t\t\t\t\tif( $mol_atom2.current ) return cache.get()\n\t\t\t\t\telse return $mol_fiber.run( ()=> cache.get() )\n\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn $mol_fiber.run( ()=> {\n\t\t\t\t\t\n\t\t\t\t\tif( force === $mol_mem_force_fail ) return get_cache( this , key ).fail( next as any )\n\t\t\t\t\tif( force !== $mol_mem_force_cache ) next = value.call( this , key , next )\n\t\t\t\t\treturn get_cache( this , key ).put( next )\n\t\t\t\t\t\n\t\t\t\t} )\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_atom2_autorun( calculate : ()=> any ) {\n\t\t\n\t\treturn $mol_atom2.create( atom => {\n\t\t\tatom.calculate = calculate\n\t\t\tatom.obsolete_slaves = atom.schedule\n\t\t\tatom.doubt_slaves = atom.schedule\n\t\t\tatom[ Symbol.toStringTag ] = calculate[ Symbol.toStringTag ] || calculate.name || '$mol_atom2_autorun'\n\t\t\tatom.schedule()\n\t\t} )\n\n\t}\n\n}\n","namespace $ {\n\t\n\texport class $mol_defer extends $mol_object {\n\t\t\n\t\tconstructor( public run : ()=> void ) {\n\t\t\tsuper()\n\t\t\t$mol_defer.add( this )\n\t\t}\n\t\t\n\t\tdestructor() {\n\t\t\t$mol_defer.drop( this )\n\t\t}\n\t\t\n\t\tstatic all : $mol_defer[] = []\n\t\tstatic timer = null as any\n\t\t\n\t\tstatic scheduleNative : ( handler : ()=> void ) => any = ( typeof requestAnimationFrame == 'function' )\n\t\t\t? handler => requestAnimationFrame( handler )\n\t\t\t: handler => setTimeout( handler , 16 )\n\t\t\n\t\tstatic schedule() {\n\t\t\tif( this.timer ) return\n\t\t\t\n\t\t\tthis.timer = this.scheduleNative( ()=> {\n\t\t\t\tthis.timer = null\n\t\t\t\tthis.run()\n\t\t\t} )\n\t\t}\n\t\t\n\t\tstatic unschedule() {\n\t\t\tif( !this.timer ) return\n\t\t\t\n\t\t\tcancelAnimationFrame( this.timer )\n\t\t\tthis.timer = null\n\t\t}\n\t\t\n\t\tstatic add( defer : $mol_defer ) {\n\t\t\tthis.all.push( defer )\n\t\t\tthis.schedule()\n\t\t}\n\t\t\n\t\tstatic drop( defer : $mol_defer ) {\n\t\t\tvar index = this.all.indexOf( defer )\n\t\t\tif( index >= 0 ) this.all.splice( index , 1 )\n\t\t}\n\t\t\n\t\tstatic run() {\n\t\t\tif( this.all.length === 0 ) return\n\t\t\tthis.schedule()\n\t\t\tfor( var defer : $mol_defer | undefined ; defer = this.all.shift() ; ) defer.run()\n\t\t\t//this.unschedule()\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ {\n\n\texport class $mol_after_timeout extends $mol_object2 {\n\n\t\tid : any\n\n\t\tconstructor(\n\t\t\tpublic delay : number ,\n\t\t\tpublic task : ()=> void ,\n\t\t) {\n\t\t\tsuper()\n\t\t\tthis.id = setTimeout( task , delay )\n\t\t}\n\n\t\tdestructor() {\n\t\t\tclearTimeout( this.id )\n\t\t}\n\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_view_selection extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic focused( next? : Element[] ) : Element[] {\n\t\t\tif( next === undefined ) return [] as Element[]\n\t\t\t\n\t\t\tconst parents : Element[] = []\n\t\t\tlet element = next[ 0 ] as HTMLElement\n\t\t\t\n\t\t\twhile( element ) {\n\t\t\t\tparents.push( element )\n\t\t\t\telement = element.parentNode as HTMLElement\n\t\t\t}\n\n\t\t\tnew $mol_defer( $mol_log2.func( ()=> {\n\n\t\t\t\tconst element = $mol_mem_cached( ()=> this.focused() )![0] as HTMLElement\n\t\t\t\t\n\t\t\t\tif( element ) element.focus()\n\t\t\t\telse $mol_dom_context.blur()\n\n\t\t\t} ) )\n\n\t\t\treturn parents\n\t\t}\n\t\t\n\t\t@ $mol_log2.method\n\t\tstatic focus( event : FocusEvent ) {\n\t\t\tthis.focused( [ event.target as Element ] )\n\n\t\t}\n\t\t\n\t\t@ $mol_log2.method\n\t\tstatic blur( event : FocusEvent ) {\n\t\t\tconst element = $mol_mem_cached( ()=> this.focused() )![0] as HTMLElement\n\t\t\tif( element === event.target ) this.focused( [] )\n\t\t}\n\t}\n\t\n}\n","namespace $ {\n\t\n\tif( $mol_dom_context.document ) {\n\n\t\t$mol_dom_context.document.addEventListener(\n\t\t\t'focus' ,\n\t\t\t( event : FocusEvent )=> {\n\t\t\t\tnew $mol_after_tick(\n\t\t\t\t\t$mol_fiber_root(\n\t\t\t\t\t\t()=> $mol_view_selection.focus( event )\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t} ,\n\t\t\ttrue ,\n\t\t)\n\t\t\n\t\t$mol_dom_context.document.addEventListener(\n\t\t\t'blur' ,\n\t\t\t( event : FocusEvent )=> {\n\t\t\t\tnew $mol_after_timeout( 0 ,\n\t\t\t\t\t$mol_fiber_root(\n\t\t\t\t\t\t()=> $mol_view_selection.blur( event )\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t} ,\n\t\t\ttrue ,\n\t\t)\n\t\n\t}\n\t\n}\n","namespace $ { \n\texport function $mol_const< Value >( value : Value ) {\n\t\tvar getter = <{ () : Value , '()' : Value }> ( () => value )\n\t\tgetter['()'] = value\n\t\tgetter[ Symbol.toStringTag ] = value\n\t\treturn getter\n\t}\n}\n","namespace $ {\n\t\n\texport function $mol_dom_render_attributes (\n\t\tel : Element ,\n\t\tattrs : { [ key : string ] : string|number|boolean|null }\n\t) {\n\n\t\tfor( let name in attrs ) {\n\n\t\t\tlet val = attrs[ name ] as any\n\n\t\t\tif( val === null || val === false ) {\n\n\t\t\t\tif( !el.hasAttribute( name ) ) continue\n\t\t\t\t\n\t\t\t\tel.removeAttribute( name )\n\n\t\t\t} else {\n\t\t\t\t\n\t\t\t\tconst str = String( val )\n\t\t\t\tif( el.getAttribute( name ) === str ) continue\n\t\t\t\t\n\t\t\t\tel.setAttribute( name , str )\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\n\tconst cacthed = new WeakMap< any , boolean >()\n\n\texport function $mol_fail_catch( error : object ) {\n\t\t\n\t\tif( cacthed.get( error ) ) return false\n\t\t\n\t\tcacthed.set( error , true )\n\t\treturn true\n\t\t\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_dom_render_styles (\n\t\tel : Element ,\n\t\tstyles : { [ key : string ] : string|number }\n\t) {\n\t\tfor( let name in styles ) {\n\t\t\tlet val = styles[ name ]\n\t\t\t\n\t\t\tconst style = ( el as HTMLElement ).style as any\n\t\t\tconst cur = style[ name ]\n\t\t\t\n\t\t\tif( typeof val === 'number' ) {\n\t\t\t\tif( parseFloat( cur ) == val ) continue\n\t\t\t\tstyle[ name ] = `${ val }px`\n\t\t\t}\n\t\t\t\n\t\t\tif( cur !== val ) style[ name ] = val\n\t\t}\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_dom_render_fields (\n\t\tel : Element ,\n\t\tfields : { [ key : string ] : any }\n\t) {\n\t\tfor( let key in fields ) {\n\t\t\t\n\t\t\tconst val : any = fields[ key ]\n\t\t\t\n\t\t\tif( val === undefined ) continue\n\t\t\t// if( el[ key ] === val ) continue\n\t\t\t\n\t\t\tel[ key ] = val\n\t\t}\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_dom_render_children (\n\t\tel : Element ,\n\t\tchildNodes : NodeList | Array< Node | string | null >\n\t) {\n\t\tconst node_set = new Set< Node | string | null >( childNodes )\n\t\t\n\t\tlet nextNode : Node | null = el.firstChild\n\t\tfor( let view of childNodes ) {\n\n\t\t\tif( view == null ) continue\n\n\t\t\tif( view instanceof $mol_dom_context.Node ) {\n\t\t\t\t\n\t\t\t\twhile( true ) {\n\t\t\t\t\tif( !nextNode ) {\n\t\t\t\t\t\tel.appendChild( view )\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tif( nextNode == view ) {\n\t\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t\t\tbreak\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif( node_set.has( nextNode ) ) {\n\t\t\t\t\t\t\tel.insertBefore( view , nextNode )\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst nn = nextNode.nextSibling\n\t\t\t\t\t\t\tel.removeChild( nextNode )\n\t\t\t\t\t\t\tnextNode = nn\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\tif( nextNode && nextNode.nodeName === '#text' ) {\n\t\t\t\t\tconst str = String( view )\n\t\t\t\t\tif( nextNode.nodeValue !== str ) nextNode.nodeValue = str\n\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t} else {\n\t\t\t\t\tconst textNode = $mol_dom_context.document.createTextNode( String( view ) )\n\t\t\t\t\tel.insertBefore( textNode , nextNode )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\twhile( nextNode ) {\n\t\t\tconst currNode = nextNode\n\t\t\tnextNode = currNode.nextSibling\n\t\t\tel.removeChild( currNode )\n\t\t}\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_func_name( func : Function ) : string {\n\t\treturn func.name\n\t}\n\n\texport function $mol_func_name_from< Target extends Function >( target : Target , source : Function ) {\n\t\tObject.defineProperty( target , 'name' , { value : source.name } )\n\t\treturn target\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_deprecated( message : string ) {\n\t\treturn <\n\t\t\tMethod extends ( this : Host , ... args : readonly any[] )=> any ,\n\t\t\tHost extends {\n\t\t\t\t[key in Field] : Method\n\t\t\t},\n\t\t\tField extends keyof Host ,\n\t\t>(\n\t\t\thost : Host ,\n\t\t\tfield : Field ,\n\t\t\tdescr : TypedPropertyDescriptor< Method >\n\t\t)=> {\n\n\t\t\tconst value = descr.value!\n\t\t\t\n\t\t\tdescr.value = function $mol_deprecated_wrapper( this : Host , ... args : Parameters< Method > ) : ReturnType< Method > {\n\n\t\t\t\tconsole.warn( `${ host.constructor.name }::${ field } is deprecated. ${ message }` )\n\t\t\t\t\n\t\t\t\treturn value.call( this , ... args )\n\t\t\t\n\t\t\t} as any\n\n\t\t}\n\t}\n\t\n}\n",null,"namespace $ {\n\n\texport type $mol_view_content = $mol_view|Node|string|number|boolean\n\t\n\texport function $mol_view_visible_width() {\n\t\treturn $mol_window.size().width\n\t}\n\t\n\texport function $mol_view_visible_height() {\n\t\treturn $mol_window.size().height\n\t}\n\t\n\texport function $mol_view_state_key( suffix : string ) {\n\t\treturn suffix\n\t}\n\n\t/// Reactive statefull lazy ViewModel\n\texport class $mol_view extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic Root< This extends typeof $mol_view >( this : This , id: number ) {\n\t\t\treturn new this as InstanceType< This >\n\t\t}\n\n\t\t@ $mol_mem\n\t\tautorun() {\n\t\t\treturn $mol_atom2_autorun( ()=> {\n\t\t\t\tthis.dom_tree()\n\t\t\t\tdocument.title = this.title()\n\t\t\t\treturn this\n\t\t\t} )\n\t\t}\n\n\t\tstatic autobind() {\n\t\t\t\n\t\t\tconst nodes = $mol_dom_context.document.querySelectorAll( '[mol_view_root]' )\n\t\t\t\n\t\t\tfor( let i = nodes.length - 1 ; i >= 0 ; --i ) {\n\n\t\t\t\tconst name = nodes.item( i ).getAttribute( 'mol_view_root' )!\n\t\t\t\t\n\t\t\t\tconst View = $[ name ]\n\t\t\t\tif( !View ) {\n\t\t\t\t\tconsole.error( `Can not attach view. Class not found: ${ name }` )\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tconst view = View.Root( i )\n\t\t\t\tview.dom_node( nodes.item( i ) )\n\t\t\t\tview.autorun()\n\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\ttitle() : string {\n\t\t\treturn this.constructor.toString()\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tfocused( next?: boolean ) {\n\t\t\tlet node = this.dom_node()\n\t\t\tconst value = $mol_view_selection.focused( next === undefined ? undefined : ( next ? [ node ] : [] ) )\n\t\t\treturn value.indexOf( node ) !== -1\n\t\t} \n\t\t\n\t\tstate_key( suffix = '' ) {\n\t\t\treturn this.$.$mol_view_state_key( suffix )\n\t\t}\n\t\t\n\t\t/// Name of element that created when element not found in DOM\n\t\tdom_name() {\n\t\t\treturn this.constructor.toString().replace( '$' , '' ) || 'div'\n\t\t}\n\t\t\n\t\t/// NameSpace of element that created when element not found in DOM\n\t\tdom_name_space() { return 'http://www.w3.org/1999/xhtml' }\n\t\t\n\t\t/// Raw child views\n\t\tsub() {\n\t\t\treturn [] as readonly ($mol_view|Node|string|number|boolean)[]\n\t\t}\n\t\t\n\t\t/// Visible sub views with defined ambient context\n\t\t/// Render all by default\n\t\tsub_visible() {\n\t\t\treturn this.sub()\n\t\t}\n\t\t\n\t\t/// Minimal width that used for lazy rendering\n\t\t@ $mol_mem\n\t\tminimal_width() {\n\t\t\tconst sub = this.sub()\n\t\t\tif( !sub ) return 0\n\t\t\t\n\t\t\tlet min = 0\n\t\t\tsub.forEach( view => {\n\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\tmin = Math.max( min , view.minimal_width() )\n\t\t\t\t}\n\t\t\t} )\n\t\t\t\n\t\t\treturn min\n\t\t}\n\t\t\n\t\tmaximal_width() {\n\t\t\treturn this.minimal_width()\n\t\t}\n\t\t\n\t\t/// Minimal height that used for lazy rendering\n\t\t@ $mol_mem\n\t\tminimal_height() {\n\t\t\t\n\t\t\tlet min = 0\n\t\t\ttry {\n\t\t\t\tfor( const view of this.sub() ) {\n\n\t\t\t\t\tif( view instanceof $mol_view ) {\n\t\t\t\t\t\tmin = Math.max( min , view.minimal_height() )\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t} \n\t\t\t} catch( error ) {\n\t\t\t\tif( 'then' in error ) $mol_fail_hidden( error )\n\t\t\t}\n\t\t\t\n\t\t\treturn min\n\t\t}\n\n\t\tstatic watchers = new Set< $mol_view >()\n\n\t\t@ $mol_mem\n\t\tview_rect() {\n\t\t\tif( $mol_atom2.current ) this.view_rect_watcher()\n\t\t\treturn this.view_rect_cache()\n\t\t}\n\n\t\t@ $mol_mem\n\t\tview_rect_cache( next = null as ClientRect | null ) {\n\t\t\treturn next\n\t\t}\n\n\t\t@ $mol_mem\n\t\tview_rect_watcher() {\n\t\t\t$mol_view.watchers.add( this )\n\t\t\treturn { destructor : ()=> $mol_view.watchers.delete( this ) }\n\t\t}\n\n\t\tdom_id() {\n\t\t\treturn this.toString()\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tdom_node( next? : Element ) {\n\t\t\t\n\t\t\tconst node = next || $mol_dom_context.document.createElementNS( this.dom_name_space() , this.dom_name() )\n\n\t\t\tconst id = this.dom_id()\n\t\t\tnode.setAttribute( 'id' , id )\n\t\t\tnode.toString = $mol_const( '<#' + id + '>' )\n\n\t\t\t$mol_dom_render_attributes( node , this.attr_static() )\n\t\t\t\n\t\t\tconst events = this.event()\n\t\t\tfor( let event_name in events ) {\n\t\t\t\tnode.addEventListener(\n\t\t\t\t\tevent_name ,\n\t\t\t\t\t$mol_log2.func( $mol_fiber_root( events[ event_name ] ) ) ,\n\t\t\t\t\t{ passive : false } as any ,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\treturn node\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tdom_tree( next? : Element ) : Element {\n\t\t\tconst node = this.dom_node( next )\n\t\t\t\n\t\t\ttry {\n\n\t\t\t\t$mol_dom_render_attributes( node , { mol_view_error : null } )\n\n\t\t\t\tfor( let plugin of this.plugins() ) {\n\t\t\t\t\tif( plugin instanceof $mol_plugin ) {\n\t\t\t\t\t\tplugin.render()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.render()\n\n\t\t\t} catch( error ) {\n\t\t\t\t\n\t\t\t\tconst need_catch = $mol_fail_catch( error )\n\n\t\t\t\tif( need_catch ) {\n\t\t\t\t\t$mol_dom_render_attributes( node , { mol_view_error : error.name || error.constructor.name } )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( error instanceof Promise ) $mol_fail_hidden( error )\n\t\t\t\t\n\t\t\t\tif( need_catch ) {\n\t\t\t\t\ttry { void( ( node as HTMLElement ).innerText = error.message ) } catch( e ) {}\n\t\t\t\t\tconsole.error( error )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\treturn node\n\t\t}\n\n\t\t@ $mol_mem\n\t\tdom_node_actual() {\n\t\t\tconst node = this.dom_node()\n\n\t\t\tconst attr = this.attr()\n\t\t\tconst style = this.style()\n\t\t\tconst fields = this.field()\n\n\t\t\t$mol_dom_render_attributes( node , attr )\n\t\t\t$mol_dom_render_styles( node , style )\n\t\t\t$mol_dom_render_fields( node , fields )\n\n\t\t\treturn node\n\t\t}\n\n\t\trender() {\n\n\t\t\tconst node = this.dom_node_actual()\n\n\t\t\tconst sub = this.sub_visible()\n\t\t\t\n\t\t\tconst nodes = sub.map( child => {\n\t\t\t\tif( child == null ) return null\n\t\t\t\treturn ( child instanceof $mol_view ) ? child.dom_node_actual() : String( child )\n\t\t\t})\n\t\t\t\n\t\t\t$mol_dom_render_children( node , nodes )\n\n\t\t\tfor( const el of sub ) if( el && typeof el === 'object' && 'dom_tree' in el ) el['dom_tree']()\n\n\t\t}\n\n\t\t@ $mol_mem\n\t\tstatic view_classes() {\n\t\t\tconst proto = this.prototype\n\t\t\t\n\t\t\tlet current = proto\n\t\t\tconst classes = [] as ( typeof $mol_view )[]\n\t\t\t\n\t\t\twhile( current ) {\n\t\t\t\tclasses.push( current.constructor as typeof $mol_view )\n\t\t\t\tif(!( current instanceof $mol_view )) break\n\t\t\t\tcurrent = Object.getPrototypeOf( current )\n\t\t\t}\n\t\t\t\n\t\t\treturn classes\n\t\t}\n\t\t\n\t\tview_names_owned() {\n\t\t\tconst names = [] as string[]\n\t\t\tlet owner = $mol_owning_get( this , $mol_view )\n\n\t\t\tif( owner instanceof $mol_view ) {\n\n\t\t\t\tconst suffix = this[ $mol_object_field ]\n\t\t\t\tconst suffix2 = '_' + suffix[0].toLowerCase() + suffix.substring(1)\n\t\t\t\t\n\t\t\t\tfor( let Class of ( owner.constructor as typeof $mol_view ).view_classes() ) {\n\t\t\t\t\tif( suffix in Class.prototype ) names.push( $mol_func_name( Class ) + suffix2 )\n\t\t\t\t\telse break\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor( let prefix of owner.view_names_owned() ) {\n\t\t\t\t\tnames.push( prefix + suffix2 )\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn names\n\t\t}\n\n\t\t@ $mol_mem\n\t\tview_names() {\n\t\t\tconst names = [] as string[]\n\t\t\t\n\t\t\tfor( let name of this.view_names_owned() ) {\n\t\t\t\tif( names.indexOf( name ) < 0 ) names.push( name )\n\t\t\t}\n\n\t\t\tfor( let Class of ( this.constructor as typeof $mol_view ).view_classes() ) {\n\t\t\t\tconst name = $mol_func_name( Class )\n\t\t\t\tif( !name ) continue\n\t\t\t\tif( names.indexOf( name ) < 0 ) names.push( name )\n\t\t\t}\n\n\t\t\treturn names\n\t\t}\n\t\t\n\t\tattr_static() : { [ key : string ] : string|number|boolean|null } {\n\t\t\tlet attrs : any = {}\n\t\t\t\n\t\t\tfor( let name of this.view_names() ) attrs[ name.replace( /\\$/g , '' ).replace( /^(?=\\d)/ , '_' ).toLowerCase() ] = ''\n\t\t\t\n\t\t\treturn attrs\n\t\t}\n\t\t\n\t\tattr() : { [ key : string ] : string|number|boolean|null } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tstyle() : { [ key : string ] : string|number } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tfield() : { [ key : string ] : any } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tevent() : { [ key : string ] : ( event : Event )=> void } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\t@ $mol_deprecated( 'Use $mol_view::event instead.' )\n\t\tevent_async() : { [ key : string ] : ( event : Event )=> void } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\tplugins() {\n\t\t\treturn [] as readonly $mol_view[]\n\t\t}\n\n\t\t[ $mol_dev_format_head ]() {\n\t\t\treturn $mol_dev_format_span( {} ,\n\t\t\t\t$mol_dev_format_native( this ) ,\n\t\t\t\t$mol_dev_format_shade( '/' ) ,\n\t\t\t\t$mol_dev_format_auto( $mol_mem_cached( ()=> this.sub() ) ) ,\n\t\t\t)\n\t\t}\n\n\t}\n\n\texport type $mol_view_all = $mol_type_keys_extract< $mol_ambient_context , any , $mol_ambient_context['$mol_view'] >\n\n}\n","namespace $ { $mol_style_attach( \"mol/view/view.css\",\n \"[mol_view] {\\n\\ttransition-property: background-color, height, width, min-height, min-width, max-width, max-height, transform;\\n\\ttransition-duration: .2s;\\n\\ttransition-timing-function: ease-out;\\n\\t-webkit-appearance: none;\\n\\tword-break: break-word;\\n\\tbox-sizing: border-box;\\n}\\n\\n[mol_view] > * {\\n\\tword-break: inherit;\\n}\\n\\n[mol_view_root] {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\tbox-sizing: border-box;\\n\\tfont: var(--mol_skin_font);\\n\\tbackground: var(--mol_theme_back);\\n\\tcolor: var(--mol_theme_text);\\n}\\n\\n[mol_view][mol_view_error]:not([mol_view_error=\\\"Promise\\\"]) {\\n\\tbackground-image: repeating-linear-gradient(\\n\\t\\t135deg,\\n\\t\\trgba(255,220,220,1),\\n\\t\\trgba(255,220,220,1) 11px,\\n\\t\\trgba(255,255,220,1) 10px,\\n\\t\\trgba(255,255,220,1) 20px\\n\\t);\\n\\tbackground-size: 28px 28px;\\n\\tcolor: black;\\n}\\n\\n@keyframes mol_view_wait_move {\\n\\tfrom {\\n\\t\\tbackground-position: 0 0;\\n\\t}\\n\\tto {\\n\\t\\tbackground-position: 200vmax 0;\\n\\t}\\n}\\n\\n@keyframes mol_view_wait_show {\\n\\tto {\\n\\t\\tbackground-image: repeating-linear-gradient(\\n\\t\\t\\t45deg,\\n\\t\\t\\thsla( 0 , 0% , 50% , .1 ) 0% ,\\n\\t\\t\\thsla( 0 , 0% , 50% , 0 ) 5% ,\\n\\t\\t\\thsla( 0 , 0% , 50% , 0 ) 45% ,\\n\\t\\t\\thsla( 0 , 0% , 50% , .1 ) 50% ,\\n\\t\\t\\thsla( 0 , 0% , 50% , 0 ) 55% ,\\n\\t\\t\\thsla( 0 , 0% , 50% , 0 ) 95% ,\\n\\t\\t\\thsla( 0 , 0% , 50% , .1 ) 100%\\n\\t\\t);\\n\\t\\tbackground-size: 200vmax 200vmax;\\n\\t}\\n}\\n\\n[mol_view][mol_view_error=\\\"Promise\\\"] {\\n\\tanimation: mol_view_wait_show .5s .5s linear forwards , mol_view_wait_move 1s linear infinite;\\n}\\n\"\n) }","interface Window {\n\tcordova : any\n}\n\nnamespace $ {\n\n\tif( $mol_dom_context.document ) {\n\n\t\t/// Autoattach view roots to loaded DOM.\n\t\tconst event_name = self.cordova ? 'deviceready' : 'DOMContentLoaded'\n\t\t$mol_dom_context.document.addEventListener( event_name , $mol_fiber_root( $mol_log2.func( ( event : Event )=> {\n\t\t\t$mol_view.autobind()\n\t\t\t$mol_defer.run()\n\t\t} ) ) )\n\t\t\n\t\tfunction $mol_view_watch() {\n\t\t\t$mol_fiber_unlimit( ()=> {\n\t\t\t\tfor( const view of $mol_view.watchers ) {\n\t\t\t\t\tview.view_rect_cache( view.dom_node().getBoundingClientRect().toJSON() )\n\t\t\t\t}\n\t\t\t\tnew $mol_after_frame( $mol_view_watch )\n\t\t\t} )\n\t\t}\n\t\n\t\t$mol_view_watch()\n\t\n\t}\n\t\n}\n","namespace $ { export class $mol_string extends $mol_view {\n\n\t/**\n\t * ```\n\t * dom_name \\input\n\t * ```\n\t **/\n\tdom_name() {\n\t\treturn \"input\"\n\t}\n\n\t/**\n\t * ```\n\t * enabled true\n\t * ```\n\t **/\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/**\n\t * ```\n\t * debounce 0\n\t * ```\n\t **/\n\tdebounce() {\n\t\treturn 0\n\t}\n\n\t/**\n\t * ```\n\t * minimal_height 40\n\t * ```\n\t **/\n\tminimal_height() {\n\t\treturn 40\n\t}\n\n\t/**\n\t * ```\n\t * autocomplete false\n\t * ```\n\t **/\n\tautocomplete() {\n\t\treturn false\n\t}\n\n\t/**\n\t * ```\n\t * field *\n\t * \t^\n\t * \tdisabled <= disabled\n\t * \tvalue <= value_changed?val\n\t * \tplaceholder <= hint\n\t * \ttype <= type?val\n\t * \tspellcheck <= spellcheck\n\t * \tautocomplete <= autocomplete_native\n\t * ```\n\t **/\n\tfield() {\n\t\treturn ({\n\t\t\t...super.field() ,\n\t\t\t\"disabled\" : this.disabled() ,\n\t\t\t\"value\" : this.value_changed() ,\n\t\t\t\"placeholder\" : this.hint() ,\n\t\t\t\"type\" : this.type() ,\n\t\t\t\"spellcheck\" : this.spellcheck() ,\n\t\t\t\"autocomplete\" : this.autocomplete_native() ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * disabled false\n\t * ```\n\t **/\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/**\n\t * ```\n\t * value_changed?val <=> value?val\n\t * ```\n\t **/\n\t@ $mol_mem\n\tvalue_changed( val? : any , force? : $mol_mem_force ) {\n\t\treturn this.value( val )\n\t}\n\n\t/**\n\t * ```\n\t * value?val \\\n\t * ```\n\t **/\n\t@ $mol_mem\n\tvalue( val? : any , force? : $mol_mem_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/**\n\t * ```\n\t * hint \\\n\t * ```\n\t **/\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/**\n\t * ```\n\t * type?val \\text\n\t * ```\n\t **/\n\t@ $mol_mem\n\ttype( val? : any , force? : $mol_mem_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"text\"\n\t}\n\n\t/**\n\t * ```\n\t * spellcheck false\n\t * ```\n\t **/\n\tspellcheck() {\n\t\treturn false\n\t}\n\n\t/**\n\t * ```\n\t * autocomplete_native \\\n\t * ```\n\t **/\n\tautocomplete_native() {\n\t\treturn \"\"\n\t}\n\n\t/**\n\t * ```\n\t * attr *\n\t * \t^\n\t * \tmaxlength <= length_max\n\t * ```\n\t **/\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"maxlength\" : this.length_max() ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * length_max Infinity\n\t * ```\n\t **/\n\tlength_max() {\n\t\treturn Infinity\n\t}\n\n\t/**\n\t * ```\n\t * event *\n\t * \t^\n\t * \tinput?event <=> event_change?event\n\t * \tkeydown?event <=> event_key_press?event\n\t * ```\n\t **/\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"input\" : ( event? : any )=> this.event_change( event ) ,\n\t\t\t\"keydown\" : ( event? : any )=> this.event_key_press( event ) ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * event_change?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tevent_change( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/**\n\t * ```\n\t * event_key_press?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tevent_key_press( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_string extends $.$mol_string {\n\t\t\n\t\t// _timer = null as any\n\t\t\n\t\tevent_change( next? : Event ) {\n\t\t\tif( !next ) return\n\t\t\t\n\t\t\t// clearTimeout( this._timer )\n\t\t\t// this._timer = setTimeout( $mol_log_group( `${ this }.event_change()` , () => {\n\t\t\t\tthis.value( ( next.target as HTMLInputElement ).value ) \n\t\t\t// } ) , this.debounce() )\n\t\t}\n\t\t\n\t\tevent_key_press( next? : KeyboardEvent ) { \n\t\t\tif( !next ) return\n\t\t\t\n\t\t\tif( next.keyCode === $mol_keyboard_code.enter ) {\n\t\t\t\tthis.value( ( next.target as HTMLInputElement ).value )\n\t\t\t}\n\t\t} \n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\n\t\tautocomplete_native() {\n\t\t\treturn this.autocomplete() ? 'on' : 'off'\n\t\t}\n\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/string/string.view.css\",\n \"[mol_string] {\\n\\tbox-sizing: border-box;\\n\\toutline-offset: 0;\\n\\tborder: none;\\n\\tborder-radius: var(--mol_skin_round);\\n\\twhite-space: nowrap;\\n\\toverflow: hidden;\\n\\tpadding: .5rem 1rem;\\n\\ttext-align: left;\\n\\tposition: relative;\\n\\tz-index: 0;\\n\\tfont: inherit;\\n\\tflex: 0 1 auto;\\n\\twidth: 100%;\\n\\tbackground: var(--mol_theme_field);\\n\\tcolor: var(--mol_theme_text);\\n\\tbox-shadow: inset 0 0 0 .5px var(--mol_theme_line);\\n\\tmargin: 0;\\n}\\n\\n[mol_string]:disabled {\\n\\tbackground-color: transparent;\\n}\\n\\n[mol_string]:focus {\\n\\toutline: none;\\n\\tz-index: 1;\\n\\tbox-shadow: inset 0 0 0 .5px var(--mol_theme_focus);\\n}\\n\\n[mol_string]::-ms-clear {\\n\\tdisplay: none;\\n}\\n\"\n) }","namespace $ { export class $mol_button extends $mol_view {\n\n\t/**\n\t * ```\n\t * enabled true\n\t * ```\n\t **/\n\tenabled() {\n\t\treturn true\n\t}\n\n\t/**\n\t * ```\n\t * minimal_height 40\n\t * ```\n\t **/\n\tminimal_height() {\n\t\treturn 40\n\t}\n\n\t/**\n\t * ```\n\t * click?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tclick( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/**\n\t * ```\n\t * event_click?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tevent_click( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/**\n\t * ```\n\t * event *\n\t * \t^\n\t * \tclick?event <=> event_activate?event\n\t * \tkeypress?event <=> event_key_press?event\n\t * ```\n\t **/\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"click\" : ( event? : any )=> this.event_activate( event ) ,\n\t\t\t\"keypress\" : ( event? : any )=> this.event_key_press( event ) ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * event_activate?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tevent_activate( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/**\n\t * ```\n\t * event_key_press?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tevent_key_press( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/**\n\t * ```\n\t * attr *\n\t * \t^\n\t * \tdisabled <= disabled\n\t * \trole \\button\n\t * \ttabindex <= tab_index\n\t * \ttitle <= hint\n\t * ```\n\t **/\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"disabled\" : this.disabled() ,\n\t\t\t\"role\" : \"button\" ,\n\t\t\t\"tabindex\" : this.tab_index() ,\n\t\t\t\"title\" : this.hint() ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * disabled false\n\t * ```\n\t **/\n\tdisabled() {\n\t\treturn false\n\t}\n\n\t/**\n\t * ```\n\t * tab_index 0\n\t * ```\n\t **/\n\ttab_index() {\n\t\treturn 0\n\t}\n\n\t/**\n\t * ```\n\t * hint \\\n\t * ```\n\t **/\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/**\n\t * ```\n\t * sub /$mol_view_content <= title\n\t * ```\n\t **/\n\tsub() {\n\t\treturn [ this.title() ] as readonly ( $mol_view_content )[]\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_button extends $.$mol_button {\n\t\t\n\t\tdisabled() {\n\t\t\treturn !this.enabled()\n\t\t}\n\t\t\n\t\tevent_activate( next : Event ) {\n\t\t\tif( !next ) return\n\t\t\tif( !this.enabled() ) return\n\t\t\t\n\t\t\tthis.event_click( next )\n\t\t\tthis.click( next )\n\t\t}\n\t\t\n\t\tevent_key_press ( event: KeyboardEvent ) { \n\t\t\tif( event.keyCode === $mol_keyboard_code.enter ) {\n\t\t\t\treturn this.event_activate( event )\n\t\t\t}\n\t\t} \n\t\t\n\t\ttab_index() {\n\t\t\treturn this.enabled() ? super.tab_index() : -1\n\t\t}\n\t\t\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/button/button.view.css\",\n \"[mol_button] {\\n\\tborder: none;\\n\\tfont: inherit;\\n\\tbackground-color: none;\\n\\tdisplay: inline-flex;\\n\\tflex-shrink: 0;\\n\\ttext-decoration: inherit;\\n\\tcursor: inherit;\\n\\tposition: relative;\\n\\tbox-sizing: border-box;\\n\\tword-break: normal;\\n\\tcursor: default;\\n}\\n[mol_button]:focus {\\n\\toutline: none;\\n}\\n\\n[mol_button_typed] {\\n\\tjustify-content: center;\\n\\talign-content: center;\\n\\talign-items: center;\\n\\tvertical-align: middle;\\n\\ttext-align: center;\\n\\tpadding: .5rem 1rem;\\n\\tborder-radius: var(--mol_skin_round);\\n}\\n\\n[mol_button_typed][disabled] {\\n\\tcolor: var(--mol_theme_text);\\n\\tpointer-events: none;\\n}\\n\\n[mol_button_major] {\\n\\tbox-shadow: 0 0 0 1px var(--mol_theme_back);\\n}\\n\\n[mol_button_minor] {\\n\\tcolor: var(--mol_theme_control);\\n}\\n\\n[mol_button_major][disabled] {\\n\\topacity: .5;\\n}\\n\\n[mol_button_typed]:hover ,\\n[mol_button_typed]:focus {\\n\\tcursor: pointer;\\n\\tbackground-color: var(--mol_theme_hover);\\n}\\n\"\n) }","namespace $ { export class $mol_button_typed extends $mol_button {\n\n} }\n\nnamespace $ { export class $mol_button_major extends $mol_button_typed {\n\n\t/**\n\t * ```\n\t * attr *\n\t * \t^\n\t * \tmol_theme \\$mol_theme_accent\n\t * ```\n\t **/\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"mol_theme\" : \"$mol_theme_accent\" ,\n\t\t})\n\t}\n\n} }\n\nnamespace $ { export class $mol_button_minor extends $mol_button_typed {\n\n} }\n\n","namespace $ {\n\t\n\texport function $mol_merge_dict< Target , Source >( target : Target , source : Source ) : Target & Source {\n\t\tlet result = {} as any\n\t\tfor( let key in target ) result[ key ] = ( target as any )[ key ]\n\t\tfor( let key in source ) result[ key ] = ( source as any )[ key ]\n\t\treturn result\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport class $mol_state_arg extends $mol_object {\n\t\t\n\t\t@ $mol_mem\n\t\tstatic href( next? : string , force? : $mol_mem_force ) {\n\t\t\tif( next === undefined ) return $mol_dom_context.location.href\n\t\t\thistory.replaceState( history.state , $mol_dom_context.document.title , next )\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tstatic dict( next? : { [ key : string ] : string | null } ) {\n\t\t\tvar href = this.href( next && this.make_link( next ) ).split( /#/ )[1] || ''\n\t\t\tvar chunks = href.split( /[\\/\\?#&;]/g )\n\t\t\t\n\t\t\tvar params : { [ key : string ] : string } = {}\n\t\t\tchunks.forEach(\n\t\t\t\tchunk => {\n\t\t\t\t\tif( !chunk ) return\n\t\t\t\t\tvar vals = chunk.split( '=' ).map( decodeURIComponent )\n\t\t\t\t\tparams[ vals.shift()! ] = vals.join( '=' )\n\t\t\t\t}\n\t\t\t)\n\t\t\t\n\t\t\treturn params\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\tstatic dict_cut( except : string[] ) {\n\t\t\t\n\t\t\tconst dict = this.dict()\n\t\t\tconst cut : { [ key : string ] : string } = {}\n\t\t\t\n\t\t\tfor( const key in dict ) {\n\t\t\t\tif( except.indexOf( key ) >= 0 ) continue\n\t\t\t\tcut[ key ] = dict[ key ]\n\t\t\t}\n\t\t\t\n\t\t\treturn cut\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic value( key : string , next? : string | null ) {\n\t\t\tconst nextDict = ( next === void 0 ) ? void 0 : $mol_merge_dict( this.dict() , { [ key ] : next } ) \n\t\t\tconst next2 = this.dict( nextDict )[ key ]\n\t\t\treturn ( next2 == null ) ? null : next2\n\t\t}\n\t\t\n\t\tstatic link( next : { [ key : string ] : string } ) {\n\t\t\treturn this.make_link( $mol_merge_dict( this.dict_cut( Object.keys( next ) ) , next ) )\n\t\t}\n\t\t\n\t\tstatic make_link( next : { [ key : string ] : string | null } ) {\n\t\t\tconst chunks : string[] = []\n\t\t\tfor( let key in next ) {\n\t\t\t\tif( null == next[ key ] ) continue\n\t\t\t\tconst val = next[ key ]\n\t\t\t\tchunks.push( [ key ].concat( val ? [ val ] : [] ).map( this.encode ).join( '=' ) )\n\t\t\t}\n\t\t\t\n\t\t\treturn new URL( '#' + chunks.join( '/' ) , $mol_dom_context.location.href ).toString()\n\t\t}\n\n\t\tstatic encode( str : string ) {\n\t\t\treturn encodeURIComponent( str ).replace( /\\(/g , '%28' ).replace( /\\)/g , '%29' )\n\t\t}\n\t\t\n\t\tconstructor( public prefix = '' ) {\n\t\t\tsuper()\n\t\t}\n\t\t\n\t\tvalue( key : string , next? : string ) {\n\t\t\treturn ( this.constructor as typeof $mol_state_arg ).value( this.prefix + key , next )\n\t\t}\n\t\t\n\t\tsub( postfix : string ) {\n\t\t\treturn new ( this.constructor as typeof $mol_state_arg )( this.prefix + postfix + '.' )\n\t\t}\n\t\t\n\t\tlink( next : { [ key : string ] : string } ) {\n\t\t\tvar prefix = this.prefix\n\t\t\tvar dict : { [ key : string ] : string } = {}\n\t\t\tfor( var key in next ) {\n\t\t\t\tdict[ prefix + key ] = next[ key ]\n\t\t\t}\n\t\t\treturn ( this.constructor as typeof $mol_state_arg ).link( dict )\n\t\t}\n\t\t\n\t}\n\t\n\tself.addEventListener( 'hashchange' , $mol_fiber_root( $mol_log_group( '$mol_state_arg hashchange' , ( event : HashChangeEvent )=> {\n\t\t$mol_state_arg.href( $mol_dom_context.location.href ) \n\t} ) ) )\n\t\n}\n",null,null,null,null,null,null,"namespace $ {\n\n\texport class $mol_decor< Value > {\n\t\t\n\t\tconstructor(\n\t\t\treadonly value : Value\n\t\t) {}\n\n\t\tprefix() { return '' }\n\t\tvalueOf() { return this.value }\n\t\tpostfix() { return '' }\n\n\t\ttoString(){\n\t\t\treturn `${ this.prefix() }${ this.valueOf() }${ this.postfix() }`\n\t\t}\n\n\t}\n\n}\n","namespace $ {\n\t\n\texport type $mol_style_unit_length =\n\t| '%'\n\t| 'px' | 'cm' | 'mm' | 'Q' | 'in' | 'pc' | 'pt'\n\t| 'cap' | 'ch' | 'em' | 'rem' | 'ex' | 'ic' | 'lh' | 'rlh'\n\t| 'vh' | 'vw' | 'vi' | 'vb' | 'vmin' | 'vmax'\n\t\n\texport class $mol_style_unit<\n\t\tLiteral extends $mol_style_unit_length\n\t> extends $mol_decor< number > {\n\n\t\tconstructor(\n\t\t\tvalue : number,\n\t\t\treadonly literal : Literal,\n\t\t) {\n\t\t\tsuper( value )\n\t\t}\n\n\t\tpostfix() {\n\t\t\treturn this.literal\n\t\t}\n\n\t\tstatic per( value : number ) { return new $mol_style_unit( value , '%' ) }\n\t\tstatic px( value : number ) { return new $mol_style_unit( value , 'px' ) }\n\t\tstatic mm( value : number ) { return new $mol_style_unit( value , 'mm' ) }\n\t\tstatic cm( value : number ) { return new $mol_style_unit( value , 'cm' ) }\n\t\tstatic Q( value : number ) { return new $mol_style_unit( value , 'Q' ) }\n\t\tstatic in( value : number ) { return new $mol_style_unit( value , 'in' ) }\n\t\tstatic pc( value : number ) { return new $mol_style_unit( value , 'pc' ) }\n\t\tstatic pt( value : number ) { return new $mol_style_unit( value , 'pt' ) }\n\t\tstatic cap( value : number ) { return new $mol_style_unit( value , 'cap' ) }\n\t\tstatic ch( value : number ) { return new $mol_style_unit( value , 'ch' ) }\n\t\tstatic em( value : number ) { return new $mol_style_unit( value , 'em' ) }\n\t\tstatic rem( value : number ) { return new $mol_style_unit( value , 'rem' ) }\n\t\tstatic ex( value : number ) { return new $mol_style_unit( value , 'ex' ) }\n\t\tstatic ic( value : number ) { return new $mol_style_unit( value , 'ic' ) }\n\t\tstatic lh( value : number ) { return new $mol_style_unit( value , 'lh' ) }\n\t\tstatic rlh( value : number ) { return new $mol_style_unit( value , 'rlh' ) }\n\t\tstatic vh( value : number ) { return new $mol_style_unit( value , 'vh' ) }\n\t\tstatic vw( value : number ) { return new $mol_style_unit( value , 'vw' ) }\n\t\tstatic vi( value : number ) { return new $mol_style_unit( value , 'vi' ) }\n\t\tstatic vb( value : number ) { return new $mol_style_unit( value , 'vb' ) }\n\t\tstatic vmin( value : number ) { return new $mol_style_unit( value , 'vmin' ) }\n\t\tstatic vmax( value : number ) { return new $mol_style_unit( value , 'vmax' ) }\n\t\n\t}\n\n}\n","namespace $ {\n\n\texport type $mol_style_func_name =\n\t| 'calc'\n\t| 'fit-content'\n\t\n\texport class $mol_style_func<\n\t\tName extends $mol_style_func_name ,\n\t\tValue = unknown,\n\t> extends $mol_decor< Value > {\n\n\t\tconstructor(\n\t\t\tvalue : Value,\n\t\t\treadonly name : Name,\n\t\t) {\n\t\t\tsuper( value )\n\t\t}\n\n\t\tprefix() { return this.name + '(' }\n\t\tpostfix() { return ')' }\n\n\t\tstatic calc< Value >( value : Value ) {\n\t\t\treturn new $mol_style_func( value , 'calc' )\n\t\t}\n\n\t\tstatic fit_content(\n\t\t\tvalue :\n\t\t\t| number\n\t\t\t| $mol_style_unit< $mol_style_unit_length >\n\t\t\t| $mol_style_func<'calc'>\n\t\t) {\n\t\t\treturn new $mol_style_func( value , 'fit-content' )\n\t\t}\n\t\n\t}\n\n}\n",null,null,"namespace $ {\n\n\texport function $mol_style_sheet<\n\t\tComponent extends $mol_view\n\t>(\n\t\tComponent : new()=> Component ,\n\t\tconfig : $mol_style_definition< Component > ,\n\t) {\n\n\t\tlet rules = [] as string[]\n\n\t\tconst make_class = ( prefix : string , suffix : string , config : $mol_style_definition )=> {\n\n\t\t\tconst props = [] as string[]\n\t\t\t\n\t\t\tfor( const key of Object.keys( config ).reverse() ) {\n\n\t\t\t\tif( /^[a-z]/.test(key) ) {\n\n\t\t\t\t\tconst name = key.replace( /[A-Z]/g , letter => '-' + letter.toLowerCase() )\n\t\t\t\t\tconst val = config[key]\n\t\t\t\t\t\n\t\t\t\t\tif( val.constructor === Object ) {\n\t\t\t\t\t\tfor( let suffix in val ) {\n\t\t\t\t\t\t\tprops.push(`\\t${ name }-${ suffix }: ${ val[ suffix ] };\\n`)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprops.push(`\\t${ name }: ${ val };\\n`)\n\t\t\t\t\t}\n\n\t\t\t\t} else if( /^[A-Z]/.test(key) ) {\n\n\t\t\t\t\tmake_class( prefix + '_' + key.toLowerCase() , suffix , config[key] as any )\n\n\t\t\t\t} else if( key[0] === '$' ) {\n\n\t\t\t\t\tmake_class( prefix + '] ' + key.replace( '$' , '[' ) , suffix , config[key] as any )\n\n\t\t\t\t} else if( key === '>' ) {\n\n\t\t\t\t\tconst types = config[key] as any\n\n\t\t\t\t\tfor( let type in types ) {\n\t\t\t\t\t\tmake_class( prefix + '] > ' + type.replace( '$' , '[' ) , suffix , types[type] as any )\n\t\t\t\t\t}\n\n\t\t\t\t} else if( key === '@' ) {\n\n\t\t\t\t\tconst attrs = config[key] as any\n\n\t\t\t\t\tfor( let name in attrs ) {\n\t\t\t\t\t\tfor( let val in attrs[name] ) {\n\t\t\t\t\t\t\tmake_class( prefix , suffix + '[' + name + '=' + JSON.stringify( val ) + ']' , attrs[name][val] as any )\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t} else if( key === '@media' ) {\n\n\t\t\t\t\tconst media = config[key] as any\n\n\t\t\t\t\tfor( let query in media ) {\n\n\t\t\t\t\t\trules.push('}\\n')\n\t\t\t\t\t\t\n\t\t\t\t\t\tmake_class( prefix , suffix , media[query] as any )\n\t\t\t\t\t\t\n\t\t\t\t\t\trules.push( `${ key } ${ query } {\\n` )\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tmake_class( prefix , suffix + key , config[key] as any )\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t\n\t\t\tif( props.length ) {\n\t\t\t\trules.push( `${ prefix }${ suffix } {\\n${ props.reverse().join('') }}\\n` )\n\t\t\t}\n\n\t\t}\n\n\t\tmake_class( Component.name.replace( '$' , '[' ) , ']' , config )\n\n\t\treturn rules.reverse().join('')\n\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_style_define<\n\t\tComponent extends $mol_view\n\t>(\n\t\tComponent : new()=> Component ,\n\t\tconfig : $mol_style_definition< Component > ,\n\t) {\n\n\t\treturn $mol_style_attach(\n\t\t\tComponent.name,\n\t\t\t$mol_style_sheet( Component , config ),\n\t\t)\n\n\t}\n\n}\n","namespace $ { export class $mol_link extends $mol_view {\n\n\t/**\n\t * ```\n\t * dom_name \\a\n\t * ```\n\t **/\n\tdom_name() {\n\t\treturn \"a\"\n\t}\n\n\t/**\n\t * ```\n\t * attr *\n\t * \t^\n\t * \thref <= uri\n\t * \ttitle <= hint\n\t * \ttarget <= target\n\t * \tdownload <= file_name\n\t * \tmol_link_current <= current\n\t * ```\n\t **/\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"href\" : this.uri() ,\n\t\t\t\"title\" : this.hint() ,\n\t\t\t\"target\" : this.target() ,\n\t\t\t\"download\" : this.file_name() ,\n\t\t\t\"mol_link_current\" : this.current() ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * uri \\\n\t * ```\n\t **/\n\turi() {\n\t\treturn \"\"\n\t}\n\n\t/**\n\t * ```\n\t * hint \\\n\t * ```\n\t **/\n\thint() {\n\t\treturn \"\"\n\t}\n\n\t/**\n\t * ```\n\t * target \\_self\n\t * ```\n\t **/\n\ttarget() {\n\t\treturn \"_self\"\n\t}\n\n\t/**\n\t * ```\n\t * file_name \\\n\t * ```\n\t **/\n\tfile_name() {\n\t\treturn \"\"\n\t}\n\n\t/**\n\t * ```\n\t * current false\n\t * ```\n\t **/\n\tcurrent() {\n\t\treturn false\n\t}\n\n\t/**\n\t * ```\n\t * sub /$mol_view_content <= title\n\t * ```\n\t **/\n\tsub() {\n\t\treturn [ this.title() ] as readonly ( $mol_view_content )[]\n\t}\n\n\t/**\n\t * ```\n\t * arg *\n\t * ```\n\t **/\n\targ() {\n\t\treturn ({\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * event *\n\t * \t^\n\t * \tclick?event <=> click?event\n\t * ```\n\t **/\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"click\" : ( event? : any )=> this.click( event ) ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * click?event <=> event_click?event\n\t * ```\n\t **/\n\t@ $mol_mem\n\tclick( event? : any , force? : $mol_mem_force ) {\n\t\treturn this.event_click( event )\n\t}\n\n\t/**\n\t * ```\n\t * event_click?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tevent_click( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\n","namespace $.$$ {\n\t\n\texport class $mol_link extends $.$mol_link {\n\t\t\n\t\t@ $mol_mem\n\t\turi() {\n\t\t\treturn new this.$.$mol_state_arg( this.state_key() ).link( this.arg() )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tcurrent() {\n\n\t\t\tif( this.uri() === this.$.$mol_state_arg.href() ) return true\n\t\t\t\n\t\t\tconst args = this.arg()\n\t\t\t\n\t\t\tconst keys = Object.keys( args ).filter( key => args[ key ] != null )\n\t\t\tif( keys.length === 0 ) return false\n\n\t\t\tfor( const key of keys ) {\n\t\t\t\tif( this.$.$mol_state_arg.value( key ) !== args[ key ] ) return false\n\t\t\t}\n\n\t\t\treturn true\n\t\t}\n\n\t\tevent_click( event? : Event ) {\n\t\t\tif( !event || event.defaultPrevented ) return\n\t\t\tthis.focused( false )\n\t\t\t// setTimeout( $mol_log_group( `${ this }.event_click()` , ()=> this.focused( false ) ) , 50 )\n\t\t}\n\n\t\tfile_name() {\n\t\t\treturn null as unknown as string\n\t\t}\n\n\t\tminimal_height() {\n\t\t\treturn Math.max( super.minimal_height() || 40 )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\t$mol_style_define( $mol_link , {\n\t\t\n\t\ttextDecoration: 'none',\n\t\tcolor: $mol_theme.control,\n\t\tstroke: 'currentColor',\n\t\tcursor: 'pointer',\n\t\tpadding: '.5rem',\n\t\tboxSizing: 'border-box',\n\t\tposition: 'relative',\n\n\t\t':hover': {\n\t\t\tbackgroundColor: $mol_theme.hover,\n\t\t},\n\n\t\t':focus': {\n\t\t\toutline: 'none',\n\t\t\tbackgroundColor: $mol_theme.hover,\n\t\t},\n\n\t\t'@': {\n\t\t\tmol_link_current: {\n\t\t\t\t'true': {\n\t\t\t\t\tbackgroundColor: $mol_theme.current,\n\t\t\t\t\tcolor: $mol_theme.text,\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t} )\n\n}\n","namespace $ { $mol_style_attach( \"mol/check/check.css\",\n \"[mol_check] {\\n\\tflex: 0 0 auto;\\n\\tjustify-content: flex-start;\\n\\talign-content: center;\\n\\talign-items: flex-start;\\n\\tborder: none;\\n\\tfont-weight: inherit;\\n\\tbox-shadow: none;\\n\\ttext-align: left;\\n\\tpadding: .5rem;\\n\\tdisplay: inline-flex;\\n\\tflex-wrap: nowrap;\\n}\\n\"\n) }","namespace $ { export class $mol_check extends $mol_button_minor {\n\n\t/**\n\t * ```\n\t * attr *\n\t * \t^\n\t * \tmol_check_checked <= checked?val\n\t * \taria-checked <= checked?val\n\t * \trole \\checkbox\n\t * ```\n\t **/\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"mol_check_checked\" : this.checked() ,\n\t\t\t\"aria-checked\" : this.checked() ,\n\t\t\t\"role\" : \"checkbox\" ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * checked?val false\n\t * ```\n\t **/\n\t@ $mol_mem\n\tchecked( val? : any , force? : $mol_mem_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/**\n\t * ```\n\t * sub /\n\t * \t<= Icon\n\t * \t<= label\n\t * ```\n\t **/\n\tsub() {\n\t\treturn [ this.Icon() , this.label() ] as readonly any[]\n\t}\n\n\t/**\n\t * ```\n\t * Icon null\n\t * ```\n\t **/\n\tIcon() {\n\t\treturn null as any\n\t}\n\n\t/**\n\t * ```\n\t * label / <= Title\n\t * ```\n\t **/\n\tlabel() {\n\t\treturn [ this.Title() ] as readonly any[]\n\t}\n\n\t/**\n\t * ```\n\t * Title $mol_view sub / <= title\n\t * ```\n\t **/\n\t@ $mol_mem\n\tTitle() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [ this.title() ] as readonly any[]\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view( ) )\n\t}\n\n\t/**\n\t * ```\n\t * title \\\n\t * ```\n\t **/\n\ttitle() {\n\t\treturn \"\"\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_check extends $.$mol_check {\n\n\t\tclick( next? : Event ) {\n\t\t\tthis.checked( !this.checked() )\n\t\t\tif( next ) next.preventDefault()\n\t\t}\n\n\t\tsub() {\n\t\t\treturn [\n\t\t\t\t... $mol_maybe( this.Icon() ) ,\n\t\t\t\t... this.label() ,\n\t\t\t]\n\t\t}\n\n\t}\n}\n","namespace $ {\n\t\n\texport class $mol_state_local< Value > extends $mol_object {\n\t\t\n\t\tstatic 'native()' : Pick< Storage , 'getItem'|'setItem'|'removeItem' >\n\t\tstatic native() {\n\t\t\tif( this['native()'] ) return this['native()']\n\n\t\t\tcheck : try {\n\t\t\t\tconst native = $mol_dom_context.localStorage\n\t\t\t\tif( !native ) break check\n\t\t\t\t\n\t\t\t\tnative.setItem( '' , '' )\n\t\t\t\tnative.removeItem( '' )\n\t\t\t\treturn this['native()'] = native\n\t\t\t} catch( error ) {\n\t\t\t\tconsole.warn( error )\n\t\t\t}\n\n\t\t\treturn this['native()'] = {\n\t\t\t\tgetItem( key : string ) {\n\t\t\t\t\treturn this[ ':' + key ]\n\t\t\t\t} ,\n\t\t\t\tsetItem( key : string , value : string ) {\n\t\t\t\t\tthis[ ':' + key ] = value\n\t\t\t\t} ,\n\t\t\t\tremoveItem( key : string ) {\n\t\t\t\t\tthis[ ':' + key ] = void 0\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\tstatic value< Value >( key : string , next? : Value , force? : $mol_mem_force ) : Value | null {\n\t\t\tif( next === void 0 ) return JSON.parse( this.native().getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) this.native().removeItem( key )\n\t\t\telse this.native().setItem( key , JSON.stringify( next ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_local.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\tself.addEventListener( 'storage' , event => {\n\t\tif( !event.key ) return // @TODO clear support\n\t\t$.$mol_state_local.value( event.key , undefined , $mol_mem_force_cache )\n\t} )\n\n}\n","namespace $ {\n\t\n\texport class $mol_state_session< Value > extends $mol_object {\n\t\t\n\t\tstatic 'native()' : Pick< Storage , 'getItem'|'setItem'|'removeItem' >\n\t\tstatic native() {\n\t\t\tif( this['native()'] ) return this['native()']\n\n\t\t\tcheck : try {\n\t\t\t\tconst native = $mol_dom_context.sessionStorage\n\t\t\t\tif( !native ) break check\n\n\t\t\t\tnative.setItem( '' , '' )\n\t\t\t\tnative.removeItem( '' )\n\t\t\t\treturn this['native()'] = native\n\t\t\t} catch( error ) {\n\t\t\t\tconsole.warn( error )\n\t\t\t}\n\n\t\t\treturn this['native()'] = {\n\t\t\t\tgetItem( key : string ) {\n\t\t\t\t\treturn this[ ':' + key ]\n\t\t\t\t} ,\n\t\t\t\tsetItem( key : string , value : string ) {\n\t\t\t\t\tthis[ ':' + key ] = value\n\t\t\t\t} ,\n\t\t\t\tremoveItem( key : string ) {\n\t\t\t\t\tthis[ ':' + key ] = void 0\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t@ $mol_mem_key\n\t\tstatic value< Value >( key : string , next? : Value ) : Value {\n\t\t\tif( next === void 0 ) return JSON.parse( this.native().getItem( key ) || 'null' )\n\t\t\t\n\t\t\tif( next === null ) this.native().removeItem( key )\n\t\t\telse this.native().setItem( key , JSON.stringify( next ) )\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\tprefix() { return '' }\n\t\t\n\t\tvalue( key : string , next? : Value ) {\n\t\t\treturn $mol_state_session.value( this.prefix() + '.' + key , next )\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\texport class $mol_memo extends $mol_wrapper {\n\t\t\n\t\tstatic wrap< This extends object , Value >( task : ( this : This , next? : Value )=> Value ) {\n\n\t\t\tconst store = new WeakMap< This , Value >()\n\n\t\t\treturn function( this : This , next? : Value ) {\n\n\t\t\t\tif( next === undefined && store.has( this ) ) return store.get( this )\n\t\t\t\t\n\t\t\t\tconst val = task.call( this , next ) ?? next\n\t\t\t\t\n\t\t\t\tstore.set( this , val! )\n\t\t\t\t\n\t\t\t\treturn val\n\n\t\t\t}\n\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $ { export class $mol_scroll extends $mol_view {\n\n\t/**\n\t * ```\n\t * minimal_height 0\n\t * ```\n\t **/\n\tminimal_height() {\n\t\treturn 0\n\t}\n\n\t/**\n\t * ```\n\t * _event_scroll_timer?val null\n\t * ```\n\t **/\n\t@ $mol_mem\n\t_event_scroll_timer( val? : any , force? : $mol_mem_force ) {\n\t\treturn ( val !== void 0 ) ? val : null as any\n\t}\n\n\t/**\n\t * ```\n\t * field *\n\t * \t^\n\t * \tscrollTop <= scroll_top?val\n\t * \tscrollLeft <= scroll_left?val\n\t * ```\n\t **/\n\tfield() {\n\t\treturn ({\n\t\t\t...super.field() ,\n\t\t\t\"scrollTop\" : this.scroll_top() ,\n\t\t\t\"scrollLeft\" : this.scroll_left() ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * scroll_top?val 0\n\t * ```\n\t **/\n\t@ $mol_mem\n\tscroll_top( val? : any , force? : $mol_mem_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/**\n\t * ```\n\t * scroll_left?val 0\n\t * ```\n\t **/\n\t@ $mol_mem\n\tscroll_left( val? : any , force? : $mol_mem_force ) {\n\t\treturn ( val !== void 0 ) ? val : 0\n\t}\n\n\t/**\n\t * ```\n\t * event *\n\t * \t^\n\t * \tscroll?event <=> event_scroll?event\n\t * ```\n\t **/\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"scroll\" : ( event? : any )=> this.event_scroll( event ) ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * event_scroll?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tevent_scroll( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\n","namespace $.$$ {\n\t\n\texport class $mol_scroll extends $.$mol_scroll {\n\n\t\t@ $mol_mem\n\t\tscroll_top( next? : number ) {\n\t\t\treturn $mol_state_session.value( `${ this }.scroll_top()` , next ) || 0\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tscroll_left( next? : number ) {\n\t\t\treturn $mol_state_session.value( `${ this }.scroll_left()` , next ) || 0\n\t\t}\n\n\t\t@ $mol_memo.method\n\t\t_event_scroll_timer( next? : $mol_after_frame | null ) {\n\t\t\treturn next\n\t\t}\n\n\t\tevent_scroll( next? : Event ) {\n\t\t\t\n\t\t\tif( this._event_scroll_timer() ) this._event_scroll_timer().destructor()\n\n\t\t\tconst el = this.dom_node() as HTMLElement\n\t\t\t\n\t\t\tthis._event_scroll_timer( new $mol_after_frame( $mol_fiber_solid.func( ()=> {\n\n\t\t\t\tthis.scroll_top( Math.max( 0 , el.scrollTop ) )\n\t\t\t\tthis.scroll_left( Math.max( 0 , el.scrollLeft ) )\n\n\t\t\t} ) ) )\n\n\t\t}\n\t\t\n\t}\n\n}\n","namespace $.$$ {\n\n\t$mol_style_define( $mol_scroll , {\n\n\t\tdisplay: 'block',\n\t\toverflow: 'auto',\n\t\tflex: {\n\t\t\tgrow: 1,\n\t\t\tshrink: 1,\n\t\t\tbasis: 'auto',\n\t\t},\n\t\talignSelf: 'stretch',\n\t\tboxSizing: 'border-box',\n\t\twillChange: 'scroll-position',\n\t\ttransform: 'translateZ(0)', // enforce gpu scroll in all agents\n\t\tboxShadow: `inset 0 0 0 .5px ${ $mol_theme.line }`,\n\t\tmaxHeight: '100%',\n\t\tmaxWidth: '100%',\n\t\twebkitOverflowScrolling: 'touch',\n\t\n\t\t'::-webkit-scrollbar': {\n\t\t\twidth: '.5rem',\n\t\t\theight: '.5rem',\n\t\t},\n\t\t\n\t\t'::-webkit-scrollbar-corner': {\n\t\t\tbackground: $mol_theme.line,\n\t\t},\n\n\t\t'::-webkit-scrollbar-track': {\n\t\t\tbackground: $mol_theme.line,\n\t\t},\n\n\t\t'::-webkit-scrollbar-thumb': {\n\t\t\tbackground: $mol_theme.control,\n\t\t},\n\n\t\t'@media' : {\n\t\t\t'print' : {\n\t\t\t\toverflow: 'visible',\n\t\t\t},\n\t\t},\n\n\t})\n\n}\n","namespace $ { export class $mol_list extends $mol_view {\n\n\t/**\n\t * ```\n\t * render_visible_only true\n\t * ```\n\t **/\n\trender_visible_only() {\n\t\treturn true\n\t}\n\n\t/**\n\t * ```\n\t * render_over 0\n\t * ```\n\t **/\n\trender_over() {\n\t\treturn 0\n\t}\n\n\t/**\n\t * ```\n\t * sub <= rows\n\t * ```\n\t **/\n\tsub() {\n\t\treturn this.rows()\n\t}\n\n\t/**\n\t * ```\n\t * rows /$mol_view\n\t * ```\n\t **/\n\trows() {\n\t\treturn [ ] as readonly ( $mol_view )[]\n\t}\n\n\t/**\n\t * ```\n\t * Empty $mol_view\n\t * ```\n\t **/\n\t@ $mol_mem\n\tEmpty() {\n\t\treturn (( obj )=>{\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view( ) )\n\t}\n\n\t/**\n\t * ```\n\t * Gap_before $mol_view style * paddingTop <= gap_before\n\t * ```\n\t **/\n\t@ $mol_mem\n\tGap_before() {\n\t\treturn (( obj )=>{\n\t\t\tobj.style = () => ({\n\t\t\t\"paddingTop\" : this.gap_before() ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view( ) )\n\t}\n\n\t/**\n\t * ```\n\t * gap_before 0\n\t * ```\n\t **/\n\tgap_before() {\n\t\treturn 0\n\t}\n\n\t/**\n\t * ```\n\t * Gap_after $mol_view style * paddingTop <= gap_after\n\t * ```\n\t **/\n\t@ $mol_mem\n\tGap_after() {\n\t\treturn (( obj )=>{\n\t\t\tobj.style = () => ({\n\t\t\t\"paddingTop\" : this.gap_after() ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view( ) )\n\t}\n\n\t/**\n\t * ```\n\t * gap_after 0\n\t * ```\n\t **/\n\tgap_after() {\n\t\treturn 0\n\t}\n\n\t/**\n\t * ```\n\t * view_window /\n\t * \t0\n\t * \t0\n\t * ```\n\t **/\n\tview_window() {\n\t\treturn [ 0 , 0 ] as readonly any[]\n\t}\n\n} }\n\n","namespace $.$$ {\n\n\texport class $mol_list extends $.$mol_list {\n\t\t\n\t\t@ $mol_mem\n\t\tsub() {\n\t\t\tconst rows = this.rows()\n\t\t\treturn ( rows.length === 0 ) ? [ this.Empty() ] : rows\n\t\t}\n\n\t\trender_visible_only() {\n\t\t\tif ( !$mol_dom_context.CSS ) return false\n\t\t\treturn $mol_dom_context.CSS.supports( 'overflow-anchor:auto' )\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tview_window() : [ number , number ] {\n\t\t\t\n\t\t\tconst kids = this.sub()\n\t\t\tif( kids.length < 3 ) return [ 0 , kids.length ]\n\t\t\t\n\t\t\tlet [ min , max ] = $mol_mem_cached( ()=> this.view_window() ) ?? [ 0 , 0 ]\n\n\t\t\tlet max2 = max = Math.min( max , kids.length )\n\t\t\tlet min2 = min = Math.max( 0 , Math.min( min , max - 1 ) )\n\t\t\t\n\t\t\tconst anchoring = this.render_visible_only()\n\t\t\tconst window_height = this.$.$mol_window.size().height\n\t\t\tconst over = Math.ceil( window_height * this.render_over() )\n\t\t\tconst limit_top = -over\n\t\t\tconst limit_bottom = window_height + over\n\n\t\t\tconst rect = this.view_rect()\n \n\t\t\tconst gap_before = $mol_mem_cached( ()=> this.gap_before() ) ?? 0\n\t\t\tconst gap_after = $mol_mem_cached( ()=> this.gap_after() ) ?? 0\n\n\t\t\tlet top = ( rect?.top ?? 0 ) + gap_before\n\t\t\tlet bottom = ( rect?.bottom ?? 0 ) - gap_after\n\n\t\t\t// change nothing when already covers all limits\n\t\t\tif( top <= limit_top && bottom >= limit_bottom ) {\n\t\t\t\treturn [ min2 , max2 ]\n\t\t\t}\n\n\t\t\t// jumps when fully over limits\n\t\t\tif( anchoring && (( bottom < limit_top )||( top > limit_bottom )) ) {\n\n\t\t\t\tmin = 0\n\t\t\t\ttop = ( rect?.top ?? 0 )\n\t\t\t\t\n\t\t\t\twhile( min < ( kids.length - 1 ) ) {\n\t\t\t\t\t\n\t\t\t\t\tconst height = kids[ min ].minimal_height()\n\t\t\t\t\tif( top + height >= limit_top ) break\n\t\t\t\t\t\n\t\t\t\t\ttop += height\n\t\t\t\t\t++ min\n\n\t\t\t\t}\n\n\t\t\t\tmin2 = min\n\t\t\t\tmax2 = max = min\n\t\t\t\tbottom = top\n\n\t\t\t}\n\n\t\t\tlet top2 = top\n\t\t\tlet bottom2 = bottom\n\n\t\t\t// force recalc min when overlapse top limit\n\t\t\tif( anchoring && ( top <= limit_top ) ) {\n\t\t\t\tmin2 = max\n\t\t\t\ttop2 = bottom\n\t\t\t}\n\n\t\t\t// force recalc max when overlapse bottom limit\n\t\t\tif( bottom >= limit_bottom ) {\n\t\t\t\tmax2 = min\n\t\t\t\tbottom2 = top\n\t\t\t}\n\n\t\t\t// extend max to cover bottom limit\n\t\t\twhile( bottom2 < limit_bottom && max2 < kids.length ) {\n\t\t\t\tbottom2 += kids[ max2 ].minimal_height()\n\t\t\t\t++ max2\n\t\t\t}\n\n\t\t\t// extend min to cover top limit\n\t\t\twhile( anchoring && (( top2 >= limit_top )&&( min2 > 0 )) ) {\n\t\t\t\t-- min2\n\t\t\t\ttop2 -= kids[ min2 ].minimal_height()\n\t\t\t}\n\n\t\t\treturn [ min2 , max2 ]\n\t\t}\n\n\t\t@ $mol_mem\n\t\tgap_before() {\n\t\t\tconst skipped = this.sub().slice( 0 , this.view_window()[0] )\n\t\t\treturn Math.max( 0 , skipped.reduce( ( sum , view )=> sum + view.minimal_height() , 0 ) )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tgap_after() {\n\t\t\tconst skipped = this.sub().slice( this.view_window()[1] )\n\t\t\treturn Math.max( 0 , skipped.reduce( ( sum , view )=> sum + view.minimal_height() , 0 ) )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tsub_visible() {\n\n\t\t\tvar sub = this.sub()\n\n\t\t\tconst next = sub.slice( ... this.view_window() )\n\t\t\t\n\t\t\tif( this.gap_before() ) next.unshift( this.Gap_before() )\n\t\t\tif( this.gap_after() ) next.push( this.Gap_after() )\n\n\t\t\treturn next\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tminimal_height() {\n\t\t\treturn this.sub().reduce( ( sum , view )=> sum + view.minimal_height() , 0 )\n\t\t}\n\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/list/list.view.css\",\n \"[mol_list] {\\n\\twill-change: contents;\\n\\tdisplay: block;\\n\\t/* display: flex;\\n\\tflex-direction: column;\\n\\talign-items: stretch;\\n\\talign-content: stretch; */\\n\\ttransition: none;\\n}\\n\\n[mol_list_gap_before] ,\\n[mol_list_gap_after] {\\n\\tdisplay: block !important;\\n\\tflex: none;\\n\\ttransition: none;\\n\\toverflow-anchor: none;\\n}\\n\\n[mol_list] > * {\\n\\tdisplay: block;\\n}\\n\"\n) }","namespace $ { $mol_style_attach( \"mol/bar/bar.view.css\",\n \"[mol_bar] {\\n\\tdisplay: flex;\\n\\tbox-shadow: inset 0 0 0 .5px var(--mol_theme_line);\\n\\tborder-radius: var(--mol_skin_round);\\n}\\n\\n[mol_bar] > * {\\n\\tborder-radius: 0;\\n}\\n\\n[mol_bar] > *:first-child {\\n\\tborder-top-left-radius: var(--mol_skin_round);\\n\\tborder-bottom-left-radius: var(--mol_skin_round);\\n}\\n\\n[mol_bar] > *:not(:first-child) {\\n\\tmargin-left: 1px;\\n}\\n\\n[mol_bar] > *:last-child {\\n\\tborder-top-right-radius: var(--mol_skin_round);\\n\\tborder-bottom-right-radius: var(--mol_skin_round);\\n}\\n\"\n) }","namespace $ { export class $mol_bar extends $mol_view {\n\n} }\n\n","namespace $ {\n\t\n\texport class $mol_state_time extends $mol_object {\n\t\t\n\t\t@ $mol_mem_key\n\t\tstatic now( precision = 0 , next? : number ) {\n\t\t\t\n\t\t\tif( precision > 0 ) {\n\t\t\t\tnew $mol_after_timeout( precision , $mol_atom2.current!.fresh )\n\t\t\t} else {\n\t\t\t\tnew $mol_after_frame( $mol_atom2.current!.fresh )\n\t\t\t}\n\t\t\n\t\t\treturn Date.now()\n\t\t}\n\t\t\n\t}\n\t\n}\n","namespace $ {\n\n\tlet canvas : CanvasRenderingContext2D\n\n\texport function $mol_font_canvas( next = canvas ) {\n\t\tif( !next ) next = $mol_dom_context.document.createElement( 'canvas' ).getContext( '2d' )!\n\t\treturn canvas = next\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_font_measure( size : number , face : string , text : string ) {\n\t\tconst canvas = $mol_font_canvas()\n\t\tcanvas.font = size + 'px ' + face\n\t\treturn canvas.measureText( text ).width\n\t}\n\n}\n","namespace $ { export class $mol_svg extends $mol_view {\n\n\t/**\n\t * ```\n\t * dom_name \\svg\n\t * ```\n\t **/\n\tdom_name() {\n\t\treturn \"svg\"\n\t}\n\n\t/**\n\t * ```\n\t * dom_name_space \\http://www.w3.org/2000/svg\n\t * ```\n\t **/\n\tdom_name_space() {\n\t\treturn \"http://www.w3.org/2000/svg\"\n\t}\n\n\t/**\n\t * ```\n\t * text_width?text 0\n\t * ```\n\t **/\n\t@ $mol_mem\n\ttext_width( text? : any , force? : $mol_mem_force ) {\n\t\treturn ( text !== void 0 ) ? text : 0\n\t}\n\n\t/**\n\t * ```\n\t * font_size 16\n\t * ```\n\t **/\n\tfont_size() {\n\t\treturn 16\n\t}\n\n\t/**\n\t * ```\n\t * font_family \\\n\t * ```\n\t **/\n\tfont_family() {\n\t\treturn \"\"\n\t}\n\n} }\n\n","namespace $.$$ {\n\texport class $mol_svg extends $.$mol_svg {\n\t\t@$mol_mem\n\t\tcomputed_style() {\n\t\t\tconst win = this.$.$mol_dom_context\n\t\t\tconst style = win.getComputedStyle(this.dom_node())\n\n\t\t\tif(!style['font-size']) $mol_state_time.now()\n\n\t\t\treturn style\n\t\t}\n\n\t\t@$mol_mem\n\t\tfont_size(): number {\n\t\t\treturn parseInt(this.computed_style()['font-size']) || 16\n\t\t}\n\n\t\t@$mol_mem\n\t\tfont_family() {\n\t\t\treturn this.computed_style()['font-family']\n\t\t}\n\n\t\ttext_width(text: string): number {\n\t\t\treturn $mol_font_measure(this.font_size(), this.font_family(), text)\n\t\t}\n\t}\n}\n","namespace $ { $mol_style_attach( \"mol/svg/root/root.view.css\",\n \"[mol_svg_root] {\\n\\toverflow: hidden;\\n}\\n\"\n) }","namespace $ { export class $mol_svg_root extends $mol_svg {\n\n\t/**\n\t * ```\n\t * dom_name \\svg\n\t * ```\n\t **/\n\tdom_name() {\n\t\treturn \"svg\"\n\t}\n\n\t/**\n\t * ```\n\t * attr *\n\t * \t^\n\t * \tviewBox <= view_box\n\t * \tpreserveAspectRatio <= aspect\n\t * ```\n\t **/\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"viewBox\" : this.view_box() ,\n\t\t\t\"preserveAspectRatio\" : this.aspect() ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * view_box \\0 0 100 100\n\t * ```\n\t **/\n\tview_box() {\n\t\treturn \"0 0 100 100\"\n\t}\n\n\t/**\n\t * ```\n\t * aspect \\xMidYMid\n\t * ```\n\t **/\n\taspect() {\n\t\treturn \"xMidYMid\"\n\t}\n\n} }\n\n","namespace $ { export class $mol_svg_path extends $mol_svg {\n\n\t/**\n\t * ```\n\t * dom_name \\path\n\t * ```\n\t **/\n\tdom_name() {\n\t\treturn \"path\"\n\t}\n\n\t/**\n\t * ```\n\t * attr *\n\t * \t^\n\t * \td <= geometry\n\t * ```\n\t **/\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"d\" : this.geometry() ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * geometry \\\n\t * ```\n\t **/\n\tgeometry() {\n\t\treturn \"\"\n\t}\n\n} }\n\n","namespace $ { $mol_style_attach( \"mol/icon/icon.view.css\",\n \"[mol_icon] {\\n\\tfill: currentColor;\\n\\tstroke: none;\\n\\twidth: 1em;\\n\\theight: 1em;\\n\\tflex: 0 0 auto;\\n\\tvertical-align: -.1em;\\n\\twill-change: transform;\\n}\\n\"\n) }","namespace $ { export class $mol_icon extends $mol_svg_root {\n\n\t/**\n\t * ```\n\t * view_box \\0 0 24 24\n\t * ```\n\t **/\n\tview_box() {\n\t\treturn \"0 0 24 24\"\n\t}\n\n\t/**\n\t * ```\n\t * minimal_width 16\n\t * ```\n\t **/\n\tminimal_width() {\n\t\treturn 16\n\t}\n\n\t/**\n\t * ```\n\t * minimal_height 16\n\t * ```\n\t **/\n\tminimal_height() {\n\t\treturn 16\n\t}\n\n\t/**\n\t * ```\n\t * sub / <= Path\n\t * ```\n\t **/\n\tsub() {\n\t\treturn [ this.Path() ] as readonly any[]\n\t}\n\n\t/**\n\t * ```\n\t * Path $mol_svg_path geometry <= path\n\t * ```\n\t **/\n\t@ $mol_mem\n\tPath() {\n\t\treturn (( obj )=>{\n\t\t\tobj.geometry = () => this.path()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_svg_path( ) )\n\t}\n\n\t/**\n\t * ```\n\t * path \\\n\t * ```\n\t **/\n\tpath() {\n\t\treturn \"\"\n\t}\n\n} }\n\n","namespace $ { export class $mol_icon_alert extends $mol_icon {\n\n\t/**\n\t * ```\n\t * path \\M13,14H11V10H13M13,18H11V16H13M1,21H23L12,2L1,21Z\n\t * ```\n\t **/\n\tpath() {\n\t\treturn \"M13,14H11V10H13M13,18H11V16H13M1,21H23L12,2L1,21Z\"\n\t}\n\n} }\n\n","namespace $ { export class $mol_icon_alert_circle extends $mol_icon {\n\n\t/**\n\t * ```\n\t * path \\M13,13H11V7H13M13,17H11V15H13M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2Z\n\t * ```\n\t **/\n\tpath() {\n\t\treturn \"M13,13H11V7H13M13,17H11V15H13M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2Z\"\n\t}\n\n} }\n\n","namespace $ { $mol_style_attach( \"hyoo/todomvc/todomvc.css\",\n \"[hyoo_todomvc] {\\n\\talign-self: stretch;\\n\\twidth: 100%;\\n\\tmargin: 0;\\n\\ttransition: none;\\n}\\n\\n[hyoo_todomvc] [mol_string] ,\\n[hyoo_todomvc] [mol_string]:focus ,\\n[hyoo_todomvc] [mol_string]:hover ,\\n[hyoo_todomvc] [mol_button] ,\\n[hyoo_todomvc] [mol_button]:focus ,\\n[hyoo_todomvc] [mol_button]:hover ,\\n[hyoo_todomvc] [mol_link] ,\\n[hyoo_todomvc] [mol_link]:focus ,\\n[hyoo_todomvc] [mol_link]:hover {\\n\\tbox-shadow: none;\\n\\tbackground-color: transparent;\\n}\\n\\n[hyoo_todomvc] [mol_link_current] {\\n\\tcolor: black;\\n}\\n\\n[hyoo_todomvc] [mol_link]:not([mol_link_current]):hover ,\\n[hyoo_todomvc] [mol_link]:not([mol_link_current]):focus {\\n\\ttext-decoration: underline;\\n}\\n\\n[hyoo_todomvc_head_complete] {\\n\\tflex: 0 0 4rem;\\n\\ttransform: rotate( 90deg );\\n\\talign-items: center;\\n\\topacity: .5;\\n\\tpadding: 0;\\n\\tjustify-content: center;\\n}\\n[hyoo_todomvc_head_complete]:disabled {\\n\\tvisibility: hidden;\\n}\\n[hyoo_todomvc_head_complete][mol_check_checked] {\\n\\topacity: 1;\\n}\\n\\n[hyoo_todomvc_add] {\\n\\tpadding: 0;\\n\\tflex: 1 1 auto;\\n}\\n\\n[hyoo_todomvc_list] {\\n\\tfont-size: 1.5rem;\\n\\ttransition: none;\\n}\\n\\n[hyoo_todomvc_page] {\\n\\tflex: 1 1 auto;\\n\\ttransition: none;\\n}\\n\\n[hyoo_todomvc_panel] {\\n\\tbox-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1);\\n\\tmax-width: 38rem;\\n\\t--mol_theme_back: white;\\n\\t--mol_theme_text: black;\\n\\tbackground-color: var(--mol_theme_back);\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tmargin: 0 auto 2rem;\\n\\ttransition: none;\\n}\\n\\n[hyoo_todomvc_head] {\\n\\tfont-size: 1.5rem;\\n\\tpadding: 0;\\n\\tdisplay: flex;\\n\\theight: 4rem;\\n}\\n\\n[hyoo_todomvc_title] {\\n\\tword-break: normal;\\n\\tdisplay: block;\\n\\tpadding: .25rem;\\n\\tfont-size: 7rem;\\n\\tfont-weight: 100;\\n\\ttext-align: center;\\n\\tcolor: rgba(275, 147, 147, 0.2);\\n\\ttext-rendering: optimizeLegibility;\\n\\ttext-transform: lowercase;\\n}\\n\\n[hyoo_todomvc_task_row] {\\n\\tdisplay: flex;\\n\\tbackground-color: white;\\n\\tbox-shadow: 0 -1px 0 0 #ededed;\\n\\theight: 4rem;\\n}\\n\\n[hyoo_todomvc_task_row_complete] {\\n\\tflex: 0 0 4rem;\\n\\tpadding: 1rem;\\n\\tbackground: no-repeat center center url('hyoo/todomvc/todomvc_active.svg');\\n}\\n[hyoo_todomvc_task_row_complete][mol_check_checked] {\\n\\tbackground: no-repeat center center url('hyoo/todomvc/todomvc_completed.svg');\\n}\\n\\n[hyoo_todomvc_task_row_title] {\\n\\tpadding: 0;\\n\\tflex: 1 1 auto;\\n}\\n\\n[hyoo_todomvc_task_row_completed] [hyoo_todomvc_task_row_title] {\\n\\tcolor: #d9d9d9;\\n\\ttext-decoration: line-through;\\n}\\n\\n[hyoo_todomvc_task_row_drop] {\\n\\tfont-size: 1.25rem;\\n\\tflex: 0 04rem;\\n}\\n[hyoo_todomvc_task_row]:not(:hover) [hyoo_todomvc_task_row_drop]:not(:focus) {\\n\\topacity: 0;\\n\\tcolor: #cc9a9a;\\n}\\n\\n[hyoo_todomvc_foot] {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\talign-items: baseline;\\n\\tpadding: .5rem 1rem;\\n\\tcolor: #777;\\n\\tfont-size: .85rem;\\n\\tborder-top: 1px solid #ededed;\\n\\tbox-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2);\\n}\\n\\n[hyoo_todomvc_pending] {\\n\\tpadding: .25rem;\\n\\tflex: 0 1 6rem;\\n}\\n\\n[hyoo_todomvc_filter] {\\n\\tflex: 1 100 auto;\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\tmargin: .25rem;\\n\\tbox-shadow: none;\\n}\\n\\n[hyoo_todomvc_sweep] {\\n\\tflex: 0 1 auto;\\n\\tpadding: .25rem;\\n}\\n[hyoo_todomvc_sweep][disabled] {\\n\\tvisibility: hidden;\\n}\\n\\n[hyoo_todomvc_sweep]:hover ,\\n[hyoo_todomvc_sweep]:focus {\\n\\ttext-decoration: underline;\\n}\\n\"\n) }","namespace $ { export class $hyoo_todomvc extends $mol_scroll {\n\n\t/**\n\t * ```\n\t * title \\Todos\n\t * ```\n\t **/\n\ttitle() {\n\t\treturn \"Todos\"\n\t}\n\n\t/**\n\t * ```\n\t * sub / <= Page\n\t * ```\n\t **/\n\tsub() {\n\t\treturn [ this.Page() ] as readonly any[]\n\t}\n\n\t/**\n\t * ```\n\t * Page $mol_list rows /\n\t * \t<= Title\n\t * \t<= Panel\n\t * ```\n\t **/\n\t@ $mol_mem\n\tPage() {\n\t\treturn (( obj )=>{\n\t\t\tobj.rows = () => [ this.Title() , this.Panel() ] as readonly any[]\n\t\t\treturn obj\n\t\t})( new this.$.$mol_list( ) )\n\t}\n\n\t/**\n\t * ```\n\t * Title $mol_view\n\t * \tminimal_height 176\n\t * \tsub / <= title\n\t * ```\n\t **/\n\t@ $mol_mem\n\tTitle() {\n\t\treturn (( obj )=>{\n\t\t\tobj.minimal_height = () => 176\n\t\t\tobj.sub = () => [ this.title() ] as readonly any[]\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view( ) )\n\t}\n\n\t/**\n\t * ```\n\t * Panel $mol_list rows <= panels\n\t * ```\n\t **/\n\t@ $mol_mem\n\tPanel() {\n\t\treturn (( obj )=>{\n\t\t\tobj.rows = () => this.panels()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_list( ) )\n\t}\n\n\t/**\n\t * ```\n\t * panels /\n\t * \t<= Head\n\t * \t<= List\n\t * \t<= Foot\n\t * ```\n\t **/\n\tpanels() {\n\t\treturn [ this.Head() , this.List() , this.Foot() ] as readonly any[]\n\t}\n\n\t/**\n\t * ```\n\t * Head $mol_view\n\t * \tminimal_height 64\n\t * \tsub <= Head_content\n\t * ```\n\t **/\n\t@ $mol_mem\n\tHead() {\n\t\treturn (( obj )=>{\n\t\t\tobj.minimal_height = () => 64\n\t\t\tobj.sub = () => this.Head_content()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view( ) )\n\t}\n\n\t/**\n\t * ```\n\t * Head_content /\n\t * \t<= Head_complete\n\t * \t<= Add\n\t * ```\n\t **/\n\tHead_content() {\n\t\treturn [ this.Head_complete() , this.Add() ] as readonly any[]\n\t}\n\n\t/**\n\t * ```\n\t * Head_complete $mol_check\n\t * \tenabled <= head_complete_enabled\n\t * \tchecked?val <=> completed_all?val\n\t * \ttitle \\❯\n\t * ```\n\t **/\n\t@ $mol_mem\n\tHead_complete() {\n\t\treturn (( obj )=>{\n\t\t\tobj.enabled = () => this.head_complete_enabled()\n\t\t\tobj.checked = ( val? : any ) => this.completed_all( val )\n\t\t\tobj.title = () => \"❯\"\n\t\t\treturn obj\n\t\t})( new this.$.$mol_check( ) )\n\t}\n\n\t/**\n\t * ```\n\t * head_complete_enabled false\n\t * ```\n\t **/\n\thead_complete_enabled() {\n\t\treturn false\n\t}\n\n\t/**\n\t * ```\n\t * completed_all?val false\n\t * ```\n\t **/\n\t@ $mol_mem\n\tcompleted_all( val? : any , force? : $mol_mem_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/**\n\t * ```\n\t * Add $hyoo_todomvc_add\n\t * \tvalue?val <=> task_title_new?val\n\t * \tdone?event <=> add?event\n\t * ```\n\t **/\n\t@ $mol_mem\n\tAdd() {\n\t\treturn (( obj )=>{\n\t\t\tobj.value = ( val? : any ) => this.task_title_new( val )\n\t\t\tobj.done = ( event? : any ) => this.add( event )\n\t\t\treturn obj\n\t\t})( new this.$.$hyoo_todomvc_add( ) )\n\t}\n\n\t/**\n\t * ```\n\t * task_title_new?val \\\n\t * ```\n\t **/\n\t@ $mol_mem\n\ttask_title_new( val? : any , force? : $mol_mem_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/**\n\t * ```\n\t * add?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tadd( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/**\n\t * ```\n\t * List $mol_list rows <= task_rows\n\t * ```\n\t **/\n\t@ $mol_mem\n\tList() {\n\t\treturn (( obj )=>{\n\t\t\tobj.rows = () => this.task_rows()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_list( ) )\n\t}\n\n\t/**\n\t * ```\n\t * task_rows /$mol_view\n\t * ```\n\t **/\n\ttask_rows() {\n\t\treturn [ ] as readonly ( $mol_view )[]\n\t}\n\n\t/**\n\t * ```\n\t * Foot $mol_view sub <= foot_content\n\t * ```\n\t **/\n\t@ $mol_mem\n\tFoot() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => this.foot_content()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view( ) )\n\t}\n\n\t/**\n\t * ```\n\t * foot_content /\n\t * \t<= Pending\n\t * \t<= Filter\n\t * \t<= Sweep\n\t * ```\n\t **/\n\tfoot_content() {\n\t\treturn [ this.Pending() , this.Filter() , this.Sweep() ] as readonly any[]\n\t}\n\n\t/**\n\t * ```\n\t * Pending $mol_view sub / <= pending_message\n\t * ```\n\t **/\n\t@ $mol_mem\n\tPending() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [ this.pending_message() ] as readonly any[]\n\t\t\treturn obj\n\t\t})( new this.$.$mol_view( ) )\n\t}\n\n\t/**\n\t * ```\n\t * pending_message \\0 items left\n\t * ```\n\t **/\n\tpending_message() {\n\t\treturn \"0 items left \"\n\t}\n\n\t/**\n\t * ```\n\t * Filter $mol_bar sub <= filterOptions\n\t * ```\n\t **/\n\t@ $mol_mem\n\tFilter() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => this.filterOptions()\n\t\t\treturn obj\n\t\t})( new this.$.$mol_bar( ) )\n\t}\n\n\t/**\n\t * ```\n\t * filterOptions /\n\t * \t<= Filter_all\n\t * \t<= Filter_active\n\t * \t<= Filter_completed\n\t * ```\n\t **/\n\tfilterOptions() {\n\t\treturn [ this.Filter_all() , this.Filter_active() , this.Filter_completed() ] as readonly any[]\n\t}\n\n\t/**\n\t * ```\n\t * Filter_all $mol_link\n\t * \tsub / <= filter_all_label\n\t * \targ * completed null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tFilter_all() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [ this.filter_all_label() ] as readonly any[]\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : null as any ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_link( ) )\n\t}\n\n\t/**\n\t * ```\n\t * filter_all_label \\All\n\t * ```\n\t **/\n\tfilter_all_label() {\n\t\treturn \"All\"\n\t}\n\n\t/**\n\t * ```\n\t * Filter_active $mol_link\n\t * \tsub / <= filter_active_label\n\t * \targ * completed \\false\n\t * ```\n\t **/\n\t@ $mol_mem\n\tFilter_active() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [ this.filter_active_label() ] as readonly any[]\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : \"false\" ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_link( ) )\n\t}\n\n\t/**\n\t * ```\n\t * filter_active_label \\Active\n\t * ```\n\t **/\n\tfilter_active_label() {\n\t\treturn \"Active\"\n\t}\n\n\t/**\n\t * ```\n\t * Filter_completed $mol_link\n\t * \tsub / <= filter_completed_label\n\t * \targ * completed \\true\n\t * ```\n\t **/\n\t@ $mol_mem\n\tFilter_completed() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [ this.filter_completed_label() ] as readonly any[]\n\t\t\tobj.arg = () => ({\n\t\t\t\"completed\" : \"true\" ,\n\t\t})\n\t\t\treturn obj\n\t\t})( new this.$.$mol_link( ) )\n\t}\n\n\t/**\n\t * ```\n\t * filter_completed_label \\Completed\n\t * ```\n\t **/\n\tfilter_completed_label() {\n\t\treturn \"Completed\"\n\t}\n\n\t/**\n\t * ```\n\t * Sweep $mol_button_minor\n\t * \tenabled <= sweep_enabled\n\t * \tclick?event <=> sweep?event\n\t * \tsub / <= sweep_label\n\t * ```\n\t **/\n\t@ $mol_mem\n\tSweep() {\n\t\treturn (( obj )=>{\n\t\t\tobj.enabled = () => this.sweep_enabled()\n\t\t\tobj.click = ( event? : any ) => this.sweep( event )\n\t\t\tobj.sub = () => [ this.sweep_label() ] as readonly any[]\n\t\t\treturn obj\n\t\t})( new this.$.$mol_button_minor( ) )\n\t}\n\n\t/**\n\t * ```\n\t * sweep_enabled true\n\t * ```\n\t **/\n\tsweep_enabled() {\n\t\treturn true\n\t}\n\n\t/**\n\t * ```\n\t * sweep?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tsweep( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/**\n\t * ```\n\t * sweep_label \\Clear completed\n\t * ```\n\t **/\n\tsweep_label() {\n\t\treturn \"Clear completed\"\n\t}\n\n\t/**\n\t * ```\n\t * Task_row!id $hyoo_todomvc_task_row\n\t * \tcompleted?val <=> task_completed!id?val\n\t * \ttitle?val <=> task_title!id?val\n\t * \tdrop?event <=> task_drop!id?event\n\t * ```\n\t **/\n\t@ $mol_mem_key\n\tTask_row( id : any ) {\n\t\treturn (( obj )=>{\n\t\t\tobj.completed = ( val? : any ) => this.task_completed(id , val )\n\t\t\tobj.title = ( val? : any ) => this.task_title(id , val )\n\t\t\tobj.drop = ( event? : any ) => this.task_drop(id , event )\n\t\t\treturn obj\n\t\t})( new this.$.$hyoo_todomvc_task_row( ) )\n\t}\n\n\t/**\n\t * ```\n\t * task_completed!id?val false\n\t * ```\n\t **/\n\t@ $mol_mem_key\n\ttask_completed( id : any , val? : any , force? : $mol_mem_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/**\n\t * ```\n\t * task_title!id?val \\\n\t * ```\n\t **/\n\t@ $mol_mem_key\n\ttask_title( id : any , val? : any , force? : $mol_mem_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/**\n\t * ```\n\t * task_drop!id?event null\n\t * ```\n\t **/\n\t@ $mol_mem_key\n\ttask_drop( id : any , event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\nnamespace $ { export class $hyoo_todomvc_add extends $mol_string {\n\n\t/**\n\t * ```\n\t * hint \\What needs to be done?\n\t * ```\n\t **/\n\thint() {\n\t\treturn \"What needs to be done?\"\n\t}\n\n\t/**\n\t * ```\n\t * event *\n\t * \t^\n\t * \tkeydown?event <=> press?event\n\t * ```\n\t **/\n\tevent() {\n\t\treturn ({\n\t\t\t...super.event() ,\n\t\t\t\"keydown\" : ( event? : any )=> this.press( event ) ,\n\t\t})\n\t}\n\n\t/**\n\t * ```\n\t * press?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tpress( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/**\n\t * ```\n\t * done?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tdone( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n} }\n\nnamespace $ { export class $hyoo_todomvc_task_row extends $mol_view {\n\n\t/**\n\t * ```\n\t * minimal_height 64\n\t * ```\n\t **/\n\tminimal_height() {\n\t\treturn 64\n\t}\n\n\t/**\n\t * ```\n\t * sub /\n\t * \t<= Complete\n\t * \t<= Title\n\t * \t<= Drop\n\t * ```\n\t **/\n\tsub() {\n\t\treturn [ this.Complete() , this.Title() , this.Drop() ] as readonly any[]\n\t}\n\n\t/**\n\t * ```\n\t * Complete $mol_check checked?val <=> completed?val\n\t * ```\n\t **/\n\t@ $mol_mem\n\tComplete() {\n\t\treturn (( obj )=>{\n\t\t\tobj.checked = ( val? : any ) => this.completed( val )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_check( ) )\n\t}\n\n\t/**\n\t * ```\n\t * completed?val false\n\t * ```\n\t **/\n\t@ $mol_mem\n\tcompleted( val? : any , force? : $mol_mem_force ) {\n\t\treturn ( val !== void 0 ) ? val : false\n\t}\n\n\t/**\n\t * ```\n\t * Title $mol_string\n\t * \thint <= title_hint\n\t * \tvalue?val <=> title?val\n\t * ```\n\t **/\n\t@ $mol_mem\n\tTitle() {\n\t\treturn (( obj )=>{\n\t\t\tobj.hint = () => this.title_hint()\n\t\t\tobj.value = ( val? : any ) => this.title( val )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_string( ) )\n\t}\n\n\t/**\n\t * ```\n\t * title_hint \\Task title\n\t * ```\n\t **/\n\ttitle_hint() {\n\t\treturn \"Task title\"\n\t}\n\n\t/**\n\t * ```\n\t * title?val \\\n\t * ```\n\t **/\n\t@ $mol_mem\n\ttitle( val? : any , force? : $mol_mem_force ) {\n\t\treturn ( val !== void 0 ) ? val : \"\"\n\t}\n\n\t/**\n\t * ```\n\t * Drop $mol_button_typed\n\t * \tsub / \\✖\n\t * \tclick?event <=> drop?event\n\t * ```\n\t **/\n\t@ $mol_mem\n\tDrop() {\n\t\treturn (( obj )=>{\n\t\t\tobj.sub = () => [ \"✖\" ] as readonly any[]\n\t\t\tobj.click = ( event? : any ) => this.drop( event )\n\t\t\treturn obj\n\t\t})( new this.$.$mol_button_typed( ) )\n\t}\n\n\t/**\n\t * ```\n\t * drop?event null\n\t * ```\n\t **/\n\t@ $mol_mem\n\tdrop( event? : any , force? : $mol_mem_force ) {\n\t\treturn ( event !== void 0 ) ? event : null as any\n\t}\n\n\t/**\n\t * ```\n\t * attr *\n\t * \t^\n\t * \thyoo_todomvc_task_row_completed <= completed?val\n\t * ```\n\t **/\n\tattr() {\n\t\treturn ({\n\t\t\t...super.attr() ,\n\t\t\t\"hyoo_todomvc_task_row_completed\" : this.completed() ,\n\t\t})\n\t}\n\n} }\n\nnamespace $ { export class $my_button_danger extends $mol_view {\n\n\t/**\n\t * ```\n\t * sub /\n\t * \t<= Icon\n\t * \t<= title\n\t * ```\n\t **/\n\tsub() {\n\t\treturn [ this.Icon() , this.title() ] as readonly any[]\n\t}\n\n\t/**\n\t * ```\n\t * Icon $mol_icon_alert_circle\n\t * ```\n\t **/\n\t@ $mol_mem\n\tIcon() {\n\t\treturn (( obj )=>{\n\t\t\treturn obj\n\t\t})( new this.$.$mol_icon_alert_circle( ) )\n\t}\n\n} }\n\n","interface $hyoo_todomvc_task {\n\tcompleted? : boolean\n\ttitle? : string\n}\n\nnamespace $.$$ {\n\t\n\texport class $hyoo_todomvc_add extends $.$hyoo_todomvc_add {\n\t\t\n\t\tpress( next? : KeyboardEvent ) {\n\t\t\tswitch( next.keyCode ) {\n\t\t\t\tcase $mol_keyboard_code.enter : return this.done( next )\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\texport class $hyoo_todomvc extends $.$hyoo_todomvc {\n\t\t\n\t\ttask_ids( next? : number[] ) : number[] {\n\t\t\treturn this.$.$mol_state_local.value( this.state_key( 'mol-todos' ) , next ) || []\n\t\t}\n\t\t\n\t\targ_completed() {\n\t\t\treturn this.$.$mol_state_arg.value( this.state_key( 'completed' ) )\n\t\t}\n\n\t\t@ $mol_mem\n\t\tgroups_completed() {\n\t\t\tvar groups : { [ index : string ] : number[] } = { 'true' : [] , 'false' : [] }\n\t\t\tfor( let id of this.task_ids() ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tgroups[ String( task.completed ) ].push( id )\n\t\t\t}\n\t\t\treturn groups\n\t\t}\n\n\t\t@ $mol_mem\n\t\ttask_ids_filtered() {\n\t\t\tvar completed = this.arg_completed()\n\t\t\tif( completed ) {\n\t\t\t\treturn this.groups_completed()[ completed ] || []\n\t\t\t} else {\n\t\t\t\treturn this.task_ids()\n\t\t\t}\n\t\t}\n\n\t\t@ $mol_mem\n\t\tcompleted_all( next? : boolean ) {\n\t\t\tif( next === void 0 ) return this.groups_completed()[ 'false' ].length === 0\n\t\t\t\n\t\t\tfor( let id of this.groups_completed()[ String( !next ) ] ) {\n\t\t\t\tvar task = this.task( id )\n\t\t\t\tthis.task( id , { title : task.title , completed : next } )\n\t\t\t}\n\t\t\t\n\t\t\treturn next\n\t\t}\n\t\t\n\t\thead_complete_enabled() {\n\t\t\treturn this.task_ids().length > 0 \n\t\t}\n\n\t\t@ $mol_mem\n\t\tpending_message() {\n\t\t\tlet count = this.groups_completed()[ 'false' ].length\n\t\t\treturn ( count === 1 ) ? '1 item left' : `${count} items left`\n\t\t}\n\t\t\n\t\t@ $mol_mem\n\t\tnew_id() {\n\t\t\treturn Math.max( 1 , 1 + Math.max( ... this.task_ids() ) )\n\t\t}\n\t\t\n\t\tadd( next? : Event ) {\n\t\t\tvar title = this.task_title_new() \n\t\t\tif( !title ) return\n\t\t\t\n\t\t\tvar id = this.new_id()\n\t\t\tvar task = { completed : false , title }\n\t\t\tthis.task( id , task )\n\t\t\t\n\t\t\tthis.task_ids( this.task_ids().concat( id ) )\n\t\t\tthis.task_title_new( '' )\n\t\t}\n\n\t\t@ $mol_mem\n\t\ttask_rows() {\n\t\t\treturn this.task_ids_filtered().map( id => this.Task_row( id ) )\n\t\t}\n\t\t\n\t\ttask( id : number , next? : $hyoo_todomvc_task ) {\n\t\t\tconst key = this.state_key( `mol-todos-${id}` )\n\t\t\tif( next === void 0 ) {\n\t\t\t\treturn this.$.$mol_state_local.value<$hyoo_todomvc_task>( key ) || { title : '' , completed : false }\n\t\t\t}\n\t\t\t\n\t\t\tthis.$.$mol_state_local.value( key , next )\n\t\t\t\n\t\t\treturn next || void 0\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttask_completed( id : number , next? : boolean ) {\n\t\t\treturn this.task( id , next === undefined ? undefined : { ... this.task( id ) , completed : next } ).completed\n\t\t}\n\t\t\n\t\t@ $mol_mem_key\n\t\ttask_title( id : number , next? : string ) {\n\t\t\treturn this.task( id , next === undefined ? undefined : { ... this.task( id ) , title : next } ).title\n\t\t}\n\t\t\n\t\ttask_drop( id : number , next? : Event ) {\n\t\t\tthis.task( id , null )\n\t\t\tthis.task_ids( this.task_ids().filter( id2 => id !== id2 ) )\n\t\t}\n\n\t\tsweep() {\n\t\t\tthis.task_ids( this.task_ids().filter( id => {\n\t\t\t\tif( !this.task( id ).completed ) return true\n\t\t\t\tthis.task( id , null )\n\t\t\t\treturn false\n\t\t\t} ) )\n\t\t}\n\t\t\n\t\tpanels() {\n\t\t\treturn [\n\t\t\t\tthis.Head() , \n\t\t\t\tthis.List() ,\n\t\t\t\t... this.foot_visible() ? [ this.Foot() ] : [] ,\n\t\t\t]\n\t\t}\n\t\t\n\t\tfoot_visible() {\n\t\t\treturn this.task_ids().length > 0\n\t\t}\n\n\t\tsweep_enabled() {\n\t\t\treturn this.groups_completed()[ 'true' ].length > 0\n\t\t}\n\t\t\n\t}\n\t\n}\n",null,null,"namespace $ {\n\n\texport class $mol_plugin extends $mol_view {\n\n\t\t@ $mol_mem\n\t\tdom_node( next? : Element ) {\n\n\t\t\tconst node = next || $mol_owning_get( this , $mol_view )!.dom_node()\n\n\t\t\t$mol_dom_render_attributes( node , this.attr_static() )\n\n\t\t\tconst events = this.event()\n\t\t\tfor( let event_name in events ) {\n\t\t\t\tnode.addEventListener(\n\t\t\t\t\tevent_name ,\n\t\t\t\t\t$mol_log2.func( $mol_fiber_root( events[ event_name ] ) ) ,\n\t\t\t\t\t{ passive : false } as any ,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\treturn node\n\t\t}\n\n\t\tattr_static() : { [ key : string ] : string|number|boolean } {\n\t\t\treturn {}\n\t\t}\n\n\t\tevent() : { [ key : string ] : ( event : Event )=> void } {\n\t\t\treturn {}\n\t\t}\n\t\t\n\t\trender() {\n\t\t\tthis.dom_node_actual()\n\t\t}\n\t\t\n\t}\n\n}\n"]} \ No newline at end of file diff --git a/examples/mol/web.test.js b/examples/mol/web.test.js new file mode 100644 index 0000000000..ef6acb573c --- /dev/null +++ b/examples/mol/web.test.js @@ -0,0 +1,2367 @@ +function require( path ){ return $node[ path ] }; +"use strict"; +var $; +(function ($_1) { + let $$; + (function ($$) { + let $; + })($$ = $_1.$$ || ($_1.$$ = {})); + function $mol_test(set) { + for (let name in set) { + const code = set[name]; + const test = (typeof code === 'string') ? new Function('', code) : code; + $_1.$mol_test_all.push($_1.$mol_log_group(name, test)); + } + $mol_test_schedule(); + } + $_1.$mol_test = $mol_test; + $_1.$mol_test_mocks = []; + $_1.$mol_test_all = []; + async function $mol_test_run() { + for (var test of $_1.$mol_test_all) { + let context = Object.create($$); + for (let mock of $_1.$mol_test_mocks) + await mock(context); + await test(context); + } + console.info('$mol_test completed', $_1.$mol_test_all.length); + } + $_1.$mol_test_run = $mol_test_run; + let scheduled = false; + function $mol_test_schedule() { + if (scheduled) + return; + scheduled = true; + setTimeout($_1.$mol_log_group('$mol_test', () => { + scheduled = false; + $mol_test_run(); + }), 500); + } + $_1.$mol_test_schedule = $mol_test_schedule; + $_1.$mol_test_mocks.push(context => { + let seed = 0; + context.Math = Object.create(Math); + context.Math.random = () => Math.sin(seed++); + const forbidden = ['XMLHttpRequest', 'fetch']; + for (let api of forbidden) { + context[api] = new Proxy(function () { }, { + get() { + $_1.$mol_fail_hidden(new Error(`${api} is forbidden in tests`)); + }, + apply() { + $_1.$mol_fail_hidden(new Error(`${api} is forbidden in tests`)); + }, + }); + } + }); + $mol_test({ + 'mocked Math.random'($) { + console.assert($.Math.random() === 0); + console.assert($.Math.random() === Math.sin(1)); + }, + 'forbidden XMLHttpRequest'($) { + try { + console.assert(void new $.XMLHttpRequest); + } + catch (error) { + console.assert(error.message === 'XMLHttpRequest is forbidden in tests'); + } + }, + 'forbidden fetch'($) { + try { + console.assert(void $.fetch('')); + } + catch (error) { + console.assert(error.message === 'fetch is forbidden in tests'); + } + }, + }); +})($ || ($ = {})); +//test.test.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_after_mock_queue = []; + function $mol_after_mock_warp() { + const queue = $.$mol_after_mock_queue.splice(0); + for (const task of queue) + task(); + } + $.$mol_after_mock_warp = $mol_after_mock_warp; + class $mol_after_mock_commmon extends $.$mol_object2 { + constructor(task) { + super(); + this.task = task; + this.promise = Promise.resolve(); + this.cancelled = false; + $.$mol_after_mock_queue.push(task); + } + destructor() { + const index = $.$mol_after_mock_queue.indexOf(this.task); + if (index >= 0) + $.$mol_after_mock_queue.splice(index, 1); + } + } + $.$mol_after_mock_commmon = $mol_after_mock_commmon; + class $mol_after_mock_timeout extends $mol_after_mock_commmon { + constructor(delay, task) { + super(task); + this.delay = delay; + } + } + $.$mol_after_mock_timeout = $mol_after_mock_timeout; +})($ || ($ = {})); +//mock.test.js.map +; +"use strict"; +var $; +(function ($_1) { + $_1.$mol_test_mocks.push($ => { + $.$mol_after_tick = $_1.$mol_after_mock_commmon; + }); +})($ || ($ = {})); +//tick.test.js.map +; +"use strict"; +//assert.js.map +; +"use strict"; +//assert.test.js.map +; +"use strict"; +//deep.test.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_jsx_prefix = ''; + $.$mol_jsx_booked = null; + $.$mol_jsx_document = { + getElementById: () => null, + createElement: (name) => $.$mol_dom_context.document.createElement(name) + }; +})($ || ($ = {})); +//jsx.js.map +; +"use strict"; +//jsx d.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_jsx_make(Elem, props, ...childNodes) { + const id = props && props.id || ''; + if ($.$mol_jsx_booked) { + if ($.$mol_jsx_booked.has(id)) { + $.$mol_fail(new Error(`JSX already has tag with id ${JSON.stringify(id)}`)); + } + else { + $.$mol_jsx_booked.add(id); + } + } + const guid = $.$mol_jsx_prefix + id; + let node = guid && $.$mol_jsx_document.getElementById(guid); + if (typeof Elem !== 'string') { + if (Elem.prototype) { + const view = node && node[Elem] || new Elem; + Object.assign(view, props); + view[Symbol.toStringTag] = guid; + view.childNodes = childNodes; + if (!view.ownerDocument) + view.ownerDocument = $.$mol_jsx_document; + node = view.valueOf(); + node[Elem] = view; + return node; + } + else { + const prefix = $.$mol_jsx_prefix; + const booked = $.$mol_jsx_booked; + try { + $.$mol_jsx_prefix = guid; + $.$mol_jsx_booked = new Set; + return Elem(props, ...childNodes); + } + finally { + $.$mol_jsx_prefix = prefix; + $.$mol_jsx_booked = booked; + } + } + } + if (!node) + node = $.$mol_jsx_document.createElement(Elem); + $.$mol_dom_render_children(node, [].concat(...childNodes)); + for (const key in props) { + if (typeof props[key] === 'string') { + node.setAttribute(key, props[key]); + } + else if (props[key] && props[key]['constructor'] === Object) { + if (typeof node[key] === 'object') { + Object.assign(node[key], props[key]); + continue; + } + } + node[key] = props[key]; + } + if (guid) + node.id = guid; + return node; + } + $.$mol_jsx_make = $mol_jsx_make; +})($ || ($ = {})); +//make.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_test({ + 'Make empty div'() { + $.$mol_assert_equal(($.$mol_jsx_make("div", null)).outerHTML, '
'); + }, + 'Define native field'() { + const dom = $.$mol_jsx_make("input", { value: '123' }); + $.$mol_assert_equal(dom.outerHTML, ''); + $.$mol_assert_equal(dom.value, '123'); + }, + 'Define classes'() { + const dom = $.$mol_jsx_make("div", { classList: ['foo bar'] }); + $.$mol_assert_equal(dom.outerHTML, '
'); + }, + 'Define styles'() { + const dom = $.$mol_jsx_make("div", { style: { color: 'red' } }); + $.$mol_assert_equal(dom.outerHTML, '
'); + }, + 'Define dataset'() { + const dom = $.$mol_jsx_make("div", { dataset: { foo: 'bar' } }); + $.$mol_assert_equal(dom.outerHTML, '
'); + }, + 'Define attributes'() { + const dom = $.$mol_jsx_make("div", { hidden: true, lang: "ru" }); + $.$mol_assert_equal(dom.outerHTML, ''); + }, + 'Define child nodes'() { + const dom = $.$mol_jsx_make("div", null, + "hello", + $.$mol_jsx_make("strong", null, "world"), + "!"); + $.$mol_assert_equal(dom.outerHTML, '
helloworld!
'); + }, + 'Function as component'() { + const Button = ({ hint }, target) => { + return $.$mol_jsx_make("button", { title: hint }, target()); + }; + const dom = $.$mol_jsx_make(Button, { id: "/foo", hint: "click me" }, () => 'hey!'); + $.$mol_assert_equal(dom.outerHTML, ''); + }, + 'Nested guid generation'() { + const Foo = () => { + return $.$mol_jsx_make("div", null, + $.$mol_jsx_make(Bar, { id: "/bar" }, + $.$mol_jsx_make("img", { id: "/icon" }))); + }; + const Bar = (props, icon) => { + return $.$mol_jsx_make("span", null, icon); + }; + const dom = $.$mol_jsx_make(Foo, { id: "/foo" }); + $.$mol_assert_equal(dom.outerHTML, '
'); + }, + 'Fail on non unique ids'() { + const App = () => { + return $.$mol_jsx_make("div", null, + $.$mol_jsx_make("span", { id: "/bar" }), + $.$mol_jsx_make("span", { id: "/bar" })); + }; + $.$mol_assert_fail(() => $.$mol_jsx_make(App, { id: "/foo" }), 'JSX already has tag with id "/bar"'); + }, + }); +})($ || ($ = {})); +//make.test.js.map +; +"use strict"; +var $; +(function ($) { + const a_stack = []; + const b_stack = []; + let cache = null; + function $mol_compare_deep(a, b) { + if (Object.is(a, b)) + return true; + const a_type = typeof a; + const b_type = typeof b; + if (a_type !== b_type) + return false; + if (a_type === 'function') + return String(a) === String(b); + if (a_type !== 'object') + return false; + if (!a || !b) + return false; + if (a instanceof Error) + return false; + if (a['constructor'] !== b['constructor']) + return false; + if (a instanceof RegExp) + return Object.is(String(a), String(b)); + const ref = a_stack.indexOf(a); + if (ref >= 0) { + return Object.is(b_stack[ref], b); + } + if (!cache) + cache = new WeakMap; + let a_cache = cache.get(a); + if (a_cache) { + const b_cache = a_cache.get(b); + if (typeof b_cache === 'boolean') + return b_cache; + } + else { + a_cache = new WeakMap(); + cache.set(a, a_cache); + } + a_stack.push(a); + b_stack.push(b); + let result; + try { + if (a[Symbol.iterator]) { + const a_iter = a[Symbol.iterator](); + const b_iter = b[Symbol.iterator](); + while (true) { + const a_next = a_iter.next(); + const b_next = b_iter.next(); + if (a_next.done !== a_next.done) + return result = false; + if (a_next.done) + break; + if (!$mol_compare_deep(a_next.value, b_next.value)) + return result = false; + } + return result = true; + } + let count = 0; + for (let key in a) { + try { + if (!$mol_compare_deep(a[key], b[key])) + return result = false; + } + catch (error) { + $.$mol_fail_hidden(new $.$mol_error_mix(`Failed ${JSON.stringify(key)} fields comparison of ${a} and ${b}`, error)); + } + ++count; + } + for (let key in b) { + --count; + if (count < 0) + return result = false; + } + const a_val = a['valueOf'](); + if (Object.is(a_val, a)) + return result = true; + const b_val = b['valueOf'](); + if (!Object.is(a_val, b_val)) + return result = false; + return result = true; + } + finally { + a_stack.pop(); + b_stack.pop(); + if (a_stack.length === 0) { + cache = null; + } + else { + a_cache.set(b, result); + } + } + } + $.$mol_compare_deep = $mol_compare_deep; +})($ || ($ = {})); +//deep.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_test({ + 'nulls & undefineds'() { + $.$mol_assert_ok($.$mol_compare_deep(null, null)); + $.$mol_assert_ok($.$mol_compare_deep(undefined, undefined)); + $.$mol_assert_not($.$mol_compare_deep(undefined, null)); + $.$mol_assert_not($.$mol_compare_deep({}, null)); + }, + 'number'() { + $.$mol_assert_ok($.$mol_compare_deep(1, 1)); + $.$mol_assert_ok($.$mol_compare_deep(Number.NaN, Number.NaN)); + $.$mol_assert_not($.$mol_compare_deep(1, 2)); + }, + 'Number'() { + $.$mol_assert_ok($.$mol_compare_deep(Object(1), Object(1))); + $.$mol_assert_ok($.$mol_compare_deep(Object(Number.NaN), Object(Number.NaN))); + $.$mol_assert_not($.$mol_compare_deep(Object(1), Object(2))); + }, + 'empty POJOs'() { + $.$mol_assert_ok($.$mol_compare_deep({}, {})); + }, + 'different POJOs'() { + $.$mol_assert_not($.$mol_compare_deep({ a: 1 }, { b: 2 })); + }, + 'different POJOs with same keys but different values'() { + $.$mol_assert_not($.$mol_compare_deep({ a: 1 }, { a: 2 })); + }, + 'different POJOs with different keys but same values'() { + $.$mol_assert_not($.$mol_compare_deep({}, { a: undefined })); + }, + 'Array'() { + $.$mol_assert_ok($.$mol_compare_deep([], [])); + $.$mol_assert_ok($.$mol_compare_deep([1, [2]], [1, [2]])); + $.$mol_assert_not($.$mol_compare_deep([1, 2], [1, 3])); + $.$mol_assert_not($.$mol_compare_deep([1, 2,], [1, 3, undefined])); + }, + 'same POJO trees'() { + $.$mol_assert_ok($.$mol_compare_deep({ a: { b: 1 } }, { a: { b: 1 } })); + }, + 'different classes with same values'() { + class Obj { + constructor() { + this.foo = 1; + } + } + const a = new Obj; + const b = new class extends Obj { + }; + $.$mol_assert_not($.$mol_compare_deep(a, b)); + }, + 'same POJOs with cyclic reference'() { + const a = { foo: {} }; + a['self'] = a; + const b = { foo: {} }; + b['self'] = b; + $.$mol_assert_ok($.$mol_compare_deep(a, b)); + }, + 'empty Element'() { + $.$mol_assert_ok($.$mol_compare_deep($.$mol_jsx_make("div", null), $.$mol_jsx_make("div", null))); + $.$mol_assert_not($.$mol_compare_deep($.$mol_jsx_make("div", null), $.$mol_jsx_make("span", null))); + }, + 'Element with attributes'() { + $.$mol_assert_ok($.$mol_compare_deep($.$mol_jsx_make("div", { dir: "rtl" }), $.$mol_jsx_make("div", { dir: "rtl" }))); + $.$mol_assert_not($.$mol_compare_deep($.$mol_jsx_make("div", { dir: "rtl" }), $.$mol_jsx_make("div", null))); + $.$mol_assert_not($.$mol_compare_deep($.$mol_jsx_make("div", { dir: "rtl" }), $.$mol_jsx_make("div", { dir: "ltr" }))); + }, + 'Element with styles'() { + $.$mol_assert_ok($.$mol_compare_deep($.$mol_jsx_make("div", { style: { color: 'red' } }), $.$mol_jsx_make("div", { style: { color: 'red' } }))); + $.$mol_assert_not($.$mol_compare_deep($.$mol_jsx_make("div", { style: { color: 'red' } }), $.$mol_jsx_make("div", { style: {} }))); + $.$mol_assert_not($.$mol_compare_deep($.$mol_jsx_make("div", { style: { color: 'red' } }), $.$mol_jsx_make("div", { style: { color: 'blue' } }))); + }, + 'Element with content'() { + $.$mol_assert_ok($.$mol_compare_deep($.$mol_jsx_make("div", null, + "foo", + $.$mol_jsx_make("br", null)), $.$mol_jsx_make("div", null, + "foo", + $.$mol_jsx_make("br", null)))); + $.$mol_assert_not($.$mol_compare_deep($.$mol_jsx_make("div", null, + "foo", + $.$mol_jsx_make("br", null)), $.$mol_jsx_make("div", null, + "bar", + $.$mol_jsx_make("br", null)))); + $.$mol_assert_not($.$mol_compare_deep($.$mol_jsx_make("div", null, + "foo", + $.$mol_jsx_make("br", null)), $.$mol_jsx_make("div", null, + "foo", + $.$mol_jsx_make("hr", null)))); + }, + 'Element with handlers'() { + $.$mol_assert_ok($.$mol_compare_deep($.$mol_jsx_make("div", { onclick: () => 1 }), $.$mol_jsx_make("div", { onclick: () => 1 }))); + $.$mol_assert_not($.$mol_compare_deep($.$mol_jsx_make("div", { onclick: () => 1 }), $.$mol_jsx_make("div", { onclick: () => 2 }))); + }, + 'Date'() { + $.$mol_assert_ok($.$mol_compare_deep(new Date(12345), new Date(12345))); + $.$mol_assert_not($.$mol_compare_deep(new Date(12345), new Date(12346))); + }, + 'RegExp'() { + $.$mol_assert_ok($.$mol_compare_deep(/\x22/mig, /\x22/mig)); + $.$mol_assert_not($.$mol_compare_deep(/\x22/mig, /\x21/mig)); + $.$mol_assert_not($.$mol_compare_deep(/\x22/mig, /\x22/mg)); + }, + 'Map'() { + $.$mol_assert_ok($.$mol_compare_deep(new Map, new Map)); + $.$mol_assert_ok($.$mol_compare_deep(new Map([[[1], [2]]]), new Map([[[1], [2]]]))); + $.$mol_assert_not($.$mol_compare_deep(new Map([[1, 2]]), new Map([[1, 3]]))); + }, + 'Set'() { + $.$mol_assert_ok($.$mol_compare_deep(new Set, new Set)); + $.$mol_assert_ok($.$mol_compare_deep(new Set([1, [2]]), new Set([1, [2]]))); + $.$mol_assert_not($.$mol_compare_deep(new Set([1]), new Set([2]))); + }, + 'Uint8Array'() { + $.$mol_assert_ok($.$mol_compare_deep(new Uint8Array, new Uint8Array)); + $.$mol_assert_ok($.$mol_compare_deep(new Uint8Array([0]), new Uint8Array([0]))); + $.$mol_assert_not($.$mol_compare_deep(new Uint8Array([0]), new Uint8Array([1]))); + }, + }); +})($ || ($ = {})); +//deep.test.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_assert_ok(value) { + if (value) + return; + $.$mol_fail(new Error(`${value} ≠ true`)); + } + $.$mol_assert_ok = $mol_assert_ok; + function $mol_assert_not(value) { + if (!value) + return; + $.$mol_fail(new Error(`${value} ≠ false`)); + } + $.$mol_assert_not = $mol_assert_not; + function $mol_assert_fail(handler, ErrorRight) { + const fail = $.$mol_fail; + try { + $.$mol_fail = $.$mol_fail_hidden; + handler(); + } + catch (error) { + if (!ErrorRight) + return error; + if (typeof ErrorRight === 'string') { + if (error.message !== ErrorRight) + throw error; + } + else { + if (!(error instanceof ErrorRight)) + throw error; + } + return error; + } + finally { + $.$mol_fail = fail; + } + $.$mol_fail(new Error('Not failed')); + } + $.$mol_assert_fail = $mol_assert_fail; + function $mol_assert_equal(...args) { + for (let i = 0; i < args.length; ++i) { + for (let j = 0; j < args.length; ++j) { + if (i === j) + continue; + if (Number.isNaN(args[i]) && Number.isNaN(args[j])) + continue; + if (args[i] !== args[j]) + $.$mol_fail(new Error(`Not equal\n${args[i]}\n${args[j]}`)); + } + } + } + $.$mol_assert_equal = $mol_assert_equal; + function $mol_assert_unique(...args) { + for (let i = 0; i < args.length; ++i) { + for (let j = 0; j < args.length; ++j) { + if (i === j) + continue; + if (args[i] === args[j] || (Number.isNaN(args[i]) && Number.isNaN(args[j]))) { + $.$mol_fail(new Error(`args[${i}] = args[${j}] = ${args[i]}`)); + } + } + } + } + $.$mol_assert_unique = $mol_assert_unique; + function $mol_assert_like(head, ...tail) { + for (let value of tail) { + if ($.$mol_compare_deep(value, head)) { + head = value; + } + else { + const print = (val) => { + if (!val) + return val; + if (typeof val !== 'object') + return val; + if ('outerHTML' in val) + return val.outerHTML; + return val; + }; + return $.$mol_fail(new Error(`Not like\n${print(head)}\n---\n${print(value)}`)); + } + } + } + $.$mol_assert_like = $mol_assert_like; +})($ || ($ = {})); +//assert.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_test({ + 'must be false'() { + $.$mol_assert_not(0); + }, + 'must be true'() { + $.$mol_assert_ok(1); + }, + 'two must be equal'() { + $.$mol_assert_equal(2, 2); + }, + 'three must be equal'() { + $.$mol_assert_equal(2, 2, 2); + }, + 'two must be unique'() { + $.$mol_assert_unique([3], [3]); + }, + 'three must be unique'() { + $.$mol_assert_unique([3], [3], [3]); + }, + 'two must be alike'() { + $.$mol_assert_like([3], [3]); + }, + 'three must be alike'() { + $.$mol_assert_like([3], [3], [3]); + }, + }); +})($ || ($ = {})); +//assert.test.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_test({ + 'init with overload'() { + class X extends $.$mol_object { + foo() { + return 1; + } + } + var x = X.make({ + foo: () => 2, + }); + $.$mol_assert_equal(x.foo(), 2); + }, + }); +})($ || ($ = {})); +//object.test.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_test({ + 'run callback'() { + class Plus1 extends $.$mol_wrapper { + static wrap(task) { + return function (...args) { + return task.call(this, ...args) + 1; + }; + } + } + $.$mol_assert_equal(Plus1.run(() => 2), 3); + }, + 'wrap function'() { + class Plus1 extends $.$mol_wrapper { + static wrap(task) { + return function (...args) { + return task.call(this, ...args) + 1; + }; + } + } + const obj = { + level: 2, + pow: Plus1.func(function (a) { + return a ** this.level; + }) + }; + $.$mol_assert_equal(obj.pow(2), 5); + }, + 'decorate field getter'() { + class Plus1 extends $.$mol_wrapper { + static wrap(task) { + return function (...args) { + return Plus1.last = (task.call(this, ...args) || 0) + 1; + }; + } + } + Plus1.last = 0; + class Foo { + static get two() { + return 1; + } + static set two(next) { } + } + __decorate([ + Plus1.field + ], Foo, "two", null); + $.$mol_assert_equal(Foo.two, 2); + Foo.two = 3; + $.$mol_assert_equal(Plus1.last, 2); + $.$mol_assert_equal(Foo.two, 2); + }, + 'decorate instance method'() { + class Plus1 extends $.$mol_wrapper { + static wrap(task) { + return function (...args) { + return task.call(this, ...args) + 1; + }; + } + } + class Foo1 { + constructor() { + this.level = 2; + } + pow(a) { + return a ** this.level; + } + } + __decorate([ + Plus1.method + ], Foo1.prototype, "pow", null); + const Foo2 = Foo1; + const foo = new Foo2; + $.$mol_assert_equal(foo.pow(2), 5); + }, + 'decorate static method'() { + class Plus1 extends $.$mol_wrapper { + static wrap(task) { + return function (...args) { + return task.call(this, ...args) + 1; + }; + } + } + class Foo { + static pow(a) { + return a ** this.level; + } + } + Foo.level = 2; + __decorate([ + Plus1.method + ], Foo, "pow", null); + $.$mol_assert_equal(Foo.pow(2), 5); + }, + 'decorate class'() { + class BarInc extends $.$mol_wrapper { + static wrap(task) { + return function (...args) { + const foo = task.call(this, ...args); + foo.bar++; + return foo; + }; + } + } + let Foo = class Foo { + constructor(bar) { + this.bar = bar; + } + }; + Foo = __decorate([ + BarInc.class + ], Foo); + $.$mol_assert_equal(new Foo(2).bar, 3); + }, + }); +})($ || ($ = {})); +//wrapper.test.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_test({ + 'all cases of using maybe'() { + $.$mol_assert_equal($.$mol_maybe(0)[0], 0); + $.$mol_assert_equal($.$mol_maybe(false)[0], false); + $.$mol_assert_equal($.$mol_maybe(null)[0], void 0); + $.$mol_assert_equal($.$mol_maybe(void 0)[0], void 0); + $.$mol_assert_equal($.$mol_maybe(void 0).map(v => v.toString())[0], void 0); + $.$mol_assert_equal($.$mol_maybe(0).map(v => v.toString())[0], '0'); + }, + }); +})($ || ($ = {})); +//maybe.test.js.map +; +"use strict"; +var $; +(function ($_1) { + $_1.$mol_test_mocks.push($ => { + var _a; + $.$mol_log2 = (_a = class extends $_1.$mol_log2 { + }, + _a.current = new $_1.$mol_log2(null, '$mol_log2_mock', []), + _a); + }); +})($ || ($ = {})); +//log2.test.js.map +; +"use strict"; +var $; +(function ($_1) { + $_1.$mol_test_mocks.push($ => { + $.$mol_after_frame = $_1.$mol_after_mock_commmon; + }); +})($ || ($ = {})); +//frame.test.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_test({ + 'objects by reference'() { + $.$mol_assert_equal($.$mol_compare_any({}, {}), false); + }, + 'primitives by value'() { + $.$mol_assert_equal($.$mol_compare_any('a', 'a'), true); + }, + 'NaN by value'() { + $.$mol_assert_equal($.$mol_compare_any(Number.NaN, Number.NaN), true); + }, + 'NaN not equal zero'() { + $.$mol_assert_equal($.$mol_compare_any(Number.NaN, 0), false); + }, + }); +})($ || ($ = {})); +//any.test.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_test({ + 'return source when same object'() { + const target = {}; + $.$mol_assert_equal($.$mol_conform(target, target), target); + }, + 'return target when some is not object'() { + const obj = { a: 1 }; + $.$mol_assert_equal($.$mol_conform(true, obj), true); + $.$mol_assert_equal($.$mol_conform(obj, true), obj); + }, + 'return target when some is null'() { + const obj = { a: 1 }; + $.$mol_assert_equal($.$mol_conform(null, obj), null); + $.$mol_assert_equal($.$mol_conform(obj, null), obj); + }, + 'return target when some is undefined'() { + const obj = { a: 1 }; + $.$mol_assert_equal($.$mol_conform(undefined, obj), undefined); + $.$mol_assert_equal($.$mol_conform(obj, undefined), obj); + }, + 'return target when different keys count'() { + const target = [1, 2, 3]; + const source = [1, 2, 3, undefined]; + const result = $.$mol_conform(target, source); + $.$mol_assert_equal(result, target); + $.$mol_assert_equal(result.join(','), '1,2,3'); + }, + 'return source when array values are strong equal'() { + const source = [1, 2, 3]; + $.$mol_assert_equal($.$mol_conform([1, 2, 3], source), source); + }, + 'return source when object values are strong equal'() { + const source = { a: 1, b: 2 }; + $.$mol_assert_equal($.$mol_conform({ a: 1, b: 2 }, source), source); + }, + 'return target when some values are not equal'() { + const target = [1, 2, 3]; + const source = [1, 2, 5]; + const result = $.$mol_conform(target, source); + $.$mol_assert_equal(result, target); + $.$mol_assert_equal(result.join(','), '1,2,3'); + }, + 'return source when values are deep equal'() { + const source = { foo: { bar: 1 } }; + $.$mol_assert_equal($.$mol_conform({ foo: { bar: 1 } }, source), source); + }, + 'return target with equal values from source and not equal from target'() { + const source = { foo: { xxx: 1 }, bar: { xxx: 2 } }; + const target = { foo: { xxx: 1 }, bar: { xxx: 3 } }; + const result = $.$mol_conform(target, source); + $.$mol_assert_equal(result, target); + $.$mol_assert_equal(result.foo, source.foo); + $.$mol_assert_equal(result.bar, target.bar); + }, + 'return target when equal but with different class'() { + const target = { '0': 1 }; + $.$mol_assert_equal($.$mol_conform(target, [1]), target); + }, + 'return target when conformer for class is not defined'() { + const Obj = class { + }; + const source = new Obj; + const target = new Obj; + const result = $.$mol_conform(target, source); + $.$mol_assert_equal(result, target); + }, + 'return target when has cyclic reference'() { + const source = { foo: {} }; + source['self'] = source; + const target = { foo: {} }; + target['self'] = target; + const result = $.$mol_conform(target, source); + $.$mol_assert_equal(result, target); + $.$mol_assert_equal(result['self'], target); + $.$mol_assert_equal(result.foo, source.foo); + }, + 'return source when equal dates'() { + const source = new Date(12345); + const target = new Date(12345); + const result = $.$mol_conform(target, source); + $.$mol_assert_equal(result, source); + }, + 'return source when equal regular expressions'() { + const source = /\x22/mig; + const target = /\x22/mig; + const result = $.$mol_conform(target, source); + $.$mol_assert_equal(result, source); + }, + 'return cached value if already conformed'() { + const source = { foo: { xxx: 1 }, bar: { xxx: 3 } }; + const target = { foo: { xxx: 2 }, bar: { xxx: 3 } }; + const result = $.$mol_conform(target, source); + target.foo.xxx = 1; + $.$mol_assert_equal($.$mol_conform(target.foo, source.foo), target.foo); + }, + 'skip readlony fields'() { + const source = { foo: {}, bar: {} }; + const target = { foo: {}, bar: {} }; + Object.defineProperty(target, 'bar', { value: {}, writable: false }); + const result = $.$mol_conform(target, source); + $.$mol_assert_equal(result, target); + $.$mol_assert_equal(result.foo, source.foo); + $.$mol_assert_equal(result.bar, target.bar); + }, + 'object with NaN'() { + const source = { foo: Number.NaN }; + const target = { foo: Number.NaN }; + const result = $.$mol_conform(target, source); + $.$mol_assert_equal(result, source); + }, + 'array with NaN'() { + const source = [Number.NaN]; + const target = [Number.NaN]; + const result = $.$mol_conform(target, source); + $.$mol_assert_equal(result, source); + }, + }); +})($ || ($ = {})); +//conform.test.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_test({ + 'trim array'() { + const array = [undefined, null, 0, false, null, undefined, undefined]; + const correct = [undefined, null, 0, false, null]; + $.$mol_array_trim(array); + $.$mol_assert_like(array, correct); + } + }); +})($ || ($ = {})); +//trim.test.js.map +; +"use strict"; +var $; +(function ($_1) { + $_1.$mol_test_mocks.push(async ($) => { + await $_1.$mol_fiber_warp(); + $_1.$mol_fiber.deadline = Date.now() + 100; + }); +})($ || ($ = {})); +//fiber.test.js.map +; +"use strict"; +var $; +(function ($_1) { + $_1.$mol_test({ + 'Value has js-path name'() { + class App extends $_1.$mol_object2 { + static get title() { return new $_1.$mol_object2; } + } + __decorate([ + $_1.$mol_atom2_field + ], App, "title", null); + $_1.$mol_assert_equal(`${App.title}`, 'App.title'); + }, + 'Simple property'() { + class App extends $_1.$mol_object2 { + } + App.value = 1; + __decorate([ + $_1.$mol_atom2_field + ], App, "value", void 0); + $_1.$mol_assert_equal(App.value, 1); + App.value = 2; + $_1.$mol_assert_equal(App.value, 2); + }, + 'Instant actualization'() { + class Source extends $_1.$mol_object2 { + constructor() { + super(...arguments); + this.value = 1; + } + } + __decorate([ + $_1.$mol_atom2_field + ], Source.prototype, "value", void 0); + class App extends $_1.$mol_object2 { + static get source() { return Source.create(); } + static get value() { return this.source.value + 1; } + } + __decorate([ + $_1.$mol_atom2_field + ], App, "source", null); + __decorate([ + $_1.$mol_atom2_field + ], App, "value", null); + $_1.$mol_assert_equal(App.value, 2); + App.source.value = 2; + $_1.$mol_assert_equal(App.value, 3); + }, + 'Access to cached value'() { + class App extends $_1.$mol_object2 { + static get value() { return 1; } + } + __decorate([ + $_1.$mol_atom2_field + ], App, "value", null); + $_1.$mol_assert_equal($_1.$mol_atom2_value(() => App.value), undefined); + $_1.$mol_assert_equal(App.value, 1); + $_1.$mol_assert_equal($_1.$mol_atom2_value(() => App.value), 1); + }, + 'Do not recalc slaves on equal changes'() { + class App extends $_1.$mol_object2 { + static get result() { return this.first[0] + this.counter++; } + } + App.first = [1]; + App.counter = 0; + __decorate([ + $_1.$mol_atom2_field + ], App, "first", void 0); + __decorate([ + $_1.$mol_atom2_field + ], App, "result", null); + $_1.$mol_assert_equal(App.result, 1); + App.first = [1]; + $_1.$mol_assert_equal(App.result, 1); + }, + 'Do not recalc grand slave on equal direct slave result '() { + class App extends $_1.$mol_object2 { + static get second() { return Math.abs(this.first); } + static get result() { return this.second + ++this.counter; } + } + App.first = 1; + App.counter = 0; + __decorate([ + $_1.$mol_atom2_field + ], App, "first", void 0); + __decorate([ + $_1.$mol_atom2_field + ], App, "second", null); + __decorate([ + $_1.$mol_atom2_field + ], App, "result", null); + $_1.$mol_assert_equal(App.result, 2); + App.first = -1; + $_1.$mol_assert_equal(App.result, 2); + }, + 'Recalc when [not changed master] changes [following master]'() { + class App extends $_1.$mol_object2 { + static get second() { + this.third = this.first; + return 0; + } + static get result() { return this.second + this.third + ++this.counter; } + } + App.first = 1; + App.third = 0; + App.counter = 0; + __decorate([ + $_1.$mol_atom2_field + ], App, "first", void 0); + __decorate([ + $_1.$mol_atom2_field + ], App, "second", null); + __decorate([ + $_1.$mol_atom2_field + ], App, "third", void 0); + __decorate([ + $_1.$mol_atom2_field + ], App, "result", null); + $_1.$mol_assert_equal(App.result, 2); + App.first = 5; + $_1.$mol_assert_equal(App.result, 7); + }, + 'Branch switching'() { + class App extends $_1.$mol_object2 { + static get second() { return 2; } + static get result() { + return (this.condition ? this.first : this.second) + this.counter++; + } + } + App.first = 1; + App.condition = true; + App.counter = 0; + __decorate([ + $_1.$mol_atom2_field + ], App, "first", void 0); + __decorate([ + $_1.$mol_atom2_field + ], App, "second", null); + __decorate([ + $_1.$mol_atom2_field + ], App, "condition", void 0); + __decorate([ + $_1.$mol_atom2_field + ], App, "result", null); + $_1.$mol_assert_equal(App.result, 1); + App.condition = false; + $_1.$mol_assert_equal(App.result, 3); + App.first = 10; + $_1.$mol_assert_equal(App.result, 3); + }, + 'Forbidden self invalidation'() { + class App extends $_1.$mol_object2 { + static get second() { return this.first + 1; } + static get result() { + this.second; + return this.first++; + } + } + App.first = 1; + __decorate([ + $_1.$mol_atom2_field + ], App, "first", void 0); + __decorate([ + $_1.$mol_atom2_field + ], App, "second", null); + __decorate([ + $_1.$mol_atom2_field + ], App, "result", null); + $_1.$mol_assert_fail(() => App.result); + }, + 'Side effect inside computation'() { + class App extends $_1.$mol_object2 { + static increase() { return ++this.first; } + static get result() { + return this.increase() + 1; + } + } + App.first = 1; + __decorate([ + $_1.$mol_atom2_field + ], App, "first", void 0); + __decorate([ + $_1.$mol_fiber.method + ], App, "increase", null); + __decorate([ + $_1.$mol_atom2_field + ], App, "result", null); + $_1.$mol_assert_equal(App.result, 3); + }, + 'Forbidden cyclic dependency'() { + class App extends $_1.$mol_object2 { + static get first() { return this.second - 1; } + static get second() { return this.first + 1; } + } + __decorate([ + $_1.$mol_atom2_field + ], App, "first", null); + __decorate([ + $_1.$mol_atom2_field + ], App, "second", null); + $_1.$mol_assert_fail(() => App.first); + }, + 'Forget sub fibers on complete'() { + class App extends $_1.$mol_object2 { + static count() { return this.counter++; } + static get result() { return this.count() + this.data; } + } + App.counter = 0; + App.data = 1; + __decorate([ + $_1.$mol_fiber.method + ], App, "count", null); + __decorate([ + $_1.$mol_atom2_field + ], App, "data", void 0); + __decorate([ + $_1.$mol_atom2_field + ], App, "result", null); + $_1.$mol_assert_equal(App.result, 1); + App.data = 2; + $_1.$mol_assert_equal(App.result, 3); + }, + async 'Automatic destroy owned value on self destruction'() { + let counter = 0; + class Having extends $_1.$mol_object2 { + destructor() { counter++; } + } + class App extends $_1.$mol_object2 { + static get having() { return Having.create(); } + static get result() { + if (this.condition) + this.having; + return 0; + } + } + App.condition = true; + __decorate([ + $_1.$mol_atom2_field + ], App, "having", null); + __decorate([ + $_1.$mol_atom2_field + ], App, "condition", void 0); + __decorate([ + $_1.$mol_atom2_field + ], App, "result", null); + App.result; + App.condition = false; + App.result; + $_1.$mol_assert_equal(counter, 0); + await $_1.$mol_fiber_warp(); + $_1.$mol_assert_equal(counter, 1); + }, + async 'Do not destroy putted value'() { + class App extends $_1.$mol_object2 { + static get target() { + return this.condition ? this.source : 0; + } + } + App.condition = true; + __decorate([ + $_1.$mol_atom2_field + ], App, "source", void 0); + __decorate([ + $_1.$mol_atom2_field + ], App, "condition", void 0); + __decorate([ + $_1.$mol_atom2_field + ], App, "target", null); + App.source = 1; + $_1.$mol_assert_equal(App.target, 1); + App.condition = false; + $_1.$mol_assert_equal(App.target, 0); + await $_1.$mol_fiber_warp(); + App.condition = true; + $_1.$mol_assert_equal(App.target, 1); + }, + 'Restore after error'() { + class App extends $_1.$mol_object2 { + static get broken() { + if (this.condition) + $_1.$mol_fail(new Error('test error')); + return 1; + } + static get result() { return this.broken; } + } + App.condition = false; + __decorate([ + $_1.$mol_atom2_field + ], App, "condition", void 0); + __decorate([ + $_1.$mol_atom2_field + ], App, "broken", null); + __decorate([ + $_1.$mol_atom2_field + ], App, "result", null); + $_1.$mol_assert_equal(App.result, 1); + App.condition = true; + $_1.$mol_assert_fail(() => App.result); + App.condition = false; + $_1.$mol_assert_equal(App.result, 1); + }, + async 'auto fresh only when alive'($) { + let state = 1; + const monitor = new $.$mol_atom2; + monitor.calculate = () => { + new $.$mol_after_frame($_1.$mol_atom2.current.fresh); + return state; + }; + $_1.$mol_assert_equal(monitor.get(), 1); + state = 2; + $_1.$mol_assert_equal(monitor.get(), 1); + $.$mol_after_mock_warp(); + $_1.$mol_assert_equal(monitor.get(), 2); + state = 3; + $_1.$mol_assert_equal(monitor.get(), 2); + monitor.destructor(); + $_1.$mol_assert_equal(monitor.value, undefined); + $.$mol_after_mock_warp(); + await $.$mol_fiber_warp(); + $_1.$mol_assert_equal(monitor.value, undefined); + }, + }); +})($ || ($ = {})); +//atom2.test.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_test({ + 'Property method'() { + class App extends $.$mol_object2 { + static value(next = 1) { return next + 1; } + } + __decorate([ + $.$mol_mem + ], App, "value", null); + $.$mol_assert_equal(App.value(), 2); + App.value(2); + $.$mol_assert_equal(App.value(), 3); + }, + 'auto sync of properties'() { + class X extends $.$mol_object2 { + foo(next) { + return next || 1; + } + bar() { + return this.foo() + 1; + } + xxx() { + return this.bar() + 1; + } + } + __decorate([ + $.$mol_mem + ], X.prototype, "foo", null); + __decorate([ + $.$mol_mem + ], X.prototype, "bar", null); + __decorate([ + $.$mol_mem + ], X.prototype, "xxx", null); + const x = new X; + $.$mol_assert_equal(x.bar(), 2); + $.$mol_assert_equal(x.xxx(), 3); + x.foo(5); + $.$mol_assert_equal(x.xxx(), 7); + }, + async 'must be deferred destroyed when no longer referenced'() { + let foo; + let foo_destroyed = false; + class B extends $.$mol_object2 { + showing(next) { + if (next === void 0) + return true; + return next; + } + foo() { + return foo = new class extends $.$mol_object { + destructor() { + foo_destroyed = true; + } + }; + } + bar() { + return this.showing() ? this.foo() : null; + } + } + __decorate([ + $.$mol_mem + ], B.prototype, "showing", null); + __decorate([ + $.$mol_mem + ], B.prototype, "foo", null); + __decorate([ + $.$mol_mem + ], B.prototype, "bar", null); + var b = new B; + var bar = b.bar(); + $.$mol_assert_ok(bar); + b.showing(false); + b.bar(); + await $.$mol_fiber_warp(); + $.$mol_assert_ok(foo_destroyed); + $.$mol_assert_not(b.bar()); + b.showing(true); + $.$mol_defer.run(); + $.$mol_assert_unique(b.bar(), bar); + }, + async 'wait for data'() { + class Test extends $.$mol_object2 { + source() { + return $.$mol_fiber_sync(() => new Promise(done => done('Jin')))(); + } + middle() { + return this.source(); + } + target() { + return this.middle(); + } + } + __decorate([ + $.$mol_mem + ], Test.prototype, "source", null); + __decorate([ + $.$mol_mem + ], Test.prototype, "middle", null); + __decorate([ + $.$mol_mem + ], Test.prototype, "target", null); + const t = new Test; + $.$mol_assert_fail(() => t.target().valueOf(), Promise); + await $.$mol_fiber_warp(); + $.$mol_assert_equal(t.target(), 'Jin'); + }, + }); +})($ || ($ = {})); +//mem.test.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_test({ + 'number'() { + const dict = new $.$mol_dict(); + $.$mol_assert_equal(dict.get(123), undefined); + $.$mol_assert_equal(dict.has(123), false); + dict.set(123, 321); + $.$mol_assert_equal(dict.get(123), 321); + $.$mol_assert_equal(dict.has(123), true); + dict.delete(123); + $.$mol_assert_equal(dict.get(123), undefined); + $.$mol_assert_equal(dict.has(123), false); + }, + 'pojo as key'() { + const dict = new $.$mol_dict(); + $.$mol_assert_equal(dict.get({ foo: 123 }), undefined); + $.$mol_assert_equal(dict.has({ foo: 123 }), false); + dict.set({ foo: 123 }, 321); + $.$mol_assert_equal(dict.get({ foo: 123 }), 321); + $.$mol_assert_equal(dict.has({ foo: 123 }), true); + dict.delete({ foo: 123 }); + $.$mol_assert_equal(dict.get({ foo: 123 }), undefined); + $.$mol_assert_equal(dict.has({ foo: 123 }), false); + }, + 'array as key'() { + const dict = new $.$mol_dict(); + $.$mol_assert_equal(dict.get([123]), undefined); + $.$mol_assert_equal(dict.has([123]), false); + dict.set([123], 321); + $.$mol_assert_equal(dict.get([123]), 321); + $.$mol_assert_equal(dict.has([123]), true); + dict.delete([123]); + $.$mol_assert_equal(dict.get([123]), undefined); + $.$mol_assert_equal(dict.has([123]), false); + }, + 'html element as key'() { + const el = $.$mol_jsx_make("div", null); + const dict = new $.$mol_dict(); + $.$mol_assert_equal(dict.get(el), undefined); + $.$mol_assert_equal(dict.has(el), false); + dict.set(el, 321); + $.$mol_assert_equal(dict.get(el), 321); + $.$mol_assert_equal(dict.has(el), true); + $.$mol_assert_equal(dict.get($.$mol_jsx_make("div", null)), undefined); + $.$mol_assert_equal(dict.has($.$mol_jsx_make("div", null)), false); + dict.delete(el); + $.$mol_assert_equal(dict.get(el), undefined); + $.$mol_assert_equal(dict.has(el), false); + }, + 'for-of key restore'() { + const dict = new $.$mol_dict([[123, 321]]); + const keys = []; + const vals = []; + for (const [key, val] of dict) { + keys.push(key); + vals.push(val); + } + $.$mol_assert_equal(keys.length, 1); + $.$mol_assert_equal(keys[0], 123); + $.$mol_assert_equal(vals.length, 1); + $.$mol_assert_equal(vals[0], 321); + }, + 'forEach key restore'() { + const dict = new $.$mol_dict([[123, 321]]); + const keys = []; + const vals = []; + dict.forEach((val, key) => { + keys.push(key); + vals.push(val); + }); + $.$mol_assert_equal(keys.length, 1); + $.$mol_assert_equal(keys[0], 123); + $.$mol_assert_equal(vals.length, 1); + $.$mol_assert_equal(vals[0], 321); + }, + }); +})($ || ($ = {})); +//dict.test.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_test({ + 'keyed reactive properties'() { + $.$mol_fiber_warp(); + class Fib extends $.$mol_object2 { + static value(index, next) { + if (next) + return next; + if (index < 2) + return 1; + return this.value(index - 1) + this.value(index - 2); + } + } + __decorate([ + $.$mol_mem_key + ], Fib, "value", null); + $.$mol_assert_equal(Fib.value(10), 89); + Fib.value(1, 2); + $.$mol_assert_equal(Fib.value(10), 144); + }, + 'cached property with simple key'() { + class X extends $.$mol_object2 { + foo(id, next) { + if (next == null) + return new Number(123); + return new Number(next); + } + } + __decorate([ + $.$mol_mem_key + ], X.prototype, "foo", null); + const x = new X; + $.$mol_assert_equal(x.foo(0).valueOf(), 123); + $.$mol_assert_equal(x.foo(0), x.foo(0)); + $.$mol_assert_unique(x.foo(0), x.foo(1)); + x.foo(0, 321); + $.$mol_assert_equal(x.foo(0).valueOf(), 321); + x.foo(0, null); + $.$mol_assert_equal(x.foo(0).valueOf(), 123); + }, + 'cached property with complex key'() { + class X extends $.$mol_object2 { + foo(ids) { + return Math.random(); + } + } + __decorate([ + $.$mol_mem_key + ], X.prototype, "foo", null); + const x = new X; + $.$mol_assert_equal(x.foo([0, 1]), x.foo([0, 1])); + $.$mol_assert_unique(x.foo([0, 1]), x.foo([0, 2])); + }, + }); +})($ || ($ = {})); +//key.test.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_test({ + 'const returns stored value'() { + const foo = { bar: $.$mol_const(Math.random()) }; + $.$mol_assert_equal(foo.bar(), foo.bar()); + $.$mol_assert_equal(foo.bar(), foo.bar['()']); + }, + }); +})($ || ($ = {})); +//const.test.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_atom2_field(proto, name, descr) { + if (!descr) + descr = Object.getOwnPropertyDescriptor(proto, name); + const get = descr ? (descr.get || $.$mol_const(descr.value)) : (() => undefined); + const set = descr && descr.set || function (next) { get_cache(this).put(next); }; + const store = new WeakMap(); + Object.defineProperty(proto, name + "@", { + get: function () { + return store.get(this); + } + }); + const get_cache = (host) => { + let cache = store.get(host); + if (!cache) { + cache = new $.$mol_atom2; + cache.calculate = get.bind(host); + cache[Symbol.toStringTag] = `${host}.${name}`; + cache.abort = () => { + store.delete(host); + cache.forget(); + return true; + }; + store.set(host, cache); + } + return cache; + }; + return { + get() { + return get_cache(this).get(); + }, + set, + }; + } + $.$mol_atom2_field = $mol_atom2_field; +})($ || ($ = {})); +//field.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_test({ + async 'Autorun'() { + class App extends $.$mol_object2 { + static get init() { + ++this.counter; + return this.state; + } + } + App.state = 1; + App.counter = 0; + __decorate([ + $.$mol_atom2_field + ], App, "state", void 0); + __decorate([ + $.$mol_atom2_field + ], App, "init", null); + const autorun = $.$mol_atom2_autorun(() => App.init); + try { + await $.$mol_fiber_warp(); + $.$mol_assert_equal(App.counter, 1); + App.state = 2; + $.$mol_assert_equal(App.counter, 1); + await $.$mol_fiber_warp(); + $.$mol_assert_equal(App.counter, 2); + App.state = 3; + } + finally { + autorun.destructor(); + } + App.state = 4; + await $.$mol_fiber_warp(); + $.$mol_assert_equal(App.counter, 2); + }, + }); +})($ || ($ = {})); +//autorun.test.js.map +; +"use strict"; +var $; +(function ($_1) { + $_1.$mol_test_mocks.push($ => { + $.$mol_after_timeout = $_1.$mol_after_mock_timeout; + }); +})($ || ($ = {})); +//timeout.test.js.map +; +"use strict"; +//extract.test.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_test({ + 'id auto generation'() { + class $mol_view_test_item extends $.$mol_view { + } + class $mol_view_test_block extends $.$mol_view { + element(id) { + return new $mol_view_test_item(); + } + } + __decorate([ + $.$mol_mem_key + ], $mol_view_test_block.prototype, "element", null); + var x = $mol_view_test_block.Root(0); + $.$mol_assert_equal(x.dom_node().id, '$mol_view_test_block.Root(0)'); + $.$mol_assert_equal(x.element(0).dom_node().id, '$mol_view_test_block.Root(0).element(0)'); + }, + 'caching ref to dom node'() { + var x = new class extends $.$mol_view { + }; + $.$mol_assert_equal(x.dom_node(), x.dom_node()); + }, + 'content render'() { + class $mol_view_test extends $.$mol_view { + sub() { + return ['lol', 5]; + } + } + var x = new $mol_view_test(); + var node = x.dom_tree(); + $.$mol_assert_equal(node.innerHTML, 'lol5'); + }, + 'bem attributes generation'() { + class $mol_view_test_item extends $.$mol_view { + } + class $mol_view_test_block extends $.$mol_view { + Element(id) { + return new $mol_view_test_item(); + } + } + __decorate([ + $.$mol_mem_key + ], $mol_view_test_block.prototype, "Element", null); + var x = new $mol_view_test_block(); + $.$mol_assert_equal(x.dom_node().getAttribute('mol_view_test_block'), ''); + $.$mol_assert_equal(x.dom_node().getAttribute('mol_view'), ''); + $.$mol_assert_equal(x.Element(0).dom_node().getAttribute('mol_view_test_block_element'), ''); + $.$mol_assert_equal(x.Element(0).dom_node().getAttribute('mol_view_test_item'), ''); + $.$mol_assert_equal(x.Element(0).dom_node().getAttribute('mol_view'), ''); + }, + 'render custom attributes'() { + class $mol_view_test extends $.$mol_view { + attr() { + return { + 'href': '#haha', + 'required': true, + 'hidden': false, + }; + } + } + var x = new $mol_view_test(); + var node = x.dom_tree(); + $.$mol_assert_equal(node.getAttribute('href'), '#haha'); + $.$mol_assert_equal(node.getAttribute('required'), 'true'); + $.$mol_assert_equal(node.getAttribute('hidden'), null); + }, + 'render custom fields'() { + class $mol_view_test extends $.$mol_view { + field() { + return { + 'hidden': true + }; + } + } + var x = new $mol_view_test(); + var node = x.dom_tree(); + $.$mol_assert_equal(node.hidden, true); + }, + 'attach event handlers'() { + var clicked = false; + class $mol_view_test extends $.$mol_view { + event() { + return { + 'click': (next) => this.event_click(next) + }; + } + event_click(next) { + clicked = true; + } + } + var x = new $mol_view_test(); + var node = x.dom_node(); + node.click(); + $.$mol_assert_ok(clicked); + }, + }); +})($ || ($ = {})); +//view.test.js.map +; +"use strict"; +var $; +(function ($) { + var $$; + (function ($$) { + $.$mol_test({ + 'handle clicks by default'() { + let clicked = false; + const clicker = $$.$mol_button.make({ + event_click: (event) => { clicked = true; }, + }); + const element = clicker.dom_tree(); + const event = $.$mol_dom_context.document.createEvent('mouseevent'); + event.initEvent('click', true, true); + element.dispatchEvent(event); + $.$mol_assert_ok(clicked); + }, + 'no handle clicks if disabled'() { + let clicked = false; + const clicker = $$.$mol_button.make({ + event_click: (event) => { clicked = true; }, + enabled: () => false, + }); + const element = clicker.dom_tree(); + const event = $.$mol_dom_context.document.createEvent('mouseevent'); + event.initEvent('click', true, true); + element.dispatchEvent(event); + $.$mol_assert_not(clicked); + }, + }); + })($$ = $.$$ || ($.$$ = {})); +})($ || ($ = {})); +//button.test.js.map +; +"use strict"; +var $; +(function ($_1) { + $_1.$mol_test_mocks.push(context => { + class $mol_state_arg_mock extends $_1.$mol_state_arg { + static href(next) { return next || ''; } + } + __decorate([ + $_1.$mol_mem + ], $mol_state_arg_mock, "href", null); + context.$mol_state_arg = $mol_state_arg_mock; + }); + $_1.$mol_test({ + 'args as dictionary'($) { + $.$mol_state_arg.href('#foo=bar/xxx'); + $_1.$mol_assert_like($.$mol_state_arg.dict(), { foo: 'bar', xxx: '' }); + $.$mol_state_arg.dict({ foo: null, yyy: '', lol: '123' }); + $_1.$mol_assert_equal($.$mol_state_arg.href().replace(/.*#/, '#'), '#yyy/lol=123'); + }, + 'one value from args'($) { + $.$mol_state_arg.href('#foo=bar/xxx'); + $_1.$mol_assert_equal($.$mol_state_arg.value('foo'), 'bar'); + $_1.$mol_assert_equal($.$mol_state_arg.value('xxx'), ''); + $.$mol_state_arg.value('foo', 'lol'); + $_1.$mol_assert_equal($.$mol_state_arg.href().replace(/.*#/, '#'), '#foo=lol/xxx'); + $.$mol_state_arg.value('foo', ''); + $_1.$mol_assert_equal($.$mol_state_arg.href().replace(/.*#/, '#'), '#foo/xxx'); + $.$mol_state_arg.value('foo', null); + $_1.$mol_assert_equal($.$mol_state_arg.href().replace(/.*#/, '#'), '#xxx'); + }, + 'nested args'($) { + const base = new $.$mol_state_arg('nested.'); + class Nested extends $_1.$mol_state_arg { + constructor(prefix) { + super(base.prefix + prefix); + } + } + Nested.value = (key, next) => base.value(key, next); + $.$mol_state_arg.href('#foo=bar/nested.xxx=123'); + $_1.$mol_assert_equal(Nested.value('foo'), null); + $_1.$mol_assert_equal(Nested.value('xxx'), '123'); + Nested.value('foo', 'lol'); + $_1.$mol_assert_equal($.$mol_state_arg.href().replace(/.*#/, '#'), '#foo=bar/nested.xxx=123/nested.foo=lol'); + }, + }); +})($ || ($ = {})); +//arg.web.test.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_style_sheet_test1 extends $.$mol_view { + Item() { return new $.$mol_view; } + } + $.$mol_style_sheet_test1 = $mol_style_sheet_test1; + class $mol_style_sheet_test2 extends $.$mol_view { + List() { return new $mol_style_sheet_test1; } + } + $.$mol_style_sheet_test2 = $mol_style_sheet_test2; + $.$mol_test({ + 'component block styles'() { + class $mol_style_sheet_test extends $.$mol_view { + } + const sheet = $.$mol_style_sheet($mol_style_sheet_test, { + color: 'red', + display: 'block', + }); + $.$mol_assert_equal(sheet, '[mol_style_sheet_test] {\n\tcolor: red;\n\tdisplay: block;\n}\n'); + }, + 'various units'() { + class $mol_style_sheet_test extends $.$mol_view { + } + const { px, per } = $.$mol_style_unit; + const sheet = $.$mol_style_sheet($mol_style_sheet_test, { + width: per(50), + height: px(50), + }); + $.$mol_assert_equal(sheet, '[mol_style_sheet_test] {\n\twidth: 50%;\n\theight: 50px;\n}\n'); + }, + 'various functions'() { + class $mol_style_sheet_test extends $.$mol_view { + } + const { calc, fit_content } = $.$mol_style_func; + const { px, per } = $.$mol_style_unit; + const sheet = $.$mol_style_sheet($mol_style_sheet_test, { + width: calc(`${per(100)} - ${px(1)}`), + height: fit_content(per(50)), + }); + $.$mol_assert_equal(sheet, '[mol_style_sheet_test] {\n\twidth: calc(100% - 1px);\n\theight: fit-content(50%);\n}\n'); + }, + 'property groups'() { + class $mol_style_sheet_test extends $.$mol_view { + } + const { px } = $.$mol_style_unit; + const sheet = $.$mol_style_sheet($mol_style_sheet_test, { + flex: { + grow: 5 + } + }); + $.$mol_assert_equal(sheet, '[mol_style_sheet_test] {\n\tflex-grow: 5;\n}\n'); + }, + 'component block styles with pseudo class'() { + class $mol_style_sheet_test extends $.$mol_view { + } + const sheet = $.$mol_style_sheet($mol_style_sheet_test, { + ':focus': { + color: 'red', + display: 'block', + }, + }); + $.$mol_assert_equal(sheet, '[mol_style_sheet_test]:focus {\n\tcolor: red;\n\tdisplay: block;\n}\n'); + }, + 'component block styles with pseudo element'() { + class $mol_style_sheet_test extends $.$mol_view { + } + const sheet = $.$mol_style_sheet($mol_style_sheet_test, { + '::first-line': { + color: 'red', + display: 'block', + }, + }); + $.$mol_assert_equal(sheet, '[mol_style_sheet_test]::first-line {\n\tcolor: red;\n\tdisplay: block;\n}\n'); + }, + 'component block styles with media query'() { + class $mol_style_sheet_test extends $.$mol_view { + } + const sheet = $.$mol_style_sheet($mol_style_sheet_test, { + '@media': { + 'print': { + color: 'red', + display: 'block', + }, + }, + }); + $.$mol_assert_equal(sheet, '@media print {\n[mol_style_sheet_test] {\n\tcolor: red;\n\tdisplay: block;\n}\n}\n'); + }, + 'component block styles with attribute value'() { + class $mol_style_sheet_test extends $.$mol_view { + attr() { + return { + mol_theme: '$mol_theme_dark' + }; + } + } + const sheet = $.$mol_style_sheet($mol_style_sheet_test, { + '@': { + mol_theme: { + '$mol_theme_dark': { + color: 'red', + display: 'block', + }, + }, + }, + }); + $.$mol_assert_equal(sheet, '[mol_style_sheet_test][mol_theme="$mol_theme_dark"] {\n\tcolor: red;\n\tdisplay: block;\n}\n'); + }, + 'component element styles'() { + class $mol_style_sheet_test extends $.$mol_view { + Item() { return new $.$mol_view; } + } + const sheet = $.$mol_style_sheet($mol_style_sheet_test, { + Item: { + color: 'red', + display: 'block', + }, + }); + $.$mol_assert_equal(sheet, '[mol_style_sheet_test_item] {\n\tcolor: red;\n\tdisplay: block;\n}\n'); + }, + 'component element of element styles'() { + const sheet = $.$mol_style_sheet($mol_style_sheet_test2, { + List: { + Item: { + color: 'red', + display: 'block', + }, + }, + }); + $.$mol_assert_equal(sheet, '[mol_style_sheet_test2_list_item] {\n\tcolor: red;\n\tdisplay: block;\n}\n'); + }, + 'inner component styles by class'() { + const sheet = $.$mol_style_sheet($mol_style_sheet_test2, { + $mol_style_sheet_test1: { + color: 'red', + display: 'block', + }, + }); + $.$mol_assert_equal(sheet, '[mol_style_sheet_test2] [mol_style_sheet_test1] {\n\tcolor: red;\n\tdisplay: block;\n}\n'); + }, + 'child component styles by class'() { + const sheet = $.$mol_style_sheet($mol_style_sheet_test2, { + '>': { + $mol_style_sheet_test1: { + color: 'red', + display: 'block', + }, + }, + }); + $.$mol_assert_equal(sheet, '[mol_style_sheet_test2] > [mol_style_sheet_test1] {\n\tcolor: red;\n\tdisplay: block;\n}\n'); + }, + }); +})($ || ($ = {})); +//sheet.test.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_test({ + 'local get set delete'() { + var key = '$mol_state_local_test:' + Math.random(); + $.$mol_assert_equal($.$mol_state_local.value(key), null); + $.$mol_state_local.value(key, 123); + $.$mol_assert_equal($.$mol_state_local.value(key), 123); + $.$mol_state_local.value(key, null); + $.$mol_assert_equal($.$mol_state_local.value(key), null); + }, + }); +})($ || ($ = {})); +//local.test.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_test_mocks.push(context => { + class $mol_state_local_mock extends $.$mol_state_local { + static value(key, next = this.state[key], force) { + return this.state[key] = (next || null); + } + } + $mol_state_local_mock.state = {}; + __decorate([ + $.$mol_mem_key + ], $mol_state_local_mock, "value", null); + context.$mol_state_local = $mol_state_local_mock; + }); +})($ || ($ = {})); +//local.mock.test.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_test({ + 'null by default'() { + const key = String(Math.random()); + $.$mol_assert_equal($.$mol_state_session.value(key), null); + }, + 'storing'() { + const key = String(Math.random()); + $.$mol_state_session.value(key, '$mol_state_session_test'); + $.$mol_assert_equal($.$mol_state_session.value(key), '$mol_state_session_test'); + $.$mol_state_session.value(key, null); + $.$mol_assert_equal($.$mol_state_session.value(key), null); + }, + }); +})($ || ($ = {})); +//session.test.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_test({ + 'memoize field'() { + class Foo { + static get two() { + return ++this.one; + } + static set two(next) { } + } + Foo.one = 1; + __decorate([ + $.$mol_memo.field + ], Foo, "two", null); + $.$mol_assert_equal(Foo.two, 2); + $.$mol_assert_equal(Foo.two, 2); + Foo.two = 3; + $.$mol_assert_equal(Foo.two, 3); + $.$mol_assert_equal(Foo.two, 3); + }, + }); +})($ || ($ = {})); +//memo.test.js.map +; +"use strict"; +var $; +(function ($_1) { + var $$; + (function ($$) { + $_1.$mol_test({ + 'task add'($) { + const app = $$.$hyoo_todomvc.make({ $ }); + $_1.$mol_assert_like(app.task_ids(), []); + app.Add().value('test title'); + app.Add().done(); + $_1.$mol_assert_like(app.task_ids(), [1]); + $_1.$mol_assert_equal(app.Task_row(1).title(), 'test title'); + $_1.$mol_assert_equal(app.Task_row(1).completed(), false); + $_1.$mol_assert_equal(app.Add().value(), ''); + }, + 'task rename'($) { + const app = $$.$hyoo_todomvc.make({ $ }); + app.Add().value('test title'); + app.Add().done(); + $_1.$mol_assert_equal(app.task_title(1), 'test title'); + app.Task_row(1).Title().value('test title 2'); + $_1.$mol_assert_equal(app.task_title(1), 'test title 2'); + }, + 'task toggle'($) { + const app = $$.$hyoo_todomvc.make({ $ }); + app.task_title_new('test title'); + app.add(); + $_1.$mol_assert_equal(app.task_completed(1), false); + app.Task_row(1).Complete().click(); + $_1.$mol_assert_equal(app.task_completed(1), true); + app.Task_row(1).Complete().click(); + $_1.$mol_assert_equal(app.task_completed(1), false); + }, + 'navigation'($) { + const app = $$.$hyoo_todomvc.make({ $ }); + app.Add().value('test title'); + app.Add().done(); + app.Add().value('test title 2'); + app.Add().done(); + app.Task_row(1).Complete().click(); + $_1.$mol_assert_like(app.task_ids_filtered(), [1, 2]); + $.$mol_state_arg.href(app.Filter_completed().uri()); + $_1.$mol_assert_like(app.task_ids_filtered(), [1]); + $.$mol_state_arg.href(app.Filter_active().uri()); + $_1.$mol_assert_like(app.task_ids_filtered(), [2]); + $.$mol_state_arg.href(app.Filter_all().uri()); + $_1.$mol_assert_like(app.task_ids_filtered(), [1, 2]); + }, + }); + })($$ = $_1.$$ || ($_1.$$ = {})); +})($ || ($ = {})); +//todomvc.test.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_diff_path(...paths) { + const limit = Math.min(...paths.map(path => path.length)); + lookup: for (var i = 0; i < limit; ++i) { + const first = paths[0][i]; + for (let j = 1; j < paths.length; ++j) { + if (paths[j][i] !== first) + break lookup; + } + } + return { + prefix: paths[0].slice(0, i), + suffix: paths.map(path => path.slice(i)), + }; + } + $.$mol_diff_path = $mol_diff_path; +})($ || ($ = {})); +//path.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_test({ + 'equal paths'() { + const diff = $.$mol_diff_path([1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]); + $.$mol_assert_like(diff, { + prefix: [1, 2, 3, 4], + suffix: [[], [], []], + }); + }, + 'different suffix'() { + const diff = $.$mol_diff_path([1, 2, 3, 4], [1, 2, 3, 5], [1, 2, 5, 4]); + $.$mol_assert_like(diff, { + prefix: [1, 2], + suffix: [[3, 4], [3, 5], [5, 4]], + }); + }, + 'one contains other'() { + const diff = $.$mol_diff_path([1, 2, 3, 4], [1, 2], [1, 2, 3]); + $.$mol_assert_like(diff, { + prefix: [1, 2], + suffix: [[3, 4], [], [3]], + }); + }, + 'fully different'() { + const diff = $.$mol_diff_path([1, 2], [3, 4], [5, 6]); + $.$mol_assert_like(diff, { + prefix: [], + suffix: [[1, 2], [3, 4], [5, 6]], + }); + }, + }); +})($ || ($ = {})); +//path.test.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_error_mix extends Error { + constructor(message, ...errors) { + super(message); + this.errors = errors; + if (errors.length) { + const stacks = [...errors.map(error => error.stack), this.stack]; + const diff = $.$mol_diff_path(...stacks.map(stack => { + if (!stack) + return []; + return stack.split('\n').reverse(); + })); + const head = diff.prefix.reverse().join('\n'); + const tails = diff.suffix.map(path => path.reverse().map(line => line.replace(/^(?!\s+at)/, '\tat (.) ')).join('\n')).join('\n\tat (.) -----\n'); + this.stack = `Error: ${this.constructor.name}\n\tat (.) /"""\\\n${tails}\n\tat (.) \\___/\n${head}`; + this.message += errors.map(error => '\n' + error.message).join(''); + } + } + } + $.$mol_error_mix = $mol_error_mix; +})($ || ($ = {})); +//mix.js.map +; +"use strict"; +//equals.js.map +; +"use strict"; +//equals.test.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_dom_parse(text, type = 'application/xhtml+xml') { + const parser = new $.$mol_dom_context.DOMParser(); + const doc = parser.parseFromString(text, type); + const error = doc.getElementsByTagName('parsererror')[0]; + if (error) + throw new Error(error.textContent); + return doc; + } + $.$mol_dom_parse = $mol_dom_parse; +})($ || ($ = {})); +//parse.js.map +; +"use strict"; +var $; +(function ($) { + function $mol_jsx_attach(next, action) { + const prev = $.$mol_jsx_document; + try { + $.$mol_jsx_document = next; + return action(); + } + finally { + $.$mol_jsx_document = prev; + } + } + $.$mol_jsx_attach = $mol_jsx_attach; +})($ || ($ = {})); +//attach.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_test({ + 'Attach to document'() { + const doc = $.$mol_dom_parse(''); + $.$mol_jsx_attach(doc, () => $.$mol_jsx_make("body", { id: "/foo" }, "bar")); + $.$mol_assert_equal(doc.documentElement.outerHTML, 'bar'); + }, + }); +})($ || ($ = {})); +//attach.test.js.map +; +"use strict"; +var $; +(function ($) { + class $mol_jsx_view extends $.$mol_object2 { + static of(node) { + return node[this]; + } + valueOf() { + const prefix = $.$mol_jsx_prefix; + const booked = $.$mol_jsx_booked; + const document = $.$mol_jsx_document; + try { + $.$mol_jsx_prefix = this[Symbol.toStringTag]; + $.$mol_jsx_booked = new Set; + $.$mol_jsx_document = this.ownerDocument; + return this.render(); + } + finally { + $.$mol_jsx_prefix = prefix; + $.$mol_jsx_booked = booked; + $.$mol_jsx_document = document; + } + } + render() { + return $.$mol_fail(new Error('dom_tree() not implemented')); + } + } + $.$mol_jsx_view = $mol_jsx_view; +})($ || ($ = {})); +//view.js.map +; +"use strict"; +var $; +(function ($) { + $.$mol_test({ + 'Class as component'() { + class Foo extends $.$mol_jsx_view { + constructor() { + super(...arguments); + this.title = ''; + } + render() { + return $.$mol_jsx_make("div", null, + this.title, + " ", + this.childNodes.join('-')); + } + } + const dom = $.$mol_jsx_make(Foo, { id: "/foo", title: "bar" }, + "xxx", + 123); + $.$mol_assert_equal(dom.outerHTML, '
bar xxx-123
'); + }, + 'View by element'() { + class Br extends $.$mol_jsx_view { + render() { + view = this; + return $.$mol_jsx_make("br", { id: "/foo" }); + } + } + let view; + $.$mol_assert_equal(Br.of($.$mol_jsx_make(Br, null)), view); + }, + 'Attached view rerender'() { + const doc = $.$mol_dom_parse(''); + class Title extends $.$mol_jsx_view { + constructor() { + super(...arguments); + this.value = 'foo'; + } + render() { + return $.$mol_jsx_make("div", null, this.value); + } + } + const dom = $.$mol_jsx_attach(doc, () => $.$mol_jsx_make(Title, { id: "/foo" })); + const title = Title.of(dom); + $.$mol_assert_equal(title.ownerDocument, doc); + $.$mol_assert_equal(doc.documentElement.outerHTML, 'foo'); + title.value = 'bar'; + title.valueOf(); + $.$mol_assert_equal(doc.documentElement.outerHTML, 'bar'); + }, + async 'Reactive attached view'() { + const doc = $.$mol_dom_parse(''); + class Task { + title(next) { return next || 'foo'; } + } + __decorate([ + $.$mol_mem + ], Task.prototype, "title", null); + class App extends $.$mol_jsx_view { + task() { return new Task; } + valueOf() { + return super.valueOf(); + } + render() { + return $.$mol_jsx_make("div", null, this.task().title()); + } + } + __decorate([ + $.$mol_mem + ], App.prototype, "task", null); + __decorate([ + $.$mol_mem + ], App.prototype, "valueOf", null); + const task = new Task; + $.$mol_atom2_autorun(() => $.$mol_jsx_attach(doc, () => $.$mol_jsx_make(App, { id: "/foo", task: () => task }))); + await $.$mol_fiber_warp(); + $.$mol_assert_equal(doc.documentElement.outerHTML, 'foo'); + task.title('bar'); + await $.$mol_fiber_warp(); + $.$mol_assert_equal(doc.documentElement.outerHTML, 'bar'); + }, + }); +})($ || ($ = {})); +//view.test.js.map + +//# sourceMappingURL=web.test.js.map diff --git a/examples/mol/web.test.js.map b/examples/mol/web.test.js.map new file mode 100644 index 0000000000..3e769f8b31 --- /dev/null +++ b/examples/mol/web.test.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../mol/test/test.test.ts","../../../mol/after/mock/mock.test.ts","../../../mol/after/tick/tick.test.ts","../../../mol/type/assert/assert.js","../../../mol/type/assert/assert.test.js","../../../mol/type/partial/deep/deep.test.js","../../../mol/jsx/jsx.ts","../../../mol/jsx/jsx d.js","../../../mol/jsx/make/make.ts","../../../mol/jsx/make/make.test.tsx","../../../mol/compare/deep/deep.ts","../../../mol/compare/deep/deep.test.tsx","../../../mol/assert/assert.ts","../../../mol/assert/assert.test.ts","../../../mol/object/object.test.ts","../../../mol/wrapper/wrapper.test.ts","../../../mol/maybe/maybe.test.ts","../../../mol/log2/log2.test.ts","../../../mol/after/frame/frame.test.ts","../../../mol/compare/any/any.test.ts","../../../mol/conform/conform.test.ts","../../../mol/array/trim/trim.test.ts","../../../mol/fiber/fiber.test.ts","../../../mol/atom2/atom2.test.ts","../../../mol/mem/mem.test.ts","../../../mol/dict/dict.test.tsx","../../../mol/mem/key/key.test.ts","../../../mol/const/const.test.ts","../../../mol/atom2/field/field.ts","../../../mol/atom2/autorun/autorun.test.ts","../../../mol/after/timeout/timeout.test.ts","../../../mol/type/keys/extract/extract.test.js","../../../mol/view/view.test.ts","../../../mol/button/button.test.ts","../../../mol/state/arg/arg.web.test.ts","../../../mol/style/sheet/sheet.test.ts","../../../mol/state/local/local.test.ts","../../../mol/state/local/local.mock.test.ts","../../../mol/state/session/session.test.ts","../../../mol/memo/memo.test.ts","../todomvc.test.ts","../../../mol/diff/path/path.ts","../../../mol/diff/path/path.test.ts","../../../mol/error/mix/mix.ts","../../../mol/type/equals/equals.js","../../../mol/type/equals/equals.test.js","../../../mol/dom/parse/parse.ts","../../../mol/jsx/attach/attach.ts","../../../mol/jsx/attach/attach.test.tsx","../../../mol/jsx/view/view.tsx","../../../mol/jsx/view/view.test.tsx"],"names":[],"mappings":"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","file":"web.test.js","sourcesContent":["namespace $ {\n\n\texport namespace $$ { let $ }\n\t\n\texport function $mol_test( set : { [ name : string ] : string | ( ( context : $mol_ambient_context )=> void ) } ) {\n\t\t\n\t\tfor( let name in set ) {\n\n\t\t\tconst code = set[ name ]\n\t\t\tconst test = ( typeof code === 'string' ) ? new Function( '' , code ) as ()=> void : code\n\t\t\t\n\t\t\t$mol_test_all.push( $mol_log_group( name , test ) )\n\t\t}\n\n\t\t$mol_test_schedule()\n\t}\n\n\texport let $mol_test_mocks = [] as Array< ( context : $mol_ambient_context )=> void >\n\n\texport const $mol_test_all = [] as Array< ( context : $mol_ambient_context )=> void >\n\n\texport async function $mol_test_run() {\n\n\t\tfor( var test of $mol_test_all ) {\n\n\t\t\tlet context = Object.create( $$ )\n\t\t\tfor( let mock of $mol_test_mocks ) await mock( context )\n\t\t\t\n\t\t\tawait test( context )\n\t\t}\n\t\t\n\t\tconsole.info( '$mol_test completed' , $mol_test_all.length )\n\t}\n\t\n\tlet scheduled = false\n\texport function $mol_test_schedule() {\n\n\t\tif( scheduled ) return\n\t\tscheduled = true\n\n\t\tsetTimeout( $mol_log_group( '$mol_test' , ()=> {\n\t\t\tscheduled = false\n \t\t\t$mol_test_run()\n\t\t} ) , 500 )\n\t\t\n\t}\n\n\n\t$mol_test_mocks.push( context => {\n\t\tlet seed = 0\n\n\t\tcontext.Math = Object.create( Math )\n\t\tcontext.Math.random = ()=> Math.sin( seed++ )\n\n\t\tconst forbidden = [ 'XMLHttpRequest' , 'fetch' ]\n\n\t\tfor( let api of forbidden ) {\n\t\t\tcontext[ api ] = new Proxy( function(){} , {\n\t\t\t\tget() {\n\t\t\t\t\t$mol_fail_hidden( new Error( `${ api } is forbidden in tests` ) )\n\t\t\t\t} ,\n\t\t\t\tapply() {\n\t\t\t\t\t$mol_fail_hidden( new Error( `${ api } is forbidden in tests` ) )\n\t\t\t\t} ,\n\t\t\t} )\n\t\t}\n\t\t\n\t} )\n\n\t$mol_test({\n\n\t\t'mocked Math.random'( $ ) {\n\t\t\tconsole.assert( $.Math.random() === 0 )\n\t\t\tconsole.assert( $.Math.random() === Math.sin(1) )\n\t\t} ,\n\n\t\t'forbidden XMLHttpRequest'( $ ) {\n\t\t\ttry {\n\t\t\t\tconsole.assert( void new $.XMLHttpRequest )\n\t\t\t} catch( error ) {\n\t\t\t\tconsole.assert( error.message === 'XMLHttpRequest is forbidden in tests' )\n\t\t\t}\n\t\t} ,\n\n\t\t'forbidden fetch'( $ ) {\n\t\t\ttry {\n\t\t\t\tconsole.assert( void $.fetch('') )\n\t\t\t} catch( error ) {\n\t\t\t\tconsole.assert( error.message === 'fetch is forbidden in tests' )\n\t\t\t}\n\t\t} ,\n\n\t})\n\t\n}\n","namespace $ {\n\n\t/// @todo right orderinng\n\texport let $mol_after_mock_queue = [] as ( ()=> void )[]\n\n\texport function $mol_after_mock_warp() {\n\t\tconst queue = $mol_after_mock_queue.splice( 0 )\n\t\tfor( const task of queue ) task()\n\t}\n\n\texport class $mol_after_mock_commmon extends $mol_object2 {\n\n\t\tpromise = Promise.resolve()\n\t\tcancelled = false\n\t\tid : any\n\n\t\tconstructor( public task : ()=> void ) {\n\t\t\tsuper()\n\t\t\t$mol_after_mock_queue.push( task )\n\t\t}\n\n\t\tdestructor() {\n\t\t\tconst index = $mol_after_mock_queue.indexOf( this.task )\n\t\t\tif( index >= 0 )$mol_after_mock_queue.splice( index , 1 )\n\t\t}\n\n\t}\n\n\texport class $mol_after_mock_timeout extends $mol_after_mock_commmon {\n\n\t\tconstructor(\n\t\t\tpublic delay : number ,\n\t\t\ttask : ()=> void ,\n\t\t) {\n\t\t\tsuper( task )\n\t\t}\n\n\t}\n\t\n}\n","namespace $ {\n\n\t$mol_test_mocks.push( $ => {\n\t\t$.$mol_after_tick = $mol_after_mock_commmon as any as typeof $mol_after_tick\n\t})\n\n}\n",null,null,null,"namespace $ {\n\n\texport let $mol_jsx_prefix = ''\n\n\texport let $mol_jsx_booked = null as null | Set< string >\n\t\n\texport let $mol_jsx_document : JSX.ElementClass['ownerDocument'] = {\n\t\tgetElementById : ()=> null ,\n\t\tcreateElement : ( name : string )=> $mol_dom_context.document.createElement( name )\n\t}\n\n}\n",null,"namespace $ {\n\n\texport function $mol_jsx_make< Props extends { id? : string } , Children extends Array< Node | string > >(\n\t\tElem : string\n\t\t\t| ( ( props : Props , ... children : Children ) => Element )\n\t\t\t| typeof $mol_jsx_view ,\n\t\tprops : Props ,\n\t\t... childNodes : Children\n\t) : Element {\n\n\t\tconst id = props && props.id || ''\n\n\t\tif( $mol_jsx_booked ) {\n\t\t\tif( $mol_jsx_booked.has( id ) ) {\n\t\t\t\t$mol_fail( new Error( `JSX already has tag with id ${ JSON.stringify( id ) }` ) )\n\t\t\t} else {\n\t\t\t\t$mol_jsx_booked.add( id )\n\t\t\t}\n\t\t}\n\n\t\tconst guid = $mol_jsx_prefix + id\n\n\t\tlet node = guid && $mol_jsx_document.getElementById( guid )\n\n\t\tif( typeof Elem !== 'string' ) {\n\n\t\t\tif( Elem.prototype ) {\n\n\t\t\t\tconst view : $mol_jsx_view = node && node[ Elem as any ] || new ( Elem as any )\n\t\t\t\t\n\t\t\t\tObject.assign( view , props )\n\t\t\t\tview[ Symbol.toStringTag ] = guid\n\t\t\t\t\n\t\t\t\tview.childNodes = childNodes\n\t\t\t\t\n\t\t\t\tif( !view.ownerDocument ) view.ownerDocument = $mol_jsx_document\n\t\t\t\t\n\t\t\t\tnode = view.valueOf()\n\t\t\t\t\n\t\t\t\tnode[ Elem as any ] = view\n\t\t\t\t\n\t\t\t\treturn node\n\n\t\t\t} else {\n\n\t\t\t\tconst prefix = $mol_jsx_prefix\n\t\t\t\tconst booked = $mol_jsx_booked\n\t\t\t\t\n\t\t\t\ttry {\n\t\n\t\t\t\t\t$mol_jsx_prefix = guid\n\t\t\t\t\t$mol_jsx_booked = new Set\n\t\n\t\t\t\t\treturn ( Elem as any )( props , ... childNodes )\n\t\t\t\t\t\n\t\t\t\t} finally {\n\n\t\t\t\t\t$mol_jsx_prefix = prefix\n\t\t\t\t\t$mol_jsx_booked = booked\n\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\n\t\t}\n\n\t\tif( !node ) node = $mol_jsx_document.createElement( Elem )\n\n\t\t$mol_dom_render_children( node , ( [] as ( Node | string )[] ).concat( ... childNodes ) )\n\n\t\tfor( const key in props ) {\n\n\t\t\tif( typeof props[ key ] === 'string' ) {\n\n\t\t\t\tnode.setAttribute( key , props[ key as any ] )\n\n\t\t\t} else if( props[ key ] && props[ key ]['constructor'] === Object ) {\n\n\t\t\t\tif( typeof node[ key as any ] === 'object' ) {\n\t\t\t\t\tObject.assign( ( node as any )[ key ] , props[ key ] )\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tnode[ key as any ] = props[ key ]\n\n\t\t}\n\n\t\tif( guid ) node.id = guid\n\n\t\treturn node\n\n\t}\n\n}\n","/** @jsx $mol_jsx_make */\nnamespace $ {\n\t\n\t$mol_test({\n\t\t\n\t\t'Make empty div'() {\n\t\t\t$mol_assert_equal( (
).outerHTML , '
' )\n\t\t} ,\n\t\t\n\t\t'Define native field'() {\n\t\t\t\n\t\t\tconst dom = as HTMLInputElement\n\t\t\t\n\t\t\t$mol_assert_equal( dom.outerHTML , '' )\n\t\t\t$mol_assert_equal( dom.value , '123' )\n\n\t\t} ,\n\t\t\n\t\t'Define classes'() {\n\t\t\t\n\t\t\tconst dom =
\n\t\t\t\n\t\t\t$mol_assert_equal( dom.outerHTML , '
' )\n\n\t\t} ,\n\t\t\n\t\t'Define styles'() {\n\t\t\t\n\t\t\tconst dom =
\n\t\t\t\n\t\t\t$mol_assert_equal( dom.outerHTML , '
' )\n\n\t\t} ,\n\t\t\n\t\t'Define dataset'() {\n\t\t\t\n\t\t\tconst dom =
\n\t\t\t\n\t\t\t$mol_assert_equal( dom.outerHTML , '
' )\n\n\t\t} ,\n\t\t\n\t\t'Define attributes'() {\n\t\t\t\n\t\t\tconst dom =